From 926518ad84edcfaca7bb3eb940fe2145c94311f7 Mon Sep 17 00:00:00 2001 From: yepp4you Date: Fri, 7 Jul 2023 14:42:24 +0400 Subject: [PATCH 0001/2004] add new stake address on Klaytn --- projects/neopin-staking/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js index dbb6fc8cab2..08f1f6abcf7 100644 --- a/projects/neopin-staking/index.js +++ b/projects/neopin-staking/index.js @@ -11,6 +11,7 @@ module.exports = { '0xDa664b81C13b050F9b0435D0B712218Aa8BB1609', '0x0D3ACA076712DE598DF856cEcEF76daD38F0A75b', '0xf9d92BAd7b1410dfFB0a204B7aa418C9fd5A898F', + '0xf20816C9bdcb25da3ba79b206e9b7107ae02ae10' ], tokens: [nullAddress], }), From d6ba99c8de252231f6d3b4ac04b00ee090a35a92 Mon Sep 17 00:00:00 2001 From: merlincdj <39942523+merlincdj@users.noreply.github.com> Date: Mon, 14 Aug 2023 21:37:01 +0800 Subject: [PATCH 0002/2004] feat: WOOFi add Linea and Base --- projects/woofi.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/projects/woofi.js b/projects/woofi.js index f3bd2151c28..bb8453bae1c 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -44,7 +44,7 @@ const wooPPConfig = { ADDRESSES.arbitrum.USDT, ], optimism: [ - ADDRESSES.tombchain.FTM, // WETH + ADDRESSES.optimism.WETH_1, // WETH '0x68f180fcCe6836688e9084f035309E29Bf0A2095', // WBTC ADDRESSES.optimism.OP, // OP ADDRESSES.optimism.USDC, // USDC @@ -60,6 +60,14 @@ const wooPPConfig = { ADDRESSES.polygon_zkevm.WETH, ADDRESSES.polygon_zkevm.USDC, ], + linea: [ + ADDRESSES.linea.WETH, + ADDRESSES.linea.USDC, + ], + base: [ + ADDRESSES.base.WETH, + ADDRESSES.base.USDbC, + ], } const chainConfig = { @@ -117,6 +125,18 @@ const chainConfig = { stakingContract: null, stakingContractV2: null, }, + linea: { + wooPPContract: '0xF5d215d9C84778F85746D15762DaF39B9E83a2d6', + woo: null, + stakingContract: null, + stakingContractV2: null, + }, + base: { + wooPPContract: '0xb130a49065178465931d4f887056328CeA5D723f', + woo: null, + stakingContract: null, + stakingContractV2: null, + }, } Object.keys(chainConfig).forEach(chain => { From 1b85ceed2898211c7953ff6bcb9a44e7f70bdb65 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Mon, 6 Nov 2023 17:14:18 +0800 Subject: [PATCH 0003/2004] add arbitrum tvl --- projects/solv-protocol-funds/index.js | 50 +++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 6ff4d5e3fd2..dda37b5cbae 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -2,6 +2,7 @@ const { default: BigNumber } = require("bignumber.js"); const { getConfig } = require("../helper/cache"); const abi = require("./abi.json"); const { cachedGraphQuery } = require("../helper/cache"); +const { sumTokens2 } = require("../helper/unwrapLPs"); // The Graph const graphUrlList = { @@ -13,13 +14,30 @@ const graphUrlList = { const slotListUrl = 'https://cdn.jsdelivr.net/gh/solv-finance-dev/solv-protocol-rwa-slot/slot.json'; -async function tvl(ts) { +const depositAddress = [ + "0x9f6478a876d7765f44bda712573820eb3ae389fb", + "0xcac14cd2f18dcf54032bd51d0a116fe18770b87c" +] + +const gmTokens = [ + "0x70d95587d40a2caf56bd97485ab3eec10bee6336", + "0x47c031236e19d024b42f8AE6780E44A573170703", + "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", + "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", + "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", + "0xc7Abb2C5f3BF3CEB389dF0Eecd6120D451170B50", +] + +async function borrowed(ts) { const { api } = arguments[3]; const network = api.chain; const graphData = await getGraphData(ts, network, api); - if (graphData.pools.length > 0) { - const pools = graphData.pools; + const poolLists = graphData.pools; + var pools = poolLists.filter((value) => { + return depositAddress.indexOf(value.vault) == -1; + }); + const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ abi: abi.getSubscribeNav, @@ -59,6 +77,19 @@ async function tvl(ts) { return api.getBalances() } +async function tvl() { + const { api } = arguments[3]; + + let tokens = [] + for (const pool of depositAddress) { + for (const address of gmTokens) { + tokens.push({ address, pool }) + } + } + + await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) +} + async function concrete(slots, api) { var slotsList = []; var only = {}; @@ -92,6 +123,7 @@ async function getGraphData(timestamp, chain, api) { contractAddress navOracle poolId + vault openFundShareSlot } }`; @@ -107,6 +139,12 @@ async function getGraphData(timestamp, chain, api) { }; } // node test.js projects/solv-protocol-funds -['ethereum', 'bsc', 'arbitrum', 'mantle'].forEach(chain => { - module.exports[chain] = { tvl: () => ({}), borrowed: tvl, } -}) \ No newline at end of file +module.exports = { + arbitrum: { + tvl, + borrowed: borrowed, + }, + mantle: { + borrowed: borrowed, + } +}; \ No newline at end of file From e1a1c2e3f98864cbf72472d5d4d868d5c11b431b Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Wed, 15 Nov 2023 14:03:40 +0800 Subject: [PATCH 0004/2004] solv protocol funds add KLP --- projects/solv-protocol-funds/index.js | 62 +++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index dda37b5cbae..d75f7c013f1 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -1,6 +1,7 @@ +const abi = require("./abi.json"); +const sdk = require("@defillama/sdk"); const { default: BigNumber } = require("bignumber.js"); const { getConfig } = require("../helper/cache"); -const abi = require("./abi.json"); const { cachedGraphQuery } = require("../helper/cache"); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -17,7 +18,7 @@ const slotListUrl = 'https://cdn.jsdelivr.net/gh/solv-finance-dev/solv-protocol- const depositAddress = [ "0x9f6478a876d7765f44bda712573820eb3ae389fb", "0xcac14cd2f18dcf54032bd51d0a116fe18770b87c" -] +]; const gmTokens = [ "0x70d95587d40a2caf56bd97485ab3eec10bee6336", @@ -26,7 +27,15 @@ const gmTokens = [ "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", "0xc7Abb2C5f3BF3CEB389dF0Eecd6120D451170B50", -] +]; + +const getAumUsdAbi = 'function getAumInUsdg(bool maximise) view returns (uint256)'; +const balanceOfABI = 'function balanceOf(address _account) view returns (uint256)'; +const totalSupplyAbi = 'erc20:totalSupply'; + +const klpManager = "0x3C4DE8fB37055500BB3D18eAE8dD0DffF527090e"; +const klp = "0xb3a5eeBf23530165c3A6785400ff5d1700D5c0b3"; +const klpPool = "0xf9ddb49175037b4fd2580fc825b40707d4781531"; async function borrowed(ts) { const { api } = arguments[3]; @@ -37,7 +46,6 @@ async function borrowed(ts) { var pools = poolLists.filter((value) => { return depositAddress.indexOf(value.vault) == -1; }); - const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ abi: abi.getSubscribeNav, @@ -90,6 +98,51 @@ async function tvl() { await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) } + +async function mantleTvl() { + const { api } = arguments[3] + const chain = api.chain; + const block = api.block; + + const [ + { output: aumUsd }, + { output: totalSupply } + ] = await getKlpPrice(chain, api.block) + + const klpPrice = BigNumber(aumUsd).div(totalSupply).toNumber(); + const { output: balance } = await sdk.api.abi.call({ + abi: balanceOfABI, + target: klp, + params: [klpPool], + chain, + block, + }) + + const tvl = BigNumber(balance).div(1e18).times(klpPrice).toNumber(); + + return { + "usd-coin": tvl, + }; +} + +async function getKlpPrice(chain, block) { + return await Promise.all([ + sdk.api.abi.call({ + abi: getAumUsdAbi, + target: klpManager, + params: [true], + chain, + block, + }), + sdk.api.abi.call({ + abi: totalSupplyAbi, + target: klp, + chain, + block, + }) + ]) +} + async function concrete(slots, api) { var slotsList = []; var only = {}; @@ -145,6 +198,7 @@ module.exports = { borrowed: borrowed, }, mantle: { + tvl: mantleTvl, borrowed: borrowed, } }; \ No newline at end of file From 8f02de34fbfd29425e8caba60e6133fad49514a5 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Thu, 16 Nov 2023 07:05:47 +0800 Subject: [PATCH 0005/2004] klp amount --- projects/solv-protocol-funds/index.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index d75f7c013f1..9dba9a7b4bc 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -31,6 +31,7 @@ const gmTokens = [ const getAumUsdAbi = 'function getAumInUsdg(bool maximise) view returns (uint256)'; const balanceOfABI = 'function balanceOf(address _account) view returns (uint256)'; +const stakedAmountsAbi = 'function stakedAmounts(address) external view returns (uint256)'; const totalSupplyAbi = 'erc20:totalSupply'; const klpManager = "0x3C4DE8fB37055500BB3D18eAE8dD0DffF527090e"; @@ -99,8 +100,7 @@ async function tvl() { } -async function mantleTvl() { - const { api } = arguments[3] +async function mantleTvl(ts, _, _1, { api }) { const chain = api.chain; const block = api.block; @@ -110,18 +110,19 @@ async function mantleTvl() { ] = await getKlpPrice(chain, api.block) const klpPrice = BigNumber(aumUsd).div(totalSupply).toNumber(); - const { output: balance } = await sdk.api.abi.call({ - abi: balanceOfABI, + + const { output: amount } = await sdk.api.abi.call({ + abi: stakedAmountsAbi, target: klp, params: [klpPool], chain, block, }) - const tvl = BigNumber(balance).div(1e18).times(klpPrice).toNumber(); + const tvl = BigNumber(amount).div(1e18).times(klpPrice).toNumber(); return { - "usd-coin": tvl, + "tether": tvl, }; } From 94c6dbc541a87d503f14d910fd9ebbb4ca43b715 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 Nov 2023 18:29:25 +0100 Subject: [PATCH 0006/2004] refactor: dont fetch fsKLP price --- projects/solv-protocol-funds/index.js | 51 ++------------------------- 1 file changed, 3 insertions(+), 48 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 9dba9a7b4bc..1d6792d0b28 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -1,9 +1,8 @@ const abi = require("./abi.json"); -const sdk = require("@defillama/sdk"); const { default: BigNumber } = require("bignumber.js"); const { getConfig } = require("../helper/cache"); const { cachedGraphQuery } = require("../helper/cache"); -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokens2, } = require("../helper/unwrapLPs"); // The Graph const graphUrlList = { @@ -29,12 +28,8 @@ const gmTokens = [ "0xc7Abb2C5f3BF3CEB389dF0Eecd6120D451170B50", ]; -const getAumUsdAbi = 'function getAumInUsdg(bool maximise) view returns (uint256)'; -const balanceOfABI = 'function balanceOf(address _account) view returns (uint256)'; const stakedAmountsAbi = 'function stakedAmounts(address) external view returns (uint256)'; -const totalSupplyAbi = 'erc20:totalSupply'; -const klpManager = "0x3C4DE8fB37055500BB3D18eAE8dD0DffF527090e"; const klp = "0xb3a5eeBf23530165c3A6785400ff5d1700D5c0b3"; const klpPool = "0xf9ddb49175037b4fd2580fc825b40707d4781531"; @@ -99,49 +94,9 @@ async function tvl() { await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) } - async function mantleTvl(ts, _, _1, { api }) { - const chain = api.chain; - const block = api.block; - - const [ - { output: aumUsd }, - { output: totalSupply } - ] = await getKlpPrice(chain, api.block) - - const klpPrice = BigNumber(aumUsd).div(totalSupply).toNumber(); - - const { output: amount } = await sdk.api.abi.call({ - abi: stakedAmountsAbi, - target: klp, - params: [klpPool], - chain, - block, - }) - - const tvl = BigNumber(amount).div(1e18).times(klpPrice).toNumber(); - - return { - "tether": tvl, - }; -} - -async function getKlpPrice(chain, block) { - return await Promise.all([ - sdk.api.abi.call({ - abi: getAumUsdAbi, - target: klpManager, - params: [true], - chain, - block, - }), - sdk.api.abi.call({ - abi: totalSupplyAbi, - target: klp, - chain, - block, - }) - ]) + api.add(klp, await api.call({ abi: stakedAmountsAbi, target: klp, params: [klpPool], })) + return api.getBalances() } async function concrete(slots, api) { From 35570523ae6a69d91650801bb9a1898624885759 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Tue, 28 Nov 2023 14:42:13 +0800 Subject: [PATCH 0007/2004] Change the configuration of contract address --- projects/solv-protocol-funds/index.js | 50 ++++++++++++--------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 9dba9a7b4bc..f549558ee2f 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -13,39 +13,27 @@ const graphUrlList = { mantle: 'http://api.0xgraph.xyz/subgraphs/name/solv-payable-factory-mentle-0xgraph', } -const slotListUrl = 'https://cdn.jsdelivr.net/gh/solv-finance-dev/solv-protocol-rwa-slot/slot.json'; - -const depositAddress = [ - "0x9f6478a876d7765f44bda712573820eb3ae389fb", - "0xcac14cd2f18dcf54032bd51d0a116fe18770b87c" -]; - -const gmTokens = [ - "0x70d95587d40a2caf56bd97485ab3eec10bee6336", - "0x47c031236e19d024b42f8AE6780E44A573170703", - "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", - "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", - "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", - "0xc7Abb2C5f3BF3CEB389dF0Eecd6120D451170B50", -]; +const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-protocol-rwa-slot/main/slot.json'; + +const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; const getAumUsdAbi = 'function getAumInUsdg(bool maximise) view returns (uint256)'; const balanceOfABI = 'function balanceOf(address _account) view returns (uint256)'; const stakedAmountsAbi = 'function stakedAmounts(address) external view returns (uint256)'; const totalSupplyAbi = 'erc20:totalSupply'; -const klpManager = "0x3C4DE8fB37055500BB3D18eAE8dD0DffF527090e"; -const klp = "0xb3a5eeBf23530165c3A6785400ff5d1700D5c0b3"; -const klpPool = "0xf9ddb49175037b4fd2580fc825b40707d4781531"; - async function borrowed(ts) { const { api } = arguments[3]; const network = api.chain; + + let address = (await getConfig('solv-protocol', addressUrl)); + let gm = address[api.chain]["gm"]; + const graphData = await getGraphData(ts, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; var pools = poolLists.filter((value) => { - return depositAddress.indexOf(value.vault) == -1; + return gm == undefined && gm["depositAddress"].indexOf(value.vault) == -1; }); const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ @@ -89,9 +77,12 @@ async function borrowed(ts) { async function tvl() { const { api } = arguments[3]; + let address = (await getConfig('solv-protocol', addressUrl)); + let gm = address[api.chain]["gm"]; + let tokens = [] - for (const pool of depositAddress) { - for (const address of gmTokens) { + for (const pool of gm["depositAddress"]) { + for (const address of gm["gmTokens"]) { tokens.push({ address, pool }) } } @@ -104,17 +95,20 @@ async function mantleTvl(ts, _, _1, { api }) { const chain = api.chain; const block = api.block; + let address = (await getConfig('solv-protocol', addressUrl)); + let klp = address[api.chain]["klp"]; + console.log(JSON.stringify(klp)) const [ { output: aumUsd }, { output: totalSupply } - ] = await getKlpPrice(chain, api.block) + ] = await getKlpPrice(chain, api.block, klp) const klpPrice = BigNumber(aumUsd).div(totalSupply).toNumber(); const { output: amount } = await sdk.api.abi.call({ abi: stakedAmountsAbi, - target: klp, - params: [klpPool], + target: klp["address"], + params: klp["klpPool"], chain, block, }) @@ -126,18 +120,18 @@ async function mantleTvl(ts, _, _1, { api }) { }; } -async function getKlpPrice(chain, block) { +async function getKlpPrice(chain, block, klp) { return await Promise.all([ sdk.api.abi.call({ abi: getAumUsdAbi, - target: klpManager, + target: klp["klpManager"], params: [true], chain, block, }), sdk.api.abi.call({ abi: totalSupplyAbi, - target: klp, + target: klp["address"], chain, block, }) From 39fb483cff755a4591a62303006637e72a8788b7 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Tue, 28 Nov 2023 14:48:40 +0800 Subject: [PATCH 0008/2004] Modify judgment logic --- projects/solv-protocol-funds/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index d49655ad428..904844adb9b 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -33,7 +33,7 @@ async function borrowed(ts) { if (graphData.pools.length > 0) { const poolLists = graphData.pools; var pools = poolLists.filter((value) => { - return gm == undefined && gm["depositAddress"].indexOf(value.vault) == -1; + return gm == undefined || gm["depositAddress"].indexOf(value.vault) == -1; }); const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ From 0f25fc52c59dfabe1154060e66504ce683adfbf1 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Tue, 28 Nov 2023 15:01:05 +0800 Subject: [PATCH 0009/2004] Modify judgment logic --- projects/solv-protocol-funds/index.js | 49 ++------------------------- 1 file changed, 3 insertions(+), 46 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 904844adb9b..883b00f2efb 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -1,9 +1,8 @@ const abi = require("./abi.json"); -const sdk = require("@defillama/sdk"); const { default: BigNumber } = require("bignumber.js"); const { getConfig } = require("../helper/cache"); const { cachedGraphQuery } = require("../helper/cache"); -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokens2, } = require("../helper/unwrapLPs"); // The Graph const graphUrlList = { @@ -17,10 +16,7 @@ const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-pro const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; -const getAumUsdAbi = 'function getAumInUsdg(bool maximise) view returns (uint256)'; -const balanceOfABI = 'function balanceOf(address _account) view returns (uint256)'; const stakedAmountsAbi = 'function stakedAmounts(address) external view returns (uint256)'; -const totalSupplyAbi = 'erc20:totalSupply'; async function borrowed(ts) { const { api } = arguments[3]; @@ -92,50 +88,11 @@ async function tvl() { async function mantleTvl(ts, _, _1, { api }) { - const chain = api.chain; - const block = api.block; - let address = (await getConfig('solv-protocol', addressUrl)); let klp = address[api.chain]["klp"]; - const [ - { output: aumUsd }, - { output: totalSupply } - ] = await getKlpPrice(chain, api.block, klp) - - const klpPrice = BigNumber(aumUsd).div(totalSupply).toNumber(); - - const { output: amount } = await sdk.api.abi.call({ - abi: stakedAmountsAbi, - target: klp["address"], - params: klp["klpPool"], - chain, - block, - }) - - const tvl = BigNumber(amount).div(1e18).times(klpPrice).toNumber(); - - return { - "tether": tvl, - }; -} - -async function getKlpPrice(chain, block, klp) { - return await Promise.all([ - sdk.api.abi.call({ - abi: getAumUsdAbi, - target: klp["klpManager"], - params: [true], - chain, - block, - }), - sdk.api.abi.call({ - abi: totalSupplyAbi, - target: klp["address"], - chain, - block, - }) - ]) + api.add(klp["address"], await api.call({ abi: stakedAmountsAbi, target: klp["address"], params: klp["klpPool"], })) + return api.getBalances() } async function concrete(slots, api) { From 9b8ee93e5c1ef969f5e3e26479ab9d2e46c3184d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 28 Nov 2023 08:44:03 +0100 Subject: [PATCH 0010/2004] change cache file name --- projects/solv-protocol-funds/index.js | 8 ++++---- projects/solv-protocol-rwa/index.js | 2 +- projects/solv-protocol/index.js | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 883b00f2efb..6f945745e49 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -22,7 +22,7 @@ async function borrowed(ts) { const { api } = arguments[3]; const network = api.chain; - let address = (await getConfig('solv-protocol', addressUrl)); + let address = (await getConfig('solv-protocol/funds', addressUrl)); let gm = address[api.chain]["gm"]; const graphData = await getGraphData(ts, network, api); @@ -73,7 +73,7 @@ async function borrowed(ts) { async function tvl() { const { api } = arguments[3]; - let address = (await getConfig('solv-protocol', addressUrl)); + let address = (await getConfig('solv-protocol/funds', addressUrl)); let gm = address[api.chain]["gm"]; let tokens = [] @@ -88,7 +88,7 @@ async function tvl() { async function mantleTvl(ts, _, _1, { api }) { - let address = (await getConfig('solv-protocol', addressUrl)); + let address = (await getConfig('solv-protocol/funds', addressUrl)); let klp = address[api.chain]["klp"]; api.add(klp["address"], await api.call({ abi: stakedAmountsAbi, target: klp["address"], params: klp["klpPool"], })) @@ -120,7 +120,7 @@ async function concrete(slots, api) { async function getGraphData(timestamp, chain, api) { - let rwaSlot = (await getConfig('solv-protocol', slotListUrl)); + let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); const slotDataQuery = `query BondSlotInfos { poolOrderInfos(first: 1000 where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot_not_in: ${JSON.stringify(rwaSlot)}}) { diff --git a/projects/solv-protocol-rwa/index.js b/projects/solv-protocol-rwa/index.js index c892c909b84..fd9e5154268 100644 --- a/projects/solv-protocol-rwa/index.js +++ b/projects/solv-protocol-rwa/index.js @@ -77,7 +77,7 @@ async function concrete(slots, api) { } async function getGraphData(timestamp, chain, api) { - let rwaSlot = (await getConfig('solv-protocol', slotListUrl)); + let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); const slotDataQuery = `query BondSlotInfos { poolOrderInfos(first: 1000, where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot_in:${JSON.stringify(rwaSlot)}}) { diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js index a03f135fecc..92a62824922 100644 --- a/projects/solv-protocol/index.js +++ b/projects/solv-protocol/index.js @@ -14,7 +14,7 @@ async function tvl() { async function tokenList(chainId) { let tokens = []; - const allTokens = (await getConfig('solv-protocol', tokenListsApiEndpoint)).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) { From b1a8c0236316720eb6b4d0aab3e5f7cca51b3ad0 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Thu, 30 Nov 2023 11:46:25 +0800 Subject: [PATCH 0011/2004] fix bug --- projects/solv-protocol-funds/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 6f945745e49..6b1d3acea6e 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -91,7 +91,18 @@ async function mantleTvl(ts, _, _1, { api }) { let address = (await getConfig('solv-protocol/funds', addressUrl)); let klp = address[api.chain]["klp"]; - api.add(klp["address"], await api.call({ abi: stakedAmountsAbi, target: klp["address"], params: klp["klpPool"], })) + const stakedAmounts = await api.multiCall({ + abi: stakedAmountsAbi, + calls: klp["klpPool"].map((pool) => ({ + target: klp["address"], + params: [pool] + })), + }) + + stakedAmounts.forEach(amount => { + api.add(klp["address"], amount) + }) + return api.getBalances() } From 69fef1ffa6dc3da84031b0dc23a5dcb2d378e90e Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Thu, 28 Dec 2023 11:45:08 +0800 Subject: [PATCH 0012/2004] add iziswap lp --- projects/solv-protocol-funds/abi.json | 7 +- projects/solv-protocol-funds/index.js | 77 +++++++++++++++ projects/solv-protocol-funds/iziswap.js | 120 ++++++++++++++++++++++++ 3 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 projects/solv-protocol-funds/iziswap.js diff --git a/projects/solv-protocol-funds/abi.json b/projects/solv-protocol-funds/abi.json index c2ad7222359..45ad4cdcc3d 100644 --- a/projects/solv-protocol-funds/abi.json +++ b/projects/solv-protocol-funds/abi.json @@ -4,5 +4,10 @@ "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_)" + "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)" } \ No newline at end of file diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 6b1d3acea6e..864d1159fe9 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -3,6 +3,7 @@ const { default: BigNumber } = require("bignumber.js"); const { getConfig } = require("../helper/cache"); const { cachedGraphQuery } = require("../helper/cache"); const { sumTokens2, } = require("../helper/unwrapLPs"); +const { point2PoolPriceUndecimalSqrt, _getAmountY, _liquidity2AmountYAtPoint, _getAmountX, _liquidity2AmountXAtPoint, getAmounts } = require("./iziswap") // The Graph const graphUrlList = { @@ -103,9 +104,85 @@ async function mantleTvl(ts, _, _1, { api }) { api.add(klp["address"], amount) }) + await iziswap(ts, _, _1, { api }); + return api.getBalances() } +async function iziswap(ts, _, _1, { api }) { + let address = (await getConfig('solv-protocol/funds', addressUrl)); + 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 pools = []; + let tokenList = []; + poolMetas.forEach((poolMeta) => { + pools.push(api.call({ + abi: abi.pool, + target: iziswap, + params: [poolMeta[0], poolMeta[1], poolMeta[2]] + })) + tokenList.push(poolMeta) + }) + + let poolList = await Promise.all(pools); + + 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.toNumber()) + api.add(token[1], amounts.amountY.toNumber()) + }) +} + async function concrete(slots, api) { var slotsList = []; var only = {}; diff --git a/projects/solv-protocol-funds/iziswap.js b/projects/solv-protocol-funds/iziswap.js new file mode 100644 index 00000000000..d10060e95f2 --- /dev/null +++ b/projects/solv-protocol-funds/iziswap.js @@ -0,0 +1,120 @@ +const { default: BigNumber } = require("bignumber.js"); + + +function point2PoolPriceUndecimalSqrt(point) { + return (1.0001 ** point) ** 0.5; +} + +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 _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)); + } +} + +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 _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 getAmounts( + stateInfo, + liquidity +) { + let amountX = new BigNumber(0); + let amountY = new BigNumber(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(new BigNumber(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(new BigNumber(liquid), leftPt, rightPtNum, sqrtPriceR, sqrtRate, false); + } + + // compute amountX and amountY on currentPt + if (leftPtNum <= stateInfo.currentPoint && rightPtNum > stateInfo.currentPoint) { + const liquidityValue = new BigNumber(liquidity[2]); + const maxLiquidityYAtCurrentPt = new BigNumber(stateInfo.liquidity).minus(stateInfo.liquidityX); + const liquidityYAtCurrentPt = liquidityValue.gt(maxLiquidityYAtCurrentPt) ? maxLiquidityYAtCurrentPt : liquidityValue; + const liquidityXAtCurrentPt = liquidityValue.minus(liquidityYAtCurrentPt); + const currentSqrtPrice = point2PoolPriceUndecimalSqrt(stateInfo.currentPoint); + amountX = amountX.plus(_liquidity2AmountXAtPoint(liquidityXAtCurrentPt, currentSqrtPrice, false)); + amountY = amountY.plus(_liquidity2AmountYAtPoint(liquidityYAtCurrentPt, currentSqrtPrice, false)); + } + + return { amountY, amountX }; +} + +module.exports = { + point2PoolPriceUndecimalSqrt, + _getAmountY, + _liquidity2AmountYAtPoint, + _getAmountX, + _liquidity2AmountXAtPoint, + getAmounts +}; \ No newline at end of file From 858144b7f143a2bc2d47d9c183961388850270a0 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Thu, 28 Dec 2023 15:42:42 +0800 Subject: [PATCH 0013/2004] fix --- projects/solv-protocol-funds/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 864d1159fe9..d9dba0c9122 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -168,7 +168,6 @@ async function liquidity(api, iziswap, owner) { }) let poolList = await Promise.all(pools); - let state = await api.multiCall({ abi: abi.state, calls: poolList.map((pool) => ({ From 2fcdd54c04ceab67d0af2444d0c86237e74f2844 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:11:48 +0100 Subject: [PATCH 0014/2004] reduce usage of BigNumber --- projects/solv-protocol-funds/index.js | 29 ++++++------ projects/solv-protocol-funds/iziswap.js | 62 +++++++------------------ 2 files changed, 30 insertions(+), 61 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index d9dba0c9122..12378f56e2f 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -3,7 +3,7 @@ const { default: BigNumber } = require("bignumber.js"); const { getConfig } = require("../helper/cache"); const { cachedGraphQuery } = require("../helper/cache"); const { sumTokens2, } = require("../helper/unwrapLPs"); -const { point2PoolPriceUndecimalSqrt, _getAmountY, _liquidity2AmountYAtPoint, _getAmountX, _liquidity2AmountXAtPoint, getAmounts } = require("./iziswap") +const { getAmounts } = require("./iziswap") // The Graph const graphUrlList = { @@ -104,12 +104,12 @@ async function mantleTvl(ts, _, _1, { api }) { api.add(klp["address"], amount) }) - await iziswap(ts, _, _1, { api }); + await iziswap(api); return api.getBalances() } -async function iziswap(ts, _, _1, { api }) { +async function iziswap(api) { let address = (await getConfig('solv-protocol/funds', addressUrl)); let iziswapData = address[api.chain]["iziswap"]; @@ -156,18 +156,15 @@ async function liquidity(api, iziswap, owner) { })) }) - let pools = []; - let tokenList = []; - poolMetas.forEach((poolMeta) => { - pools.push(api.call({ - abi: abi.pool, - target: iziswap, - params: [poolMeta[0], poolMeta[1], poolMeta[2]] + let tokenList = [...poolMetas] + + let poolList = await api.multiCall({ + abi: abi.pool, + target: iziswap, + calls: poolMetas.map((pool) => ({ + params: [pool[0], pool[1], pool[2]] })) - tokenList.push(poolMeta) }) - - let poolList = await Promise.all(pools); let state = await api.multiCall({ abi: abi.state, calls: poolList.map((pool) => ({ @@ -177,8 +174,8 @@ async function liquidity(api, iziswap, owner) { tokenList.forEach((token, index) => { const amounts = getAmounts(state[index], liquidities[index]) - api.add(token[0], amounts.amountX.toNumber()) - api.add(token[1], amounts.amountY.toNumber()) + api.add(token[0], amounts.amountX) + api.add(token[1], amounts.amountY) }) } @@ -240,4 +237,4 @@ module.exports = { tvl: mantleTvl, borrowed: borrowed, } -}; \ No newline at end of file +}; diff --git a/projects/solv-protocol-funds/iziswap.js b/projects/solv-protocol-funds/iziswap.js index d10060e95f2..83cee817dfe 100644 --- a/projects/solv-protocol-funds/iziswap.js +++ b/projects/solv-protocol-funds/iziswap.js @@ -1,6 +1,3 @@ -const { default: BigNumber } = require("bignumber.js"); - - function point2PoolPriceUndecimalSqrt(point) { return (1.0001 ** point) ** 0.5; } @@ -14,13 +11,8 @@ function _getAmountY( ) { 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 ratio = numerator / denominator + return liquidity * ratio } function _liquidity2AmountYAtPoint( @@ -28,12 +20,8 @@ function _liquidity2AmountYAtPoint( 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 amountY = liquidity * sqrtPrice + return amountY } function _getAmountX( @@ -49,14 +37,8 @@ function _getAmountX( 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 ratio = numerator / denominator + return liquidity * ratio } function _liquidity2AmountXAtPoint( @@ -64,20 +46,15 @@ function _liquidity2AmountXAtPoint( sqrtPrice, upper ) { - const amountX = liquidity.div(sqrtPrice); - if (!upper) { - return new BigNumber(amountX.toFixed(0, 3)); - } else { - return new BigNumber(amountX.toFixed(0, 2)); - } + return liquidity / sqrtPrice } function getAmounts( stateInfo, liquidity ) { - let amountX = new BigNumber(0); - let amountY = new BigNumber(0); + let amountX = 0; + let amountY = 0; const liquid = liquidity[2]; const sqrtRate = Math.sqrt(1.0001); const leftPtNum = Number(liquidity[0]); @@ -86,35 +63,30 @@ function getAmounts( const rightPt = Math.min(stateInfo.currentPoint, rightPtNum); const sqrtPriceR = point2PoolPriceUndecimalSqrt(rightPt); const sqrtPriceL = point2PoolPriceUndecimalSqrt(leftPtNum); - amountY = _getAmountY(new BigNumber(liquid), sqrtPriceL, sqrtPriceR, sqrtRate, false); + 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(new BigNumber(liquid), leftPt, rightPtNum, sqrtPriceR, sqrtRate, false); + amountX = _getAmountX(liquid, leftPt, rightPtNum, sqrtPriceR, sqrtRate, false); } // compute amountX and amountY on currentPt if (leftPtNum <= stateInfo.currentPoint && rightPtNum > stateInfo.currentPoint) { - const liquidityValue = new BigNumber(liquidity[2]); - const maxLiquidityYAtCurrentPt = new BigNumber(stateInfo.liquidity).minus(stateInfo.liquidityX); - const liquidityYAtCurrentPt = liquidityValue.gt(maxLiquidityYAtCurrentPt) ? maxLiquidityYAtCurrentPt : liquidityValue; - const liquidityXAtCurrentPt = liquidityValue.minus(liquidityYAtCurrentPt); + 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.plus(_liquidity2AmountXAtPoint(liquidityXAtCurrentPt, currentSqrtPrice, false)); - amountY = amountY.plus(_liquidity2AmountYAtPoint(liquidityYAtCurrentPt, currentSqrtPrice, false)); + amountX = amountX+ _liquidity2AmountXAtPoint(liquidityXAtCurrentPt, currentSqrtPrice, false) + amountY = amountY+ _liquidity2AmountYAtPoint(liquidityYAtCurrentPt, currentSqrtPrice, false) } return { amountY, amountX }; } module.exports = { - point2PoolPriceUndecimalSqrt, - _getAmountY, - _liquidity2AmountYAtPoint, - _getAmountX, - _liquidity2AmountXAtPoint, getAmounts }; \ No newline at end of file From 65d604eab4c60f96715829ae7ea76471f3d409b0 Mon Sep 17 00:00:00 2001 From: Raul <42917076+elRaulito@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:16:21 +0100 Subject: [PATCH 0015/2004] Moved Boosted stake from borrowed to actual value inside the contract --- projects/fluidtokens/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index 6adece863a9..2bbf666f35b 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -53,8 +53,13 @@ async function tvl() { 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); + return { - cardano: (SC_offers_tvl+repay_tvl+pools_tvl) / 1e6, + cardano: (SC_offers_tvl+repay_tvl+pools_tvl+boosted) / 1e6, }; } @@ -63,7 +68,7 @@ async function borrowed( ts //timestamp in seconds ) { const data = await get("https://api.fluidtokens.com/get-ft-stats"); - let SC_tvl = parseInt(data.active_loans_volume)+parseInt(data.bs_available_volume)+parseInt(data.bs_active_volume); + let SC_tvl = parseInt(data.active_loans_volume); const dataOffers = await get("https://api.fluidtokens.com/get-available-collection-offers"); From 0a529103b2aedc06c671c224640aced8ada1a4ee Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 Jan 2024 16:44:08 +0100 Subject: [PATCH 0016/2004] fix broken adapters --- projects/KungFuu-Finance/index.js | 32 +++++++++---------------------- projects/velocore-v2/index.js | 26 ++++++++++++++++++++----- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/projects/KungFuu-Finance/index.js b/projects/KungFuu-Finance/index.js index 87f256fc684..ebeeaff9b6e 100644 --- a/projects/KungFuu-Finance/index.js +++ b/projects/KungFuu-Finance/index.js @@ -1,33 +1,19 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens } = require('../helper/unwrapLPs') -const { getChainTransform } = require('../helper/portedTokens') -const sdk = require("@defillama/sdk") +const { sumTokensExport } = require('../helper/unwrapLPs') const wFTM = ADDRESSES.fantom.WFTM const kngfuu_token = "0x89b61Ab033584918103698953870F07D6db412A3".toLowerCase() +const owners = ["0x29187b10a04B269Cf067AE013B3ab58d4affaC03", "0xaaef45e31e2d2865a4722c1591ba4cd8f6e83bad", "0xfeAFAF0610fe2c73bB6345080056066aE109B31F"] -async function tvl(ts, _block, { fantom: block }) { - const chain = 'fantom' - const balances = {} - const transform = await getChainTransform(chain) - const owners = ["0x29187b10a04B269Cf067AE013B3ab58d4affaC03", "0xaaef45e31e2d2865a4722c1591ba4cd8f6e83bad", "0xfeAFAF0610fe2c73bB6345080056066aE109B31F"] - const treasuryTokens = [ - wFTM, // WFTM - ADDRESSES.fantom.USDC, // USDC - "0xf704f5ac5edf152168e07e6f5f108366911250ac", // WFTM/KNGFUU, needs to account only half of it - ] - - const tokensAndOwners = [] - treasuryTokens.forEach(t => owners.forEach(o => tokensAndOwners.push([t, o]))) - await sumTokens(balances, tokensAndOwners, block, chain, transform) - delete balances[transform(kngfuu_token)] - const { output: results } = await sdk.api.eth.getBalances({ targets: owners, chain, block}) - for (const res of results) sdk.util.sumSingleBalance(balances, transform(wFTM), res.balance) - return balances -} +const treasuryTokens = [ + ADDRESSES.null, + wFTM, // WFTM + ADDRESSES.fantom.USDC, // USDC + "0xf704f5ac5edf152168e07e6f5f108366911250ac", // WFTM/KNGFUU, needs to account only half of it +] module.exports = { fantom: { - tvl + tvl: sumTokensExport({ owners, tokens: treasuryTokens, }) } } \ No newline at end of file diff --git a/projects/velocore-v2/index.js b/projects/velocore-v2/index.js index 4bb5b070321..bd7ad79faff 100644 --- a/projects/velocore-v2/index.js +++ b/projects/velocore-v2/index.js @@ -36,11 +36,27 @@ Object.keys(config).forEach(chain => { a = await api.multiCall({ abi: cannonicalPoolsAbi, calls: [...Array(5).keys()].map(i => ({ params: [factory, i, 2]})), target: factory}) a = a.flat() } else { - a = await api.call({ - abi: cannonicalPoolsAbi, - target: factory, - params: [factory, 0, 1000] - }) + 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)", From 549c528263685ce92480be645c53d611a94055ac Mon Sep 17 00:00:00 2001 From: shafu Date: Thu, 18 Jan 2024 21:41:51 +0100 Subject: [PATCH 0017/2004] Update index.js (#8703) --- projects/dyad/index.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/dyad/index.js b/projects/dyad/index.js index e99df72c07e..d8f921d39d7 100644 --- a/projects/dyad/index.js +++ b/projects/dyad/index.js @@ -1,9 +1,19 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: sumTokensExport({ owners: ['0xdc400bbe0b8b79c07a962ea99a642f5819e3b712', '0xcF97cEc1907CcF9d4A0DC4F492A3448eFc744F6c'], - tokens: [ADDRESSES.null, ADDRESSES.ethereum.WETH] }), + tvl: sumTokensExport({ + owners: [ + "0xdc400bbe0b8b79c07a962ea99a642f5819e3b712", + "0xcF97cEc1907CcF9d4A0DC4F492A3448eFc744F6c", + "0x7aE80418051b2897729Cbdf388b07C5158C557A1", + ], + tokens: [ + ADDRESSES.null, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WSTETH, + ], + }), }, }; From aa7894bbfee73f376c8267632fa46b1f41708c63 Mon Sep 17 00:00:00 2001 From: CelaPablo <49376193+CelaPablo@users.noreply.github.com> Date: Thu, 18 Jan 2024 17:44:51 -0300 Subject: [PATCH 0018/2004] updates BSC data (#8702) --- projects/sweep/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/sweep/index.js b/projects/sweep/index.js index 8600c1a9ef0..182704b8784 100644 --- a/projects/sweep/index.js +++ b/projects/sweep/index.js @@ -1,3 +1,4 @@ +const { ethers } = require("ethers"); const ADDRESSES = require('../helper/coreAssets.json'); const SWEEP_ADDRESS = '0xB88a5Ac00917a02d82c7cd6CEBd73E2852d43574'; const { sumTokens2 } = require('../helper/unwrapLPs') @@ -13,7 +14,7 @@ const config = { }; async function tvl(_a, _b, _c, { api }) { - const TOKEN = api.chain === "bsc" ? "USDT" : "USDC"; + 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] }) @@ -26,7 +27,7 @@ async function tvl(_a, _b, _c, { api }) { 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, bal)) + bals.forEach(bal => api.add(TOKEN_ADDRESS, Number(bal) * 10 ** DECIMALS)) return api.getBalances() } From 0f17a16a6ea7638c3e55abcb65739d37002faa0c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 Jan 2024 21:59:11 +0100 Subject: [PATCH 0019/2004] update liquidloans --- projects/liquidloans-io/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/liquidloans-io/index.js b/projects/liquidloans-io/index.js index 5eb3a0e6b5b..d8bbd753ce4 100644 --- a/projects/liquidloans-io/index.js +++ b/projects/liquidloans-io/index.js @@ -1,7 +1,9 @@ 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 From 0f20fca691f7195d43a59bff9bb79c00b5aed44e Mon Sep 17 00:00:00 2001 From: Mykola Bezruk Date: Thu, 18 Jan 2024 23:00:15 +0200 Subject: [PATCH 0020/2004] add evmos/neon to myso v2 (#8701) --- projects/myso-v2/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/myso-v2/index.js b/projects/myso-v2/index.js index 1d8399bba09..dcbec297f56 100644 --- a/projects/myso-v2/index.js +++ b/projects/myso-v2/index.js @@ -95,6 +95,12 @@ const config = { base: { fromBlock: 6239916, }, + evmos: { + fromBlock: 18112793, + }, + neon_evm: { + fromBlock: 237206849, + }, }; Object.keys(config).forEach((chain) => { From dbd1e828c391d47029ffce521bfc095d1cee9f25 Mon Sep 17 00:00:00 2001 From: ezoia-com <53337996+ezoia-com@users.noreply.github.com> Date: Fri, 19 Jan 2024 05:02:18 +0800 Subject: [PATCH 0021/2004] Update index.js (#8700) Add Uniswap V3 locked positions in Thetanuts V3 LongLiquidityVault contracts --- projects/thetanuts/index.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index 3fc521ba790..d8a06913b51 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -79,8 +79,15 @@ const arbCallVault = '0x0833EC3262Dcc417D88f85Ed5E1EBAf768080f41' const arbPutVault = '0xf94ea5B18401821BE07FBfF535B8211B061A7F70' const ethCallVaultArb = '0x1D1CD4abe0F2AF9d79b5e3149BF4A503f97C1EAd' const ethPutVaulArb = '0xA8459eC6DF0D9a61058C43a308dD8A2CEc9d550E' -const aArb = '0x116a7f52556a57F807CEACe228242C3c91D2C7E5' +// Assets locked in Aave V2 fork +const aArb = '0x116a7f52556a57F807CEACe228242C3c91D2C7E5' const aUsdc = '0xBEe683e6e5CE1e7Ea07c6f11DF240AcD92c33632' +const aWeth = '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' // Polygon zkEVM vaults const stMaticCallVault = '0x7bF3c7C23501EA3E09B237D6F8AdcB7Ea3CeF41C' @@ -129,6 +136,7 @@ const wcro = '0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23' // Arbitrum assets const arb = ADDRESSES.arbitrum.ARB const usdc_arb = ADDRESSES.arbitrum.USDC_CIRCLE +const univ3nft_arb = '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' // Polygon zkEVM assets const stMatic = '0x83b874c1e09D316059d929da402dcB1A98e92082' @@ -192,6 +200,12 @@ const config = { [usdc_arb, ethPutVaulArb,], [arb, aArb,], [usdc_arb, aUsdc,], + ], + LLVOwners: [ + [univ3nft_arb, arbC_LLV,], + [univ3nft_arb, arbP_LLV,], + [univ3nft_arb, ethC_LLV,], + [univ3nft_arb, ethP_LLV,], ] }, fantom: { @@ -251,8 +265,8 @@ const config = { } Object.keys(config).forEach(chain => { - const { tokensAndOwners } = config[chain] + const { tokensAndOwners, LLVOwners } = config[chain] module.exports[chain] = { - tvl: sumTokensExport({ tokensAndOwners, }) + tvl: sumTokensExport({ tokensAndOwners, resolveUniV3 : LLVOwners != null && LLVOwners.length > 0 ? true : false, uniV3nftsAndOwners : LLVOwners }) } }) From 255153b31e0bfab6575256ec24bac5abd2bc34eb Mon Sep 17 00:00:00 2001 From: PRDT Finance <87976805+PRDTfinance@users.noreply.github.com> Date: Thu, 18 Jan 2024 22:03:38 +0100 Subject: [PATCH 0022/2004] Added ARB to DEFILAMA (#8699) * Update index.js Added new classic contracts * Update to add USDC to TVL Added USDC to TVL * Added ETH contract TVL * code refactor * PRDT-Add ARB Added Arb --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/prdt/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/prdt/index.js b/projects/prdt/index.js index d0705872bd2..19a9b6564ab 100644 --- a/projects/prdt/index.js +++ b/projects/prdt/index.js @@ -8,6 +8,12 @@ const config = { }), tokens: [ADDRESSES.null, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.USDC], }, + arbitrum: { + owners: Object.values({ + predictionPROV2: "0x062EB9830D1f1f0C64ac598eC7921f0cbD6d4841", + }), + tokens: [ADDRESSES.null, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC], + }, bsc: { owners: Object.values({ predictionBNB: "0x31B8A8Ee92961524fD7839DC438fd631D34b49C6", From 6043d28396a0ec57c7d586c7c5b03017300ecc2e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 19 Jan 2024 06:05:32 +0000 Subject: [PATCH 0023/2004] fix weird rpc error on fantom --- projects/curve/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/projects/curve/index.js b/projects/curve/index.js index ca6831bd06a..0cc6d5f06f8 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -75,6 +75,18 @@ async function getNames(chain, tokens) { const registryIdsReverse = Object.fromEntries(Object.entries(registryIds).map(i => i.reverse())) async function getPool({ chain, block, registry }) { + if(chain === "fantom"){ + return ["0x27E611FD27b276ACbd5Ffd632E5eAEBEC9761E40", "0x92D5ebF3593a92888C25C0AbEF126583d4b5312E", "0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604", + "0x0fa949783947Bf6c1b171DB13AEACBB488845B3f", "0x4FC8D635c3cB1d0aa123859e2B2587d0FF2707b1"].map((t, i)=>({ + input: { + params: [i], + target: registry + }, + success: true, + output: t + } + )) + } 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) } From 9c899bdf8f66b6d99b0a49c84ca60d73719a04d3 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 19 Jan 2024 06:39:15 +0000 Subject: [PATCH 0024/2004] add factory --- projects/curve/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/curve/index.js b/projects/curve/index.js index 0cc6d5f06f8..6958efc9ef8 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -193,6 +193,7 @@ const config = { plainFactoryConfig: [ { plainFactory: '0x528baca578523855a64ee9c276826f934c86a54c', fromBlock: 17182168 }, { plainFactory: '0x0145fd99f1dd6e2491e44fca608c481c9c5b97a9', fromBlock: 17182168 }, + { plainFactory: '0x6a8cbed756804b16e05e741edabd5cb544ae21bf', fromBlock: 17182168 }, ] }, } From 1091cd5cf6dc796ebb8c4716ae05cbb3bd587cd2 Mon Sep 17 00:00:00 2001 From: Sudofina <139008586+sudofina@users.noreply.github.com> Date: Fri, 19 Jan 2024 02:52:06 -0500 Subject: [PATCH 0025/2004] Add Sudo finance TVL (#8706) --- projects/sudo-finance/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/sudo-finance/index.js diff --git a/projects/sudo-finance/index.js b/projects/sudo-finance/index.js new file mode 100644 index 00000000000..07776decc1d --- /dev/null +++ b/projects/sudo-finance/index.js @@ -0,0 +1,29 @@ +const sui = require("../helper/chain/sui"); + +const LIQUIDITY_POOL_VAULT = + "0x5e288c9acbb8746bb22f5d5c3af5e0ba6a7bf04fb276772c1035004f6ca98f37"; + +async function tvl(_, _1, _2, { api }) { + const depositVaultFields = await sui.getDynamicFieldObjects({ + parent: LIQUIDITY_POOL_VAULT, + }); + + 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, + methodology: 'counts the tokens in sudo liquidity pool', + sui: { + tvl, + }, +}; From 130adfd355b9633224b07dd4551ee7b4729681c3 Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Fri, 19 Jan 2024 03:07:14 -0500 Subject: [PATCH 0026/2004] Add Linea, Mantle, zkEVM, Blueprint on Ethereum, Uni v3 on BSC vaults to TVL calculation (#8705) Co-authored-by: Tatyana Stemkovski --- projects/ichifarm/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index d99533e14d2..0b4e3e2fe0f 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -35,6 +35,7 @@ const config = { vaultConfigs: [ { factory: '0x5a40DFaF8C1115196A1CDF529F97122030F26112', fromBlock: 13671610, isAlgebra: false, }, { factory: '0x8Dd50926e12BD71904bCCc6D86DFA55D42715094', fromBlock: 18754139, isAlgebra: false, }, //PancakeSwap + { factory: '0xEAeC81F0eD4F622D4b389672d9859166C0832b3E', fromBlock: 18870610, isAlgebra: false, }, //Blueprint ], oneFactory: '0xD0092632B9Ac5A7856664eeC1abb6E3403a6A36a', }, @@ -49,6 +50,7 @@ const config = { vaultConfigs: [ { factory: '0x131c03ca881B7cC66d7a5120A9273ebf675C241D', fromBlock: 29702590, isAlgebra: false, }, { factory: '0xAc93148e93d1C49D89b1166BFd74942E80F5D501', fromBlock: 32489803, isAlgebra: true, }, // Thena + { factory: '0x065356d9f628cDd1bb9F2384E2972CdAC50f51b7', fromBlock: 34595133, isAlgebra: false, }, // Uni v3 ], }, eon: { @@ -61,6 +63,16 @@ const config = { { factory: '0x8a76c26E0089111989C14EF56b9733aa38B94148', fromBlock: 20999423, isAlgebra: false, }, // zkSync Era ] }, + linea: { + vaultConfigs: [ + { factory: '0x0248b992ac2a75294b05286E9DD3A2bD3C9CFE4B', fromBlock: 1599561, isAlgebra: true, }, // Lynex + ] + }, + mantle: { + vaultConfigs: [ + { factory: '0xbBB97d634460DACCA0d41E249510Bb741ef46ad3', fromBlock: 39366721, isAlgebra: false, }, // Cleo + ] + }, polygon: { vaultConfigs: [ { factory: '0x2d2c72c4dc71aa32d64e5142e336741131a73fc0', fromBlock: 25697834, isAlgebra: false, }, @@ -69,6 +81,11 @@ const config = { ], oneFactory: '0x101eB16BdbA37979a771c86e1CAAfbaDbABfc879', }, + polygon_zkevm: { + vaultConfigs: [ + { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 4830529, isAlgebra: false, }, // Zero + ] + }, } Object.keys(config).forEach(chain => { From daf2a5b69bf24c0b5fb94b915e7dc646a7b7f16d Mon Sep 17 00:00:00 2001 From: Define101 Date: Fri, 19 Jan 2024 12:41:30 +0000 Subject: [PATCH 0027/2004] add wemix liquid --- projects/wemix-liquid-staking/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/wemix-liquid-staking/index.js diff --git a/projects/wemix-liquid-staking/index.js b/projects/wemix-liquid-staking/index.js new file mode 100644 index 00000000000..5051d72fdda --- /dev/null +++ b/projects/wemix-liquid-staking/index.js @@ -0,0 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const token = '0x9B377bd7Db130E8bD2f3641E0E161cB613DA93De' + +async function tvl(_, _1, _2, { 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 + } +} From b724ebededaf226c136bd68665c3a2cd7e4aa2d4 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 19 Jan 2024 14:04:03 +0000 Subject: [PATCH 0028/2004] remove fantom workaround --- projects/curve/index.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index 6958efc9ef8..a596aa37497 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -75,18 +75,6 @@ async function getNames(chain, tokens) { const registryIdsReverse = Object.fromEntries(Object.entries(registryIds).map(i => i.reverse())) async function getPool({ chain, block, registry }) { - if(chain === "fantom"){ - return ["0x27E611FD27b276ACbd5Ffd632E5eAEBEC9761E40", "0x92D5ebF3593a92888C25C0AbEF126583d4b5312E", "0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604", - "0x0fa949783947Bf6c1b171DB13AEACBB488845B3f", "0x4FC8D635c3cB1d0aa123859e2B2587d0FF2707b1"].map((t, i)=>({ - input: { - params: [i], - target: registry - }, - success: true, - output: t - } - )) - } 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) } From 15f952c265f514b0611edaaed27985b12c5f3bdb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 Jan 2024 22:31:45 +0100 Subject: [PATCH 0029/2004] update sdk version --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index eedf9f26bb9..6d160ebdf59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,14 +886,14 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.8.tgz", - "integrity": "sha512-nqbfMoOcqz6pM5Qsz/dAlzN1IArFCcP4Jg7uCvBZL+w50QqTMdy7Xb5Bmeof+GpNCoYVtYf1snc+7E/1dp2crw==", + "version": "5.0.16", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.16.tgz", + "integrity": "sha512-aVGz9asuIFWl0no1LRPXxXPQgLNJzKZfizu6fD6My18rmvyPtG3/DpevIPEuiH4EvEsH12c8Br2RBOpIvZizXw==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", + "axios": "^1.6.5", "ethers": "^6.0.0", - "node-fetch": "^2.6.7", "p-limit": "^3.0.0", "tron-format-address": "^0.1.11" } From f4db6539cdbffdc4dd08161152ded8975e3e2d83 Mon Sep 17 00:00:00 2001 From: ZKFairSwap <156829707+zkfairswapdex@users.noreply.github.com> Date: Sat, 20 Jan 2024 05:03:37 +0700 Subject: [PATCH 0030/2004] Add ZKFairSwap Dex (#8709) * Add ZKFairSwap Dex * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkfairswap/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/zkfairswap/index.js diff --git a/projects/zkfairswap/index.js b/projects/zkfairswap/index.js new file mode 100644 index 00000000000..c9145bae538 --- /dev/null +++ b/projects/zkfairswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport( "zkfair", "0xeA70460a5B0E3A94EC05b1AaFCe9e6Eb11C334A0", { fetchBalances: true } ); From f1410c2258fdb1c42e655c994433efe500253b7f Mon Sep 17 00:00:00 2001 From: FomoBBoy <152215733+FomoBBoy@users.noreply.github.com> Date: Fri, 19 Jan 2024 23:04:18 +0100 Subject: [PATCH 0031/2004] add CirclePacific (#8710) Co-authored-by: DEV --- projects/CirclePacific/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/CirclePacific/index.js diff --git a/projects/CirclePacific/index.js b/projects/CirclePacific/index.js new file mode 100644 index 00000000000..be017a12149 --- /dev/null +++ b/projects/CirclePacific/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + manta: { tvl: getUniTVL({ factory: '0xD8c3DBE9C3953Fda5e4573533e662C58A37E1455', useDefaultCoreAssets: true, fetchBalances: true, }), }, +} From 5715b0aeab73f127b6c02bcdb15ae053e7a47923 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jan 2024 02:52:31 -0800 Subject: [PATCH 0032/2004] Update/add staking pool (#8712) * Staking pool and TT subgraph url update * Add ztx staking pool * update subgraph endpoint * update avax endpoint --- projects/steer/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/steer/index.js b/projects/steer/index.js index 2ebfff3bad8..ec4d9c65604 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -34,13 +34,13 @@ const supportedChains = [ }, { name: 'Avalanche', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/avalance-test-subgraph', + subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/steerprotocol/steer-protocol-avalanche', chainId: 43114, identifier: 'avax' }, { name: 'Thundercore', - subgraphEndpoint: 'https://subgraph.steer.finance/thundercore/subgraphs/name/steerprotocol/steer-thundercore', + subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-thundercore/1.0.0/gn', chainId: 108, identifier: 'thundercore' }, @@ -118,4 +118,4 @@ supportedChains.forEach(chain => { } }) -module.exports.arbitrum.staking = stakings(["0xB10aB1a1C0E3E9697928F05dA842a292310b37f1", "0x0b619438d1E8b8c205656502de59Af2Af71C43e0"], "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", "arbitrum") +module.exports.arbitrum.staking = stakings(["0xB10aB1a1C0E3E9697928F05dA842a292310b37f1", "0x0b619438d1E8b8c205656502de59Af2Af71C43e0", "0x25Ef108B328Cf752F0E0b0169D499Db164173763"], "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", "arbitrum") From 18b5642fe76e094e46c8fe7c00d1a66bb7ea3918 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 21 Jan 2024 12:49:14 +0100 Subject: [PATCH 0033/2004] fix broken adapters --- package-lock.json | 6 +++--- projects/helper/chain/cosmos.js | 2 +- projects/ttswap/index.js | 13 +++++++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d160ebdf59..5afd454717d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.16", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.16.tgz", - "integrity": "sha512-aVGz9asuIFWl0no1LRPXxXPQgLNJzKZfizu6fD6My18rmvyPtG3/DpevIPEuiH4EvEsH12c8Br2RBOpIvZizXw==", + "version": "5.0.19", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.19.tgz", + "integrity": "sha512-vxtb6KuxOCDzGybBuMyyfRztyIbgAgir8xBfDEghS1kD02U8CEvgO9iVwIlIJwttpY6hOiiRByqokcqVDRhdXA==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 0f27be7b9f7..d7bd17aab7e 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -11,7 +11,7 @@ const ADDRESSES = require('../coreAssets.json') // https://cosmos-chain.directory/chains const endPoints = { crescent: "https://mainnet.crescent.network:1317", - osmosis: "https://osmosis-api.polkachu.com", + osmosis: "https://rest.cosmos.directory/osmosis", cosmos: "https://cosmoshub-lcd.stakely.io", kujira: "https://kuji-api.kleomedes.network", comdex: "https://rest.comdex.one", diff --git a/projects/ttswap/index.js b/projects/ttswap/index.js index 3d55c03325e..8b402040e91 100644 --- a/projects/ttswap/index.js +++ b/projects/ttswap/index.js @@ -2,7 +2,7 @@ const { transformDexBalances } = require("../helper/portedTokens") const { getLogs } = require('../helper/cache/getLogs') const { nullAddress } = require("../helper/tokenMapping") const sdk = require('@defillama/sdk') -const { sliceIntoChunks } = require("../helper/utils") +const { sliceIntoChunks, sleep } = require("../helper/utils") async function tvl(_, _b, _cb, { api, }) { const factory = '0xcE393b11872EE5020828e443f6Ec9DE58CD8b6c5' @@ -15,15 +15,20 @@ async function tvl(_, _b, _cb, { api, }) { 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 }) + const allToken1Res = await api.multiCall({ abi: 'erc20:balanceOf', calls }) 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) - let { output: token0Res } = await sdk.api.eth.getBalances({ ...api, targets: exchanges, }) + 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) - sdk.log(token1s.length) const data = [] token1s.map((v, i) => { data.push({ From 3b45ea5555bce0c104aa6b9a8997a169e8503c4f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 22 Jan 2024 04:06:46 +0000 Subject: [PATCH 0034/2004] add new factories to curve --- projects/curve/abi.json | 6 ++++-- projects/curve/contracts.json | 30 ++++++++++++++++++++---------- projects/curve/index.js | 3 +++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/projects/curve/abi.json b/projects/curve/abi.json index 64a99cb63a0..eca2ca186e8 100644 --- a/projects/curve/abi.json +++ b/projects/curve/abi.json @@ -8,13 +8,15 @@ "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])" + "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])" + "triCryptoFactory": "function get_coins(address _pool) view returns (address[3])", + "CurveStableswapFactoryNG": "function get_coins(address _pool) view returns (address[])" } } \ No newline at end of file diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json index 3af464c9a78..e6f2e917dbb 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -35,7 +35,8 @@ "address": "0x95dfdc8161832e4ff7816ac4b6367ce201538253", "currency": "KRW" } - } + }, + "CurveStableswapFactoryNG": "0x6A8cbed756804B16E05E741eDaBd5cB544AE21bf" }, "polygon": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -50,7 +51,8 @@ "0xd6d9bc8e2b894b5c73833947abdb5031cc7a4894", "0xa7fd7d83e2d63f093b71c5f3b84c27cff66a7802", "0xacfbe6979d58b55a681875fc9adad0da4a37a51b" - ] + ], + "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" }, "arbitrum": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -58,7 +60,8 @@ "wrapped": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", "metapoolBases": { "2CRV": "0xbf7e49483881c76487b0989cd7d9a8239b20ca41" - } + }, + "CurveStableswapFactoryNG": "0x9AF14D26075f142eb3F292D5065EB3faa646167b" }, "aurora": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -66,7 +69,8 @@ "wrapped": "0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb", "metapoolBases": { "3CRV": "0xbf7e49483881c76487b0989cd7d9a8239b20ca41" - } + }, + "CurveStableswapFactoryNG": "0x5eeE3091f747E60a045a2E715a4c71e600e31F6E" }, "avax": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -74,7 +78,8 @@ "wrapped": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", "metapoolBases": { "av3CRV": "0xb0d2eb3c2ca3c6916fab8dcbf9d9c165649231ae" - } + }, + "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" }, "fantom": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -93,7 +98,8 @@ "scFUSDT": "0x02224765bc8d54c21bb51b0951c80315e1c263f9", "scMIM": "0x90b7c21be43855afd2515675fc307c084427404f" }, - "yearnTokens": {} + "yearnTokens": {}, + "CurveStableswapFactoryNG": "0xe61Fb97Ef6eBFBa12B36Ffd7be785c1F5A2DE66b" }, "harmony": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -117,7 +123,8 @@ }, "blacklist": [ "0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93" - ] + ], + "CurveStableswapFactoryNG": "0xd2002373543Ce3527023C75e7518C274A51ce712" }, "optimism": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -125,7 +132,8 @@ "wrapped": "0x4200000000000000000000000000000000000006", "metapoolBases": { "3CRV": "0x1337bedc9d22ecbe766df105c9623922a27963ec" - } + }, + "CurveStableswapFactoryNG": "0x5eeE3091f747E60a045a2E715a4c71e600e31F6E" }, "xdai": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -133,7 +141,8 @@ "wrapped": "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d", "metapoolBases": { "3CRV": "0x1337bedc9d22ecbe766df105c9623922a27963ec" - } + }, + "CurveStableswapFactoryNG": "0xbC0797015fcFc47d9C1856639CaE50D0e69FbEE8" }, "moonbeam": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", @@ -145,6 +154,7 @@ "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "wrapped": "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", - "metapoolBases": {} + "metapoolBases": {}, + "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" } } diff --git a/projects/curve/index.js b/projects/curve/index.js index a596aa37497..d0377005b56 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -97,6 +97,9 @@ async function getPools(block, chain) { .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 + } const poolList = {} await Promise.all(Object.entries(registriesMapping).map(async ([registry, addr]) => { poolList[registry] = await getPool({ chain, block, registry: addr }) From c86f043ad33faafe354f4afbdc8cb088cba52ce2 Mon Sep 17 00:00:00 2001 From: kappayield-range <131840920+kappayield-range@users.noreply.github.com> Date: Mon, 22 Jan 2024 15:55:19 +0800 Subject: [PATCH 0035/2004] Add ethereum-uniswap factory vault (#8715) --- projects/range/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/range/index.js b/projects/range/index.js index 175b8c5d9bf..566f1a60359 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -6,6 +6,7 @@ const config ={ { factory: '0xf1e70677fb1f49471604c012e8B42BA11226336b', fromBlock: 17266660 }, // uniswap { factory: '0x3edeA0E6E94F75F86c62E1170a66f4e3bD7d77fE', fromBlock: 18460401 }, // pancakeswap { factory: '0xDE07a0D5C9CA371E41a869451141AcE84BCAd119', fromBlock: 18375548 }, // GHO + { factory: '0x06D38cFA75FE0E9C41B0C58F102bCb2Df2577732', fromBlock: 10000835 } // uniswap ], arbitrum: [ { factory: '0xB9084c75D361D1d4cfC7663ef31591DeAB1086d6', fromBlock: 88503603 }, // uniswap From 0f71c00d9a4551c85fe40b8120932dc69f7d0ff2 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Mon, 22 Jan 2024 17:17:56 +0900 Subject: [PATCH 0036/2004] add vaultka LINK's lending pool to tvl * add vaultka LINK's lending pool to tvl --- projects/vaultka/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index 8c04d79b986..8158ba163ec 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -63,6 +63,7 @@ module.exports = { gin: "0x482368a8E701a913Aa53CB2ECe40F370C074fC7b", alpStaking: "0x85146C0c5968d9640121eebd13030c99298f87b3", alpAddresses: "0xBc76B3FD0D18C7496C0B04aeA0Fe7C3Ed0e4d9C9", + vodkaV2DN_LINK_Water: "0xFF614Dd6fC857e4daDa196d75DaC51D522a2ccf7", }; await api.sumTokens({ @@ -93,6 +94,7 @@ module.exports = { //GmVault [addresses.gmWeth, addresses.agedVodkaV2_ETH], [addresses.gmBtc, addresses.agedVodkaV2_BTC], + [ADDRESSES.arbitrum.LINK, addresses.vodkaV2DN_LINK_Water], ], }); From 2002f7193e76812f8f756990be3ab9143e427b23 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Jan 2024 09:43:44 +0100 Subject: [PATCH 0037/2004] Amulet-v2.1 (#8718) * remove staking pool * add tvl calculation for Amulet Protocol * code clean * tvl on optimism / solana for amulet v2 * code refactor --------- Co-authored-by: yym-mtrlabs Co-authored-by: yym-MetaRisk <95009952+yym-MetaRisk@users.noreply.github.com> Co-authored-by: tinaOVO Co-authored-by: alex-MetaRisk <96643839+alexandrosgoh@users.noreply.github.com> Co-authored-by: Alex --- projects/amulet-v2/erc4626.json | 4 ++ projects/amulet-v2/index.js | 66 +++++++++++++++++++++++---------- 2 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 projects/amulet-v2/erc4626.json diff --git a/projects/amulet-v2/erc4626.json b/projects/amulet-v2/erc4626.json new file mode 100644 index 00000000000..b92419174d9 --- /dev/null +++ b/projects/amulet-v2/erc4626.json @@ -0,0 +1,4 @@ +{ + "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 index 7586a7f07f6..d64c6554369 100644 --- a/projects/amulet-v2/index.js +++ b/projects/amulet-v2/index.js @@ -1,8 +1,5 @@ - -const erc4626Abi = { - "totalAssets": "uint256:totalAssets", - "asset": "address:asset" -} +const erc4626Abi = require("./erc4626.json"); +const { sumTokens2 } = require("../helper/solana"); const erc4626Vaults = { "ethereum": [ @@ -14,6 +11,11 @@ const erc4626Vaults = { ] } +const getERC4626VaultFundsByChain = async (api) => { + const vaults = erc4626Vaults[api.chain]; + await api.erc4626Sum({ calls: vaults ?? [], isOG4626: true }) +} + const erc4626VaultsIdle = { "ethereum": [ "0xFDAD59EF0686C3Da702b7D651a3bD35a539c8Bc4", @@ -24,6 +26,14 @@ const erc4626VaultsIdle = { "polygon_zkevm": [ "0x923917304012C7E14d122eb1D6A8f49f608bC06B", "0x53DAC8d715350AFb3443D346aa3Abd73dA4534F0", + ], + "optimism": [ + "0x923917304012C7E14d122eb1D6A8f49f608bC06B", + "0x53DAC8d715350AFb3443D346aa3Abd73dA4534F0", + "0x07E7d45bC488dE9eeD94AA5f9bb8C845F4b21aFa", + "0xE92B7a8eb449AbA20DA0B2f5b2a4f5f25F95F3C4", + "0xfCB69E5E535e04A809dC8Af7eba59c2FED4b2868", + "0xf06e004caB43F326AA3668C8723A8bDBCF5bD165", ] } @@ -34,15 +44,19 @@ const idleCdos = { ], "polygon_zkevm": [ "0x6b8A1e78Ac707F9b0b5eB4f34B02D9af84D2b689" + ], + "optimism": [ + "0xe49174F0935F088509cca50e54024F6f8a6E08Dd", + "0x94e399Af25b676e7783fDcd62854221e67566b7f", + "0x8771128e9E386DC8E4663118BB11EA3DE910e528" ] } const getERC4626IdleVaultFundsByChain = async (api) => { - const cdos = idleCdos[api.chain] - const vaults = erc4626VaultsIdle[api.chain]; - if (!cdos || !vaults) return; + 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 }) @@ -52,36 +66,50 @@ const getERC4626IdleVaultFundsByChain = async (api) => { trancheTokensMapping[aatrances[i]] = { token: token[i], decimals: tokenDecimals, - price: aaprices[i] / 10 ** tokenDecimals + price: aaprices[i] / (10 ** tokenDecimals), } trancheTokensMapping[bbtrances[i]] = { token: token[i], decimals: tokenDecimals, - price: bbprices[i] / 10 ** 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 }), - ]).then((o) => o.map((it) => it)); + ]) return _totalVaultFunds.map((it, idx) => { + if (!it) return null const trancheToken = _vaultAssets[idx] - const decimals = trancheTokensMapping[trancheToken].decimals - const trancheTokenPrice = trancheTokensMapping[trancheToken].price || 1 - const underlyingToken = trancheTokensMapping[trancheToken].token - const underlyingTokenBalance = (it || 0) * trancheTokenPrice / 10 ** (18 - decimals) - api.add(underlyingToken, underlyingTokenBalance) + const { token, decimals, price } = trancheTokensMapping[trancheToken] + const underlyingTokenBalance = it * price / (10 ** (18 - decimals)) + api.add(token, underlyingTokenBalance) }); } async function tvl(_, block, _cb, { api, }) { - await api.erc4626Sum({ calls: erc4626Vaults[api.chain] ?? [], tokenAbi: 'asset', balanceAbi: 'totalAssets', }) - await getERC4626IdleVaultFundsByChain(api) + await getERC4626VaultFundsByChain(api); + if (idleCdos[api.chain]) + await getERC4626IdleVaultFundsByChain(api); + return api.getBalances() } +async function SolanaTvl() { + const tokensAndOwners = [ + ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'AkkGFKVJY8o5MRqBf2St4Q8NQnfTTi2bSssMMk9zXAMr'], + ['J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', '86vJYeZiXc9Uq1wmtLzERDfQzAnpoJgs2oF5Y4BirKkn'], + ['bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1', '8HpEPmkKb6T7xNDzhheWhK2P6BEdp2nGv7JbcEoDmDST'] + ] + + return sumTokens2({ tokensAndOwners }) +} + module.exports = { ethereum: { tvl }, - polygon_zkevm: { tvl } + polygon_zkevm: { tvl }, + optimism: { tvl }, + solana: { tvl: SolanaTvl } } \ No newline at end of file From 86e8e974b03a610a5dc730fc1e74931729f65163 Mon Sep 17 00:00:00 2001 From: Jazz Bashara <110779103+JazzBashara@users.noreply.github.com> Date: Mon, 22 Jan 2024 19:48:03 +0700 Subject: [PATCH 0038/2004] Add FerdyFlip TVL (#8719) * Add FerdyFlip TVL * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ferdyflip/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/ferdyflip/index.js diff --git a/projects/ferdyflip/index.js b/projects/ferdyflip/index.js new file mode 100644 index 00000000000..c135dca3b61 --- /dev/null +++ b/projects/ferdyflip/index.js @@ -0,0 +1,18 @@ +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'], + }, + base: { + tokens: [ADDRESSES.base.WETH, nullAddress], owners: ['0x3b6014e4b38791444a352D687022D6d6d79Eb99c'], + }, +}; + +Object.keys(config).forEach((chain) => { + module.exports[chain] = { + tvl: sumTokensExport(config[chain]), + }; +}); From a821f5f7b757faf0ff89fbb2c081168beeff2e17 Mon Sep 17 00:00:00 2001 From: Kashew <42247026+youngkashew@users.noreply.github.com> Date: Mon, 22 Jan 2024 22:41:29 +0800 Subject: [PATCH 0039/2004] Adds Struct Finance's integration with TraderJoe AutoPools to TVL (#8716) * feature: add logic to fetch TVL of TJAP struct vaults and value of AP tokens belonging to yield source contracts - TODO: fix GMX sumTokens2 call and merge results with TJAP * feature: add EURC token address to avax coreAssets * feature: create constants and utils files * fix: GMX token sums * fix: convert strings to floats * refactor var names * refactor: replace hardcoded avax string with api.chain * refactor: rename and move around some variables * refactor: function names and comments for clarity * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 1 + projects/struct-finance/constants.js | 80 ++++++++++++++++++++++++++++ projects/struct-finance/index.js | 60 +++++++++++++++------ projects/struct-finance/utils.js | 12 +++++ 4 files changed, 138 insertions(+), 15 deletions(-) create mode 100644 projects/struct-finance/constants.js create mode 100644 projects/struct-finance/utils.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index dadf8402cbe..a10f5fc3cdf 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -74,6 +74,7 @@ "avax": { "WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", "USDC": "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", + "EURC": "0xc891eb4cbdeff6e073e859e987815ed1505c2acd", "DAI": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", "USDT_e": "0xc7198437980c041c805a1edcba50c1ce5db95118", "USDt": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", diff --git a/projects/struct-finance/constants.js b/projects/struct-finance/constants.js new file mode 100644 index 00000000000..4fcffbbf821 --- /dev/null +++ b/projects/struct-finance/constants.js @@ -0,0 +1,80 @@ +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", + factory: "0x269B0AA870f1257DE00fA7E786Fd07d46cE8d26b", + }, + }, + token: { + gmx: { + fsGlp: "0x9e295b5b976a184b14ad8cd72413ad846c299660", + }, + tjap: { + avaxUsdcAutovault: "0x32833a12ed3Fd5120429FB01564c98ce3C60FC1d", + avaxBtcbAutovault: "0x1C739A43606794849750C50bC7C43FBbDAcdf801", + avaxWetheAutovault: "0x6178dE6E552055862CF5c56310763EeC0145688d", + eurcUsdcAutovault: "0x052AF5B8aC73082D8c4C8202bB21F4531A51DC73", + }, + }, +}; + +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, + }, +}; + +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 index 4f9528e73f9..ea60dfe31de 100644 --- a/projects/struct-finance/index.js +++ b/projects/struct-finance/index.js @@ -1,28 +1,58 @@ -const ADDRESSES = require('../helper/coreAssets.json'); +const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokens2 } = require("../helper/unwrapLPs"); - -const addresses = { - struct: { - gmxYieldSource: "0x6aE12b0adF9716181c07D19dfe76442AB1b3817b", - gmxFactory: "0x46f8765781ac36e5e8f9937658fa311af9d735d7", - }, - token: { - fsGlp: "0x9e295b5b976a184b14ad8cd72413ad846c299660", - }, -}; +const { sumAutoPoolTokenXY } = require("./utils"); +const { + addresses, + autoPoolABI, + aptFarmUserInfoCalls, + aptFarmAddress, + aptFarmABI +} = require("./constants"); async function tvl(ts, _, __, { api }) { - const vaults = await api.fetchList({ lengthAbi: 'uint256:totalProducts', itemAbi: "function allProducts(uint256) external view returns (address)", target: addresses.struct.gmxFactory}) - vaults.push(addresses.struct.gmxYieldSource); + 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: vaults, + owners: [vaultsTjap, vaultsGmx].flat(), tokens: [ ADDRESSES.avax.BTC_b, ADDRESSES.avax.USDC, ADDRESSES.avax.WETH_e, - addresses.token.fsGlp, + ADDRESSES.avax.EURC, + ADDRESSES.avax.WAVAX, + addresses.token.gmx.fsGlp, ], }); } diff --git a/projects/struct-finance/utils.js b/projects/struct-finance/utils.js new file mode 100644 index 00000000000..5e161a7f4f2 --- /dev/null +++ b/projects/struct-finance/utils.js @@ -0,0 +1,12 @@ +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 From eb064f6e458734276ed38c164cc61de86d359dd6 Mon Sep 17 00:00:00 2001 From: Apple Pie <104250261+applepiefin@users.noreply.github.com> Date: Mon, 22 Jan 2024 19:52:15 +0500 Subject: [PATCH 0040/2004] feat: implement for applepie TVL (#8721) * feat:implement applepie * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/applepie/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/applepie/index.js diff --git a/projects/applepie/index.js b/projects/applepie/index.js new file mode 100644 index 00000000000..1cb02e6575d --- /dev/null +++ b/projects/applepie/index.js @@ -0,0 +1,20 @@ +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.", + start: 35011373, + bsc: { + tvl: sumTokensExport({ + tokensAndOwners: [ + [ADDRESSES.null, '0xBc4719D9F347EB1d9551d71862d2Cb4db99916f9'], + ['0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', '0x4356c2d63e9376024e7E953e18cfC7125e643eE5'], + [ADDRESSES.bsc.USDT, '0x6E8e3F4C058C5e0422E971CE27B0fc91175F4018'], + ] + }), + staking: sumTokensExport({ owners: ['0x77F7285d23ca4A9FdAe238d29a20a38482d9B4B7'], tokens: TOKENS, lps: LPS, useDefaultCoreAssets: true, }), + }, +} From 4789e3053be05edb2cfce98f6da7a7660499ad10 Mon Sep 17 00:00:00 2001 From: Eugene <57300277+Apollo50@users.noreply.github.com> Date: Mon, 22 Jan 2024 18:01:30 +0300 Subject: [PATCH 0041/2004] Add Minterest project TVL for Ethereum mainnet && Mantle networks [ready for review] (#8689) * Add Minterest project TVL and borrow for Ethereum mainnet && Mantle networks * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/minterest/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/minterest/index.js diff --git a/projects/minterest/index.js b/projects/minterest/index.js new file mode 100644 index 00000000000..976390a1723 --- /dev/null +++ b/projects/minterest/index.js @@ -0,0 +1,18 @@ +const { compoundExports2 } = require('../helper/compound') + +module.exports = { + hallmarks: [ + [1677133355, "MINTY distribution begins on Ethereum"], + [1704369540, "MINTY distribution begins on Mantle"], + ], +} + +const config = { + ethereum: "0xD13f50274a68ABF2384C79248ADc259b3777c081", + mantle: "0xe53a90EFd263363993A3B41Aa29f7DaBde1a932D", +} + + +Object.keys(config).forEach(chain => { + module.exports[chain] = compoundExports2({ comptroller: config[chain], }) +}) From fdb84a75a23e43c666a370c90e409cf5c067d06b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 22 Jan 2024 17:04:58 +0000 Subject: [PATCH 0042/2004] add hallmark --- projects/Inufair/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/Inufair/index.js b/projects/Inufair/index.js index f5fcd7b1dc6..d5989571304 100644 --- a/projects/Inufair/index.js +++ b/projects/Inufair/index.js @@ -1,3 +1,4 @@ const { uniTvlExport } = require('../helper/unknownTokens'); +module.exports.hallmarks=[[1705708800,"Rug Pull"]]; module.exports = uniTvlExport('zkfair', '0x3582Ccde3F786229CE6Dbd88c5aDb86bF64DAA31', { fetchBalances: true, }) From 702d51434bf7d9177c4899058447db0b9b605a62 Mon Sep 17 00:00:00 2001 From: Define101 Date: Mon, 22 Jan 2024 17:55:48 +0000 Subject: [PATCH 0043/2004] replace hallmark zkbase --- projects/zkswap-2/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/zkswap-2/index.js b/projects/zkswap-2/index.js index 6aa459c1c49..5c3d35a31fd 100644 --- a/projects/zkswap-2/index.js +++ b/projects/zkswap-2/index.js @@ -5,7 +5,7 @@ const zks = ""; module.exports = { hallmarks: [ - [1704844800,"Project Exploited"] + [1704844800,"Whale Withdraw"] ], misrepresentedTokens: true, era: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) }, From a0a549ec6e04723229947d6d1b74ed9bc597973c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 23 Jan 2024 05:01:44 +0000 Subject: [PATCH 0044/2004] stars arena new contract --- projects/starshares/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/starshares/index.js b/projects/starshares/index.js index d17541f4609..0bf32f223ee 100644 --- a/projects/starshares/index.js +++ b/projects/starshares/index.js @@ -1,9 +1,9 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const contract = "0x69B7F08B2952e2EE3CA4222190BCF07831f1096f" +const contract = "0xC605C2cf66ee98eA925B1bb4FeA584b71C00cC4C" async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owners: [contract, '0x563395A2a04a7aE0421d34d62ae67623cAF67D03', '0xa481b139a1a654ca19d2074f174f17d7534e8cec'], api }) + return sumTokens2({ tokens: [nullAddress], owners: [contract, '0x563395A2a04a7aE0421d34d62ae67623cAF67D03', '0xa481b139a1a654ca19d2074f174f17d7534e8cec', '0x69B7F08B2952e2EE3CA4222190BCF07831f1096f'], api }) } module.exports = { From c0fa876a012bf90e238863c7daa4bec743e29def Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 23 Jan 2024 06:11:36 +0000 Subject: [PATCH 0045/2004] pyth staking --- projects/pyth/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/pyth/index.js diff --git a/projects/pyth/index.js b/projects/pyth/index.js new file mode 100644 index 00000000000..5129fbb0c67 --- /dev/null +++ b/projects/pyth/index.js @@ -0,0 +1,19 @@ +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 From a3028dc4c91d38e58e7273b778a1b1356d4be045 Mon Sep 17 00:00:00 2001 From: codehans <94654388+codehans@users.noreply.github.com> Date: Tue, 23 Jan 2024 09:33:29 +0000 Subject: [PATCH 0046/2004] Unwrap Ghost receipt tokens for Orca --- projects/orca-kujira/index.js | 42 ++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/projects/orca-kujira/index.js b/projects/orca-kujira/index.js index 0bd465e0bac..521c8a98bd6 100644 --- a/projects/orca-kujira/index.js +++ b/projects/orca-kujira/index.js @@ -1,14 +1,40 @@ -const { sumTokens } = require('../helper/chain/cosmos') +const { sumTokens } = require("../helper/chain/cosmos"); const { getConfig } = require("../helper/cache"); +const { queryContract, queryV1Beta1 } = require("../helper/chain/cosmos"); +async function tvl(_, _1, _2, { 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: {} }, + }); -async function tvl() { - const contracts = await getConfig("kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json"); - const orcaPools = contracts["kaiyo-1"].orca.map(x => x.address) - const owners = [ - ...orcaPools, - ] - return sumTokens({ owners, chain: 'kujira' }) + api.add(denom, balance.amount * deposit_redemption_ratio); + } else { + api.add(denom, balance.amount); + } + } + return api.getBalances(); } module.exports = { From 23c18d41e8cc67384f5231f7c382b6c96133c140 Mon Sep 17 00:00:00 2001 From: Jazz Bashara <110779103+JazzBashara@users.noreply.github.com> Date: Wed, 24 Jan 2024 05:01:42 +0700 Subject: [PATCH 0047/2004] Add earliest timestamp the FerdyFlip adapter will work at (#8725) --- projects/ferdyflip/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/ferdyflip/index.js b/projects/ferdyflip/index.js index c135dca3b61..97382690349 100644 --- a/projects/ferdyflip/index.js +++ b/projects/ferdyflip/index.js @@ -13,6 +13,7 @@ const config = { Object.keys(config).forEach((chain) => { module.exports[chain] = { + start: 1675962000, //Fri Feb 10 2023 tvl: sumTokensExport(config[chain]), }; }); From 95779c38e8bee9f8afbcb1632ff4f158f423da24 Mon Sep 17 00:00:00 2001 From: MirthFutures <69535002+MirthFutures@users.noreply.github.com> Date: Tue, 23 Jan 2024 17:03:17 -0500 Subject: [PATCH 0048/2004] Add Mantle and Linea to Beefy (#8727) --- projects/beefy/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 4a2bacb4e4b..135617808e6 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -46,12 +46,14 @@ const chains = { moonbeam: 1284, moonriver: 1285, kava: 2222, + mantle: 5000, canto: 7700, base: 8453, arbitrum: 42161, celo: 42220, oasis: 42262, avax: 43114, + linea: 59144, aurora: 1313161554, harmony: 1666600000 } From a6db3ee0e617e307140858a6d60ae8353b498eb8 Mon Sep 17 00:00:00 2001 From: killbond007 Date: Tue, 23 Jan 2024 23:04:51 +0100 Subject: [PATCH 0049/2004] feat:Add manta vtoken (#8728) --- projects/bifrost-staking/api.js | 6 +++++- projects/bifrost-staking/index.js | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/projects/bifrost-staking/api.js b/projects/bifrost-staking/api.js index 711ed37c2db..89b67c33fd0 100644 --- a/projects/bifrost-staking/api.js +++ b/projects/bifrost-staking/api.js @@ -21,6 +21,7 @@ function formatTokenAmount(amount, tokenSymbol) { case "MOVR": case "FIL": case "ASTR": + case "MANTA": decimals = 18; break; } @@ -36,7 +37,8 @@ const tokenToCoingecko = { GLMR: "moonbeam", ETH: "ethereum", FIL: "filecoin", - ASTR: "astar" + ASTR: "astar", + MANTA: "manta-network" }; function formatToken(token) { @@ -49,6 +51,8 @@ function formatToken(token) { return "FIL"; case '3': return "ASTR"; + case '8': + return "MANTA"; default : return null; } diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js index 6df47fe57bc..5f7425d9bf5 100644 --- a/projects/bifrost-staking/index.js +++ b/projects/bifrost-staking/index.js @@ -55,4 +55,11 @@ module.exports = { return { astar }; }, }, + manta: { + tvl: async () => { + const { bifrost } = getExports("bifrost-staking", ["bifrost"]); + const { manta } = await bifrost.tvl(); + return { manta }; + }, + }, }; From a22ca810a401e26e4ccba458fa9c3f0510c9780d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Tue, 23 Jan 2024 23:06:25 +0100 Subject: [PATCH 0050/2004] Add Nostra Pools (#8729) --- projects/nostra-pools/abi.js | 75 ++++++++++++++++++++++++++++++++++ projects/nostra-pools/index.js | 54 ++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 projects/nostra-pools/abi.js create mode 100644 projects/nostra-pools/index.js diff --git a/projects/nostra-pools/abi.js b/projects/nostra-pools/abi.js new file mode 100644 index 00000000000..259dedf562f --- /dev/null +++ b/projects/nostra-pools/abi.js @@ -0,0 +1,75 @@ +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, core::integer::u64)", + }, + ], + 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 new file mode 100644 index 00000000000..15037064f27 --- /dev/null +++ b/projects/nostra-pools/index.js @@ -0,0 +1,54 @@ +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 = "0x352e14b9bdc0138e48b55d45914b059f0388284c77a23a97776e6197852f050"; + +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("nostra-pools", "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("nostra-pools", "starknet", cache); + } + + const data = []; + reserves.forEach((reserve, i) => { + 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, + }, +}; From bd18bed29d82c1add92f7ed9a76c872ae69e6aec Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 10:29:01 +0100 Subject: [PATCH 0051/2004] fix broken adapters --- projects/helper/chain/ton.js | 7 ++++--- projects/orbitbridge/index.js | 9 ++------- projects/ton-locker/index.js | 9 ++------- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/projects/helper/chain/ton.js b/projects/helper/chain/ton.js index 5e74e0d9e5c..c33ad73477f 100644 --- a/projects/helper/chain/ton.js +++ b/projects/helper/chain/ton.js @@ -7,13 +7,14 @@ async function getTonBalance(addr) { return res.balance } -async function sumTokensAccount({ api, addr, tokens = [] }) { +async function sumTokensAccount({ api, addr, tokens = [], onlyWhitelistedTokens = false }) { if (tokens.includes(ADDRESSES.null)) { const balance = await getTonBalance(addr) api.add(ADDRESSES.null, balance) } const { balances } = await get(`https://tonapi.io/v2/accounts/${addr}/jettons?currencies=usd`) balances.forEach(({ balance, price, jetton }) => { + if (onlyWhitelistedTokens && !tokens.includes(jetton.address)) return; const decimals = jetton.decimals price = price?.prices?.USD if (!decimals || !price) return; @@ -22,12 +23,12 @@ async function sumTokensAccount({ api, addr, tokens = [] }) { }) } -async function sumTokens({ api, tokens, owners = [], owner }) { +async function sumTokens({ api, tokens, owners = [], owner, onlyWhitelistedTokens = false }) { if (!api) throw new Error('api is required') if (owner) owners.push(owner) owners = getUniqueAddresses(owners, api.chain) - await Promise.all(owners.map(i => sumTokensAccount({ api, addr: i, tokens }))) + await Promise.all(owners.map(i => sumTokensAccount({ api, addr: i, tokens, onlyWhitelistedTokens }))) return api.getBalances() } diff --git a/projects/orbitbridge/index.js b/projects/orbitbridge/index.js index d8c2c57980c..87badce66c3 100644 --- a/projects/orbitbridge/index.js +++ b/projects/orbitbridge/index.js @@ -1,10 +1,9 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const { get } = require('../helper/http') const { getConfig } = require('../helper/cache') const { sumTokensExport } = require('../helper/sumTokens') const { sumTokens2 } = require('../helper/unwrapLPs') -const { transformBalances } = require('../helper/portedTokens') +const { sumTokensExport: tonExport } = require('../helper/chain/ton') const { nullAddress } = require('../helper/tokenMapping'); const ABI = { @@ -109,10 +108,6 @@ module.exports = { tvl: sumTokensExport({ chain: 'ripple', owner: 'rLcxBUrZESqHnruY4fX7GQthRjDCDSAWia'}) }, ton: { - tvl: async () => { - let ton_vault = "EQAtkbV8ysI75e7faO8Ihu0mFtmsg-osj7gmrTg_mljVRccy" - const res = await get(`https://tonapi.io/v1/account/getInfo?account=${ton_vault}`) - return await transformBalances('ton', {[ADDRESSES.null]: res.balance}) - } + tvl: tonExport({ owner: "EQAtkbV8ysI75e7faO8Ihu0mFtmsg-osj7gmrTg_mljVRccy", tokens: [ADDRESSES.null], onlyWhitelistedTokens: true }), }, } \ No newline at end of file diff --git a/projects/ton-locker/index.js b/projects/ton-locker/index.js index cf43be5a418..461a8d9a321 100644 --- a/projects/ton-locker/index.js +++ b/projects/ton-locker/index.js @@ -1,14 +1,9 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { get } = require('../helper/http') -const { transformBalances } = require('../helper/portedTokens') +const { sumTokensExport } = require('../helper/chain/ton') module.exports = { ton: { tvl: () => ({}), - staking: async () => { - let ton_vault = "EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2" - const res = await get(`https://tonapi.io/v1/account/getInfo?account=${ton_vault}`) - return await transformBalances('ton', {[ADDRESSES.null]: res.balance}) - } + staking: sumTokensExport({ owner: "EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2", tokens: [ADDRESSES.null], onlyWhitelistedTokens: true}), }, } \ No newline at end of file From 3ed696fd2871c0fe0464ce660453be92ec920ff9 Mon Sep 17 00:00:00 2001 From: Ernest <33957800+ErnestMironov@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:11:01 +0300 Subject: [PATCH 0052/2004] feat: update ZooDAO project (#8731) * Add Arbitrum support for TVL calculation * Add ZOO token balance calculation to TVL calculation * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zoodao/index.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index 5da95abe179..b2e640825ab 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const battleArenaAbi = require('./abis/battle-arena-abi.json'); -const { stakings } = require('../helper/staking'); +const { sumTokensExport } = require('../helper/unwrapLPs'); const VAULT_CONTRACT = '0x1C55649f73CDA2f72CEf3DD6C5CA3d49EFcF484C'; const BATTLE_ARENA_CONTRACT = '0x0ADeb5A930875606F325e114FD5147148e042828'; @@ -9,24 +9,43 @@ 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 = '0x1aDDD80E6039594eE970E5872D247bf0414C8903' + +const VAULT_CONTRACT_ARBITRUM = '0x9d284e037c20f029c8C56bbE4ff7C0F8de0FA4A9' +const LIQUIDITY_MINING_ARBITRUM = '0x96EBfd5dfaBf5E94f55940FC1872f39031fb332c' + const stakingContracts = [ BATTLE_ARENA_CONTRACT, VE_ZOO_CONTRACT, X_ZOO_CONTRACT -]; +] async function tvl(_, _1, _2, { 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(_, _1, _2, { 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: "Counts the supplied value of FRAX and ZOO through ZooDAO's contracts", moonbeam: { tvl, - staking: stakings(stakingContracts, ZOODAO_TOKEN) + 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] }), + } }; From c9f9cb55bb64c7a72e227b1836c46e0f143d5e33 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 12:24:46 +0100 Subject: [PATCH 0053/2004] Init-capital (#8738) * add INIT Capital TVL and Borrowed * code refactor --------- Co-authored-by: Kim --- projects/init-capital/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/init-capital/index.js diff --git a/projects/init-capital/index.js b/projects/init-capital/index.js new file mode 100644 index 00000000000..e1cd7e1b222 --- /dev/null +++ b/projects/init-capital/index.js @@ -0,0 +1,27 @@ +const { getConfig } = require('../helper/cache') + +const POOL_DATA_URI = "https://app.init.capital/static/json/pools.json"; + +const tvl = async (timestamp, block, _, { api }) => { + const allPoolData = await getConfig('init-capital', POOL_DATA_URI); + const pools = Object.keys(allPoolData[api.getChainId()]); + const tokens = await api.multiCall({ calls: pools, abi: 'address:underlyingToken' }) + return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) +}; + +const borrowed = async (timestamp, block, _, { api }) => { + const allPoolData = await getConfig('init-capital', POOL_DATA_URI); + const pools = Object.keys(allPoolData[api.getChainId()]); + const tokens = await api.multiCall({ calls: pools, abi: 'address:underlyingToken' }) + const debts = await api.multiCall({ abi: "uint256:totalDebt", calls: pools, }); + api.addTokens(tokens, debts); +}; + +module.exports = { + methodology: + "Count all the underlying locked and borrowed under every INIT Lending Pools", + mantle: { + tvl, + borrowed, + }, +}; From 6420b8794d56688cfbadec5ebb330024b9477546 Mon Sep 17 00:00:00 2001 From: 0xAlunara <88008691+0xAlunara@users.noreply.github.com> Date: Wed, 24 Jan 2024 12:58:48 +0100 Subject: [PATCH 0054/2004] Add uPRISMA support to Llama Airforce (#8733) Co-authored-by: Alunara <> --- projects/llama-airforce/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/llama-airforce/index.js b/projects/llama-airforce/index.js index 461d09469dc..138d3932a88 100644 --- a/projects/llama-airforce/index.js +++ b/projects/llama-airforce/index.js @@ -5,6 +5,7 @@ const contracts = { uCRV3: "0xde2bef0a01845257b4aef2a2eaa48f6eaeafa8b7", uFXS1: "0xf964b0e3ffdea659c44a5a52bc0b82a24b89ce0e", uFXS2: "0x3a886455e5b33300a31c5e77bac01e76c0c7b29c", + uPRISMA: "0x9bfd08d7b3cc40129132a17b4d5b9ea3351464bd", uCVX: "0x8659fc767cad6005de79af65dafe4249c57927af", uBAL: "0x8c4eb0fc6805ee7337ac126f89a807271a88dd67", pxCvx: "0xBCe0Cf87F513102F22232436CCa2ca49e815C3aC", @@ -17,6 +18,7 @@ const vaults = [ contracts.uBAL, contracts.uFXS1, contracts.uFXS2, + contracts.uPRISMA, ] async function tvl(time, block, _, { api },) { From 8e985a855e130fa839bccd8d8684ee7dd6384d37 Mon Sep 17 00:00:00 2001 From: Teamo0 <77360332+Teamo0@users.noreply.github.com> Date: Wed, 24 Jan 2024 12:02:29 +0000 Subject: [PATCH 0055/2004] Fyde Adapter (#8732) * add Fyde Adapter * Add Fyde Adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fyde/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/fyde/index.js diff --git a/projects/fyde/index.js b/projects/fyde/index.js new file mode 100644 index 00000000000..74e4cfec64a --- /dev/null +++ b/projects/fyde/index.js @@ -0,0 +1,13 @@ +const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; + +async function tvl(_, _1, _2, { api }) { + const tokens = await api.fetchList({ lengthAbi: 'getAssetsListLength', itemAbi: 'assetsList', target: FYDE_CONTRACT }) + return api.sumTokens({ tokens, owner: FYDE_CONTRACT }) +} + +module.exports = { + methodology: 'Read out balances from internal accounting for each asset in Fyde', + ethereum: { + tvl + } +}; \ No newline at end of file From 5bd33f5d9e826762a4b8615320b14aaa77f4e840 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 13:14:38 +0100 Subject: [PATCH 0056/2004] Dojo (#8741) * feat: changes * feat: changes * feat: changes * feat: changes * code refactor --------- Co-authored-by: ninjadotgarden --- projects/dojoswap-lsd/index.js | 20 ++++++++++++++++++++ projects/dojoswap/index.js | 16 +++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 projects/dojoswap-lsd/index.js diff --git a/projects/dojoswap-lsd/index.js b/projects/dojoswap-lsd/index.js new file mode 100644 index 00000000000..d17514c8d28 --- /dev/null +++ b/projects/dojoswap-lsd/index.js @@ -0,0 +1,20 @@ +const { queryContract } = require('../helper/chain/cosmos') + +const ADDRESSES = { + LSD_CONTRACT: 'inj17glv5mk2pvhpwkdjljacmr2fx9pfc3djepy6xh', + STAKED_INJ_TOKEN_CONTRACT: 'inj134wfjutywny9qnyux2xgdmm0hfj7mwpl39r3r9', + MULTICAL_CONTRACT: 'inj1578zx2zmp46l554zlw5jqq3nslth6ss04dv0ee' +} + +async function tvl(_, _1, _2, { 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 index 2194f6734da..0b3632accac 100644 --- a/projects/dojoswap/index.js +++ b/projects/dojoswap/index.js @@ -1,11 +1,25 @@ +const BigNumber = require("bignumber.js"); const { getFactoryTvl } = require("../terraswap/factoryTvl"); const factory = { classic: "inj1pc2vxcmnyzawnwkf03n2ggvt997avtuwagqngk", }; +async function staking() { + + /// 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) }, + injective: { tvl: getFactoryTvl(factory.classic), staking: staking }, }; From 3e1808505f3115247bd0639a9269e99bb5728626 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:11:14 +0100 Subject: [PATCH 0057/2004] Starlay (#8743) * Add acala TVL * code refactor --------- Co-authored-by: Wolf --- projects/gambit/index.js | 2 +- projects/helper/coreAssets.json | 12 +++- projects/helper/tokenMapping.js | 103 -------------------------------- projects/starlay/index.js | 7 +++ 4 files changed, 18 insertions(+), 106 deletions(-) diff --git a/projects/gambit/index.js b/projects/gambit/index.js index fa0374e5306..1b97ff15b81 100644 --- a/projects/gambit/index.js +++ b/projects/gambit/index.js @@ -15,7 +15,7 @@ const Staking = { const CNG_ADDRESS = { ethereum: "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", - arbitrum: ADDRESSES.arbitrum.CHG, + arbitrum: '0x4e7e5023656863E26f50E2E6E59489A852C212c1', } module.exports = { diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a10f5fc3cdf..be60f955849 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -235,7 +235,6 @@ }, "arbitrum": { "WETH": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "CHG": "0x4e7e5023656863E26f50E2E6E59489A852C212c1", "WBTC": "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", "DAI": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", "USDC": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", @@ -553,7 +552,8 @@ "BAI": "0x733ebcc6df85f8266349defd0980f8ced9b45f35", "ATID": "0x5271d85ce4241b310c0b34b7c2f1f036686a6d7c", "JPYC": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb", - "aUSD": "0xffffffff00000000000000010000000000000001" + "aUSD": "0xffffffff00000000000000010000000000000001", + "vDOT": "0xFfFfFfff00000000000000010000000000000008" }, "cardano": { "ADA": "ADA" @@ -1554,5 +1554,13 @@ "BUSD": "0x7a477aa8ed4884509387dba81ba6f2b7c97597e2", "AINU": "0x618220b06e8e30a972ffbe66fe56588fe4d5044a", "BOND": "0x096b5914c95c34df19500daff77470c845ec749d" + }, + "acala": { + "DOT": "0x0000000000000000000100000000000000000002", + "LDOT": "0x0000000000000000000100000000000000000003", + "USDC": "0x07DF96D1341A7d16Ba1AD431E2c847d978BC2bCe" + }, + "new": { + "NEW": "0xf4905b9bc02ce21c98eac1803693a9357d5253bf" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 28633b23201..ffcf2d48f37 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -26,12 +26,6 @@ const transformTokens = { // [ADDRESSES.cronos.TUSD]: ADDRESSES.ethereum.TUSD, // }, - lightlink_phoenix: { - [ADDRESSES.lightlink_phoenix.USDC]: ADDRESSES.ethereum.USDC, - [ADDRESSES.lightlink_phoenix.USDT]: ADDRESSES.ethereum.USDT, - [ADDRESSES.lightlink_phoenix.WBTC]: ADDRESSES.ethereum.WBTC, - [ADDRESSES.lightlink_phoenix.WETH]: ADDRESSES.ethereum.WETH, - } } const ibcMappings = { // Sample Code @@ -40,111 +34,14 @@ const ibcMappings = { } const fixBalancesTokens = { - ethf: { - [ADDRESSES.ethf.WETH]: { coingeckoId: 'ethereumfair', decimals: 18 }, - [ADDRESSES.null]: { coingeckoId: 'ethereumfair', decimals: 18 }, - }, - chz: { - [ADDRESSES.null]: { coingeckoId: 'chiliz', decimals: 18 }, - }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, - radixdlt: { - [ADDRESSES.radixdlt.XRD]: { coingeckoId: 'radix', decimals: 0 }, - [ADDRESSES.radixdlt.WETH]: { coingeckoId: 'ethereum', decimals: 0 }, - }, - meer: { - [ADDRESSES.null]: { coingeckoId: 'qitmeer-network', decimals: 18 }, - [ADDRESSES.meer.MEER_1]: { coingeckoId: 'qitmeer-network', decimals: 18 }, - [ADDRESSES.meer.MEER_2]: { coingeckoId: 'qitmeer-network', decimals: 18 }, - }, - edg: { - [ADDRESSES.null]: { coingeckoId: 'edgeware', decimals: 18 }, - [ADDRESSES.edg.WEDG]: { coingeckoId: 'edgeware', decimals: 18 }, - }, - elsm: { - [ADDRESSES.null]: { coingeckoId: 'lava', decimals: 18 }, - [ADDRESSES.elsm.WLAVA]: { coingeckoId: 'lava', decimals: 18 }, - [ADDRESSES.elsm.PYR]: { coingeckoId: 'vulcan-forged', decimals: 18 }, - }, - arbitrum: { - [ADDRESSES.arbitrum.CHG]: { coingeckoId: 'changer', decimals: 18 }, - }, - neon_evm: { - [ADDRESSES.null]: { coingeckoId: 'neon', decimals: 18 }, - }, - xdai: { - [ADDRESSES.xdai.XHOPR]: { coingeckoId: 'xdai:0xD057604A14982FE8D88c5fC25Aac3267eA142a08', decimals: 0 }, - }, - bfc: { - [ADDRESSES.bfc.WBFC]: { coingeckoId: 'bifrost', decimals: 18 }, - [ADDRESSES.bfc.BIFI]: { coingeckoId: 'bifi', decimals: 18 }, - [ADDRESSES.bfc.WITCH]: { coingeckoId: 'witch-token', decimals: 18 }, - [ADDRESSES.bfc.SAT]: { coingeckoId: 'super-athletes-token', decimals: 18 } - }, - eon: { - [ADDRESSES.eon.ZEN]: { coingeckoId: 'zencash', decimals: 18 }, - '0x38c2a6953f86a7453622b1e7103b738239728754': { coingeckoId: 'dai', decimals: 18 }, - [ADDRESSES.eon.WBTC]: { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, - }, - nos: { - [ADDRESSES.nos.ETH]: { coingeckoId: 'ethereum', decimals: 18 }, - [ADDRESSES.nos.USDT]: { coingeckoId: 'tether', decimals: 18 }, - }, - mode: { - [ADDRESSES.mode.WETH]: { coingeckoId: 'ethereum', decimals: 18 }, - }, - zilliqa: { - [ADDRESSES.zilliqa.WZIL]: { coingeckoId: 'zilliqa', decimals: 18 }, - [ADDRESSES.zilliqa.USDT]: { coingeckoId: 'tether', decimals: 6 }, - }, - linea: { - [ADDRESSES.linea.WETH_1]: { coingeckoId: 'ethereum', decimals: 18 }, - }, bitcoin: { BSSB: { coingeckoId: 'bitstable-finance', decimals: 0 }, MUBI: { coingeckoId: 'multibit', decimals: 0 }, }, - fsc: { - [ADDRESSES.null]: { coingeckoId: 'fonsmartchain', decimals: 18 }, - [ADDRESSES.fsc.WFSC]: { coingeckoId: 'fonsmartchain', decimals: 18 }, - }, - new: { - '0xf4905b9bc02ce21c98eac1803693a9357d5253bf': { coingeckoId: 'newton-project', decimals: 18 }, - }, - conflux: { - [ADDRESSES.null]: { coingeckoId: 'conflux-token', decimals: 18 }, - }, - icon: { - [ADDRESSES.null]: { coingeckoId: 'icon', decimals: 18 }, - 'cxb49d82c46be6b61cab62aaf9824b597c6cf8a25d': { coingeckoId: 'binance-usd', decimals: 18 }, - 'cx5b5a03cb525a1845d0af3a872d525b18a810acb0': { coingeckoId: 'bitcoin-bep2', decimals: 18 }, - 'cx288d13e1b63563459a2ac6179f237711f6851cb5': { coingeckoId: 'ethereum', decimals: 18 }, - }, - jbc: { - [ADDRESSES.jbc.USDT]: { coingeckoId: 'tether', decimals: 18 }, - [ADDRESSES.jbc.USDC]: { coingeckoId: 'usd-coin', decimals: 18 }, - [ADDRESSES.jbc.ETH]: { coingeckoId: 'ethereum', decimals: 18 }, - [ADDRESSES.jbc.OP]: { coingeckoId: 'optimism', decimals: 18 }, - [ADDRESSES.jbc.BNB]: { coingeckoId: 'binancecoin', decimals: 18 }, - [ADDRESSES.jbc.JFIN]: { coingeckoId: 'jfin-coin', decimals: 18 }, - [ADDRESSES.jbc.KUB]: { coingeckoId: 'bitkub-coin', decimals: 18 }, - [ADDRESSES.jbc.JUSDT]: { coingeckoId: 'tether', decimals: 18 }, - }, - zkfair: { - [ADDRESSES.null]: { coingeckoId: 'usd-coin', decimals: 18 }, - '0xD33Db7EC50A98164cC865dfaa64666906d79319C': { coingeckoId: 'usd-coin', decimals: 18 }, - }, - chainx: { - [ADDRESSES.chainx.WBTC]: { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, - }, - airdao: { - [ADDRESSES.airdao.SAMB]: { coingeckoId: 'amber', decimals: 18 }, - [ADDRESSES.airdao.USDC]: { coingeckoId: 'usd-coin', decimals: 18 }, - [ADDRESSES.airdao.BUSD]: { coingeckoId: 'binance-usd', decimals: 18 }, - }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/starlay/index.js b/projects/starlay/index.js index fb7f3a7a122..4aae7108979 100644 --- a/projects/starlay/index.js +++ b/projects/starlay/index.js @@ -12,5 +12,12 @@ module.exports = { } }), 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)[])" + }, + }) } }; From baba609d52f55a508d71ed79e940fd22390a4054 Mon Sep 17 00:00:00 2001 From: Venky <55109759+0xVenky@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:12:42 +0100 Subject: [PATCH 0058/2004] feat: add swapr v3 data (#8742) --- projects/swapr-v3/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/swapr-v3/index.js diff --git a/projects/swapr-v3/index.js b/projects/swapr-v3/index.js new file mode 100644 index 00000000000..3ce20ae5ff5 --- /dev/null +++ b/projects/swapr-v3/index.js @@ -0,0 +1,9 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + xdai: { + factory: "0xa0864cca6e114013ab0e27cbd5b6f4c8947da766", + fromBlock: 30096640, + isAlgebra: true, + }, +}); From 2606e25d9438803552e4bce19abb935e25c969f1 Mon Sep 17 00:00:00 2001 From: Dayaa Date: Wed, 24 Jan 2024 14:33:57 +0100 Subject: [PATCH 0059/2004] fix(Sperax USD): Fix TVL Calculation (#8737) * fix(Sperax USD): Fix TVL Calculation * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sperax/index.js | 51 +++++++++++++++------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/projects/sperax/index.js b/projects/sperax/index.js index fe56f0009a4..3576cf10d26 100644 --- a/projects/sperax/index.js +++ b/projects/sperax/index.js @@ -1,42 +1,29 @@ -const sdk = require("@defillama/sdk"); -const abi = require("../sperax/abi.json"); -const {staking} = require("../helper/staking.js"); - +const { staking } = require("../helper/staking.js"); const ethStakingAddr = "0xbF82a3212e13b2d407D10f5107b5C8404dE7F403"; const arbStakingAddr = "0x2e2071180682Ce6C247B1eF93d382D509F5F6A17"; -const vaultcore = '0xF783DD830A4650D2A8594423F123250652340E3f'; - const SPA = '0x5575552988a3a80504bbaeb1311674fcfd40ad4b'; const ethSPA = '0xB4A3B0Faf0Ab53df58001804DdA5Bfc6a3D59008'; -const USDsAddress = '0xD74f5255D557944cf7Dd0E45FF521520002D5748'; - -async function tvl(timestamp, ethBlock, chainBlocks) { - const chain = 'arbitrum'; - const block = chainBlocks[chain]; - - let tvlInUSD = (await sdk.api.abi.call({ - abi: abi.totalValueLocked, - chain: chain, - target: vaultcore, - params: [], - block: block - })).output; - return { - tether: tvlInUSD / 1e18 - } +async function tvl() { + const { api } = arguments[3] + 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 = { - misrepresentedTokens: true, - arbitrum: { - tvl, - staking: staking(arbStakingAddr, SPA, "arbitrum", `arbitrum:${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.' + 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 From 327e046a46b259f32e5e41fc681a1983f29e519b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:06:23 +0100 Subject: [PATCH 0060/2004] Brikken (#8745) * add BKN * refactor to count for tokenized assets * fix lack definition * code refactor --------- Co-authored-by: xaler --- projects/brickken/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/brickken/index.js diff --git a/projects/brickken/index.js b/projects/brickken/index.js new file mode 100644 index 00000000000..4d073b9367b --- /dev/null +++ b/projects/brickken/index.js @@ -0,0 +1,26 @@ +const FACTORY_ETH_CONTRACT = '0x91af681C85Ca98Efc5D69C1B62E6F435030969Db'; +const ESCROW_LATEST_PRICE_ABI = "function issuances(uint256) view returns(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"; + +async function tvl(_, _1, _2, { api }) { + const tokens = await api.fetchList({ lengthAbi: 'idSTOs', itemAbi: 'stoTokens', target: FACTORY_ETH_CONTRACT, startFromOne: true }) + const escrows = await api.fetchList({ lengthAbi: 'idSTOs', itemAbi: 'stoEscrows', target: FACTORY_ETH_CONTRACT, 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 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]/ 1e30) + }) + // console.table(print) +} + +module.exports = { + ethereum: { + tvl, + }, + 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.` +}; \ No newline at end of file From a4be8511f35c0d1dec2791289dc647af1bf417b4 Mon Sep 17 00:00:00 2001 From: derfc <67300352+derfc@users.noreply.github.com> Date: Wed, 24 Jan 2024 22:22:25 +0800 Subject: [PATCH 0061/2004] listing my new project AptosLaunch (#8707) * listing my new project AptosLaunch * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/aptoslaunch/index.js | 143 ++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 projects/aptoslaunch/index.js diff --git a/projects/aptoslaunch/index.js b/projects/aptoslaunch/index.js new file mode 100644 index 00000000000..e9d98f7ab17 --- /dev/null +++ b/projects/aptoslaunch/index.js @@ -0,0 +1,143 @@ +const { getResources, getTableData } = require("../helper/chain/aptos"); + +const extractCoinAddress = (str) => + str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); + +const APT = "0x1::aptos_coin::AptosCoin"; + +const ALT = + "0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::aptos_launch_token::AptosLaunchToken"; + +const MOVE = + "0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund"; + +const lzUSDT = + "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT"; +const lzUSDC = + "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC"; + +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') + api.add(MOVE, iboInfo.data.coin.value) + api.addTokens(acceptCoinArr, bals) +}; + +const tvl = async (_, _1, _2, { api }) => { + await moveIbo(api, 'tvl'); + return api.getBalances() +}; +const pool2 = async (_, _1, _2, { api }) => { + await moveIbo(api, 'pool2'); + await cakeLPsltStaking(api); + return api.getBalances() +}; + +const staking = async (_, _1, _2, { 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, + }, +}; From 8e340621376314be832182f8e5682a31df72e556 Mon Sep 17 00:00:00 2001 From: PRINT3R <141354432+PRINT3Rxyz@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:23:20 +0000 Subject: [PATCH 0062/2004] Added PRINT3R (#8744) Co-authored-by: danieljoseph18 --- projects/PRINT3R/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/PRINT3R/index.js diff --git a/projects/PRINT3R/index.js b/projects/PRINT3R/index.js new file mode 100644 index 00000000000..f766f14d70a --- /dev/null +++ b/projects/PRINT3R/index.js @@ -0,0 +1,11 @@ +const { gmxExports } = require('../helper/gmx') + +// Base +const baseVault = '0x102B73Ca761F5DFB59918f62604b54aeB2fB0b3E'; + +module.exports = { + base:{ + tvl: gmxExports({ vault: baseVault, }) + }, + +}; From 7d478161f62bc0ed17faa7f57fe86d6b94e016bd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:48:04 +0100 Subject: [PATCH 0063/2004] update deri v4 --- projects/deri-v4/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/deri-v4/index.js b/projects/deri-v4/index.js index 152af3eeebf..9ce1437d7df 100644 --- a/projects/deri-v4/index.js +++ b/projects/deri-v4/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require('../helper/cache/getLogs') const { transformBalances } = require('../helper/portedTokens') @@ -12,7 +13,8 @@ async function tvl(_, _b, _cb, { api, }) { }) const vaults = logs.map(log => log.vault) const bals = await api.multiCall({ abi: 'function stTotalAmount() external view returns (uint256 balance)', calls: vaults }) - const tokens = await api.multiCall({ abi: 'function asset() external view returns (address)', calls: vaults }) + let tokens = await api.multiCall({ abi: 'function asset() external view returns (address)', calls: vaults }) + tokens = tokens.map(token => token === '0x0000000000000000000000000000000000000001' ? 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)))) @@ -24,6 +26,8 @@ const config = { 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', }, } Object.keys(config).forEach(chain => { From b1d4286cff839209e8cb2eabbd9daee483a2d2a6 Mon Sep 17 00:00:00 2001 From: TJ <58812386+TJ-2@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:55:44 +0000 Subject: [PATCH 0064/2004] add Meridian Lend (#8747) --- projects/meridian-lend/abi.json | 3 +++ projects/meridian-lend/index.js | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 projects/meridian-lend/abi.json create mode 100644 projects/meridian-lend/index.js diff --git a/projects/meridian-lend/abi.json b/projects/meridian-lend/abi.json new file mode 100644 index 00000000000..99b7b9c8651 --- /dev/null +++ b/projects/meridian-lend/abi.json @@ -0,0 +1,3 @@ +{ + "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 new file mode 100644 index 00000000000..fcc10986cb3 --- /dev/null +++ b/projects/meridian-lend/index.js @@ -0,0 +1,17 @@ +const abi = require('./abi.json'); +const { aaveChainTvl } = require('../helper/aave'); + +function v2(chain, v2Registry) { + abi.getAllATokens = abi.getAllOTokens + const isV3 = false + const options = { abis: abi } + const section = borrowed => aaveChainTvl(chain, v2Registry, undefined, undefined, borrowed, isV3, options) + return { + tvl: section(false), + borrowed: section(true) + } +} + +module.exports = { + telos: v2("telos", "0xb84171C0824B4F3C0B415706C99A4A8ED5779b75"), +} \ No newline at end of file From 468bde20d8f156991ac85893ac335ae34cb0b003 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 17:18:35 +0100 Subject: [PATCH 0065/2004] track deltaswap --- projects/gammaswap-deltaswap/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/gammaswap-deltaswap/index.js diff --git a/projects/gammaswap-deltaswap/index.js b/projects/gammaswap-deltaswap/index.js new file mode 100644 index 00000000000..0a868830344 --- /dev/null +++ b/projects/gammaswap-deltaswap/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + arbitrum: { + tvl: getUniTVL({ factory: "0xcb85e1222f715a81b8edaeb73b28182fa37cffa8", }), + }, +}; From 074efd6b2c641c284ca8683207e23527593f4104 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Jan 2024 17:40:25 +0100 Subject: [PATCH 0066/2004] update fyde --- package-lock.json | 6 +++--- projects/fyde/index.js | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5afd454717d..3bfc0492506 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.19", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.19.tgz", - "integrity": "sha512-vxtb6KuxOCDzGybBuMyyfRztyIbgAgir8xBfDEghS1kD02U8CEvgO9iVwIlIJwttpY6hOiiRByqokcqVDRhdXA==", + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.20.tgz", + "integrity": "sha512-iGRCZojaD4Ocr/Gj70u2zPR70v5ZpI56eETAk/cSHBH1YwmuHzdbzo3zrc5yhQ8VmC48HVTnLZGb30QneiAdog==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/fyde/index.js b/projects/fyde/index.js index 74e4cfec64a..2f2043fdfdd 100644 --- a/projects/fyde/index.js +++ b/projects/fyde/index.js @@ -2,7 +2,9 @@ const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; async function tvl(_, _1, _2, { api }) { const tokens = await api.fetchList({ lengthAbi: 'getAssetsListLength', itemAbi: 'assetsList', target: FYDE_CONTRACT }) - return api.sumTokens({ tokens, owner: FYDE_CONTRACT }) + const bals = await api.multiCall({ abi: 'function totalAssetAccounting(address) view returns (uint256)', calls: tokens, target: FYDE_CONTRACT }) + api.addTokens(tokens, bals) + // return api.sumTokens({ tokens, owner: FYDE_CONTRACT }) } module.exports = { From 3b66497ca2d84049760fb32a2ef23b35704da066 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 25 Jan 2024 10:22:57 +0000 Subject: [PATCH 0067/2004] add manta chain to logx --- projects/logx/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/logx/index.js b/projects/logx/index.js index c1544bbc25e..714bfc741b2 100644 --- a/projects/logx/index.js +++ b/projects/logx/index.js @@ -6,6 +6,7 @@ const config = { linea: '0xc5f444d25d5013c395f70398350d2969ef0f6aa0', mantle: '0x7A74Dd56Ba2FB26101A7f2bC9b167A93bA5e1353', kroma: '0xC5f444D25D5013C395F70398350d2969eF0F6AA0', + manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5' } Object.keys(config).forEach(chain => { From f245279b622899c8f73d192ce0b6aa34ff59a159 Mon Sep 17 00:00:00 2001 From: NonFinancialAdvisor <155776586+NonFinancialAdvisor@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:23:22 +0100 Subject: [PATCH 0068/2004] Add Peapods Finance TVL adapter (#8691) * Add adapter for Peapods Finance * Added comment * Linting code, remove console.log * code refactor * Separate PEAS tvl to staking and prepare for crosschain Conform DefiLlama guidelines this code makes sure any PEAS in any pod will be excluded from the general tvl metric and categorize it under staking tvl Added parameters and prepare for future update to make the adapter work cross-chain. * Revert "Separate PEAS tvl to staking and prepare for crosschain" This reverts commit c7f1b7c09f4104c69cb1173a68e344c675e4800d. * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/peapods-finance/index.js | 50 +++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 projects/peapods-finance/index.js diff --git a/projects/peapods-finance/index.js b/projects/peapods-finance/index.js new file mode 100644 index 00000000000..bd14ccaefe6 --- /dev/null +++ b/projects/peapods-finance/index.js @@ -0,0 +1,50 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const config = { + ethereum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" } +} + +const indexManagerABI = + "function allIndexes() view returns (tuple(address index, bool verified)[])"; +const indexABI = { lpStakingPool: "address:lpStakingPool" }; +const indexABIassets = + "function getAllAssets() view returns (tuple(address token, uint256 weighting, uint256 basePriceUSDX96, address c1, uint256 q1)[])"; +const stakingPoolABI = { stakingToken: "address:stakingToken" }; + +const getTvl = async (api, isStaking) => { + const { indexManager, peasToken } = config[api.chain] + const ownerTokens = [] + const indexes = (await api.call({ abi: indexManagerABI, target: indexManager, })).map(i =>i.index); + + //get staking pool contract for index (spp) + const stakingPools = await api.multiCall({ abi: indexABI.lpStakingPool, calls: indexes, }); + + //get assets this index consists of + const assetsResult = await api.multiCall({ abi: indexABIassets, calls: indexes, }); + const stakingTokens = await api.multiCall({ abi: stakingPoolABI.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]])) + await sumTokens2({ api, ownerTokens, blacklistedTokens: indexes, resolveLP: true, }) + indexes.forEach(i => api.removeTokenBalance(i)) + Object.keys(api.getBalances()).forEach(token => { + let remove = (new RegExp(peasToken, "i")).test(token) + if (isStaking) remove = !remove + if (remove) + api.removeTokenBalance(token) + }) + return api.getBalances() +}; + +module.exports = { + methodology: "Aggregates TVL in all Peapods Finance indexes created", +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => getTvl(api, false), + staking: async (_, _b, _cb, { api, }) => getTvl(api, true), + } +}) From 85b428c82d2b37caf6b554050e7b25cf55e3c2bf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:29:09 +0100 Subject: [PATCH 0069/2004] Biokript (#8758) * Biokript Adapter SDK * code refactor --------- Co-authored-by: qnxdev@outlook.com --- projects/biokript/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/biokript/index.js diff --git a/projects/biokript/index.js b/projects/biokript/index.js new file mode 100644 index 00000000000..1b61c9b4fc5 --- /dev/null +++ b/projects/biokript/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('bsc', '0x795802cb01a7be4be2f7f114b232a83b3adce64a', { fetchBalances: true, }) \ No newline at end of file From 16b03431ea544224cb25f499b09c0faca459afda Mon Sep 17 00:00:00 2001 From: Matteo Celani <26189482+matteocelani@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:30:33 +0100 Subject: [PATCH 0070/2004] Stablecomp new vault (#8754) --- projects/stablecomp/contracts.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/projects/stablecomp/contracts.json b/projects/stablecomp/contracts.json index 50a44896d42..bcc4c611273 100644 --- a/projects/stablecomp/contracts.json +++ b/projects/stablecomp/contracts.json @@ -10,7 +10,10 @@ "Mim3Crv": "0x5073383c90cFBcc666227a67F301dcF910C3971e", "AlUsd3Crv": "0x494d51A38ACEEBcc1D6b8e6A1EE8D8d489052033", "AlUsdFraxBp": "0xe87A72E170f7ab225b39f3Ba8d0E407e37F29B8A", - "Usdd3Crv": "0xA918c6B097569B6584014257CE89cB546f85fe33" + "Usdd3Crv": "0xA918c6B097569B6584014257CE89cB546f85fe33", + "3Crv": "0x937A459c8F282abA432f5D5e14bD801ff848A1E3", + "crvUSDUSDT-f": "0xE7E4632b22EC828f4804Ae8019F40f0a949F6BE5", + "crvFRAX": "0xdd1722A31ae4D26946134Dc003775f7a6A92E61E" } } -} \ No newline at end of file +} From 6a54888649bba848583eb689cd0a7c51ec02cdde Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:34:16 +0100 Subject: [PATCH 0071/2004] update brickken --- projects/brickken/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/brickken/index.js b/projects/brickken/index.js index 4d073b9367b..dcdd0f18e1d 100644 --- a/projects/brickken/index.js +++ b/projects/brickken/index.js @@ -8,12 +8,13 @@ async function tvl(_, _1, _2, { api }) { // 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]/ 1e30) + api.add(token, supplies[idx] * lastPrice[idx][9]/ 10 ** (36-decimals[idx])) }) // console.table(print) } From ef363cadbf0ddffa2d6841f13af0d420c206dbc3 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 25 Jan 2024 11:07:25 +0000 Subject: [PATCH 0072/2004] add telos address to logx --- projects/logx/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/logx/index.js b/projects/logx/index.js index 714bfc741b2..83f475d433e 100644 --- a/projects/logx/index.js +++ b/projects/logx/index.js @@ -6,7 +6,8 @@ const config = { linea: '0xc5f444d25d5013c395f70398350d2969ef0f6aa0', mantle: '0x7A74Dd56Ba2FB26101A7f2bC9b167A93bA5e1353', kroma: '0xC5f444D25D5013C395F70398350d2969eF0F6AA0', - manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5' + manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5', + telos: '0x082321F9939373b02Ad54ea214BF6e822531e679' } Object.keys(config).forEach(chain => { From d28ccdb7b10e96b0ea129f65e8e819eb9eb27d86 Mon Sep 17 00:00:00 2001 From: northern05 <42889528+northern05@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:09:54 +0200 Subject: [PATCH 0073/2004] Ilend. Injective protocol. (#8752) * add ilend * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ilend/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/ilend/index.js diff --git a/projects/ilend/index.js b/projects/ilend/index.js new file mode 100644 index 00000000000..bd2668a1854 --- /dev/null +++ b/projects/ilend/index.js @@ -0,0 +1,34 @@ +const { queryContract } = require('../helper/chain/cosmos') +const ILendPoolContractAddress = "inj1xjkfkfgjg60gh3duf5hyk3vfsluyurjljznwgu"; + +async function tvl(_, _b, _cb, { 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(_, _b, _cb, { 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, + } +}; From 9a149a6466f99d361689dbb5c5efd3e6fe6b5007 Mon Sep 17 00:00:00 2001 From: Semi Invader <41244007+jmanywhere@users.noreply.github.com> Date: Thu, 25 Jan 2024 05:15:22 -0600 Subject: [PATCH 0074/2004] tvl adapter for Minu (#8749) * tvl adapter for minu * code refactor --------- Co-authored-by: Semi Invader <=> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/minu/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/minu/index.js diff --git a/projects/minu/index.js b/projects/minu/index.js new file mode 100644 index 00000000000..00c8519f900 --- /dev/null +++ b/projects/minu/index.js @@ -0,0 +1,9 @@ +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 From b053dc92bf62a3b6aa97cbc0c56e405198c78a29 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Jan 2024 14:18:06 +0100 Subject: [PATCH 0075/2004] fix broken adapters --- projects/bifrost-dex/api.js | 18 +++-- projects/metastreet-v2/index.js | 119 ++++---------------------------- 2 files changed, 26 insertions(+), 111 deletions(-) diff --git a/projects/bifrost-dex/api.js b/projects/bifrost-dex/api.js index b1eac411bc0..30ff7c36390 100644 --- a/projects/bifrost-dex/api.js +++ b/projects/bifrost-dex/api.js @@ -176,11 +176,11 @@ async function tvl() { 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)=>{ + 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; + const isVtoken = currentToken.startsWith("v") && !isVstoken; currentToken = isVtoken ? currentToken.slice(1) : currentToken; currentToken = isVstoken ? currentToken.slice(2) : currentToken; @@ -190,7 +190,7 @@ async function tvl() { ratio = new BigNumber(tokenPool).div(totalIssuance).toNumber(); } if (isVstoken) { - ratio = 1/2; + ratio = 1 / 2; } if (totalLiquidity[currentToken]) { totalLiquidity[currentToken] = new BigNumber(totalLiquidity[currentToken]).plus(pool.balances[i].replaceAll(',', '')).multipliedBy(ratio).toFixed().split(".")[0]; @@ -205,12 +205,16 @@ async function tvl() { 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)=>{ + 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; + const isVstoken = currentToken?.startsWith("vs"); + const isVtoken = currentToken?.startsWith("v") && !isVstoken; currentToken = isVtoken ? currentToken.slice(1) : currentToken; currentToken = isVstoken ? currentToken.slice(2) : currentToken; @@ -221,7 +225,7 @@ async function tvl() { ratio = new BigNumber(tokenPool).div(totalIssuance).toNumber(); } if (isVstoken) { - ratio = 1/2; + ratio = 1 / 2; } if (totalLiquidity[currentToken]) { totalLiquidity[currentToken] = new BigNumber(totalLiquidity[currentToken]).plus(pool.balances[i].replaceAll(',', '')).multipliedBy(ratio).toFixed().split(".")[0]; diff --git a/projects/metastreet-v2/index.js b/projects/metastreet-v2/index.js index cf7df8ee70b..58456a0be18 100644 --- a/projects/metastreet-v2/index.js +++ b/projects/metastreet-v2/index.js @@ -1,127 +1,38 @@ -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); -const { blockQuery } = require("../helper/http"); +const { sumTokens2 } = require("../helper/unwrapLPs") -const query = (skip) => ` -query nfts($block: Int) { - loans(first: 1000, skip: ${skip}, where: { or: [{ status: "Active" }, { status: "Liquidated" }] } block: { number: $block }) { - collateralTokenIds - collateralToken { - id - } - pool { - id - } - } -} -`; - -const endpoint = - "https://api.studio.thegraph.com/query/49216/metastreet-v2-mainnet-devel/version/latest"; - -// Constants const METASTREET_POOL_FACTORY = "0x1c91c822F6C5e117A2abe2B33B0E64b850e67095"; const MAX_UINT_128 = "0xffffffffffffffffffffffffffffffff"; -// Gets all MetaStreet V2 pools created by PoolFactory and their -// corresponding currency token -async function getAllPoolsAndTokens(block) { - const pools = ( - await sdk.api.abi.call({ - target: METASTREET_POOL_FACTORY, - abi: abi.getPools, - block, - }) - ).output; - - const tokens = ( - await sdk.api.abi.multiCall({ - abi: abi.currencyToken, - calls: pools.map((pool) => ({ - target: pool, - })), - block, - }) - ).output.map((response) => response.output); - - return [pools, tokens]; +async function tvl(_, _b, _cb, { api, }) { + const pools = await api.call({ target: METASTREET_POOL_FACTORY, 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 }); } -// Calculates total borrowed value across all MetaStreet pools -async function getBorrowedValue(values, block, pools, tokens) { +async function borrowed(_, _b, _cb, { api, }) { + const pools = await api.call({ target: METASTREET_POOL_FACTORY, abi: abi.getPools, }) + const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools, }) const poolsBorrowedValue = ( - await sdk.api.abi.multiCall({ + await api.multiCall({ abi: abi.liquidityNodes, calls: pools.map((pool) => ({ target: pool, params: [0, MAX_UINT_128], })), - block, }) - ).output.map((response) => - response.output.reduce( - (partialSum, node) => partialSum + +node.value - +node.available, - 0 - ) - ); - - // Sum up borrowed value of each pool - for (let i = 0; i < pools.length; i++) { - sdk.util.sumSingleBalance(values, tokens[i], poolsBorrowedValue[i]); - } - - return values; -} - -function getMetaStreetBorrowedValue() { - return async (_, block) => { - const values = {}; - // Get all pools and tokens - const [pools, tokens] = await getAllPoolsAndTokens(block); - await getBorrowedValue(values, block, pools, tokens); - return values; - }; + ).map((i) => i.reduce((partialSum, node) => partialSum + +node.value - +node.available, 0)); + api.addTokens(tokens, poolsBorrowedValue); + return api.getBalances(); } module.exports = { ethereum: { - tvl, - borrowed: getMetaStreetBorrowedValue(), + 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.", start: 17497132, // Block number of PoolFactory creation }; - -async function tvl(_, _b, _cb, { api }) { - const pools = await api.call({ - target: METASTREET_POOL_FACTORY, - abi: abi.getPools, - }); - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools }); - const ownerTokens = pools.map((pool, i) => [[tokens[i]], pool]); - - let skip = 0; - let allLoans = []; - - /* Maximum subgraph queries: 100000 / 1000 = 100 */ - while (skip <= 100000) { - const { loans } = await blockQuery(endpoint, query(skip), { - api, - blockCatchupLimit: 600, - }); - if (loans.length === 0) { - break; - } - - allLoans = allLoans.concat(loans); - skip += 1000; - } - - allLoans.forEach(async (loan) => - api.add(loan.collateralToken.id, loan.collateralTokenIds.length) - ); - - return sumTokens2({ api, ownerTokens }); -} From 4d86b8fc96e7f712380b0d140b76a932b097f318 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Jan 2024 15:24:57 +0100 Subject: [PATCH 0076/2004] fix pinksale --- projects/pinksale/apiCache.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/pinksale/apiCache.js b/projects/pinksale/apiCache.js index 4f06864a48a..114fd1e2d7f 100644 --- a/projects/pinksale/apiCache.js +++ b/projects/pinksale/apiCache.js @@ -37,9 +37,11 @@ Object.keys(config).forEach(chain => { target: vault, abi: lockAbi, calls, chain, block, + permitFailure: true, }) - tokens.map(i => cCache.tokens.push(i.output[1])) + tokens.filter(i => i.output).map(i => cCache.tokens.push(i.output[1])) + cCache.tokens = getUniqueAddresses(cCache.tokens) const balance = await vestingHelper({ From bd2940708b668b277ff7d78baf7cd9e5609aa587 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Jan 2024 16:01:53 +0100 Subject: [PATCH 0077/2004] fix bifrost --- projects/bifrost-staking/index.js | 4 ++-- utils/handleError.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js index 5f7425d9bf5..e5f7bfe87d6 100644 --- a/projects/bifrost-staking/index.js +++ b/projects/bifrost-staking/index.js @@ -58,8 +58,8 @@ module.exports = { manta: { tvl: async () => { const { bifrost } = getExports("bifrost-staking", ["bifrost"]); - const { manta } = await bifrost.tvl(); - return { manta }; + const tvl = await bifrost.tvl(); + return { 'manta-network': tvl['manta-network'] }; }, }, }; diff --git a/utils/handleError.js b/utils/handleError.js index c4ca32937a1..254c51a97ed 100644 --- a/utils/handleError.js +++ b/utils/handleError.js @@ -19,6 +19,7 @@ function handleError(error){ } function getStackMessage(stack) { + if (!stack) return [] if (/ at (checkExportKeys)/.test(stack)) return [] const isNodeMolule = m => /node_modules/.test(m) From 557193b78d0633ba2cc802bf55028ccba2721be3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Jan 2024 17:05:09 +0100 Subject: [PATCH 0078/2004] update stablecomp --- projects/stablecomp/contracts.json | 19 ------------------- projects/stablecomp/index.js | 14 ++++++++------ 2 files changed, 8 insertions(+), 25 deletions(-) delete mode 100644 projects/stablecomp/contracts.json diff --git a/projects/stablecomp/contracts.json b/projects/stablecomp/contracts.json deleted file mode 100644 index bcc4c611273..00000000000 --- a/projects/stablecomp/contracts.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "ethereum": { - "SCompController": "0x753fB727B2487fd22c8860167aCf01E20B69FbeA", - "OracleRouter": "0x4CD5ecD5E0Dabb0b933657F4162dE4376326A536", - "SCOMP": "0xd94A8f9caeD25E63eCc90EDfefAf3635eA1e182a", - "wrapped": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "vaults": { - "Usdp3Crv": "0x1df2933B9c8815CC8990AFb4A079A717bC369185", - "Tusd3Crv": "0x0a1da14519309eCEa6E19DC940D95A7Fc850a911", - "Mim3Crv": "0x5073383c90cFBcc666227a67F301dcF910C3971e", - "AlUsd3Crv": "0x494d51A38ACEEBcc1D6b8e6A1EE8D8d489052033", - "AlUsdFraxBp": "0xe87A72E170f7ab225b39f3Ba8d0E407e37F29B8A", - "Usdd3Crv": "0xA918c6B097569B6584014257CE89cB546f85fe33", - "3Crv": "0x937A459c8F282abA432f5D5e14bD801ff848A1E3", - "crvUSDUSDT-f": "0xE7E4632b22EC828f4804Ae8019F40f0a949F6BE5", - "crvFRAX": "0xdd1722A31ae4D26946134Dc003775f7a6A92E61E" - } - } -} diff --git a/projects/stablecomp/index.js b/projects/stablecomp/index.js index 4d64fb49170..6427ac5bef6 100644 --- a/projects/stablecomp/index.js +++ b/projects/stablecomp/index.js @@ -1,12 +1,14 @@ -const config = require("./contracts.json"); +const { getConfig } = require('../helper/cache') -Object.keys(config).forEach(chain => { - let {vaults} = config[chain] - vaults = Object.values(vaults) +const chains = ['ethereum',] +chains.forEach(chain => { module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const tokens = await api.multiCall({ abi: 'address:token', calls: vaults}) - const bals = await api.multiCall({ abi: 'uint256:balance', calls: vaults}) + 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() } From 59394a82d4afb8b5f863c5cedaf1f28ffaa55821 Mon Sep 17 00:00:00 2001 From: C-3PO <102615123+c3p0-skywalker@users.noreply.github.com> Date: Thu, 25 Jan 2024 17:27:47 +0000 Subject: [PATCH 0079/2004] Add Conic V2 (#8762) --- projects/conic-omnipool/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/conic-omnipool/index.js b/projects/conic-omnipool/index.js index 6c08c92267e..b232389e09d 100644 --- a/projects/conic-omnipool/index.js +++ b/projects/conic-omnipool/index.js @@ -8,11 +8,13 @@ module.exports = { ethereum: { tvl: async (_, _b, _cb, { api, }) => { const balances = {} - const pools = (await api.call({ abi: 'address[]:listPools', target: '0x013A3Da6591d3427F164862793ab4e388F9B587e' })).filter(i => i !== '0xb652710eab40B6Ed32D6c32053fC37eF234562c2') + 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 }) const tokens = await api.multiCall({ abi: 'address:underlying', calls: pools }) bals.forEach((v, i) => sdk.util.sumSingleBalance(balances,tokens[i],v, api.chain)) return balances } } -} \ No newline at end of file +} From 697895de0a30a6d724d519fc801aefbefad11a94 Mon Sep 17 00:00:00 2001 From: herry112 <147959694+herry112@users.noreply.github.com> Date: Fri, 26 Jan 2024 16:35:45 +0800 Subject: [PATCH 0080/2004] add adapter for basexfi (#8765) * add adapter for basexfi * Update index.js * tvl * add fromBlock --- projects/basexfi/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/basexfi/index.js diff --git a/projects/basexfi/index.js b/projects/basexfi/index.js new file mode 100644 index 00000000000..2ee560a414f --- /dev/null +++ b/projects/basexfi/index.js @@ -0,0 +1,8 @@ +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 From c0ea9c843cb14e3755dba5e2966c28663abf8b31 Mon Sep 17 00:00:00 2001 From: LyveFinance <140053171+LyveFinance@users.noreply.github.com> Date: Fri, 26 Jan 2024 16:38:50 +0800 Subject: [PATCH 0081/2004] add ethereum data (#8764) --- projects/lyve/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/lyve/index.js b/projects/lyve/index.js index 53d9a3776a1..bb54af5bff0 100644 --- a/projects/lyve/index.js +++ b/projects/lyve/index.js @@ -1,7 +1,8 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const ADMIN_ADDRESSES = { - linea: "0xcFcd25b5E200d8829c383d293B456a608777a1D8" + linea: "0xcFcd25b5E200d8829c383d293B456a608777a1D8", + ethereum: "0x624ceD7034DFF45D439cDe1f443448A49F067715" }; async function tvl(_, _1, _2, { api }) { From e9ad6bf68b96be0fae650b94ccf225aad108429a Mon Sep 17 00:00:00 2001 From: Define101 Date: Fri, 26 Jan 2024 12:26:56 +0000 Subject: [PATCH 0082/2004] add correct factory to smardex --- projects/SmarDex/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/SmarDex/index.js b/projects/SmarDex/index.js index c881996110f..e5e5ef53a98 100644 --- a/projects/SmarDex/index.js +++ b/projects/SmarDex/index.js @@ -2,7 +2,7 @@ const { getUniTVL } = require("../helper/unknownTokens"); const { stakings } = require("../helper/staking"); const config = { - ethereum: '0x7753F36E711B66a0350a753aba9F5651BAE76A1D', + ethereum: '0xB878DC600550367e14220d4916Ff678fB284214F', bsc: '0xA8EF6FEa013034E62E2C4A9Ec1CDb059fE23Af33', polygon: '0x9A1e1681f6D59Ca051776410465AfAda6384398f', arbitrum: '0x41A00e3FbE7F479A99bA6822704d9c5dEB611F22', From 9812e20485a48f716c3bf4445084a7b48979c2d7 Mon Sep 17 00:00:00 2001 From: brainspacer <87164010+brainspacer@users.noreply.github.com> Date: Fri, 26 Jan 2024 17:59:39 +0300 Subject: [PATCH 0083/2004] For support of Fringe V2 multi-chain and multiple lender assets. (#8761) * Updated for Fringe V2 * Introduce delays to avoid rate-limiting * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fringe-v2/index.js | 9 ++++ projects/fringe/index.js | 85 ++---------------------------------- projects/fringe/pit-abi.json | 7 --- projects/fringe/utils.js | 33 ++++++++++++++ 4 files changed, 46 insertions(+), 88 deletions(-) create mode 100644 projects/fringe-v2/index.js delete mode 100644 projects/fringe/pit-abi.json create mode 100644 projects/fringe/utils.js diff --git a/projects/fringe-v2/index.js b/projects/fringe-v2/index.js new file mode 100644 index 00000000000..c87bc5636ac --- /dev/null +++ b/projects/fringe-v2/index.js @@ -0,0 +1,9 @@ +const { getExports } = require("../fringe/utils"); + +getExports({ + arbitrum: "0x5855F919E89c5cb5e0052Cb09addEFF62EB9339A", + optimism: "0x088F23ac0c07A3Ce008FB88c4bacFF06FECC6158", + polygon: "0x286475366f736fcEeB0480d7233ef169AE614Fe4", + ethereum: "0x70467416507B75543C18093096BA4612a9261DB8", + era: "0x8f1d37769a56340542Fb399Cb1cA49d46Aa9fec8" +}, module.exports) \ No newline at end of file diff --git a/projects/fringe/index.js b/projects/fringe/index.js index 6f304ce6302..50af2ffba3b 100644 --- a/projects/fringe/index.js +++ b/projects/fringe/index.js @@ -1,82 +1,5 @@ -const sdk = require('@defillama/sdk'); -const PIT = require('./pit-abi.json'); +const { getExports } = require("./utils") -const PRIMARY_LENDING_PLATFORM = "0x46558DA82Be1ae1955DE6d6146F8D2c1FE2f9C5E"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {}; - - const lendingTokensLength = Number((await sdk.api.abi.call({ - abi: PIT["getLendingTokensLength"], - chain: 'ethereum', - target: PRIMARY_LENDING_PLATFORM, - params: [], - block: chainBlocks['ethereum'], - })).output); - for (let i = 0; i < lendingTokensLength; i++) { - const lendingToken = (await sdk.api.abi.call({ - abi: PIT["getLendingTokenByIndex"], - chain: 'ethereum', - target: PRIMARY_LENDING_PLATFORM, - params: [i.toString()], - block: chainBlocks['ethereum'], - })).output; - - const bLendingToken = (await sdk.api.abi.call({ - abi: PIT["getLendingTokenInfo"], - chain: 'ethereum', - target: PRIMARY_LENDING_PLATFORM, - params: [lendingToken], - block: chainBlocks['ethereum'], - })).output['bLendingToken']; - - const balance = (await sdk.api.abi.call({ - abi: 'erc20:balanceOf', - chain: 'ethereum', - target: lendingToken, - params: [bLendingToken], - block: chainBlocks['ethereum'], - })).output; - - sdk.util.sumSingleBalance(balances, lendingToken, balance); - } - - const projectTokensLength = Number((await sdk.api.abi.call({ - abi: PIT["getProjectTokensLength"], - chain: 'ethereum', - target: PRIMARY_LENDING_PLATFORM, - params: [], - block: chainBlocks['ethereum'], - })).output); - for (let i = 0; i < projectTokensLength; i++) { - const projectToken = (await sdk.api.abi.call({ - abi: PIT["getProjectTokenByIndex"], - chain: 'ethereum', - target: PRIMARY_LENDING_PLATFORM, - params: [i.toString()], - block: chainBlocks['ethereum'], - })).output; - - const balance = (await sdk.api.abi.call({ - abi: 'erc20:balanceOf', - chain: 'ethereum', - target: projectToken, - params: [PRIMARY_LENDING_PLATFORM], - block: chainBlocks['ethereum'], - })).output; - - sdk.util.sumSingleBalance(balances, projectToken, balance); - } - - return balances; -} - -module.exports = { - timetravel: true, - methodology: 'Gets the value of all tokens locked in Fringe Finance\'s Primary Lending Platform', - start: 14847363, - misrepresentedTokens: false, - ethereum: { - tvl - }, -} +getExports({ + ethereum: "0x46558DA82Be1ae1955DE6d6146F8D2c1FE2f9C5E", +}, module.exports) \ No newline at end of file diff --git a/projects/fringe/pit-abi.json b/projects/fringe/pit-abi.json deleted file mode 100644 index 38204dbb2a3..00000000000 --- a/projects/fringe/pit-abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "getProjectTokensLength": "uint256:projectTokensLength", - "getLendingTokensLength": "uint256:lendingTokensLength", - "getProjectTokenByIndex": "function projectTokens(uint256) view returns (address)", - "getLendingTokenByIndex": "function lendingTokens(uint256) view returns (address)", - "getLendingTokenInfo": "function lendingTokenInfo(address) view returns (bool isListed, bool isPaused, address bLendingToken)" -} \ No newline at end of file diff --git a/projects/fringe/utils.js b/projects/fringe/utils.js new file mode 100644 index 00000000000..26439855402 --- /dev/null +++ b/projects/fringe/utils.js @@ -0,0 +1,33 @@ + +function getExports(config, exportsObj) { + + Object.keys(config).forEach(chain => { + const pit = config[chain] + exportsObj[chain] = { + tvl: async (_, _b, _cb, { 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 (_, _b, _cb, { 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 From 11f2d0bf1ea2ce0779b70ce025717437043d014c Mon Sep 17 00:00:00 2001 From: 0xIvan <83612730+0xIvan@users.noreply.github.com> Date: Fri, 26 Jan 2024 20:10:03 +0400 Subject: [PATCH 0084/2004] Add new staking contract (#8766) * Change file name * Remove unused * Refactor * Add stip farm tvl * Remove double counting * Update addreess * Add new staking contract --- projects/jones-dao/addresses.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/jones-dao/addresses.js b/projects/jones-dao/addresses.js index fc32415e696..de15ef171b6 100644 --- a/projects/jones-dao/addresses.js +++ b/projects/jones-dao/addresses.js @@ -27,6 +27,7 @@ module.exports = { stakingContracts: [ "0xf1a26cf6309a59794da29b5b2e6fabd3070d470f", // v1 staking rewards "0xb94d1959084081c5a11C460012Ab522F5a0FD756", // milliner (masterchef) + "0x8127FFC32A596F9beDE144912F7bfAD6e1C72690", // milliner v3 (masterchef) "0x0aEfaD19aA454bCc1B1Dd86e18A7d58D0a6FAC38", // minichef (stip rewards) ], metaVaultsAddresses: [ From ac84e1c73c4c8b2ced89f21da6ef4acbe9ce64f9 Mon Sep 17 00:00:00 2001 From: PossumLabsCrypto <136654177+PossumLabsCrypto@users.noreply.github.com> Date: Fri, 26 Jan 2024 18:11:56 +0100 Subject: [PATCH 0085/2004] Add Possum Labs (HLP Portal) (#8763) * Add HLP Portal and Hallmarks * Adjust timestamp * Fix export and contract address * remove double chain ID from export * try on-chain price for HLP * roll back on-chain price * full overhaul * code refactor --------- Co-authored-by: defichad23 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/possumLabs/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/possumLabs/index.js diff --git a/projects/possumLabs/index.js b/projects/possumLabs/index.js new file mode 100644 index 00000000000..5499db99aae --- /dev/null +++ b/projects/possumLabs/index.js @@ -0,0 +1,15 @@ +const portalsContractAddress = "0x24b7d3034C711497c81ed5f70BEE2280907Ea1Fa"; +const timeRiftContractAddress = "0x6df4EF024089ab148078fdD88f5BF0Ee63248D3E"; +const hlpToken = "0x4307fbDCD9Ec7AEA5a1c2958deCaa6f316952bAb"; +const flashToken = "0xc628534100180582E43271448098cb2c185795BD"; + +async function tvl(timestamp, ethBlock, chainBlocks, { api }) { + const portalsStaked = await api.call({ target: portalsContractAddress, abi: "uint256:totalPrincipalStaked", }); + api.add(hlpToken, portalsStaked) + return api.sumTokens({ owner: timeRiftContractAddress, tokens: [flashToken] }) +} + +module.exports = { + methodology: "TVL is equal to the amount staked in the Portals and TimeRift contracts", + arbitrum: { tvl }, +}; \ No newline at end of file From 37dee0ffd4fa04bfb56f65b332a67caddd3f890b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 26 Jan 2024 18:16:09 +0100 Subject: [PATCH 0086/2004] Ionic (#8769) * feat: add ionic protocol * code refactor --------- Co-authored-by: Rahul Sethuram --- projects/ionic/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/ionic/index.js diff --git a/projects/ionic/index.js b/projects/ionic/index.js new file mode 100644 index 00000000000..e7de53d4a3f --- /dev/null +++ b/projects/ionic/index.js @@ -0,0 +1,5 @@ +const { compoundExports2 } = require("../helper/compound"); + +module.exports = { + mode: compoundExports2({ comptroller: '0xfb3323e24743caf4add0fdccfb268565c0685556'}) +} \ No newline at end of file From 4bbe9203f79e17aae1251c66b173c83a2cab0ce0 Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Sat, 27 Jan 2024 12:16:57 +0000 Subject: [PATCH 0087/2004] add nile-exchange (#8771) --- projects/nile-exchange/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/nile-exchange/index.js diff --git a/projects/nile-exchange/index.js b/projects/nile-exchange/index.js new file mode 100644 index 00000000000..002bd78b4de --- /dev/null +++ b/projects/nile-exchange/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + linea: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 1822530, }, +}) \ No newline at end of file From 493737d80df2e55b784d13530f1c62f69ab5af32 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 27 Jan 2024 13:33:40 +0100 Subject: [PATCH 0088/2004] Btn (#8772) * add bitnet and xenwave * code refactor --------- Co-authored-by: ZNX --- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ projects/helper/utils.js | 1 + projects/xenwave/index.js | 3 +++ 4 files changed, 8 insertions(+) create mode 100644 projects/xenwave/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index d9b0f159315..0e463c90954 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -30,6 +30,7 @@ "bone", "bostrom", "bsc", + "btn", "bytomsidechain", "callisto", "candle", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index ffcf2d48f37..29eb717697b 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -42,6 +42,9 @@ const fixBalancesTokens = { BSSB: { coingeckoId: 'bitstable-finance', decimals: 0 }, MUBI: { coingeckoId: 'multibit', decimals: 0 }, }, + btn: { + '0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58': { coingeckoId: 'bitnet', decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 85c52fc76e1..af6ee4b968c 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -86,6 +86,7 @@ function isLP(symbol, token, chain) { if (chain === 'base' && /^(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 let label diff --git a/projects/xenwave/index.js b/projects/xenwave/index.js new file mode 100644 index 00000000000..5b6439dbda1 --- /dev/null +++ b/projects/xenwave/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require("../helper/unknownTokens") + +module.exports = uniTvlExport('btn', '0xCba3Dc15Cfbcd900cF8133E39257c26727E86e3a') \ No newline at end of file From 16cb4d172158ca2c4a42b41cd71ecc7f59c0a876 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 27 Jan 2024 13:43:20 +0100 Subject: [PATCH 0089/2004] update hydradx --- projects/hydradx/api.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/hydradx/api.js b/projects/hydradx/api.js index 2852212bc1f..a4c7a99c081 100644 --- a/projects/hydradx/api.js +++ b/projects/hydradx/api.js @@ -3,6 +3,7 @@ const sdk = require('@defillama/sdk') const omnipoolAccountId = "7L53bUTBbfuj14UpdCNPwmgzzHSsrsTWBHX5pys32mVWM3C1" const stablepoolAccountId = "7JP6TvcH5x31TsbC6qVJHEhsW7UNmpREMZuLBpK2bG1goJRS" +const stablepoolAccountId2 = "7MaKPwwnqN4cqg35PbxsGXUo1dfvjXQ3XfBjWF9UVvKMjJj8" async function tvl() { const { api: _api } = arguments[3] @@ -35,9 +36,8 @@ async function tvl() { for (const { decimals, assetId, symbol } of assetMetadata) { const cgId = cgMapping[symbol] if (cgId) { - const [bal, bal2] = await Promise.all([omnipoolAccountId, stablepoolAccountId].map(accountId => api.query.tokens.accounts(accountId, assetId))) - add(cgId, bal.free / (10 ** decimals)) - add(cgId, bal2.free / (10 ** decimals)) + const bals = await Promise.all([omnipoolAccountId, stablepoolAccountId, stablepoolAccountId2].map(accountId => api.query.tokens.accounts(accountId, assetId))) + bals.forEach(bal => add(cgId, bal.free / (10 ** decimals))) } else { sdk.log(`No mapping for ${symbol}, skipping it`) } From d498295028920765cce583675a4e9178c122323d Mon Sep 17 00:00:00 2001 From: 0xdapper <94534135+0xdapper@users.noreply.github.com> Date: Sun, 28 Jan 2024 19:04:10 +0530 Subject: [PATCH 0090/2004] feat: add umamifinance gm vaults (#8773) --- projects/umamifinance/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js index c5c87f57c8d..659f19baef3 100644 --- a/projects/umamifinance/index.js +++ b/projects/umamifinance/index.js @@ -20,6 +20,8 @@ const v2Vaults = [ "0x6a89FaF99587a12E6bB0351F2fA9006c6Cd12257", "0xe0A21a475f8DA0ee7FA5af8C1809D8AC5257607d", "0x37c0705A65948EA5e0Ae1aDd13552BCaD7711A23", + "0x959f3807f0Aa7921E18c78B00B2819ba91E52FeF", // gmUSDC + "0x4bCA8D73561aaEee2D3a584b9F4665310de1dD69", // gmWETH ]; module.exports = { From d5876b22b0d15e20dc18cc119712cca8e51fed1b Mon Sep 17 00:00:00 2001 From: 0xmDreamy <124707942+0xmDreamy@users.noreply.github.com> Date: Sun, 28 Jan 2024 17:47:18 +0100 Subject: [PATCH 0091/2004] feat(abracadabra): Add WBTC and WETHV2 Arbitrum cauldrons (#8774) --- projects/abracadabra/market.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/abracadabra/market.json b/projects/abracadabra/market.json index 033be995830..4617a244c3a 100644 --- a/projects/abracadabra/market.json +++ b/projects/abracadabra/market.json @@ -7,7 +7,9 @@ "0xD7659D913430945600dfe875434B6d80646d552A": "0x47c031236e19d024b42f8AE6780E44A573170703", "0x2b02bBeAb8eCAb792d3F4DDA7a76f63Aa21934FA": "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", "0x7962ACFcfc2ccEBC810045391D60040F635404fb": "0x09400D9DB990D5ed3f35D7be61DfAEB900Af03C9", - "0x66805F6e719d7e67D46e8b2501C1237980996C6a": "0x7f1fa204bb700853D36994DA19F830b6Ad18455C" + "0x66805F6e719d7e67D46e8b2501C1237980996C6a": "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", + "0x49De724D7125641F56312EBBcbf48Ef107c8FA57": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + "0x780db9770dDc236fd659A39430A8a7cC07D0C320": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" }, "avax": { "0x35fA7A723B3B39f15623Ff1Eb26D8701E7D6bB21": "0x0da67235dD5787D67955420C84ca1cEcd4E5Bb3b", From 703f7f1a36240907ed0435db4eb7521d69aae399 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 28 Jan 2024 17:50:13 +0100 Subject: [PATCH 0092/2004] fix helmet insure --- projects/helmetinsure/index.js | 113 +++++++++++++++------------------ 1 file changed, 52 insertions(+), 61 deletions(-) diff --git a/projects/helmetinsure/index.js b/projects/helmetinsure/index.js index 081efa5352c..6cf33c7c7ca 100644 --- a/projects/helmetinsure/index.js +++ b/projects/helmetinsure/index.js @@ -1,68 +1,59 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { blockQuery } = require('../helper/http') -const sdk = require('@defillama/sdk') -const { gql } = require('graphql-request') -const CHAIN_POLYGON = 'polygon' -const CHAIN_BSC = 'bsc' +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') -const THEGARPH_API = { - [CHAIN_POLYGON]: "https://api.thegraph.com/subgraphs/name/app-helmet-insure/guard", - [CHAIN_BSC]: "https://api.thegraph.com/subgraphs/name/app-helmet-insure/helmet-insure" +const config = { + polygon: { factory: '0x021297e233550eDBa8e6487EB7c6696cFBB63b88', fromBlock: 17072457 }, + bsc: { factory: '0x021297e233550eDBa8e6487EB7c6696cFBB63b88', fromBlock: 3369565 }, } -function transform(str) { - switch (str) { - case "bsc:0xaf90e457f4359adcc8b37e8df8a27a1ff4c3f561": // SHIB - return ADDRESSES.ethereum.INU - case "bsc:0xf218184af829cf2b0019f8e6f0b2423498a36983": // MATH - return "0x08d967bb0134f2d07f7cfb6e246680c53927dd30" - case "bsc:0xbd2949f67dcdc549c6ebe98696449fa79d988a9f": - return "0xBd2949F67DcdC549c6Ebe98696449Fa79D988A9F" - default: - return str - } -} - -function fetch(chain) { - return async (ts, _, chainBlocks, { api }) => { - var endpoint = THEGARPH_API[chain] - var query = gql` - query tvl($block: Int){ - options( - first: 1000, - block: { number: $block } - ) { - collateral - asks { - volume - settleToken - } - } - } - `; - const results = await blockQuery(endpoint, query, { api, blockCatchupLimit: 2000, }) - const { options } = results - - const data = options.flatMap(o => { - return o.asks.map(ask => { - return Object.assign(ask, { - collateral: o.collateral - }) +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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]) }) - }).reduce((_data, ask) => { - const key = transform(`${chain}:${ask.collateral}`) - sdk.util.sumSingleBalance(_data, key, ask.volume) - return _data - }, {}) - return data + return sumTokens2({ api, ownerTokens, permitFailure: true, }) + } } -} +}) -module.exports = { - [CHAIN_POLYGON]:{ - tvl: fetch(CHAIN_POLYGON) - }, - [CHAIN_BSC]:{ - tvl: fetch(CHAIN_BSC) - }, +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 From c0e1339c71799e160cbb9b94f74ab7802e87203c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 28 Jan 2024 17:56:33 +0100 Subject: [PATCH 0093/2004] update gammaswap --- projects/gammaswap/index.js | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/projects/gammaswap/index.js b/projects/gammaswap/index.js index 56a062109d3..62ddae357ce 100644 --- a/projects/gammaswap/index.js +++ b/projects/gammaswap/index.js @@ -2,22 +2,37 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { - arbitrum: { factory: '0xe048ccE443E787c5b6FA886236De2981D54E244f', fromBlock: 132429931 }, + arbitrum: { + factories: [ + { factory: '0xe048ccE443E787c5b6FA886236De2981D54E244f', fromBlock: 132429931 }, + { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 173451651 }, + ], + deltaswapFactory: '0xcb85e1222f715a81b8edaeb73b28182fa37cffa8' + }, } Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] + const { factories, deltaswapFactory } = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - 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]) - return sumTokens2({ ownerTokens, api, resolveLP: true, }) + 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 From 148d254b97faccf5db450ee59b412be682180ca0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 28 Jan 2024 20:05:42 +0100 Subject: [PATCH 0094/2004] fix bankofchain --- projects/bank-of-chain/index.js | 64 ++----------------- .../bank-of-chain/risk_off_vault_abi.json | 3 - 2 files changed, 7 insertions(+), 60 deletions(-) delete mode 100644 projects/bank-of-chain/risk_off_vault_abi.json diff --git a/projects/bank-of-chain/index.js b/projects/bank-of-chain/index.js index c59769e96cf..d55917c7d96 100644 --- a/projects/bank-of-chain/index.js +++ b/projects/bank-of-chain/index.js @@ -1,68 +1,18 @@ const ADDRESSES = require('../helper/coreAssets.json') -// const BigNumber = require("bignumber.js"); -// const utils = require('../helper/utils'); -// const { toUSDTBalances } = require('../helper/balances'); -const sdk = require('@defillama/sdk'); -const risk_off_abi = require("./risk_off_vault_abi.json"); - +const { sumTokens2 } = require('../helper/unwrapLPs') const RISK_OFF_USD_VAULT = "0x30D120f80D60E7b58CA9fFaf1aaB1815f000B7c3" const RISK_OFF_ETH_VAULT = "0x8f0Cb368C63fbEDF7a90E43fE50F7eb8B9411746" -const usdtAddress = ADDRESSES.ethereum.USDT; -const ethAddress = ADDRESSES.null; - -const chains = { - ethereum: 1, - optimism: 10, - bsc: 56, - polygon: 137, - fantom: 250, - arbitrum: 42161, - avax: 43114, -} - -async function ethereum_usd_tvl(timestamp, block, chainBlocks) { - const totalAssets = await sdk.api.abi.call({ - abi: risk_off_abi.totalAssets, - chain: 'ethereum', - target: RISK_OFF_USD_VAULT, - params: [], - block: chainBlocks['ethereum'] - }) - - return totalAssets.output/10 ** 12 -} - -async function ethereum_eth_tvl(timestamp, block, chainBlocks) { - const totalAssets = await sdk.api.abi.call({ - abi: risk_off_abi.totalAssets, - chain: 'ethereum', - target: RISK_OFF_ETH_VAULT, - params: [], - block: chainBlocks['ethereum'] - }) - - return totalAssets.output +async function tvl(timestamp, block, chainBlocks, { api }) { + const assets = await api.multiCall({ abi: 'uint256:totalAssets', calls: [RISK_OFF_USD_VAULT]}) + api.add(ADDRESSES.ethereum.USDT, assets[0] / 1e12) + const tokens = await api.call({ abi: 'address[]:getTrackedAssets', target: RISK_OFF_ETH_VAULT}) + return sumTokens2({ tokens, owner: RISK_OFF_ETH_VAULT, api, }) } - -async function ethereum(timestamp, block, chainBlocks) { - const balances = {}; - const usdValue = await ethereum_usd_tvl(timestamp, block, chainBlocks) - const ethValue = await ethereum_eth_tvl(timestamp, block, chainBlocks) - - await sdk.util.sumSingleBalance(balances, usdtAddress, usdValue) - await sdk.util.sumSingleBalance(balances, ethAddress, ethValue) - return balances -} - - - module.exports = { doublecounted: true, - timetravel: true, - misrepresentedTokens: false, ethereum: { - tvl:ethereum, + tvl, } } diff --git a/projects/bank-of-chain/risk_off_vault_abi.json b/projects/bank-of-chain/risk_off_vault_abi.json deleted file mode 100644 index dda88359cae..00000000000 --- a/projects/bank-of-chain/risk_off_vault_abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalAssets": "uint256:totalAssets" -} \ No newline at end of file From 80dab822e113c92ecfcd1981901de8fa727f92fb Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Mon, 29 Jan 2024 10:27:25 +0800 Subject: [PATCH 0095/2004] add lendle --- projects/solv-protocol-funds/index.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 12378f56e2f..903df9369bf 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -90,6 +90,15 @@ async function tvl() { async function mantleTvl(ts, _, _1, { api }) { let address = (await getConfig('solv-protocol/funds', addressUrl)); + + await klp(api, address); + await iziswap(api, address); + await lendle(api, address); + + return api.getBalances(); +} + +async function klp(api, address) { let klp = address[api.chain]["klp"]; const stakedAmounts = await api.multiCall({ @@ -103,14 +112,9 @@ async function mantleTvl(ts, _, _1, { api }) { stakedAmounts.forEach(amount => { api.add(klp["address"], amount) }) - - await iziswap(api); - - return api.getBalances() } -async function iziswap(api) { - let address = (await getConfig('solv-protocol/funds', addressUrl)); +async function iziswap(api, address) { let iziswapData = address[api.chain]["iziswap"]; const iziswap = iziswapData.liquidityManager; @@ -202,6 +206,14 @@ async function concrete(slots, api) { return concretes; } +async function lendle(api, address) { + let lendleData = address[api.chain]["lendle"]; + + const balance = await api.call({ abi: abi.balanceOf, target: lendleData.aToken, params: lendleData.account.user }); + + api.add(lendleData.account.ethAddress, balance) +} + async function getGraphData(timestamp, chain, api) { let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); From 9ff5ff4f78619a6f5ee190ac3df388507789ede0 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Mon, 29 Jan 2024 15:00:36 +0800 Subject: [PATCH 0096/2004] add lendle (#8776) * add arbitrum tvl * solv protocol funds add KLP * klp amount * refactor: dont fetch fsKLP price * Change the configuration of contract address * Modify judgment logic * Modify judgment logic * change cache file name * fix bug * add iziswap lp * fix * reduce usage of BigNumber * add lendle --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/index.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 12378f56e2f..903df9369bf 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -90,6 +90,15 @@ async function tvl() { async function mantleTvl(ts, _, _1, { api }) { let address = (await getConfig('solv-protocol/funds', addressUrl)); + + await klp(api, address); + await iziswap(api, address); + await lendle(api, address); + + return api.getBalances(); +} + +async function klp(api, address) { let klp = address[api.chain]["klp"]; const stakedAmounts = await api.multiCall({ @@ -103,14 +112,9 @@ async function mantleTvl(ts, _, _1, { api }) { stakedAmounts.forEach(amount => { api.add(klp["address"], amount) }) - - await iziswap(api); - - return api.getBalances() } -async function iziswap(api) { - let address = (await getConfig('solv-protocol/funds', addressUrl)); +async function iziswap(api, address) { let iziswapData = address[api.chain]["iziswap"]; const iziswap = iziswapData.liquidityManager; @@ -202,6 +206,14 @@ async function concrete(slots, api) { return concretes; } +async function lendle(api, address) { + let lendleData = address[api.chain]["lendle"]; + + const balance = await api.call({ abi: abi.balanceOf, target: lendleData.aToken, params: lendleData.account.user }); + + api.add(lendleData.account.ethAddress, balance) +} + async function getGraphData(timestamp, chain, api) { let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); From 3177864fba035ca2657c60c1db25f9b82971ca2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Horv=C3=A1th?= <54525514+eYdr1en@users.noreply.github.com> Date: Mon, 29 Jan 2024 08:01:34 +0100 Subject: [PATCH 0097/2004] add telos chain (#8775) --- projects/polaris-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/polaris-finance/index.js b/projects/polaris-finance/index.js index d4f6f4aa655..726e704d79a 100644 --- a/projects/polaris-finance/index.js +++ b/projects/polaris-finance/index.js @@ -40,7 +40,10 @@ module.exports = { methodology: "Pool2 TVL accounts for all LPs staked in Dawn, Staking TVL accounts for all tokens staked in Sunrise.", aurora: { - tvl: onChainTvl('0x6985436a0E5247A3E1dc29cdA9e1D89C5b59e26b', 71729132), + tvl: onChainTvl("0x6985436a0E5247A3E1dc29cdA9e1D89C5b59e26b", 71729132), staking, }, + telos: { + tvl: onChainTvl("0x9Ced3B4E4DC978265484d1F1f569010E13f911c9", 319760799), + }, }; From 7ce7dce8e7de233f275795451a1911ce3836fc0c Mon Sep 17 00:00:00 2001 From: Define101 Date: Mon, 29 Jan 2024 10:48:32 +0000 Subject: [PATCH 0098/2004] add gm pools to aark --- projects/aark/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/aark/index.js b/projects/aark/index.js index 1f34eb66657..2af2f7bb607 100644 --- a/projects/aark/index.js +++ b/projects/aark/index.js @@ -10,8 +10,13 @@ async function tvl(_, _b, _cb, { api, }) { ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.DAI, ADDRESSES.arbitrum.ARB, - ADDRESSES.arbitrum.USDT - + ADDRESSES.arbitrum.USDT, + '0x9C2433dFD71096C435Be9465220BB2B189375eA7', //gm + '0x6853EA96FF216fAb11D2d930CE3C508556A4bdc4', + '0x47c031236e19d024b42f8AE6780E44A573170703', + '0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407', + '0xD9535bB5f58A1a75032416F2dFe7880C30575a41', + '0xB686BcB112660343E6d15BDb65297e110C8311c4' ] }) } From d869baed5dd84da8f4353972deb7709e43519dbc Mon Sep 17 00:00:00 2001 From: smithmonnnnnnn <130979786+smithmonnnnnnn@users.noreply.github.com> Date: Mon, 29 Jan 2024 18:57:58 +0800 Subject: [PATCH 0099/2004] Add STSEI-USEI-LP to the statistics of Pool2 (#8777) * Kryptonite:SEI Liquid Staking Platform TVL * Add STSEI-USEI-LP to the statistics of Pool2 --- projects/kryptonite/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/kryptonite/index.js b/projects/kryptonite/index.js index 15f4950ea03..25cab795f3f 100644 --- a/projects/kryptonite/index.js +++ b/projects/kryptonite/index.js @@ -12,6 +12,12 @@ const config = { pair: "sei13pzdhenzugwa02tm975g2y5kllj26rf4x4ykpqtrfw2h4mcezmmqz06dfr", staking: "sei17na3tj5mjnz0f4s3gqa3eqykzp4qk5qz4uvmz7hzak2zwyh5ym7s7ljcay" }, + { + name: "STSEI-USEI-LP", + lp: "sei1y03a4m9etthj9w5mz7sltqcgh05ss09cjrezstfgqt28sgsvqxwsapqwfx", + pair: "sei1jqkqp7ql0n9edp9e7y86znt0m2h7rstlc2rwfvyxzrj84et9czaq89uqdx", + staking: "sei1x4jr7j63tq37lm8m0pmkdsjjtswsvpvmfhug9az207zp4m9a5j6s04gz0n" + }, { name: "STSEI-SEIYAN-LP", lp: "sei1hxh76ty0fk9esq3qsvrhzz6fsvmh55j59xnduswn6dfnsyjs06vqcye8yf", From 7e68b46ec8592b349c25b582094668145ec07da3 Mon Sep 17 00:00:00 2001 From: waldoclayton <132745195+waldoclayton@users.noreply.github.com> Date: Mon, 29 Jan 2024 19:06:19 +0800 Subject: [PATCH 0100/2004] add equation v2 (#1) (#8780) --- projects/equation-v2/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/equation-v2/index.js diff --git a/projects/equation-v2/index.js b/projects/equation-v2/index.js new file mode 100644 index 00000000000..305e3c8a49d --- /dev/null +++ b/projects/equation-v2/index.js @@ -0,0 +1,19 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const config = { + arbitrum: { + marketManager: "0x719Cf2A5bDb64BC47B72556A1439eF4b876D5A0C", + usd: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" + } +}; + +Object.keys(config).forEach(chain => { + const { marketManager, usd } = config[chain]; + module.exports[chain] = { + tvl: async (_, _b, _cb, { api }) => { + const ownerTokens = [[[usd], marketManager]]; + return sumTokens2({ api, ownerTokens }); + } + }; +}); + From c958d3388f7283f5eb30a0a5d0d3945e92f0df3c Mon Sep 17 00:00:00 2001 From: Siddhpura Karan <139523840+karan-magpie@users.noreply.github.com> Date: Mon, 29 Jan 2024 16:36:58 +0530 Subject: [PATCH 0101/2004] Added eigenpie (#8778) * Added eigenpie * Added vlCKPPool for cakepie protocol * code refactor --------- Co-authored-by: siddhpurakaran Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cakepie/config.js | 3 ++- projects/cakepie/index.js | 8 ++++++-- projects/eigenpie/config.js | 6 ++++++ projects/eigenpie/index.js | 17 +++++++++++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 projects/eigenpie/config.js create mode 100644 projects/eigenpie/index.js diff --git a/projects/cakepie/config.js b/projects/cakepie/config.js index 3a21f12c6c8..2118bf4a599 100644 --- a/projects/cakepie/config.js +++ b/projects/cakepie/config.js @@ -7,6 +7,7 @@ module.exports = { CakeAddress: "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", MCakeAddress: "0x581FA684D0Ec11ccb46B1d92F1F24C8A3F95C0CA", PancakeStaking: "0xb47b790076050423888cde9EBB2D5Cb86544F327", - CakepieReader: "0xc1cc256846224e8c0bA530692c338a99FbC27cB5" + CakepieReader: "0xc1cc256846224e8c0bA530692c338a99FbC27cB5", + vlCKPAddress: "0x232594e7F0096ba7DDAbcD8689cB0D994694eb26" }, }; \ No newline at end of file diff --git a/projects/cakepie/index.js b/projects/cakepie/index.js index a223000d523..b453a3d7ae1 100644 --- a/projects/cakepie/index.js +++ b/projects/cakepie/index.js @@ -2,9 +2,10 @@ 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(timestamp, block, chainBlocks, { api }) { - const { PancakeStaking, CakepieReader, MasterCakepieAddress, CakeAddress } = config[api.chain]; + const { PancakeStaking, CakepieReader, MasterCakepieAddress, CakeAddress, } = config[api.chain]; 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 }) @@ -16,8 +17,11 @@ async function tvl(timestamp, block, chainBlocks, { api }) { } Object.keys(config).forEach((chain) => { + const { vlCKPAddress, CKPAddress } = config[chain]; module.exports[chain] = { tvl, - // staking: staking(CakepieReader) + } + if (vlCKPAddress && CKPAddress) { + module.exports[chain].staking = staking(vlCKPAddress, CKPAddress) } }) \ No newline at end of file diff --git a/projects/eigenpie/config.js b/projects/eigenpie/config.js new file mode 100644 index 00000000000..544eaf26194 --- /dev/null +++ b/projects/eigenpie/config.js @@ -0,0 +1,6 @@ +module.exports = { + ethereum: { + eigenConfig: "0x20b70E4A1883b81429533FeD944d7957121c7CAB", + eigenStaking: "0x24db6717dB1C75B9Db6eA47164D8730B63875dB7", + } + }; \ No newline at end of file diff --git a/projects/eigenpie/index.js b/projects/eigenpie/index.js new file mode 100644 index 00000000000..8aec03793bf --- /dev/null +++ b/projects/eigenpie/index.js @@ -0,0 +1,17 @@ +const config = require("./config"); + +async function tvl(timestamp, block, chainBlocks, { api }) { + const { eigenConfig, eigenStaking } = config[api.chain]; + + const tokens = await api.call({ abi: 'address[]:getSupportedAssetList', target: eigenConfig, }); + const bals = await api.multiCall({ abi: 'function getTotalAssetDeposits(address) view returns (uint256)', calls: tokens, target: eigenStaking }) + api.add(tokens, bals) +} + +Object.keys(config).forEach((chain) => { + module.exports[chain] = { + tvl, + }; +}); + +module.exports.doublecounted = true \ No newline at end of file From 8f50862ca3b38a3860a3b001dcedb226bb1ac38b Mon Sep 17 00:00:00 2001 From: Ilya Raykker <44369865+iKapitonau@users.noreply.github.com> Date: Mon, 29 Jan 2024 15:38:03 +0100 Subject: [PATCH 0102/2004] Update index.js (#8783) --- projects/virtuswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/virtuswap/index.js b/projects/virtuswap/index.js index dd5ed117c42..98826038e95 100644 --- a/projects/virtuswap/index.js +++ b/projects/virtuswap/index.js @@ -27,7 +27,7 @@ async function tvl(_, _1, _2, { api }) { } module.exports = { - methodology: 'TVL: sum of all pools liquidity plus staked VRSW tokens', + methodology: 'Sum of all pools liquidity plus staked VRSW tokens', polygon: { tvl, staking: staking(STAKER, VRSW_TOKEN_POLYGON), From 54aa023f8affea796bb4ddb36c41e9cda3e5defb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Jan 2024 15:46:23 +0100 Subject: [PATCH 0103/2004] Omax (#8785) * - add omax RPC url - update omax swap - update Wrapped OMAX token * code refactor * code refactor --------- Co-authored-by: pro100skm --- projects/helper/tokenMapping.js | 5 ++++- projects/omax-swap/index.js | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 projects/omax-swap/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 29eb717697b..6b90497b3a2 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -44,7 +44,10 @@ const fixBalancesTokens = { }, btn: { '0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58': { coingeckoId: 'bitnet', decimals: 18 }, - } + }, + omax: { + '0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb': { coingeckoId: 'omax-token', decimals: 18 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/omax-swap/index.js b/projects/omax-swap/index.js new file mode 100644 index 00000000000..f85c30e5817 --- /dev/null +++ b/projects/omax-swap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('omax', '0x441b9333D1D1ccAd27f2755e69d24E60c9d8F9CF') \ No newline at end of file From 71ca306b32e811cbbb0f4ac728884b6609652c1e Mon Sep 17 00:00:00 2001 From: Ivan <3238603+ivivanov@users.noreply.github.com> Date: Mon, 29 Jan 2024 16:49:36 +0200 Subject: [PATCH 0104/2004] update cosmos query contracts (#8784) --- projects/helper/chain/cosmos.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index d7bd17aab7e..72838f42064 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -232,16 +232,14 @@ async function queryManyContracts({ contracts = [], chain, data }) { async function queryContracts({ chain, codeId, }) { const res = [] - const limit = 1000 - let offset = 0 - let paginationKey = undefined + const limit = 100 + let paginationKey do { - let endpoint = `${getEndpoint(chain)}/cosmwasm/wasm/v1/code/${codeId}/contracts?pagination.limit=${limit}&pagination.offset=${offset}` + let endpoint = `${getEndpoint(chain)}/cosmwasm/wasm/v1/code/${codeId}/contracts?pagination.limit=${limit}${paginationKey ? `&pagination.key=${encodeURIComponent(paginationKey)}` : ''}` const { data: { contracts, pagination } } = await axios.get(endpoint) paginationKey = pagination.next_key res.push(...contracts) - offset += limit } while (paginationKey) return res From ec544ab3b89478a887089e77e358a9232ce4b819 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 29 Jan 2024 15:39:34 +0000 Subject: [PATCH 0105/2004] hop url --- projects/hop/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/hop/index.js b/projects/hop/index.js index 35d234fd50b..9531e644139 100644 --- a/projects/hop/index.js +++ b/projects/hop/index.js @@ -12,7 +12,7 @@ const getChainKey = chain => chainMapping[chain] ?? chain function chainTvl(chain) { return async (_, _b, {[chain]: block}) => { const toa = [] - const { bridges, bonders } = await getConfig('hop-protocol', 'https://raw.githubusercontent.com/hop-protocol/hop/develop/packages/core/build/addresses/mainnet.json') + 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) From b489edef01e8b46833b868087b20a432c016d6d0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Jan 2024 16:58:53 +0100 Subject: [PATCH 0106/2004] test code [dont merge] (#8786) * test code * minor fix --- package-lock.json | 6 +++--- projects/teahouse-v3/index.js | 4 ++++ projects/teahouse/index.js | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3bfc0492506..0be13ad6104 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.20", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.20.tgz", - "integrity": "sha512-iGRCZojaD4Ocr/Gj70u2zPR70v5ZpI56eETAk/cSHBH1YwmuHzdbzo3zrc5yhQ8VmC48HVTnLZGb30QneiAdog==", + "version": "5.0.24", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.24.tgz", + "integrity": "sha512-s+Uug2oKbNk2P/7BQ08lKPcOzsJORLF3w2f70oI8HmYHWQdQih7SoyyqiwzxkpxLBF7NZO9hP3pJs6gUL3r16g==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 7fba888c3dc..87ed0b4265a 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -32,6 +32,10 @@ chains.forEach((chain) => { calls: vaults, }); api.addTokens(tokens, bals); + if (['boba', 'mantle'].includes(chain)) { + const tvl = await api.getUSDValue() + if (+tvl === 0) throw new Error('tvl is 0') + } return api.getBalances(); }, }; diff --git a/projects/teahouse/index.js b/projects/teahouse/index.js index 6f44f4969e6..60ca2fc68bb 100644 --- a/projects/teahouse/index.js +++ b/projects/teahouse/index.js @@ -42,6 +42,10 @@ chains.forEach((chain) => { }) ).map((i) => i.fundValueAfterRequests); api.addTokens(tokens, bals); + if (chain === 'bsc') { + const tvl = await api.getUSDValue() + if (+tvl === 0) throw new Error('tvl is 0') + } return api.getBalances(); }, }; From 5db68dda831dc92e67de44c30ca213169a2b82af Mon Sep 17 00:00:00 2001 From: Roy <42067944+royvardhan@users.noreply.github.com> Date: Tue, 30 Jan 2024 01:49:10 +0530 Subject: [PATCH 0107/2004] feat: add telos to vapordex (#8788) * feat: add telos to vapordex * fix: vapordex build --- projects/vapordex-v2/index.js | 4 ++++ projects/vapordex/index.js | 27 ++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/projects/vapordex-v2/index.js b/projects/vapordex-v2/index.js index 1b065e65a3d..4e6f81e8e62 100644 --- a/projects/vapordex-v2/index.js +++ b/projects/vapordex-v2/index.js @@ -5,4 +5,8 @@ module.exports = uniV3Export({ factory, fromBlock: 36560289, }, + telos: { + factory, + fromBlock: 312329030, + }, }); diff --git a/projects/vapordex/index.js b/projects/vapordex/index.js index 787d39053bb..a1f5a2e57bd 100644 --- a/projects/vapordex/index.js +++ b/projects/vapordex/index.js @@ -1,5 +1,22 @@ -const { uniTvlExport } = require("../helper/unknownTokens"); -module.exports = uniTvlExport( - "avax", - "0xc009a670e2b02e21e7e75ae98e254f467f7ae257" -); +const { getUniTVL } = require("../helper/unknownTokens"); + +const FACTORY_TELOS = "0xDef9ee39FD82ee57a1b789Bc877E2Cbd88fd5caE"; +const FACTORY_AVAX = "0xc009a670e2b02e21e7e75ae98e254f467f7ae257"; +module.exports = { + telos: { + tvl: getUniTVL({ + factory: FACTORY_TELOS, + useDefaultCoreAssets: true, + }), + }, + + avax: { + tvl: getUniTVL({ + factory: FACTORY_AVAX, + useDefaultCoreAssets: true, + }), + }, + + methodology: + "TVL comes from the DEX liquidity pools, and is pulled from the factory contract:", +}; From aec24b11ada1df30180e07df4e1e6fa168c86f3c Mon Sep 17 00:00:00 2001 From: Siong Date: Tue, 30 Jan 2024 04:19:39 +0800 Subject: [PATCH 0108/2004] add jupiter perpetual TVL (#8787) --- projects/jupiter-perpetual.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/jupiter-perpetual.js diff --git a/projects/jupiter-perpetual.js b/projects/jupiter-perpetual.js new file mode 100644 index 00000000000..e0df138cef7 --- /dev/null +++ b/projects/jupiter-perpetual.js @@ -0,0 +1,21 @@ +const { sumTokens2 } = require("./helper/solana"); + +module.exports = { + timetravel: false, + methodology: "Calculate sum across all program token accounts", + solana: { + tvl, + }, +}; + +async function tvl(_, _b, _cb, { api }) { + const vaults = [ + "BUvduFTd2sWFagCunBPLupG8fBTJqweLw9DuhruNFSCm", // SOL + "WzWUoCmtVv7eqAbU3BfKPU3fhLP6CXR8NCJH78UK9VS", // USDC + "Gex24YznvguMad1mBzTQ7a64U1CJy59gvsStQmNnnwAd", // USDT + "Bgarxg65CEjN3kosjCW5Du3wEqvV3dpCGDR3a2HRQsYJ", // ETH + "FgpXg2J3TzSs7w3WGYYE7aWePdrxBVLCXSxmAKnCZNtZ", // BTC + ]; + + return sumTokens2({ tokenAccounts: vaults }); +} From 0fc4b1400f2fef137d5e39944c1d01cfa2d4d07c Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Mon, 29 Jan 2024 18:17:43 -0500 Subject: [PATCH 0109/2004] add stDYDX (#8790) --- projects/helper/chains.json | 1 + projects/stride/index.js | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 0e463c90954..52a9a94bde0 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -64,6 +64,7 @@ "doge", "dogechain", "dsc", + "dydx", "echelon", "edg", "elastos", diff --git a/projects/stride/index.js b/projects/stride/index.js index ed755a8cb5b..d34ee749e6c 100644 --- a/projects/stride/index.js +++ b/projects/stride/index.js @@ -61,11 +61,17 @@ const chains = { denom: "usomm", coinGeckoId: "sommelier", }, + + dydx: { + chainId: "dydx-mainnet-1", + denom: "adydx", + coinGeckoId: "dydx-chain", + }, }; // inj uses 1e18 - https://docs.injective.network/learn/basic-concepts/inj_coin#base-denomination function getCoinDenimals(denom) { - return ["aevmos", "inj"].includes(denom) ? 1e18 : 1e6; + return ["aevmos", "inj", "adydx"].includes(denom) ? 1e18 : 1e6; } function makeTvlFn(chain) { From c650776db1d45362a9eef5769b43a14e07bbd40a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 30 Jan 2024 03:09:54 +0000 Subject: [PATCH 0110/2004] add swell restaking --- projects/swell-restaking/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/swell-restaking/index.js diff --git a/projects/swell-restaking/index.js b/projects/swell-restaking/index.js new file mode 100644 index 00000000000..268c00fe77a --- /dev/null +++ b/projects/swell-restaking/index.js @@ -0,0 +1,18 @@ +const { nullAddress } = require("../helper/tokenMapping") + +async function tvl(_, _b, _cb, { api, }) { + const tvl = await api.call({ + target: "0xfae103dc9cf190ed75350761e95403b7b8afa6c0", + abi: "erc20:totalSupply" + }) + return { + [nullAddress]: tvl + } +} + +module.exports = { + doublecounted: true, + ethereum: { + tvl, + }, +} \ No newline at end of file From 5512ae0f8adf2dd363e3b4fcd49affd1c7cfe107 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 30 Jan 2024 03:20:47 +0000 Subject: [PATCH 0111/2004] use totalETHDeposited() --- projects/swell-restaking/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/swell-restaking/index.js b/projects/swell-restaking/index.js index 268c00fe77a..050426760ee 100644 --- a/projects/swell-restaking/index.js +++ b/projects/swell-restaking/index.js @@ -2,8 +2,8 @@ const { nullAddress } = require("../helper/tokenMapping") async function tvl(_, _b, _cb, { api, }) { const tvl = await api.call({ - target: "0xfae103dc9cf190ed75350761e95403b7b8afa6c0", - abi: "erc20:totalSupply" + target: "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0", + abi: "uint256:totalETHDeposited" }) return { [nullAddress]: tvl From 1e24b7d0d324d82041710a069c5fa944ea190924 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 30 Jan 2024 03:24:47 +0000 Subject: [PATCH 0112/2004] remove doublecounted flag --- projects/swell-restaking/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/swell-restaking/index.js b/projects/swell-restaking/index.js index 050426760ee..5651cd5f3d7 100644 --- a/projects/swell-restaking/index.js +++ b/projects/swell-restaking/index.js @@ -11,7 +11,6 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { - doublecounted: true, ethereum: { tvl, }, From 3f6954fea58aef02680785a1f2557711c6b02653 Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Tue, 30 Jan 2024 03:47:25 -0500 Subject: [PATCH 0113/2004] Add opBNB vaults (#8794) Co-authored-by: Tatyana Stemkovski --- projects/ichifarm/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index 0b4e3e2fe0f..0ca7e3774d7 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -73,6 +73,11 @@ const config = { { factory: '0xbBB97d634460DACCA0d41E249510Bb741ef46ad3', fromBlock: 39366721, isAlgebra: false, }, // Cleo ] }, + op_bnb: { + vaultConfigs: [ + { factory: '0xADDA3A15EA71c223a82Af86d4578EF2B076035F1', fromBlock: 13911597, isAlgebra: true, }, // Thena + ] + }, polygon: { vaultConfigs: [ { factory: '0x2d2c72c4dc71aa32d64e5142e336741131a73fc0', fromBlock: 25697834, isAlgebra: false, }, From 8744bd259a11f2a922c6cb14b085bc3dc6f6cdb8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Jan 2024 09:58:53 +0100 Subject: [PATCH 0114/2004] Milkyway-1 (#8796) * update milky-way for correct tvl including batches * Refactor TVL calculation in Milky Way contract --------- Co-authored-by: Joon --- projects/milky-way/index.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/projects/milky-way/index.js b/projects/milky-way/index.js index fa432fa3fde..6d92fe6c5cd 100644 --- a/projects/milky-way/index.js +++ b/projects/milky-way/index.js @@ -5,17 +5,32 @@ const consts = { MILKYWAY_CONTRACT: 'osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0', } +/** + * { + * 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 tvl() { const { api } = arguments[3] const data = await queryContract({ contract: consts.MILKYWAY_CONTRACT, chain: api.chain, data: { state: {} } }); - api.add('ibc/'+ADDRESSES.ibc.TIA, data.total_native_token) + const {batches} = await queryContract({ contract: consts.MILKYWAY_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() } module.exports = { - timetravel: false, methodology: 'TVL counts the tokens that are locked in the Milky Way contract', osmosis: { tvl, } -} \ No newline at end of file +} // node test.js projects/milky-way/index.js \ No newline at end of file From 4741319b1f431b4e5f6d8b886a13ade3ddf8f9e8 Mon Sep 17 00:00:00 2001 From: AspidaNet <130355829+aspidanet@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:03:07 +0800 Subject: [PATCH 0115/2004] add Aspida (#8793) * add Aspida * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/aspida/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/aspida/index.js diff --git a/projects/aspida/index.js b/projects/aspida/index.js new file mode 100644 index 00000000000..226edae5e3f --- /dev/null +++ b/projects/aspida/index.js @@ -0,0 +1,8 @@ +module.exports = { + ethereum: { + tvl: async (_, _1, _2, { api }) => { + const totalSupply = await api.call({ target: "0xFC87753Df5Ef5C368b5FBA8D4C5043b77e8C5b39", abi: "uint256:totalSupply" }); + api.addGasToken(totalSupply) + } + } +} From b64b91b24f45e58908762b29f2eb8fb6d2f5ab8d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Jan 2024 10:08:37 +0100 Subject: [PATCH 0116/2004] Blueberry (#8797) * Blueberry Defi llama adapter * Remove unnecessary files and update Blueberry Lending Market TVL calculation --------- Co-authored-by: Bailey --- projects/blueberry/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/blueberry/index.js diff --git a/projects/blueberry/index.js b/projects/blueberry/index.js new file mode 100644 index 00000000000..48d4be6896f --- /dev/null +++ b/projects/blueberry/index.js @@ -0,0 +1,6 @@ +const { compoundExports2 } = require('../helper/compound') + +module.exports = { + methodology: 'Gets the total value locked in the Blueberry Lending Market', + ethereum: compoundExports2({ comptroller: '0xfFadB0bbA4379dFAbFB20CA6823F6EC439429ec2'}), +} \ No newline at end of file From 2c93f3ace2a3d0798a4c359e6ce902e6c99bcbef Mon Sep 17 00:00:00 2001 From: Define101 Date: Tue, 30 Jan 2024 11:18:31 +0000 Subject: [PATCH 0117/2004] add token reth --- projects/aark/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/aark/index.js b/projects/aark/index.js index 2af2f7bb607..9973bcb6873 100644 --- a/projects/aark/index.js +++ b/projects/aark/index.js @@ -16,7 +16,8 @@ async function tvl(_, _b, _cb, { api, }) { '0x47c031236e19d024b42f8AE6780E44A573170703', '0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407', '0xD9535bB5f58A1a75032416F2dFe7880C30575a41', - '0xB686BcB112660343E6d15BDb65297e110C8311c4' + '0xB686BcB112660343E6d15BDb65297e110C8311c4', + '0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8' ] }) } From 29ff8a6a30dde38f5b85a3244f4a4ea783f87366 Mon Sep 17 00:00:00 2001 From: Define101 Date: Tue, 30 Jan 2024 12:03:21 +0000 Subject: [PATCH 0118/2004] add osmosis chain to white whale --- projects/whitewhale-dex/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/whitewhale-dex/index.js b/projects/whitewhale-dex/index.js index e8c04b8ffa1..a2e840d8a9d 100644 --- a/projects/whitewhale-dex/index.js +++ b/projects/whitewhale-dex/index.js @@ -8,6 +8,7 @@ const factory = { chihuahua: "chihuahua1s8ehad3r9wxyk08ls2nmz8mqh4vlfmaxd2nw0crxwh04t4l5je4s8ljv0j", migaloo: "migaloo1z89funaazn4ka8vrmmw4q27csdykz63hep4ay8q2dmlspc6wtdgq92u369", sei: "sei1tcx434euh2aszzfsjxqzvjmc4cww54rxvfvv8v7jz353rg779l2st699q0", + osmosis: "osmo1vuzkc4nzzav7g6t20f2vp0ed4sm3vaqnkpzy7yq3kujxs2g2hawqwnwy5w" } module.exports = { From 7d4f3d7cbecc357b079563ec7aec154b7f17e076 Mon Sep 17 00:00:00 2001 From: mikyjo <80850454+mikyjo@users.noreply.github.com> Date: Tue, 30 Jan 2024 23:41:42 +0200 Subject: [PATCH 0119/2004] Add Ispolink project (#8807) * Add Ispolink project * Refactor config and export staking function --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ispolink/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/ispolink/index.js diff --git a/projects/ispolink/index.js b/projects/ispolink/index.js new file mode 100644 index 00000000000..f0d422a72ec --- /dev/null +++ b/projects/ispolink/index.js @@ -0,0 +1,15 @@ +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) }; +}); From 32b88345f2bab2f441015197b8da10ead16608ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sim=C3=A3o=20Pinto?= <87367287+Sk1mer12@users.noreply.github.com> Date: Tue, 30 Jan 2024 21:47:57 +0000 Subject: [PATCH 0120/2004] Add files via upload (#8806) * Add files via upload * Refactor TVL calculation and add gas token support --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/inception-lrt/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/inception-lrt/index.js diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js new file mode 100644 index 00000000000..a66bf308af0 --- /dev/null +++ b/projects/inception-lrt/index.js @@ -0,0 +1,9 @@ +async function tvl(_, _b, _cb, { api, }) { + const vaults = ['0x36B429439AB227fAB170A4dFb3321741c8815e55', '0xfE715358368416E01d3A961D3a037b7359735d5e', '0x90E80E25ABDB6205B08DeBa29a87f7eb039023C2', '0x4878F636A9Aa314B776Ac51A25021C44CAF86bEd', '0xA9F8c770661BeE8DF2D026edB1Cb6FF763C780FF', '0x1Aa53BC4Beb82aDf7f5EDEE9e3bBF3434aD59F12', '0x814CC6B8fd2555845541FB843f37418b05977d8d', '0xc4181dC7BB31453C4A48689ce0CBe975e495321c', '0xC0660932C5dCaD4A1409b7975d147203B1e9A2B6', '0x6E17a8b5D33e6DBdB9fC61d758BF554b6AD93322', '0x295234B7E370a5Db2D2447aCA83bc7448f151161', '0xd0ee89d82183D7Ddaef14C6b4fC0AA742F426355'] + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults, permitFailure: true}) + bals.forEach(i => api.addGasToken(i ?? 0)) +} + +module.exports = { + ethereum: { tvl, }, +} \ No newline at end of file From 110acc6c71f778070acd3a5d51f60656e1516db5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Jan 2024 23:02:53 +0100 Subject: [PATCH 0121/2004] Accumulator-manta (#8808) * add VLX token for BSC * manta-pacific tvl * Add token address for Manta in config --------- Co-authored-by: Evgeny Rozanov Co-authored-by: Evgeny --- projects/accumulated-finance/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/accumulated-finance/index.js b/projects/accumulated-finance/index.js index cded08dc968..e2155607192 100644 --- a/projects/accumulated-finance/index.js +++ b/projects/accumulated-finance/index.js @@ -14,6 +14,10 @@ const config = { "bsc": { "baseToken": "0x8c543aed163909142695f2d2acd0d55791a9edb9", "LST": "0xcba2aeEc821b0B119857a9aB39E09b034249681A" + }, + "manta": { + token: '0x95cef13441be50d20ca4558cc0a27b601ac544e5', + "LST": "0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547" } } @@ -23,11 +27,11 @@ module.exports = { } Object.keys(config).forEach(chain => { - const { LST, baseToken } = config[chain] + const { LST, baseToken, token } = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { const supply = await api.call({ abi: 'uint256:totalSupply', target: LST }) - api.add(baseToken ?? ADDRESSES.null, supply, { skipChain: !!baseToken }) + api.add(token ?? baseToken ?? ADDRESSES.null, supply, { skipChain: !!baseToken }) return api.getBalances() }, } From 058645ebdbaf16332f96bac7d263376c4507ca45 Mon Sep 17 00:00:00 2001 From: Define101 Date: Wed, 31 Jan 2024 11:34:00 +0000 Subject: [PATCH 0122/2004] add new wallets apex --- projects/apex/index.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/projects/apex/index.js b/projects/apex/index.js index cbf723c307a..1f56af6d4f3 100644 --- a/projects/apex/index.js +++ b/projects/apex/index.js @@ -3,30 +3,31 @@ const { sumTokensExport } = require('../helper/unwrapLPs'); const tokens = [ ADDRESSES.ethereum.USDC, - ADDRESSES.ethereum.USDT + ADDRESSES.ethereum.USDT, ]; const owners = [ '0xA1D5443F2FB80A5A55ac804C948B45ce4C52DCbb', '0xe95b3Dc78c0881dEa17A69BaFC6cFeB8d891e9DE', - "0xe53A6eD882Eb3f90cCe0390DDB04c876C5482E6b" + "0xe53A6eD882Eb3f90cCe0390DDB04c876C5482E6b", + "0x96866592ccc2c5950CEE1Ca83685879DB0726150" //NEW ]; const walletAddresses = { - bsc: '0xe29304Af265641a49F55294F7E5BA5010ebA4497', + bsc: '0x09b783ae2443147c23a114a43b25b05b701ee401', polygon: '0x10434755CFdCd34539dB91c81AB0e07F96D44AA7', - arbitrum: '0x7B55800de02e4799F7b00a2C9963575464053F6A', + arbitrum: '0x0206d250f233c124c2dd5fa7d275c560cb034a37', avax: '0x2fd7d4A45f80b1d22d1eBb7B3b2961D131eB0A22', optimism: '0x89cBccEdDF07A14aFf90eF5D3A7D5BEf9e33Cb6b', mantle: '0x3a4d747D381D401E598CAFE65D4a70a704988c50', }; const tokenAddress = { - bsc: ADDRESSES.bsc.USDC, - polygon: ADDRESSES.polygon.USDC, - arbitrum: ADDRESSES.arbitrum.USDC, + bsc: ADDRESSES.bsc.USDT, + polygon: ADDRESSES.polygon.USDC_CIRCLE, + arbitrum: ADDRESSES.arbitrum.USDT, avax: ADDRESSES.avax.USDC, - optimism: ADDRESSES.optimism.USDC, + optimism: ADDRESSES.optimism.USDC_CIRCLE, mantle: ADDRESSES.mantle.USDC, } From dc494f53b3aa235abd42201787f2aab930a96d8d Mon Sep 17 00:00:00 2001 From: Define101 Date: Wed, 31 Jan 2024 12:08:36 +0000 Subject: [PATCH 0123/2004] add hallmark jupiter --- projects/jupiter-perpetual.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/jupiter-perpetual.js b/projects/jupiter-perpetual.js index e0df138cef7..f5a83f68154 100644 --- a/projects/jupiter-perpetual.js +++ b/projects/jupiter-perpetual.js @@ -1,6 +1,9 @@ const { sumTokens2 } = require("./helper/solana"); module.exports = { + hallmarks: [ + [1706490000,"launch jup exchange"] + ], timetravel: false, methodology: "Calculate sum across all program token accounts", solana: { From f8e9db603cbcd3da1bb6a236a7e6d8fd2ec2cdcc Mon Sep 17 00:00:00 2001 From: ninja-roll <158177385+ninja-roll@users.noreply.github.com> Date: Wed, 31 Jan 2024 20:31:09 +0700 Subject: [PATCH 0124/2004] feat: NinjaRoll (#8801) * feat: NinjaRoll * feat: call directly onchain * feat: update api for fetching roll price * Refactor staking function and update dependencies --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ninjaroll/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/ninjaroll/index.js diff --git a/projects/ninjaroll/index.js b/projects/ninjaroll/index.js new file mode 100644 index 00000000000..bc3593b1c93 --- /dev/null +++ b/projects/ninjaroll/index.js @@ -0,0 +1,11 @@ +const { queryContract } = require('../helper/chain/cosmos') + +async function staking(_, _2, _1, { 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 }, +}; From e21c8546be2e2cb3102f0636af804ab725909b1e Mon Sep 17 00:00:00 2001 From: hydro-developer <158029485+hydro-developer@users.noreply.github.com> Date: Thu, 1 Feb 2024 00:00:07 +0900 Subject: [PATCH 0125/2004] add hydro-protocol (#8798) * add hydro-protocol * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hydro-protocol/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/hydro-protocol/index.js diff --git a/projects/hydro-protocol/index.js b/projects/hydro-protocol/index.js new file mode 100644 index 00000000000..a80bfc3817e --- /dev/null +++ b/projects/hydro-protocol/index.js @@ -0,0 +1,15 @@ +const { queryContract } = require("../helper/chain/cosmos"); +const ADDRESSES = require("../helper/coreAssets.json"); + +const autocompoundContract = 'inj1mjcg8a73904rj4w7t5qkgn0apua98n059nufma' +async function tvl(_, _1, _2, { api }) { + const { total_supply } = await queryContract({ chain: api.chain, contract: "inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc", data: { token_info: {} } }) + api.add(ADDRESSES.injective.INJ, total_supply) +} + +module.exports = { + methodology: "Liquidity on hydro-protocol", + injective: { + tvl, + }, +}; \ No newline at end of file From ccc2e8fdef714c51f96442cc5891e52bcf0d9c70 Mon Sep 17 00:00:00 2001 From: Art <40150854+BadConfig@users.noreply.github.com> Date: Wed, 31 Jan 2024 18:02:37 +0300 Subject: [PATCH 0126/2004] upd tvl (#8805) --- projects/arcanum/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/arcanum/index.js b/projects/arcanum/index.js index 4e871ae7e39..49885497ebf 100644 --- a/projects/arcanum/index.js +++ b/projects/arcanum/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') const ARBI_CONTRACT = '0x4810E5A7741ea5fdbb658eDA632ddfAc3b19e3c6'; -const ASSETS_CONTRACTS = [ +const ARBI_ASSETS_CONTRACTS = [ ADDRESSES.arbitrum.GMX, '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8', '0x3082cc23568ea640225c2467653db90e9250aaa0', @@ -10,11 +10,18 @@ const ASSETS_CONTRACTS = [ '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 multipool contracts.', + methodology: 'counts the quantities of all tokens in all multipool contracts.', start: 1000235, arbitrum: { - tvl: sumTokensExport({ owner: ARBI_CONTRACT, tokens: ASSETS_CONTRACTS }), + tvl: sumTokensExport({ ownerTokens: [[ARBI_ASSETS_CONTRACTS, ARBI_CONTRACT], [SPI_ASSETS_CONTRACTS, SPI_CONTRACT]] }) } }; From 98a4d98a34267a278a815acc720ada54f96b6c6f Mon Sep 17 00:00:00 2001 From: bretheren <31092321+bretheren@users.noreply.github.com> Date: Wed, 31 Jan 2024 15:27:48 +0000 Subject: [PATCH 0127/2004] Fuzion Stake Contract (#8802) * Stake Contract * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fuzion-bonds/index.js | 12 +++++++++++- projects/helper/chain/cosmos.js | 2 +- projects/helper/tokenMapping.js | 5 ++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/projects/fuzion-bonds/index.js b/projects/fuzion-bonds/index.js index e17e1b30a86..562e907eadb 100644 --- a/projects/fuzion-bonds/index.js +++ b/projects/fuzion-bonds/index.js @@ -14,9 +14,19 @@ async function tvl() { 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 = { doublecounted: false, kujira: { - tvl, + tvl, staking, }, } \ No newline at end of file diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 72838f42064..30312372cff 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -150,7 +150,7 @@ async function getBalance2({ balances = {}, owner, block, chain, tokens, blackli for (const { denom, amount } of data) { if (blacklistedTokens?.includes(denom)) continue; if (tokens && !tokens.includes(denom)) continue; - sdk.util.sumSingleBalance(balances, denom, amount); + sdk.util.sumSingleBalance(balances, denom.replaceAll('/', ':'), amount); } return balances; } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6b90497b3a2..672fa1c854a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -48,6 +48,9 @@ const fixBalancesTokens = { omax: { '0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb': { coingeckoId: 'omax-token', decimals: 18 }, }, + kujira: { + 'factory:kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t:ufuzn': { coingeckoId: 'fuzion', decimals: 6 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) @@ -97,7 +100,7 @@ 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(":")[1] : token; + return token.indexOf(":") > -1 ? token.split(":").slice(1).join(':') : token; } const eulerTokens = [ From e39be8a134ffc3f288e254a260b161b2d9c83f3d Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 31 Jan 2024 22:17:07 +0000 Subject: [PATCH 0128/2004] add swell lrt --- projects/swell-lrt/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/swell-lrt/index.js diff --git a/projects/swell-lrt/index.js b/projects/swell-lrt/index.js new file mode 100644 index 00000000000..2f2a9b12509 --- /dev/null +++ b/projects/swell-lrt/index.js @@ -0,0 +1,14 @@ +const { nullAddress } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: async (_, _1, _2, { 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 + }; + } + } +}; From a44c9de89255bbbf92435c496e9784319ada7a5f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 31 Jan 2024 22:27:33 +0000 Subject: [PATCH 0129/2004] duplicated --- projects/swell-lrt/index.js | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 projects/swell-lrt/index.js diff --git a/projects/swell-lrt/index.js b/projects/swell-lrt/index.js deleted file mode 100644 index 2f2a9b12509..00000000000 --- a/projects/swell-lrt/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const { nullAddress } = require("../helper/unwrapLPs"); - -module.exports = { - ethereum: { - tvl: async (_, _1, _2, { 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 - }; - } - } -}; From 70bb4582d1cb36cf1fa96b79795c81f16767dc23 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 1 Feb 2024 02:17:17 +0000 Subject: [PATCH 0130/2004] add tenderize-v2 --- projects/tenderize-v2/index.js | 78 ++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 projects/tenderize-v2/index.js diff --git a/projects/tenderize-v2/index.js b/projects/tenderize-v2/index.js new file mode 100644 index 00000000000..0e550201e4a --- /dev/null +++ b/projects/tenderize-v2/index.js @@ -0,0 +1,78 @@ +const sdk = require('@defillama/sdk'); +const { GraphQLClient, gql } = require('graphql-request'); +const BigNumber = require('bignumber.js'); + +const ethereumEndpoint = + 'https://api.studio.thegraph.com/query/45970/tenderize-v2-mainnet/version/latest'; +const arbitrumEndpoint = + 'https://api.studio.thegraph.com/query/45970/tenderize-v2-arbitrum/version/latest'; + +const assetsQuery = gql` + { + assets { + id + } + } +`; + +const tvlQuery = gql` + query getAsset($id: ID!) { + asset(id: $id) { + tvl + } + } +`; + +async function fetchTVLForChain(subgraph) { + const graphQLClient = new GraphQLClient(subgraph); + const assetsResult = await graphQLClient.request(assetsQuery); + + const assets = assetsResult.assets; + let tvlData = {}; + for (const asset of assets) { + const result = await graphQLClient.request(tvlQuery, { + id: asset.id, + }); + + // Replace specific addresses with corresponding coingeckoIDs + switch (asset.id) { + case '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0': + tvlData['matic-network'] = result.asset.tvl; + break; + case '0x289ba1701c2f088cf0faf8b3705246331cb8a839': + tvlData['livepeer'] = result.asset.tvl; + break; + case '0x9623063377ad1b27544c965ccd7342f7ea7e88c7': + tvlData['the-graph'] = result.asset.tvl; + break; + default: + tvlData[asset.id] = result.asset.tvl; + } + } + + return tvlData; +} + + + + + + +async function fetchArbitrum() { + return await fetchTVLForChain(arbitrumEndpoint); +} + +async function fetchEthereum() { + return await fetchTVLForChain(ethereumEndpoint); +} + +module.exports = { + methodology: `Staked tokens are counted as TVL in the chain they are staked on. Non-derivative tokens in the TenderSwap liquidity pools are also counted as TVL.`, + doublecounted: true, + ethereum: { + tvl: fetchEthereum, + }, + arbitrum: { + tvl: fetchArbitrum, + }, +}; \ No newline at end of file From f511a7399acb8979809e91992f7cd3798b438eb0 Mon Sep 17 00:00:00 2001 From: merlincdj <39942523+merlincdj@users.noreply.github.com> Date: Thu, 1 Feb 2024 18:17:33 +0800 Subject: [PATCH 0131/2004] chore: add mantle --- projects/woofi.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/projects/woofi.js b/projects/woofi.js index bb8453bae1c..4a9d7352fa5 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -17,6 +17,7 @@ const wooPPConfig = { '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', // WOO ADDRESSES.bsc.USDT, // USDT ADDRESSES.bsc.BUSD, // BUSD + '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE ], avax: [ ADDRESSES.avax.WAVAX, // WAVAX @@ -68,6 +69,12 @@ const wooPPConfig = { ADDRESSES.base.WETH, ADDRESSES.base.USDbC, ], + mantle: [ + ADDRESSES.mantle.WMNT, + ADDRESSES.mantle.WETH, + ADDRESSES.mantle.USDT, + ADDRESSES.mantle.USDC, + ], } const chainConfig = { @@ -137,6 +144,12 @@ const chainConfig = { stakingContract: null, stakingContractV2: null, }, + mantle: { + wooPPContract: '0x9D1A92e601db0901e69bd810029F2C14bCCA3128', + woo: null, + stakingContract: null, + stakingContractV2: null, + } } Object.keys(chainConfig).forEach(chain => { From 4e8634657704adeed661e58bf04f609fa78d22ea Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 1 Feb 2024 12:06:03 +0000 Subject: [PATCH 0132/2004] add new wallets apex --- projects/apex/index.js | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/projects/apex/index.js b/projects/apex/index.js index 1f56af6d4f3..d74fddbf671 100644 --- a/projects/apex/index.js +++ b/projects/apex/index.js @@ -10,22 +10,23 @@ const owners = [ '0xA1D5443F2FB80A5A55ac804C948B45ce4C52DCbb', '0xe95b3Dc78c0881dEa17A69BaFC6cFeB8d891e9DE', "0xe53A6eD882Eb3f90cCe0390DDB04c876C5482E6b", - "0x96866592ccc2c5950CEE1Ca83685879DB0726150" //NEW + "0x96866592ccc2c5950CEE1Ca83685879DB0726150", //NEW + "0x698192C9F0996eEa12B492d6806A98d2Fa928658" // new usdc ]; const walletAddresses = { - bsc: '0x09b783ae2443147c23a114a43b25b05b701ee401', - polygon: '0x10434755CFdCd34539dB91c81AB0e07F96D44AA7', - arbitrum: '0x0206d250f233c124c2dd5fa7d275c560cb034a37', - avax: '0x2fd7d4A45f80b1d22d1eBb7B3b2961D131eB0A22', - optimism: '0x89cBccEdDF07A14aFf90eF5D3A7D5BEf9e33Cb6b', - mantle: '0x3a4d747D381D401E598CAFE65D4a70a704988c50', + bsc: ['0x09b783ae2443147c23a114a43b25b05b701ee401', '0x78f1354EC30a634C8ebdB503381B1db9D18e872D'], + polygon: ['0x10434755CFdCd34539dB91c81AB0e07F96D44AA7', '0xddfd32b73212ED7854095112a53D9BDd53F0355F'], + arbitrum: ['0x0206d250f233c124c2dd5fa7d275c560cb034a37', '0x367a1cB550D2C8B235Ba0dab9b7FE6B6085263Cf'], + avax: ['0x2fd7d4A45f80b1d22d1eBb7B3b2961D131eB0A22', '0xE33Bb824B1018b78b4B22eB2c08400515f32D5a1'], + optimism: ['0x89cBccEdDF07A14aFf90eF5D3A7D5BEf9e33Cb6b', '0x792BFFe24A7c426aEA9E15E051f490B6b77899dc'], + mantle: ['0x3a4d747D381D401E598CAFE65D4a70a704988c50', '0x9f0828611b642777569948E1FB22AD6340Bf8b07'], }; const tokenAddress = { - bsc: ADDRESSES.bsc.USDT, - polygon: ADDRESSES.polygon.USDC_CIRCLE, - arbitrum: ADDRESSES.arbitrum.USDT, + 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, @@ -36,21 +37,21 @@ module.exports = { tvl: sumTokensExport({ owners, tokens }), }, bsc: { - tvl: sumTokensExport({ owners: [walletAddresses.bsc], tokens: [tokenAddress.bsc] }), + tvl: sumTokensExport({ owners: walletAddresses.bsc, tokens: tokenAddress.bsc }), }, polygon: { - tvl: sumTokensExport({ owners: [walletAddresses.polygon], tokens: [tokenAddress.polygon] }), + tvl: sumTokensExport({ owners: walletAddresses.polygon, tokens: tokenAddress.polygon }), }, arbitrum: { - tvl: sumTokensExport({ owners: [walletAddresses.arbitrum], tokens: [tokenAddress.arbitrum] }), + tvl: sumTokensExport({ owners: walletAddresses.arbitrum, tokens: tokenAddress.arbitrum }), }, avax: { - tvl: sumTokensExport({ owners: [walletAddresses.avax], tokens: [tokenAddress.avax] }), + tvl: sumTokensExport({ owners: walletAddresses.avax, tokens: [tokenAddress.avax] }), }, optimism: { - tvl: sumTokensExport({ owners: [walletAddresses.optimism], tokens: [tokenAddress.optimism] }), + tvl: sumTokensExport({ owners: walletAddresses.optimism, tokens: [tokenAddress.optimism] }), }, mantle: { - tvl: sumTokensExport({ owners: [walletAddresses.mantle], tokens: [tokenAddress.mantle] }), + tvl: sumTokensExport({ owners: walletAddresses.mantle, tokens: [tokenAddress.mantle] }), }, }; From 836157c80b0d6e7822918f95d635aba33c1ed9ba Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:14:06 +0100 Subject: [PATCH 0133/2004] Add scroll chain configuration --- projects/poolshark/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/poolshark/index.js b/projects/poolshark/index.js index f62a07dcc1f..875490c81be 100644 --- a/projects/poolshark/index.js +++ b/projects/poolshark/index.js @@ -3,6 +3,7 @@ const { getLogs } = require('../helper/cache/getLogs') // 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 }, } Object.keys(config).forEach(chain => { From 6ddcc8aacc7c71766c555c9752564fb704d02745 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 1 Feb 2024 12:14:24 +0000 Subject: [PATCH 0134/2004] add lexer adapter --- projects/lexer-markets/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/lexer-markets/index.js diff --git a/projects/lexer-markets/index.js b/projects/lexer-markets/index.js new file mode 100644 index 00000000000..17e97405ff9 --- /dev/null +++ b/projects/lexer-markets/index.js @@ -0,0 +1,7 @@ +const { gmxExports } = require('../helper/gmx') + +module.exports = { + arbitrum: { + tvl: gmxExports({ vault: "0x355a5a46b27d849d75f65e7766dc1f00faa0be88", }) + }, +}; \ No newline at end of file From 0e21b98e9d66248ae4081492aa3135f1e13b7884 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:35:49 +0100 Subject: [PATCH 0135/2004] Mint-club (#8824) * Add Mint Club V2 * code refactor --------- Co-authored-by: seb's Co-authored-by: 0xggoma --- projects/mint-club-v2/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/mint-club-v2/index.js diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js new file mode 100644 index 00000000000..fcac528b43d --- /dev/null +++ b/projects/mint-club-v2/index.js @@ -0,0 +1,28 @@ +const { staking } = require('../helper/staking') +const { sumTokens2 } = require('../helper/unwrapLPs') + +module.exports = { + methodology: "Calculates the total collateral value of all the Mint.club V2 Bonding Curve protocols.", +}; + +const V2_BOND_CONTRACTS = { + avax: "0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1", +} + +const ownTokens = { + bsc: ['0x1f3Af095CDa17d63cad238358837321e95FC5915'] +} + +const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base'] + +chains.forEach(chain => { + const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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 (ownTokens[chain]) module.exports[chain].staking = staking(BOND_CONTRACT, ownTokens[chain]) +}) \ No newline at end of file From 634bc5228214c611b22936505b4f0662f78e550a Mon Sep 17 00:00:00 2001 From: Merlin <39942523+0xmer1in@users.noreply.github.com> Date: Thu, 1 Feb 2024 20:37:23 +0800 Subject: [PATCH 0136/2004] WOOFi add Mantle (#8820) * feat: WOOFi add Linea and Base * chore: add mantle --------- Co-authored-by: merlincdj <39942523+merlincdj@users.noreply.github.com> --- projects/woofi.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/projects/woofi.js b/projects/woofi.js index bb8453bae1c..4a9d7352fa5 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -17,6 +17,7 @@ const wooPPConfig = { '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', // WOO ADDRESSES.bsc.USDT, // USDT ADDRESSES.bsc.BUSD, // BUSD + '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', // CAKE ], avax: [ ADDRESSES.avax.WAVAX, // WAVAX @@ -68,6 +69,12 @@ const wooPPConfig = { ADDRESSES.base.WETH, ADDRESSES.base.USDbC, ], + mantle: [ + ADDRESSES.mantle.WMNT, + ADDRESSES.mantle.WETH, + ADDRESSES.mantle.USDT, + ADDRESSES.mantle.USDC, + ], } const chainConfig = { @@ -137,6 +144,12 @@ const chainConfig = { stakingContract: null, stakingContractV2: null, }, + mantle: { + wooPPContract: '0x9D1A92e601db0901e69bd810029F2C14bCCA3128', + woo: null, + stakingContract: null, + stakingContractV2: null, + } } Object.keys(chainConfig).forEach(chain => { From 759850196653c6549bd6a91c3d711f1175f2768b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:45:29 +0100 Subject: [PATCH 0137/2004] Puffer (#8825) * Add Puffer Finance * change wording * code refactor --------- Co-authored-by: Benjamin --- projects/puffer/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/puffer/index.js diff --git a/projects/puffer/index.js b/projects/puffer/index.js new file mode 100644 index 00000000000..0ece890c9d1 --- /dev/null +++ b/projects/puffer/index.js @@ -0,0 +1,14 @@ +const PUF_ETH = '0xD9A442856C234a39a81a089C06451EBAa4306a72'; + +async function tvl(_, _1, _2, { api }) { + return api.erc4626Sum({ calls: [PUF_ETH], isOG4626: true }) +} + +module.exports = { + doublecounted: true, + methodology: 'Returns the total assets owned by the Puffer Vault on Ethereum.', + start: 19128047, + ethereum: { + tvl, + } +}; \ No newline at end of file From 5e5387fd3fe418f8b48922f68821fbe4e8df0e27 Mon Sep 17 00:00:00 2001 From: LidoKing <55234791+LidoKing@users.noreply.github.com> Date: Thu, 1 Feb 2024 20:52:25 +0800 Subject: [PATCH 0138/2004] added locked MATCH value to tvl (#8816) * added locked MATCH value to tvl * Refactor TVL and staking functions in Match-Finance index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/Match-Finance/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/Match-Finance/index.js b/projects/Match-Finance/index.js index 3384a6bb481..a598ede4bee 100644 --- a/projects/Match-Finance/index.js +++ b/projects/Match-Finance/index.js @@ -1,9 +1,11 @@ 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)' @@ -22,10 +24,15 @@ async function tvl(_, _1, _2, { api }) { return api.getBalances() } +async function staking(_, _b, _cb, { 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, + tvl, staking, } }; From 1c7292473f23894bfc935eeac03400495628906d Mon Sep 17 00:00:00 2001 From: Ivan <3238603+ivivanov@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:54:56 +0200 Subject: [PATCH 0139/2004] update nolus tvl adding new platofrms (#8804) --- projects/nolus/index.js | 88 ++++++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/projects/nolus/index.js b/projects/nolus/index.js index 69cbb9f8770..a19812435af 100644 --- a/projects/nolus/index.js +++ b/projects/nolus/index.js @@ -1,11 +1,21 @@ const { queryContract, queryManyContracts, queryContracts } = require('../helper/chain/cosmos') -const leaserAddress = 'nolus1wn625s4jcmvk0szpl85rj5azkfc6suyvf75q6vrddscjdphtve8s5gg42f' -const oracleAddress = 'nolus1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgsv3wzl4' -const lppAddress = 'nolus1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sqaa3c5' const chain = 'nolus' +const _6Zeros = 1000000 +const _8Zeros = 100000000 +const _18Zeros = 1000000000000000000 -async function getLeaseCodeId() { +// Osmosis +const osmosisLeaserAddr = 'nolus1wn625s4jcmvk0szpl85rj5azkfc6suyvf75q6vrddscjdphtve8s5gg42f' +const osmosisOracleAddr = 'nolus1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgsv3wzl4' +const osmosisLppAddr = 'nolus1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sqaa3c5' + +// Neutron (Astroport) +const neutronLeaserAddr = 'nolus1et45v5gepxs44jxewfxah0hk4wqmw34m8pm4alf44ucxvj895kas5yrxd8' +const neutronOracleAddr = 'nolus1jew4l5nq7m3xhkqzy8j7cc99083m5j8d9w004ayyv8xl3yv4h0dql2dd4e' +const neutronLppAddr = 'nolus1qqcr7exupnymvg6m63eqwu8pd4n5x6r5t3pyyxdy7r97rcgajmhqy3gn94' + +async function getLeaseCodeId(leaserAddress) { const leaserContract = await queryContract({ contract: leaserAddress, chain: chain, @@ -27,17 +37,17 @@ async function getLeaseContracts(leaseCodeId) { }) } -async function getLeases(leaseContracts) { +async function getLeases(leaseAddresses) { return await queryManyContracts({ - contracts: leaseContracts, + contracts: leaseAddresses, chain: chain, data: {} }) } -async function getPrices() { +async function getPrices(oracleAddr) { const oracle = await queryContract({ - contract: oracleAddress, + contract: oracleAddr, chain: chain, data: { prices: {} } }) @@ -47,11 +57,14 @@ async function getPrices() { let price = 0 switch (p.amount.ticker) { case "WBTC": - price = (p.amount_quote.amount / (p.amount.amount / 100000000)) / 1000000 + case "CRO": + price = (p.amount_quote.amount / (p.amount.amount / _8Zeros)) / _6Zeros break case "WETH": case "EVMOS": - price = (p.amount_quote.amount / (p.amount.amount / 1000000000000000000)) / 1000000 + case "INJ": + case "DYDX": + price = (p.amount_quote.amount / (p.amount.amount / _18Zeros)) / _6Zeros break default: price = p.amount_quote.amount / p.amount.amount @@ -63,14 +76,19 @@ async function getPrices() { return prices } -async function getLppTvl() { - const lpp = await queryContract({ - contract: lppAddress, +async function getLppTvl(lppAddresses) { + const lpps = await queryManyContracts({ + contracts: lppAddresses, chain: chain, data: { "lpp_balance": [] } }) - return Number(lpp.balance.amount) / 1000000 + let totalLpp = 0 + lpps.forEach(v => { + totalLpp += Number(v.balance.amount) + }) + + return totalLpp / _6Zeros } function sumAssests(leases) { @@ -97,14 +115,17 @@ function getAssetsTvl(assets, prices) { let amount = 0 switch (ticker) { case "WBTC": - amount = Number(assets[ticker]) / 100000000 + case "CRO": + amount = Number(assets[ticker]) / _8Zeros break case "WETH": case "EVMOS": - amount = Number(assets[ticker]) / 1000000000000000000 + case "INJ": + case "DYDX": + amount = Number(assets[ticker]) / _18Zeros break default: - amount = Number(assets[ticker]) / 1000000 + amount = Number(assets[ticker]) / _6Zeros break } totalTvl += amount * prices[ticker] @@ -113,24 +134,37 @@ function getAssetsTvl(assets, prices) { return totalTvl } -async function tvl() { - const leaseCodeId = await getLeaseCodeId() +async function tvl(leaserAddr, oracleAddr) { + const leaseCodeId = await getLeaseCodeId(leaserAddr) const leaseContracts = await getLeaseContracts(leaseCodeId) const leases = await getLeases(leaseContracts) const assets = sumAssests(leases) - - const prices = await getPrices() - const assetsTvl = getAssetsTvl(assets, prices) - const lppTvl = await getLppTvl() - return { - 'axlusdc': assetsTvl + lppTvl - } + const prices = await getPrices(oracleAddr) + return getAssetsTvl(assets, prices) } module.exports = { methodology: "The combined total of lending pool assets and the current market value of active leases", nolus: { - tvl + tvl: async () => { + return { + 'axlusdc': await getLppTvl([osmosisLppAddr, neutronLppAddr]) + } + } + }, + neutron: { + tvl: async () => { + return { + 'axlusdc': await tvl(neutronLeaserAddr, neutronOracleAddr) + } + } + }, + osmosis: { + tvl: async () => { + return { + 'axlusdc': await tvl(osmosisLeaserAddr, osmosisOracleAddr) + } + } } } From bdfcf640536b2562f037373756cd13fcee2a3d8e Mon Sep 17 00:00:00 2001 From: vectorreserve <156945328+vectorreserve@users.noreply.github.com> Date: Thu, 1 Feb 2024 07:55:34 -0500 Subject: [PATCH 0140/2004] Add vector (#8795) * add vector * fix VEC tvl * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/vectorreserve/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/vectorreserve/index.js diff --git a/projects/vectorreserve/index.js b/projects/vectorreserve/index.js new file mode 100644 index 00000000000..b2df18d97d9 --- /dev/null +++ b/projects/vectorreserve/index.js @@ -0,0 +1,19 @@ +const { staking } = require('../helper/staking') + +const VETH_CONTRACT = '0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0'; +const VEC_CONTRACT = '0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447'; + +async function tvl(_, _1, _2, { 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', + start: 19067821, + ethereum: { + tvl, + pool2: staking(['0x2dd568028682ff2961cc341a4849f1b32f371064'], ['0xB6B0C651C37EC4ca81C0a128420e02001A57Fac2', '0x6685fcFCe05e7502bf9f0AA03B36025b09374726']), + staking: staking(['0xFdC28cd1BFEBF3033870C0344B4E0beE639be9b1'], VEC_CONTRACT), + } +}; \ No newline at end of file From 81d4d24dcae3db9ea0c1d8fa0f5967a7215b94d9 Mon Sep 17 00:00:00 2001 From: Dmitriy Green <52509463+dmitriy-green@users.noreply.github.com> Date: Thu, 1 Feb 2024 15:05:37 +0200 Subject: [PATCH 0141/2004] Binaryx Platform adapter (#8819) * Binaryx Platform adapter * code refactor --------- Co-authored-by: Dmitry Green Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/binaryx-platform/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/binaryx-platform/index.js diff --git a/projects/binaryx-platform/index.js b/projects/binaryx-platform/index.js new file mode 100644 index 00000000000..20125421aae --- /dev/null +++ b/projects/binaryx-platform/index.js @@ -0,0 +1,24 @@ +const ADDRESSES = require("../helper/coreAssets.json"); + +const propertyFactoryAddress = '0x5d618C67674945081824e7473821A79E4ec0970F'; +const priceOracleAddress = '0x551C261eFcf109378D101de9A2741FB8078Abf45'; + +// not relevant assets +const excludedTokens = ['0xC478d5C1E7F19D035Ad330bE09cb84eB9582D7F1', '0xd2198dBB407f5405284d0A00eA6624D087b7098b', '0x228ce2B019B5a54C545E61490E5ba66E40915868'].map(i => i.toLowerCase()) + + +async function tvl(timestamp, block, chainBlocks, { api }) { + const assets = (await api.call({ target: propertyFactoryAddress, abi: 'address[]:getAssets', })).filter(address => !excludedTokens.includes(address.toLowerCase())); + const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: assets }) + const prices = await api.multiCall({ abi: 'function latestPrice(address asset) view returns (uint256)', calls: assets, target: priceOracleAddress, }) + + supplies.forEach((v, i) => api.add(ADDRESSES.polygon.USDT, v * prices[i] / 1e18)) +} + +module.exports = { + misrepresentedTokens: true, + polygon: { + tvl, + }, + methodology: "TVL for the Binaryx Platform is calculated by summing the values of all assets, with each asset's value determined by multiplying its token supply by its token price, where the token price is obtained from the priceOracle." +}; From a7473885e74e60292554b48f8eb9d5568c7848d8 Mon Sep 17 00:00:00 2001 From: CristianRicharte6 <102038261+CristianRicharte6@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:39:49 +0100 Subject: [PATCH 0142/2004] 3A DAO - Adapter (#8818) * Feat: 3A-DAO * Refactor: Methodology updated * Fix: added chain * Fix: Removed test * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/3a-dao/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/3a-dao/index.js diff --git a/projects/3a-dao/index.js b/projects/3a-dao/index.js new file mode 100644 index 00000000000..1f6246acce6 --- /dev/null +++ b/projects/3a-dao/index.js @@ -0,0 +1,24 @@ +const { getLogs } = require('../helper/cache/getLogs') + +const config = { + polygon: { factory: '0x4760847023fa0833221ae76E01Db1E483A5D20e0', fromBlock: 49852705 }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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 From bdee31ebf6514630f9cbd682a033a365ac4266e6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:56:35 +0100 Subject: [PATCH 0143/2004] Neptune (#8827) * Added the Neptune Finance Adapter * Removed testing code * code refactor * Add Neptune Finance TVL and Borrowed assets calculation --------- Co-authored-by: DrCisco --- projects/helper/portedTokens.js | 1 + projects/neptune-finance/index.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 projects/neptune-finance/index.js diff --git a/projects/helper/portedTokens.js b/projects/helper/portedTokens.js index 323b4953d82..10b8ee84c3f 100644 --- a/projects/helper/portedTokens.js +++ b/projects/helper/portedTokens.js @@ -11,6 +11,7 @@ const { 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')) diff --git a/projects/neptune-finance/index.js b/projects/neptune-finance/index.js new file mode 100644 index 00000000000..36e9a0831bf --- /dev/null +++ b/projects/neptune-finance/index.js @@ -0,0 +1,25 @@ +const { queryContract, getToken, sumTokens } = require('../helper/chain/cosmos') + +const MARKET_ADDR = 'inj1nc7gjkf2mhp34a6gquhurg8qahnw5kxs5u3s4u'; + +async function tvl(_, _1, _2, { api }) { + return sumTokens({ chain: api.chain, owner: MARKET_ADDR}) +} + +async function borrowed(_, _1, _2, { 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 borrowed assets managed by Neptune on Injective', + injective: { + tvl, borrowed + } +}; From 5015a154190f866dbed103a6469bd7aa9b9dcf63 Mon Sep 17 00:00:00 2001 From: hyperionX2024 <157451025+hyperionX2024@users.noreply.github.com> Date: Thu, 1 Feb 2024 23:01:20 +0800 Subject: [PATCH 0144/2004] Add HyperionX (#8828) --- projects/Hyperionx/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/Hyperionx/index.js diff --git a/projects/Hyperionx/index.js b/projects/Hyperionx/index.js new file mode 100644 index 00000000000..e29a5b2c291 --- /dev/null +++ b/projects/Hyperionx/index.js @@ -0,0 +1,15 @@ +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.`, +} From 962f22975ff44f38dfa09b5686b301489caa292f Mon Sep 17 00:00:00 2001 From: shapeshed Date: Thu, 1 Feb 2024 15:31:46 +0000 Subject: [PATCH 0145/2004] Add sqTIA market (#8829) --- projects/margined-protocol/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/margined-protocol/index.js b/projects/margined-protocol/index.js index 7398c499d47..6a796969ddc 100644 --- a/projects/margined-protocol/index.js +++ b/projects/margined-protocol/index.js @@ -3,6 +3,7 @@ const { sumTokensExport} = require('../helper/sumTokens') const contractAddresses = [ 'osmo1rk4hregdr63rlqqj0k2rjzk6kz7w6v6tw8f5fqx2wg8203eam5equ67tdl', 'osmo1zttzenjrnfr8tgrsfyu8kw0eshd8mas7yky43jjtactkhvmtkg2qz769y2', + 'osmo18pfsg9n2kn6epty7uhur7vxfszadvflx6f66569ejc469k8p64pqrve3yz', ] module.exports = { @@ -11,7 +12,8 @@ module.exports = { tvl: sumTokensExport({ owners: contractAddresses}), }, hallmarks:[ - [Math.floor(new Date('2022-11-06') / 1e3), 'sqOSMO contract deployed'], + [Math.floor(new Date('2023-11-06') / 1e3), 'sqOSMO contract deployed'], [Math.floor(new Date('2023-11-21') / 1e3), 'sqATOM contract deployed'], + [Math.floor(new Date('2024-01-19') / 1e3), 'sqTIA contract deployed'], ] } From 64ede8031e3feee954fc8a1cbde9f98902d1a714 Mon Sep 17 00:00:00 2001 From: Kylix Afonso <59728053+kylixafonso@users.noreply.github.com> Date: Thu, 1 Feb 2024 15:51:22 +0000 Subject: [PATCH 0146/2004] add 1-month Optim Bond tokens to Liqwid TVL (#8813) * add 1-month Optim Bond tokens to Liqwid TVL * liqwid: add erg mapping --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/liqwid/index.js | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index 7ace150baf6..ba2582de32a 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -12,7 +12,23 @@ module.exports = { }; -const endpoint = 'https://api.liqwiddev.net/graphql' +const endpoint = 'https://api.liqwid.finance/graphql' + +const queryAdaLoans = `query ($page: Int) { + Page (page: $page) { + pageInfo { + currentPage + hasNextPage + } + loan(marketId: "Ada") { + collaterals { + id + amount + } + } + } +} +` const query = `query ($page: Int) { Page (page: $page) { @@ -60,6 +76,7 @@ const tokenMapping = { ADA: 'lovelace', DJED: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344', SHEN: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd615368656e4d6963726f555344', + ERG: '04b95368393c821f180deee8229fbd941baaf9bd748ebcdbf7adbb147273455247', USDC: 'usd-coin', DAI: 'dai', USDT: 'tether', @@ -67,16 +84,35 @@ const tokenMapping = { const getToken = market => tokenMapping[market.marketId.toUpperCase()] ?? base64ToHex(market.info.params.underlyingClass.value0.symbol) +const getOptimBondTVL = async () => { + const getLoans = async (pageIndex) => { + const { Page: { pageInfo, loan: loans } } = await graphQuery(endpoint, queryAdaLoans, { page: pageIndex }) + + if (!pageInfo.hasNextPage) { + return loans + } + return [...loans, ...(await getLoans(pageIndex + 1))] + } + const loans = await getLoans(0) + const relevantLoans = + loans.filter(l => (l.collaterals.filter(c => c.id === "OptimBond1")).length != 0) + const bonds = + relevantLoans.map(l => l.collaterals[0].amount).reduce((acc, amount) => + acc + Number(amount), 0) + + return bonds +} async function tvl(_, _b, _cb, { api, }) { const { Page: { market: markets } } = await graphQuery(endpoint, query, { page: 0 }) markets.forEach(market => add(api, market, market.state.totalSupply)) + add(api, "OptimBond1", await getOptimBondTVL()) } function add(api, market, bal) { - const token = getToken(market) + const token = market === "OptimBond1" ? "OptimBond1" : getToken(market) if ([ "usd-coin", "tether", From 7068396b217ba691d3e37071ca2558d1fac5175d Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 1 Feb 2024 19:46:52 +0000 Subject: [PATCH 0147/2004] add Zeta Chain support --- projects/helper/chains.json | 3 ++- projects/helper/env.js | 1 + projects/ocelot-dex/index.js | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 projects/ocelot-dex/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 52a9a94bde0..9b9ff51ffc8 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -272,5 +272,6 @@ "zilliqa", "zkfair", "zksync", - "zyx" + "zyx", + "zeta" ] diff --git a/projects/helper/env.js b/projects/helper/env.js index a80a50fda56..4431e2d552a 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -18,6 +18,7 @@ const DEFAULTS = { ALV_RPC: "https://elves-core3.alvey.io/", OZONE_RPC: "https://node1.ozonechain.io", XDC_RPC: "https://erpc.xinfin.network", + ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public" } const ENV_KEYS = [ diff --git a/projects/ocelot-dex/index.js b/projects/ocelot-dex/index.js new file mode 100644 index 00000000000..ee1a6ced052 --- /dev/null +++ b/projects/ocelot-dex/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + zeta: { + tvl: getUniTVL({ factory: '0xA26E383c04013fB43F9E0b9F7903431d12FEa6d6', useDefaultCoreAssets: true, }) + } +} \ No newline at end of file From 1898fdba439a9bcb89cdc7a41d9328a76ecf2d7f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 1 Feb 2024 19:51:18 +0000 Subject: [PATCH 0148/2004] karpatkey helper --- projects/helper/karpatkey.js | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 projects/helper/karpatkey.js diff --git a/projects/helper/karpatkey.js b/projects/helper/karpatkey.js new file mode 100644 index 00000000000..e7e6e956450 --- /dev/null +++ b/projects/helper/karpatkey.js @@ -0,0 +1,42 @@ +const { sumSingleBalance } = require("@defillama/sdk/build/generalUtil") +const { fetchURL } = require("./utils") + +const symbolToId = { + "BAL":"balancer", + "DAI":"dai", + "ETH":"ethereum", + "USDC":"usd-coin", + "USDT":"tether", + "WBTC":"bitcoin", + "WETH":"ethereum", + "rETH2":"reth2", + "stETH":"staked-ether", + "sETH2":"seth2", + "rETH": "rocket-pool-eth", + "ankrETH":"ankreth", + "cbETH":"coinbase-wrapped-staked-eth", + "ETHx": "stader-ethx" +} + +async function karpatKeyTvl(timestamp, daoName, tokenToExclude) { + const {data} = await fetchURL("https://aumapi.karpatkey.dev/our_daos_token_details") + let date = new Date(timestamp*1e3) + let monthlyData = data.tokens.filter(t=>t.year_month === `${date.getFullYear()}_${date.getMonth()+1}` && t.dao === daoName) + if(monthlyData.length === 0){ + date = new Date(date - 30*24*3600e3) + monthlyData = data.tokens.filter(t=>t.year_month === `${date.getFullYear()}_${date.getMonth()+1}` && t.dao === daoName) + } + const balances = {} + monthlyData.forEach(bal=>{ + if(symbolToId[bal.token_symbol] && tokenToExclude !== bal.token_symbol){ + sumSingleBalance(balances, symbolToId[bal.token_symbol], bal.token_balance) + } else { + console.log(`Skipping ${bal.token_symbol}`) + } + }) + return balances +} + +module.exports={ + karpatKeyTvl +} \ No newline at end of file From f3d94dff2ca28c945069295e1c3f5e379670549c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 1 Feb 2024 20:12:19 +0000 Subject: [PATCH 0149/2004] solidly v3 chains --- projects/solidly-v3/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/solidly-v3/index.js b/projects/solidly-v3/index.js index 2367425f245..c8d9de38bf6 100644 --- a/projects/solidly-v3/index.js +++ b/projects/solidly-v3/index.js @@ -3,6 +3,10 @@ const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ ethereum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 18044650, }, + optimism: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 115235065, }, + base: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 9672720, }, + arbitrum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 173576189, }, + fantom: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 73057898, }, }); module.exports.hallmarks=[ [1693699200, "Solidly V3 launch"], From cc1751b6179d8bee9671adf11cbdd69e56925ea1 Mon Sep 17 00:00:00 2001 From: Phil <30321052+philipjames44@users.noreply.github.com> Date: Thu, 1 Feb 2024 14:38:25 -0700 Subject: [PATCH 0150/2004] Sommelier: Add 3 new vaults, MorphoMaximizer, Turbo divETH, & Turbo ETHx (#8831) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults --- projects/sommelier/cellar-constants.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index da306466e0c..8575cfc63cd 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -51,6 +51,9 @@ 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 cellarsV2p5 = [ { id: TURBO_SWETH, startBlock: 17910374 }, @@ -60,6 +63,9 @@ const cellarsV2p5 = [ { 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 }, ]; module.exports = { From 6bfc37d1b2de21232918e6e7fd69148ec1868c26 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 22:43:44 +0100 Subject: [PATCH 0151/2004] Brickken (#8833) * add bsc to brickken * code refactor --------- Co-authored-by: xaler --- projects/brickken/index.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/projects/brickken/index.js b/projects/brickken/index.js index dcdd0f18e1d..e353ea4df86 100644 --- a/projects/brickken/index.js +++ b/projects/brickken/index.js @@ -1,9 +1,9 @@ -const FACTORY_ETH_CONTRACT = '0x91af681C85Ca98Efc5D69C1B62E6F435030969Db'; const ESCROW_LATEST_PRICE_ABI = "function issuances(uint256) view returns(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"; async function tvl(_, _1, _2, { api }) { - const tokens = await api.fetchList({ lengthAbi: 'idSTOs', itemAbi: 'stoTokens', target: FACTORY_ETH_CONTRACT, startFromOne: true }) - const escrows = await api.fetchList({ lengthAbi: 'idSTOs', itemAbi: 'stoEscrows', target: FACTORY_ETH_CONTRACT, startFromOne: true }) + 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}) @@ -20,8 +20,15 @@ async function tvl(_, _1, _2, { api }) { } module.exports = { - ethereum: { - tvl, - }, + 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.` -}; \ No newline at end of file +} + +const config = { + ethereum: { factory: '0x91af681C85Ca98Efc5D69C1B62E6F435030969Db', }, + bsc: { factory: '0xCe4529Fe88df480BD777d3e32dfD7032e6C685ff', }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From c4d031fba2e2f2fa9692d31c9fcc704c2f059104 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 1 Feb 2024 21:50:25 +0000 Subject: [PATCH 0152/2004] add zeta coreseets --- projects/helper/coreAssets.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index be60f955849..1b3a20711a4 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1562,5 +1562,9 @@ }, "new": { "NEW": "0xf4905b9bc02ce21c98eac1803693a9357d5253bf" + }, + "zeta": { + "WZETA": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", + "ZETA": "0x0000000000000000000000000000000000000000" } } From 9149750ca1a04f3652f132a8634fc81b296e2711 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 23:01:31 +0100 Subject: [PATCH 0153/2004] update liqwid --- projects/liqwid/index.js | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index ba2582de32a..f8465619baa 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -75,14 +75,11 @@ const query = `query ($page: Int) { const tokenMapping = { ADA: 'lovelace', DJED: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344', - SHEN: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd615368656e4d6963726f555344', - ERG: '04b95368393c821f180deee8229fbd941baaf9bd748ebcdbf7adbb147273455247', - USDC: 'usd-coin', DAI: 'dai', - USDT: 'tether', + } -const getToken = market => tokenMapping[market.marketId.toUpperCase()] ?? base64ToHex(market.info.params.underlyingClass.value0.symbol) +const getToken = market => tokenMapping[market.marketId.toUpperCase()] ?? market.info.params.underlyingClass.value0.symbol + toHex(market.info.params.underlyingClass.value0.name) const getOptimBondTVL = async () => { const getLoans = async (pageIndex) => { @@ -104,7 +101,6 @@ const getOptimBondTVL = async () => { } async function tvl(_, _b, _cb, { api, }) { - const { Page: { market: markets } } = await graphQuery(endpoint, query, { page: 0 }) markets.forEach(market => add(api, market, market.state.totalSupply)) @@ -113,20 +109,15 @@ async function tvl(_, _b, _cb, { api, }) { function add(api, market, bal) { const token = market === "OptimBond1" ? "OptimBond1" : getToken(market) - if ([ - "usd-coin", - "tether", - ].includes(token)) bal /= 1e8 - if ([ - "dai", - ].includes(token)) bal /= 1e6 + 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(_, _b, _cb, { api, }) { - const { Page: { market: markets } } = await graphQuery(endpoint, query) + const { Page: { market: markets } } = await graphQuery(endpoint, query) markets.forEach(market => { const utilization = market.state.utilization @@ -151,3 +142,11 @@ function base64ToHex(base64) { // Step 3: Concatenate the hexadecimal values to form the final hexadecimal string return hexArray.join(''); */ } + +function toHex(str) { + let hex = '' + for (let i = 0; i < str.length; i++) { + hex += str.charCodeAt(i).toString(16); + } + return hex +} \ No newline at end of file From c69756a23a2c4f6f6ee1a0ae1d35e4b0b29359de Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 1 Feb 2024 22:13:52 +0000 Subject: [PATCH 0154/2004] add dydx v4 --- projects/dydx-v4/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/dydx-v4/index.js diff --git a/projects/dydx-v4/index.js b/projects/dydx-v4/index.js new file mode 100644 index 00000000000..2c4f5c614a4 --- /dev/null +++ b/projects/dydx-v4/index.js @@ -0,0 +1,14 @@ +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={ + dydx:{ + tvl + } +} \ No newline at end of file From a7b42a0b2b2b05b66a6cac23f9c4ae58d40881a4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 1 Feb 2024 23:20:55 +0100 Subject: [PATCH 0155/2004] Remove ZETA from coreAssets.json --- projects/helper/coreAssets.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 1b3a20711a4..7c1d6631387 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1564,7 +1564,6 @@ "NEW": "0xf4905b9bc02ce21c98eac1803693a9357d5253bf" }, "zeta": { - "WZETA": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf", - "ZETA": "0x0000000000000000000000000000000000000000" + "WZETA": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf" } } From 3146fc8abe43bf54acb419f62cc37d94c5a694e4 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 2 Feb 2024 01:05:53 +0000 Subject: [PATCH 0156/2004] karpatkey treasuries --- projects/helper/karpatkey.js | 6 +++++- projects/treasury/cowswap.js | 12 ++++++++++++ projects/treasury/ens.js | 28 +++++++++++----------------- projects/treasury/karpatkey.js | 7 +++++++ 4 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 projects/treasury/cowswap.js create mode 100644 projects/treasury/karpatkey.js diff --git a/projects/helper/karpatkey.js b/projects/helper/karpatkey.js index e7e6e956450..d7c038a8592 100644 --- a/projects/helper/karpatkey.js +++ b/projects/helper/karpatkey.js @@ -15,7 +15,11 @@ const symbolToId = { "rETH": "rocket-pool-eth", "ankrETH":"ankreth", "cbETH":"coinbase-wrapped-staked-eth", - "ETHx": "stader-ethx" + "ETHx": "stader-ethx", + "GNO": "gnosis", + wstETH: "wrapped-steth", + WXDAI: "dai", + XDAI: "dai" } async function karpatKeyTvl(timestamp, daoName, tokenToExclude) { diff --git a/projects/treasury/cowswap.js b/projects/treasury/cowswap.js new file mode 100644 index 00000000000..ceb1e0a9d04 --- /dev/null +++ b/projects/treasury/cowswap.js @@ -0,0 +1,12 @@ +const { karpatKeyTvl } = require('../helper/karpatkey'); +const { sumTokensExport } = require('../helper/unknownTokens'); + +module.exports={ + ethereum:{ + tvl: async (timestamp)=>karpatKeyTvl(timestamp, "CoW DAO", "COW"), + ownTokens: sumTokensExport({ + tokens: ["0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab"], + owners: ["0xca771eda0c70aa7d053ab1b25004559b918fe662"], + }) + } + } \ No newline at end of file diff --git a/projects/treasury/ens.js b/projects/treasury/ens.js index 21034401101..5c32b762dbe 100644 --- a/projects/treasury/ens.js +++ b/projects/treasury/ens.js @@ -1,24 +1,18 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, treasuryExports } = require("../helper/treasury"); +const { karpatKeyTvl } = require('../helper/karpatkey'); +const { sumTokensExport } = require('../helper/unknownTokens'); const treasury = "0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7"; const vestingAddress = "0xd7a029db2585553978190db5e85ec724aa4df23f" const treasury2 = "0x690f0581ececcf8389c223170778cd9d029606f2" - const ENS= "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"; - -module.exports = treasuryExports({ - ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.USDC, //USDC - ADDRESSES.ethereum.DAI, - ADDRESSES.ethereum.LINK - - ], - owners: [treasury, vestingAddress, treasury2], - ownTokens: [ENS], - }, -}) \ No newline at end of file +module.exports={ + ethereum:{ + tvl: async (timestamp)=>karpatKeyTvl(timestamp, "ENS DAO", "ENS"), + ownTokens: sumTokensExport({ + tokens: [ENS], + owners: [treasury, vestingAddress, treasury2], + }) + } +} \ No newline at end of file diff --git a/projects/treasury/karpatkey.js b/projects/treasury/karpatkey.js new file mode 100644 index 00000000000..70e6752ba36 --- /dev/null +++ b/projects/treasury/karpatkey.js @@ -0,0 +1,7 @@ +const { karpatKeyTvl } = require('../helper/karpatkey'); + +module.exports={ + ethereum:{ + tvl: async (timestamp)=>karpatKeyTvl(timestamp, "karpatkey DAO", ""), + } + } \ No newline at end of file From cd56db35a279dfab73b4d2d68f60ce3c13daac07 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 2 Feb 2024 02:45:24 +0000 Subject: [PATCH 0157/2004] add new wbtc and weth vaults --- projects/qidao/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index d5504011709..24421a3aed9 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -162,7 +162,9 @@ const config = { "0x9A05b116b56304F5f4B3F1D5DA4641bFfFfae6Ab", "0xF1104493eC315aF2cb52f0c19605443334928D38", "0xb1f28350539b06d5a35d016908eef0424bd13c4b", - "0x3bcbAC61456c9C9582132D1493A00E318EA9C122" + "0x3bcbAC61456c9C9582132D1493A00E318EA9C122", + "0x169d47043cc0c94c39fa327941c56cb0344dc508", + "0xb5b31e6a13ae856bc30b3c76b16edad9f432b54f" ], toa: [ [nullAddress, '0xa3fa99a148fa48d14ed51d610c367c61876997f1'], From 314b6c8d4a2e1a0af3a7053dcd5db24cb2e6ec89 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Feb 2024 09:53:08 +0100 Subject: [PATCH 0158/2004] track zedaswap --- projects/zedaswap/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/zedaswap/index.js diff --git a/projects/zedaswap/index.js b/projects/zedaswap/index.js new file mode 100644 index 00000000000..c47855cc188 --- /dev/null +++ b/projects/zedaswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport('zeta', '0x61db4eecb460b88aa7dcbc9384152bfa2d24f306') From bcdb2e6c77d083e6ae4acc68f77c429e1f16e080 Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Fri, 2 Feb 2024 03:55:37 -0500 Subject: [PATCH 0159/2004] add stTIA TVL stats (#8837) --- projects/helper/chains.json | 1 + projects/stride/index.js | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 9b9ff51ffc8..fb854ef5a46 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -37,6 +37,7 @@ "canto", "carbon", "cardano", + "celestia", "celo", "chainx", "chz", diff --git a/projects/stride/index.js b/projects/stride/index.js index d34ee749e6c..14ba9224b38 100644 --- a/projects/stride/index.js +++ b/projects/stride/index.js @@ -67,6 +67,12 @@ const chains = { denom: "adydx", coinGeckoId: "dydx-chain", }, + + celestia: { + chainId: "celestia", + denom: "utia", + coinGeckoId: "celestia", + } }; // inj uses 1e18 - https://docs.injective.network/learn/basic-concepts/inj_coin#base-denomination @@ -76,13 +82,20 @@ function getCoinDenimals(denom) { function makeTvlFn(chain) { return async () => { + + // Define the URL for host_zone based on chainId + let hostZoneUrl = `https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/stakeibc/host_zone/${chain.chainId}`; + if (chain.chainId === 'celestia') { + hostZoneUrl = `https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/staketia/host_zone`; + } + const [{ amount: assetBalances }, { host_zone: hostZone }] = await Promise.all([ await get( `https://stride-fleet.main.stridenet.co/api/cosmos/bank/v1beta1/supply/by_denom?denom=st${chain.denom}` ), await get( - `https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/stakeibc/host_zone/${chain.chainId}` + hostZoneUrl ), ]); From 776ad5d5fb438ec4006a1d10d8c4340032f72b60 Mon Sep 17 00:00:00 2001 From: AbstraDexXYZ <155727634+AbstraDexXYZ@users.noreply.github.com> Date: Fri, 2 Feb 2024 15:56:00 +0700 Subject: [PATCH 0160/2004] Abstra dex (#8836) * abstraDex * abstraDex * abstraDex-fix --- projects/abstraDex/index.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/projects/abstraDex/index.js b/projects/abstraDex/index.js index 00edf4bc601..720fd6f0ef0 100644 --- a/projects/abstraDex/index.js +++ b/projects/abstraDex/index.js @@ -1,3 +1,20 @@ -const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('zkfair', '0x174c4C03DfeA09682728A5959A253bf1F7C7766F') +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + zkfair: { + tvl: getUniTVL({ + factory: "0x174c4C03DfeA09682728A5959A253bf1F7C7766F", + useDefaultCoreAssets: true, + }), + }, + + zeta: { + tvl: getUniTVL({ + factory: "0x174c4C03DfeA09682728A5959A253bf1F7C7766F", + useDefaultCoreAssets: true, + }), + }, +}; + From 075c76b5c04e0a4e70df3f77e79f5daee7a55c54 Mon Sep 17 00:00:00 2001 From: kappayield-range <131840920+kappayield-range@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:57:11 +0800 Subject: [PATCH 0161/2004] [Range Protocol] Add Zetachain Factory (#8839) * Add ethereum-uniswap factory vault * Add zeta chain factory for izumi --- projects/helper/env.js | 2 +- projects/range/index.js | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/helper/env.js b/projects/helper/env.js index 4431e2d552a..aa369c6136e 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -18,7 +18,7 @@ const DEFAULTS = { ALV_RPC: "https://elves-core3.alvey.io/", OZONE_RPC: "https://node1.ozonechain.io", XDC_RPC: "https://erpc.xinfin.network", - ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public" + ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545" } const ENV_KEYS = [ diff --git a/projects/range/index.js b/projects/range/index.js index 566f1a60359..8c35868db31 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -32,6 +32,9 @@ const config ={ ], manta: [ { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 899433 } // izumi + ], + zeta: [ + { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1562427 } // izumi ] } @@ -62,9 +65,10 @@ Object.keys(config).forEach(chain => { } const izumiFactory = '0xCCA961F89a03997F834eB5a0104efd9ba1f5800E'; // Differentiate between izumi & pancakeswap factory const mantaFactory = '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7'; + const zetaFactory = '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7'; const ghoFactory = '0xDE07a0D5C9CA371E41a869451141AcE84BCAd119'; let vaults = allLogs.filter(({ factory, chain }) => { - if ((factory === izumiFactory && chain === 'mantle') || (factory === mantaFactory && chain === 'manta')) { + if ((factory === izumiFactory && chain === 'mantle') || (factory === mantaFactory && chain === 'manta') || (factory === zetaFactory && chain === 'zeta')) { return false; } else if (factory === ghoFactory && chain === 'ethereum') { return false; @@ -76,7 +80,7 @@ Object.keys(config).forEach(chain => { vaults = vaults.filter(vault => !ignoreList[chain] || !ignoreList[chain].includes(vault)); // Remove excluded vaults // Collect Izumi Vaults Separately - let izumiVaults = allLogs.filter(({ factory, chain }) => (factory === izumiFactory && chain === 'mantle') || (factory === mantaFactory && chain === 'manta')).map(({ log }) => log.vault); + let izumiVaults = allLogs.filter(({ factory, chain }) => (factory === izumiFactory && chain === 'mantle') || (factory === mantaFactory && chain === 'manta') || (factory === zetaFactory && chain === 'zeta')).map(({ log }) => log.vault); izumiVaults = izumiVaults.filter(vault => !ignoreList[chain] || !ignoreList[chain].includes(vault)); // Collect GHO Vaults Separately From 410474d91ce0192b6b86ca12c7a76ef4dc0bbba7 Mon Sep 17 00:00:00 2001 From: RoastedBill Date: Fri, 2 Feb 2024 16:59:23 +0800 Subject: [PATCH 0162/2004] KTX Update: adding arbitrum config (#8838) --- projects/ktx/index.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/projects/ktx/index.js b/projects/ktx/index.js index aa819434979..eec9c2402bd 100644 --- a/projects/ktx/index.js +++ b/projects/ktx/index.js @@ -5,12 +5,25 @@ 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, "bsc"), tvl: gmxExports({ vault: bscVault }), }, mantle: { - tvl: gmxExports({ vault: '0x2e488D7ED78171793FA91fAd5352Be423A50Dae1' }), - } + staking: staking(mantleStaking, mantleKTC, "mantle"), + tvl: gmxExports({ vault: mantleVault }), + }, + arbitrum: { + staking: staking(arbitrumStaking, arbitrumKTC, "arbitrum"), + tvl: gmxExports({ vault: arbitrumVault }), + }, }; From db01b73f6272072c92d81556bdf005d0afcb14c3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Feb 2024 11:02:42 +0100 Subject: [PATCH 0163/2004] Refactor TVL calculation using getLogs helper --- projects/tenderize-v2/index.js | 97 +++++++-------------------- projects/tenderize/index.js | 118 +++++++-------------------------- 2 files changed, 48 insertions(+), 167 deletions(-) diff --git a/projects/tenderize-v2/index.js b/projects/tenderize-v2/index.js index 0e550201e4a..b67967dc48a 100644 --- a/projects/tenderize-v2/index.js +++ b/projects/tenderize-v2/index.js @@ -1,78 +1,27 @@ -const sdk = require('@defillama/sdk'); -const { GraphQLClient, gql } = require('graphql-request'); -const BigNumber = require('bignumber.js'); +const { getLogs } = require('../helper/cache/getLogs') -const ethereumEndpoint = - 'https://api.studio.thegraph.com/query/45970/tenderize-v2-mainnet/version/latest'; -const arbitrumEndpoint = - 'https://api.studio.thegraph.com/query/45970/tenderize-v2-arbitrum/version/latest'; - -const assetsQuery = gql` - { - assets { - id - } - } -`; - -const tvlQuery = gql` - query getAsset($id: ID!) { - asset(id: $id) { - tvl - } - } -`; - -async function fetchTVLForChain(subgraph) { - const graphQLClient = new GraphQLClient(subgraph); - const assetsResult = await graphQLClient.request(assetsQuery); - - const assets = assetsResult.assets; - let tvlData = {}; - for (const asset of assets) { - const result = await graphQLClient.request(tvlQuery, { - id: asset.id, - }); +const config = { + arbitrum: { factory: '0xa7cA8732Be369CaEaE8C230537Fc8EF82a3387EE', fromBlock: 175531230 }, + ethereum: { factory: '0xa7cA8732Be369CaEaE8C230537Fc8EF82a3387EE', fromBlock: 19115337 }, +} - // Replace specific addresses with corresponding coingeckoIDs - switch (asset.id) { - case '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0': - tvlData['matic-network'] = result.asset.tvl; - break; - case '0x289ba1701c2f088cf0faf8b3705246331cb8a839': - tvlData['livepeer'] = result.asset.tvl; - break; - case '0x9623063377ad1b27544c965ccd7342f7ea7e88c7': - tvlData['the-graph'] = result.asset.tvl; - break; - default: - tvlData[asset.id] = result.asset.tvl; +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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) } } - - return tvlData; -} - - - - - - -async function fetchArbitrum() { - return await fetchTVLForChain(arbitrumEndpoint); -} - -async function fetchEthereum() { - return await fetchTVLForChain(ethereumEndpoint); -} - -module.exports = { - methodology: `Staked tokens are counted as TVL in the chain they are staked on. Non-derivative tokens in the TenderSwap liquidity pools are also counted as TVL.`, - doublecounted: true, - ethereum: { - tvl: fetchEthereum, - }, - arbitrum: { - tvl: fetchArbitrum, - }, -}; \ No newline at end of file +}) diff --git a/projects/tenderize/index.js b/projects/tenderize/index.js index b8f550de624..3160fdbaee9 100644 --- a/projects/tenderize/index.js +++ b/projects/tenderize/index.js @@ -1,96 +1,28 @@ -const sdk = require('@defillama/sdk'); -const { GraphQLClient, gql } = require('graphql-request'); -const BigNumber = require('bignumber.js'); - -const ethereumEndpoint = - 'https://api.thegraph.com/subgraphs/name/tenderize/tenderize-ethereum'; -const arbitrumEndpoint = - 'https://api.thegraph.com/subgraphs/name/tenderize/tenderize-arbitrum'; - -const configsQuery = gql` - { - configs { - id - tenderSwap - tenderizer - steak - } - } -`; - -const currentPrincipalQuery = gql` - query getTenderizer($id: ID!) { - tenderizer(id: $id) { - currentPrincipal - } - } -`; - -const addBNstr = (a, b) => { - return BigNumber(+a + +b).toFixed(0); -}; - -async function fetchArbitrum(timestamp, ethBlock, chainBlocks) { - const graphQLClient = new GraphQLClient(arbitrumEndpoint); - const configsResult = await graphQLClient.request(configsQuery) - - const deploymentConfigs = configsResult.configs; - const tvlData = {}; - for (const config of deploymentConfigs) { - const result = await graphQLClient.request(currentPrincipalQuery, { - id: config.id, - }); - - const token1Balance = await sdk.api.abi.call({ - block: chainBlocks['arbitrum'], - target: config.tenderSwap, - abi: "uint256:getToken1Balance", - chain: 'arbitrum' - }); - - const tokenAddress = (i => `arbitrum:${i}`)(config.steak); - tvlData[tokenAddress] = addBNstr( - result.tenderizer.currentPrincipal, - token1Balance.output - ); - } - - return tvlData; +const config = { + arbitrum: [ + { "tenderSwap": "0x2429fc7082eb517c14946b392b195b181d0b9781", "steak": "0x289ba1701c2f088cf0faf8b3705246331cb8a839", "tenderToken": "0xfac38532829fdd744373fdcd4708ab90fa0c4078" } + ], + ethereum: [ + { "tenderSwap": "0x7de47d1c5b9415877fe6863263f97180117fdaaa", "steak": "0x18aaa7115705e8be94bffebde57af9bfc265b998", "tenderToken": "0xc83badbf764f957acc23bc9e9aac71c298b07243" }, + { "tenderSwap": "0xf56f61f8181d118c010ca9c5f1e9e447e37b207e", "steak": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", "tenderToken": "0xc29f5611dcd89bc5d3a19762783d3006bc2ad2ac" }, + { "tenderSwap": "0x23c24c1253c602106255b357cd3efe260a3a469e", "steak": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", "tenderToken": "0x2336c10a1d3100343fa9911a2c57b77c333599a3" } + ] } -async function fetchEthereum(timestamp, ethBlock, chainBlocks) { - const graphQLClient = new GraphQLClient(ethereumEndpoint); - const configsResult = await graphQLClient.request(configsQuery) - - const deploymentConfigs = configsResult.configs; - const tvlData = {}; - for (const config of deploymentConfigs) { - const result = await graphQLClient.request(currentPrincipalQuery, { - id: config.id, - }); - - const token1Balance = await sdk.api.abi.call({ - block: ethBlock, - target: config.tenderSwap, - abi: "uint256:getToken1Balance", - }); - - tvlData[config.steak] = addBNstr( - result.tenderizer.currentPrincipal, - token1Balance.output - ); +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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 }) + } } - - return tvlData; -} - -module.exports = { - methodology: `Staked tokens are counted as TVL in the chain they are staked on. Non-derivative tokens in the TenderSwap liquidity pools are also counted as TVL.`, - doublecounted: true, - ethereum: { - tvl: fetchEthereum, - }, - arbitrum: { - tvl: fetchArbitrum, - }, -}; +}) \ No newline at end of file From b1b6bcff36661ed51826a8424ad0cea7e5b6916a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Feb 2024 11:28:04 +0100 Subject: [PATCH 0164/2004] Update token addresses in projects --- projects/apollox/index.js | 2 +- projects/celerbridge/index.js | 2 +- projects/helper/coreAssets.json | 2 +- projects/kiloex/index.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/apollox/index.js b/projects/apollox/index.js index 94d68966a61..022e9a24d04 100644 --- a/projects/apollox/index.js +++ b/projects/apollox/index.js @@ -119,7 +119,7 @@ module.exports = { tvl: sumTokensExport({ owner: '0x5A5454A6030FB50ceb3eb78977D140198A27be5e', tokens: [ nullAddress, - ADDRESSES.op_bnb.USDC, + ADDRESSES.op_bnb.USDT, ADDRESSES.op_bnb.WBNB, ] }) diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index 284e267df24..e7b2fcbed43 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -227,7 +227,7 @@ const liquidityBridgeTokens = [ arbitrum: "0xaE6aab43C4f3E0cea4Ab83752C278f8dEbabA689", bsc: "0x4a9a2b2b04549c3927dd2c9668a5ef3fca473623", ethereum: "0x431ad2ff6a9c365805ebad47ee021148d6f7dbe0", - optimism: ADDRESSES.op_bnb.USDC, + optimism: ADDRESSES.op_bnb.USDT, polygon: "0x08C15FA26E519A78a666D19CE5C646D55047e0a3", }, { diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 7c1d6631387..0416007ccf6 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1404,7 +1404,7 @@ }, "op_bnb": { "WBNB": "0x4200000000000000000000000000000000000006", - "USDC": "0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3" + "USDT": "0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3" }, "archway": { "ARCH": "aarch" diff --git a/projects/kiloex/index.js b/projects/kiloex/index.js index 1663f5e0678..85283623f86 100644 --- a/projects/kiloex/index.js +++ b/projects/kiloex/index.js @@ -9,7 +9,7 @@ module.exports = { start: 1690971144, bsc: { tvl: sumTokensExport({ owners, tokens: [ADDRESSES.bsc.USDT], }) }, op_bnb: { - tvl: sumTokensExport({ owners: opbnb_owners, tokens: [ADDRESSES.op_bnb.USDC] }) + tvl: sumTokensExport({ owners: opbnb_owners, tokens: [ADDRESSES.op_bnb.USDT] }) }, manta: { tvl: sumTokensExport({ owners: manta_owners, tokens: [ADDRESSES.manta.USDT] }) From 4e9b8f303e65a3a5b815df67bb4f447aedde4186 Mon Sep 17 00:00:00 2001 From: "salvor.io" <148768872+salvorio@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:28:23 +0300 Subject: [PATCH 0165/2004] Add Salvor TVL (#8842) * Add Salvor Lending TVL * updated salvor project info --------- Co-authored-by: haluk --- projects/salvor/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/salvor/index.js diff --git a/projects/salvor/index.js b/projects/salvor/index.js new file mode 100644 index 00000000000..ca1f4c2d304 --- /dev/null +++ b/projects/salvor/index.js @@ -0,0 +1,13 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs"); +const { staking } = require("../helper/staking"); + +module.exports.avax = { + start: 1683411200, + hallmarks: [ + [1702501200, "Salvor Lending Launch"] + ], + methodology: 'TVL counts AVAX coins in the Salvor Pool address:0xab4fe2d136efd7f8dfce3259a5e3c5e4c0130c80', + staking: staking("0x72b73fa1569dF9fF1aE9b29CD5b164Af6c02EbaA", "0xF99516BC189AF00FF8EfFD5A1f2295B67d70a90e"), + tvl: sumTokensExport({ owners: ["0xab4fe2d136efd7f8dfce3259a5e3c5e4c0130c80"], tokens: [ADDRESSES.avax.WAVAX, nullAddress] }), +}; From 27ca295090ac16ab9de8714884bd1101ee328af6 Mon Sep 17 00:00:00 2001 From: kappayield-range <131840920+kappayield-range@users.noreply.github.com> Date: Fri, 2 Feb 2024 21:47:52 +0800 Subject: [PATCH 0166/2004] [Range Protocol] Add Scroll Factories (#8841) * Add ethereum-uniswap factory vault * Add zeta chain factory for izumi * Add Scroll Factory * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/range/index.js | 47 +++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/projects/range/index.js b/projects/range/index.js index 8c35868db31..351af5b60c7 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -5,7 +5,7 @@ const config ={ ethereum: [ { factory: '0xf1e70677fb1f49471604c012e8B42BA11226336b', fromBlock: 17266660 }, // uniswap { factory: '0x3edeA0E6E94F75F86c62E1170a66f4e3bD7d77fE', fromBlock: 18460401 }, // pancakeswap - { factory: '0xDE07a0D5C9CA371E41a869451141AcE84BCAd119', fromBlock: 18375548 }, // GHO + { factory: '0xDE07a0D5C9CA371E41a869451141AcE84BCAd119', fromBlock: 18375548, factoryType: 'GHO' }, // GHO { factory: '0x06D38cFA75FE0E9C41B0C58F102bCb2Df2577732', fromBlock: 10000835 } // uniswap ], arbitrum: [ @@ -26,15 +26,18 @@ const config ={ ], mantle: [ { factory: '0x3E89E72026DA6093DD6E4FED767f1f5db2fc0Fb4', fromBlock: 5345161 }, // agni - { factory: '0xCCA961F89a03997F834eB5a0104efd9ba1f5800E', fromBlock: 14374189 }, // izumi + { factory: '0xCCA961F89a03997F834eB5a0104efd9ba1f5800E', fromBlock: 14374189, factoryType: 'izumi' }, // izumi { factory: '0xD22D1271d108Cd09C38b8E5Be8536E0E366DCd23', fromBlock: 14063599 }, // fusionX { factory: '0xbf3CC27B036C01A4482d07De191F18F1d8e7B00c', fromBlock: 18309127 } // swapsicle ], manta: [ - { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 899433 } // izumi + { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 899433, factoryType: 'izumi' } // izumi ], zeta: [ - { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1562427 } // izumi + { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1562427, factoryType: 'izumi' } // izumi + ], + scroll: [ + { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1803841, factoryType: 'izumi' } // izumi ] } @@ -52,7 +55,7 @@ Object.keys(config).forEach(chain => { tvl: async (_, _b, _cb, { api, }) => { const factories = config[chain]; const allLogs = []; - for (const { factory, fromBlock } of factories) { + for (const { factory, fromBlock, factoryType } of factories) { const logs = await getLogs({ api, target: factory, @@ -61,31 +64,21 @@ Object.keys(config).forEach(chain => { onlyArgs: true, fromBlock, }) - logs.forEach((log) => allLogs.push({ factory, log, chain })); + logs.forEach((log) => allLogs.push({ factory, log, chain, factoryType })); } - const izumiFactory = '0xCCA961F89a03997F834eB5a0104efd9ba1f5800E'; // Differentiate between izumi & pancakeswap factory - const mantaFactory = '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7'; - const zetaFactory = '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7'; - const ghoFactory = '0xDE07a0D5C9CA371E41a869451141AcE84BCAd119'; - let vaults = allLogs.filter(({ factory, chain }) => { - if ((factory === izumiFactory && chain === 'mantle') || (factory === mantaFactory && chain === 'manta') || (factory === zetaFactory && chain === 'zeta')) { - return false; - } else if (factory === ghoFactory && chain === 'ethereum') { - return false; - } else { - return true; - } - }).map(({ log }) => log.vault); + 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(vault => !ignoreList[chain] || !ignoreList[chain].includes(vault)); // Remove excluded vaults + vaults = vaults.filter(ignoreVault); // Remove excluded vaults // Collect Izumi Vaults Separately - let izumiVaults = allLogs.filter(({ factory, chain }) => (factory === izumiFactory && chain === 'mantle') || (factory === mantaFactory && chain === 'manta') || (factory === zetaFactory && chain === 'zeta')).map(({ log }) => log.vault); - izumiVaults = izumiVaults.filter(vault => !ignoreList[chain] || !ignoreList[chain].includes(vault)); + let izumiVaults = allLogs.filter(({ factoryType}) => factoryType === 'izumi').map(getVault); + izumiVaults = izumiVaults.filter(ignoreVault); // Collect GHO Vaults Separately - let ghoVaults = allLogs.filter(({ factory, chain }) => factory === ghoFactory && chain === 'ethereum').map(({ log }) => log.vault); - ghoVaults = ghoVaults.filter(vault => !ignoreList[chain] || !ignoreList[chain].includes(vault)); + 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 }) @@ -94,8 +87,7 @@ Object.keys(config).forEach(chain => { 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 }) - bals.push(...(await api.multiCall({ abi: ABI.underlyingBalance, calls: izumiVaults }))) + const bals = await api.multiCall({ abi: ABI.underlyingBalance, calls: [...vaults, ...izumiVaults] }) // All non-GHO vaults bals.forEach(({ amount0Current, amount1Current }, i) => { @@ -104,8 +96,7 @@ Object.keys(config).forEach(chain => { }) // ===== GHO Vaults Only ===== - let ghoToken0s = await api.multiCall({ abi: "address:token0", calls: ghoVaults }) - let ghoToken1s = await api.multiCall({ abi: "address:token1", calls: ghoVaults }) + 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); From 5fca837fb8af73a29b073c9896bd2d1d8e934eb3 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Fri, 2 Feb 2024 17:48:24 +0400 Subject: [PATCH 0167/2004] Zeta (#8840) * add VLX token for BSC * manta integration * update --------- Co-authored-by: Evgeny Rozanov --- projects/accumulated-finance/index.js | 105 ++++++++++++++++++++------ 1 file changed, 83 insertions(+), 22 deletions(-) diff --git a/projects/accumulated-finance/index.js b/projects/accumulated-finance/index.js index e2155607192..e99c169da8e 100644 --- a/projects/accumulated-finance/index.js +++ b/projects/accumulated-finance/index.js @@ -1,24 +1,80 @@ const ADDRESSES = require('../helper/coreAssets.json') + const config = { - "ethereum": { - "baseToken": "0xdf4ef6ee483953fe3b84abd08c6a060445c01170", - "LST": "0x7AC168c81F4F3820Fa3F22603ce5864D6aB3C547" - }, - "arbitrum": { - "baseToken": "0xdf4ef6ee483953fe3b84abd08c6a060445c01170", - "LST": "0x7AC168c81F4F3820Fa3F22603ce5864D6aB3C547" + "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": "0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547" + } + } + ], + "zeta": [ + { + "zeta": { + "baseToken": '0xf091867ec603a6628ed83d274e835539d82e9cc8', + "LST": '0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547' + } }, - "velas": { - "LST": "0x3557371afed82dd683de278924bd0e1a790a3c49" + { + "bsc": { + "baseToken": "0xf091867ec603a6628ed83d274e835539d82e9cc8", + "LST": "0xcf123d8638266629fb02fc415ad47bd47de01a6b" + }, }, - "bsc": { - "baseToken": "0x8c543aed163909142695f2d2acd0d55791a9edb9", - "LST": "0xcba2aeEc821b0B119857a9aB39E09b034249681A" + { + "ethereum": { + "baseToken": "0xf091867ec603a6628ed83d274e835539d82e9cc8", + "LST": "0xf38feedb0c85c1e1d6864c7513ac646d28bb0cfc" + } }, - "manta": { - token: '0x95cef13441be50d20ca4558cc0a27b601ac544e5', - "LST": "0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547" - } + ] +} + +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 = { @@ -26,13 +82,18 @@ module.exports = { "We aggregated liquid staking tokens issued by Accumulated Finance", } -Object.keys(config).forEach(chain => { - const { LST, baseToken, token } = config[chain] +const transformedConfig = transformConfig(config); + +Object.entries(transformedConfig).forEach(([chain, configs]) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { - const supply = await api.call({ abi: 'uint256:totalSupply', target: LST }) - api.add(token ?? baseToken ?? ADDRESSES.null, supply, { skipChain: !!baseToken }) - return api.getBalances() + tvl: async (_, _b, _cb, { 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 api.getBalances(); }, } }) \ No newline at end of file From 8db9b3c0341cfa6dd0420e6120e7fd525d90a54c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 2 Feb 2024 16:31:22 +0000 Subject: [PATCH 0168/2004] add hallmark --- projects/detto-finance/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/detto-finance/index.js b/projects/detto-finance/index.js index 24039543a1c..5d993934ad0 100644 --- a/projects/detto-finance/index.js +++ b/projects/detto-finance/index.js @@ -25,6 +25,9 @@ async function staking(_, _1, _2, { api }) { } module.exports = { + hallmarks: [ + [1706745600, "Rug Pull"] + ], base: { tvl, staking, }, From 19175928732724377fe676a2705c7d3accab27fc Mon Sep 17 00:00:00 2001 From: hildobby Date: Fri, 2 Feb 2024 19:26:18 +0100 Subject: [PATCH 0169/2004] fix Cega's TVL (#8844) --- projects/cega/evm.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/cega/evm.js b/projects/cega/evm.js index dee221d9fed..7ac158c6768 100644 --- a/projects/cega/evm.js +++ b/projects/cega/evm.js @@ -13,6 +13,8 @@ const FCN_PURE_OPTIONS_ADDRESSES = [ '0x042021d59731d3fFA908c7c4211177137Ba362Ea', // supercharger '0x56F00A399151EC74cf7bE8DC38225363E84975E6', // go fast '0x784e3C592A6231D92046bd73508B3aAe3A7cc815', // insanic + '0x2aAE28E495626F587677ca779838266DB9bD6Cd1', // puppy + '0x98b872604F36807169c096241ECD4646021de133', // l2 ]; // Funds are lent out 100% @@ -42,7 +44,7 @@ async function getSumFCNProductQueuedDeposits(fcnProducts, api) { function getLOVCalls(lovProducts) { const calls = [] for (const product of lovProducts) - for (let i = 2; i < maxLeverage; i++) + for (let i = 1; i < maxLeverage; i++) calls.push([product, i]) return calls.map(i => ({ params: i })) } From 31eafa3a4a55e937d520956953d9f391a6bd3e9c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Feb 2024 21:02:07 +0100 Subject: [PATCH 0170/2004] Add manta and zeta factories to config --- projects/native/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/native/index.js b/projects/native/index.js index b65f9163d7d..4cf84a80a5a 100644 --- a/projects/native/index.js +++ b/projects/native/index.js @@ -12,6 +12,8 @@ const config = { 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, }, } Object.keys(config).forEach(chain => { From 2ef0484f70dbf2c0dff94023b7a38277bf11c7d8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 2 Feb 2024 21:21:05 +0100 Subject: [PATCH 0171/2004] track zetaearn --- projects/zetaEarn/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/zetaEarn/index.js diff --git a/projects/zetaEarn/index.js b/projects/zetaEarn/index.js new file mode 100644 index 00000000000..0c41e99fb9b --- /dev/null +++ b/projects/zetaEarn/index.js @@ -0,0 +1,6 @@ +async function tvl(_, _b, _cb, { api, }) { + api.addGasToken(await api.call({target: '0x45334a5b0a01ce6c260f2b570ec941c680ea62c0', abi: 'uint256:getTotalPooledZETA'})) + +} + +module.exports = { zeta: { tvl } } \ No newline at end of file From d39500c24a7176092ab5feeaa00c1db546dc648f Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 2 Feb 2024 23:30:23 +0000 Subject: [PATCH 0172/2004] add modeswap --- projects/modeswap/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/modeswap/index.js diff --git a/projects/modeswap/index.js b/projects/modeswap/index.js new file mode 100644 index 00000000000..3a394fd58c2 --- /dev/null +++ b/projects/modeswap/index.js @@ -0,0 +1,7 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + mode: { + tvl: getUniTVL({ factory: "0x50fd14f0eba5a678c1ebc16bdd3794f09362a95c", useDefaultCoreAssets: true, }), + }, +}; \ No newline at end of file From 64bd35c3a5df34da908ddadc67d9a96781c45a3b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 3 Feb 2024 11:53:48 +0100 Subject: [PATCH 0173/2004] Update getUnderlyingBalances() function call to permit failure --- projects/quadrat/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/quadrat/index.js b/projects/quadrat/index.js index bd9978676c6..f9b31d4002c 100644 --- a/projects/quadrat/index.js +++ b/projects/quadrat/index.js @@ -50,7 +50,7 @@ Object.keys(config).forEach(chain => { 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 }), + api.multiCall({ abi: 'function getUnderlyingBalances() view returns (uint256 amount0, uint256 amount1)', calls, permitFailure: true }), ]) bals.forEach((val, i) => { From dcdc553411586653845d6f365b197a5dc065a4c6 Mon Sep 17 00:00:00 2001 From: Francisco Inacio Date: Sat, 3 Feb 2024 04:27:43 -0800 Subject: [PATCH 0174/2004] Fixed methodology description for Neptune Finance * Fixed methodology description for Neptune Finance --- projects/neptune-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/neptune-finance/index.js b/projects/neptune-finance/index.js index 36e9a0831bf..fea8462691a 100644 --- a/projects/neptune-finance/index.js +++ b/projects/neptune-finance/index.js @@ -18,7 +18,7 @@ async function borrowed(_, _1, _2, { api }) { } module.exports = { - methodology: 'Counts the total collateral and borrowed assets managed by Neptune on Injective', + methodology: 'Counts the total collateral and non-borrowed lent assets managed by Neptune on Injective', injective: { tvl, borrowed } From ceeebbe3d1904ef19b10f5827d3a790c8aab3401 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 3 Feb 2024 13:39:54 +0100 Subject: [PATCH 0175/2004] Pike (#8848) * add pike tvl * Refactor TVL calculation using sumTokensExport --------- Co-authored-by: Frank Yin --- projects/pike/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/pike/index.js diff --git a/projects/pike/index.js b/projects/pike/index.js new file mode 100644 index 00000000000..12deedc9893 --- /dev/null +++ b/projects/pike/index.js @@ -0,0 +1,27 @@ +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'] + ]} +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: sumTokensExport(config[chain]) + } +}) \ No newline at end of file From 986da2feec7953c7d4e033f28ad90e1c02dd7a6c Mon Sep 17 00:00:00 2001 From: Real Shaman <85087525+realdealshaman@users.noreply.github.com> Date: Sat, 3 Feb 2024 16:25:17 +0000 Subject: [PATCH 0176/2004] Update pull_request_template.md update oracle section for clarity --- pull_request_template.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pull_request_template.md b/pull_request_template.md index 4f4ead273d1..d421a39413c 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -51,8 +51,9 @@ ##### Category (full list at https://defillama.com/categories) *Please choose only one: -##### Oracle used (Chainlink/Band/API3/TWAP or any other that you are using): - +##### Oracle Provider(s): Specify the oracle(s) used (e.g., Chainlink, Band, API3, TWAP, etc.): +##### Implementation Details: Briefly describe how the oracle is integrated into your project: +##### Documentation/Proof: Provide links to documentation or any other resources that verify the oracle's usage: ##### forkedFrom (Does your project originate from another project): @@ -60,4 +61,4 @@ ##### methodology (what is being counted as tvl, how is tvl being calculated): -##### Github org/user (Optional, if your code is open source, we can track activity): \ No newline at end of file +##### Github org/user (Optional, if your code is open source, we can track activity): From 9ed28284f645e49da5f8260bbfa817b1e61d76e4 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Mon, 5 Feb 2024 00:25:53 +0000 Subject: [PATCH 0177/2004] add more cex wallets --- projects/bitmark/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/bitmark/index.js b/projects/bitmark/index.js index 8b6f6187251..f46a34ad25c 100644 --- a/projects/bitmark/index.js +++ b/projects/bitmark/index.js @@ -4,7 +4,8 @@ const { cexExports } = require('../helper/cex') const owners = ['0x328130164d0f2b9d7a52edc73b3632e713ff0ec6', '0xeacb50a28630a4c44a884158ee85cbc10d2b3f10', '0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182', -'0x7563758243a262e96880f178aee7817dcf47ab0f'] +'0x7563758243a262e96880f178aee7817dcf47ab0f', +'0x6D0D19bddDC5ED1dD501430c9621DD37ebd9062d'] const config = { ethereum: { owners @@ -12,6 +13,9 @@ const config = { bsc: { owners }, + solana: { + owners: ['CgANddXc7FKSsdLSdFv67X8faZqQaRTeLMXkAVANkZD4'] + }, } module.exports = cexExports(config) From 696d3b8a9fe56d4eb9e7d93249052a06f4dd9d61 Mon Sep 17 00:00:00 2001 From: Thomas Wostyn Date: Mon, 5 Feb 2024 22:10:12 +1100 Subject: [PATCH 0178/2004] Update Stride Terra chain name (#8856) Fix the chain name. TVL is actually for terra2 --- projects/stride/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/stride/index.js b/projects/stride/index.js index 14ba9224b38..2647a75f096 100644 --- a/projects/stride/index.js +++ b/projects/stride/index.js @@ -26,7 +26,7 @@ const chains = { coinGeckoId: "osmosis", }, - terra: { + terra2: { chainId: "phoenix-1", denom: "uluna", coinGeckoId: "terra-luna-2", From 6f9105cc7f9024a81cea30d9b1dedc6b2fbaf592 Mon Sep 17 00:00:00 2001 From: Omnipool <153531720+OmnipoolApp@users.noreply.github.com> Date: Mon, 5 Feb 2024 18:14:08 +0700 Subject: [PATCH 0179/2004] add omnipool (#8849) * add omnipool * Refactor TVL calculation in Omnipool index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/omnipool/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/omnipool/index.js diff --git a/projects/omnipool/index.js b/projects/omnipool/index.js new file mode 100644 index 00000000000..554f89b101d --- /dev/null +++ b/projects/omnipool/index.js @@ -0,0 +1,8 @@ +async function tvl(_, _1, _2, { api }) { + const pooledZeta = await api.call({ target: "0x82bbc3f521E5313cf5e8401797d7BaB6c030C908", abi: "uint256:getTotalPooledZeta" }) + api.addGasToken(pooledZeta) +} + +module.exports = { + zeta: { tvl } +} \ No newline at end of file From dfa538b40f3e873c30b84c6f6679ea649d6a69a5 Mon Sep 17 00:00:00 2001 From: Aleksey Makarkin Date: Mon, 5 Feb 2024 14:16:13 +0300 Subject: [PATCH 0180/2004] Update locus.finance adapter (#8850) New addresses for staking vaults --- projects/locus/index.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/projects/locus/index.js b/projects/locus/index.js index d00ef6dca74..6bf17256a23 100644 --- a/projects/locus/index.js +++ b/projects/locus/index.js @@ -14,18 +14,14 @@ module.exports = { const config = { ethereum: { lvTokens: { - // lvETH: "0x0e86f93145d097090acbbb8ee44c716dacff04d7", - // lvDCI: "0x65b08FFA1C0E1679228936c0c85180871789E1d7", - // lvETH_v1: "0x3edbE670D03C4A71367dedA78E73EA4f8d68F2E4", - // lvDCI_v1: "0xf62A24EbE766d0dA04C9e2aeeCd5E86Fac049B7B", - + xETH: "0x0CD5cda0E120F7E22516f074284e5416949882C2", + xDEFI: "0xB0a66dD3B92293E5DC946B47922C6Ca9De464649", } }, arbitrum: { lvTokens: { - // lvAYI: "0x0f094f6deb056af1fa1299168188fd8c78542a07", - // lvAYI_v1: "0xBE55f53aD3B48B3ca785299f763d39e8a12B1f98", - // lyUSD: "0x6c090e79a9399c0003a310e219b2d5ed4e6b0428", + xARB: "0xF8F045583580C4Ba954CD911a8b161FafD89A9EF", + xUSD: "0x2a889E9ef10c7Bd607473Aadc8c806c4511EB26f", }, } } @@ -37,4 +33,4 @@ Object.keys(config).forEach(chain => { } }) -module.exports.arbitrum.staking = staking(stLocus, Locus_Token) \ No newline at end of file +module.exports.arbitrum.staking = staking(stLocus, Locus_Token) From 20f52303b3acc098b5e7189b090cfe59945f8f5a Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Mon, 5 Feb 2024 18:18:47 +0700 Subject: [PATCH 0181/2004] add DackieSwap Optimism (#8851) * add DackieSwap Optimism * update v3 Factory DackieSwap Optimism --------- Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 17 +++++++++++++++-- projects/dackieswap/index.js | 3 ++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index 15ce758297b..34a1dc73810 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -1,6 +1,19 @@ -const { getUniTVL, } = require('../helper/unknownTokens') +const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { misrepresentedTokens: true, - base: { tvl: getUniTVL({ factory: '0x591f122D1df761E616c13d265006fcbf4c6d6551', useDefaultCoreAssets: true, fetchBalances: true }) } + base: { + tvl: getUniTVL({ + factory: "0x591f122D1df761E616c13d265006fcbf4c6d6551", + useDefaultCoreAssets: true, + fetchBalances: true + }) + }, + optimism: { + tvl: getUniTVL({ + factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", + useDefaultCoreAssets: true, + fetchBalances: true + }) + } }; \ No newline at end of file diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index b6505ee57ad..271d718de1d 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -1,5 +1,6 @@ const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ - base: { factory: "0x3D237AC6D2f425D2E890Cc99198818cc1FA48870", fromBlock: 2031627, }, + base: { factory: "0x3D237AC6D2f425D2E890Cc99198818cc1FA48870", fromBlock: 2031627 }, + optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 } }); \ No newline at end of file From c9c0e7adb172a752f21ac827aa967d96f47544c0 Mon Sep 17 00:00:00 2001 From: Ernest <33957800+ErnestMironov@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:23:03 +0300 Subject: [PATCH 0182/2004] Update TVL methodology (#8853) * Add Arbitrum support for TVL calculation * Add ZOO token balance calculation to TVL calculation * code refactor * Update TVL methodology and token names --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zoodao/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index b2e640825ab..5abd1dfb9c6 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -39,10 +39,10 @@ async function tvlArbitrum(_, _1, _2, { api }) { } module.exports = { - methodology: "Counts the supplied value of FRAX and ZOO through ZooDAO's contracts", + methodology: "TVL: Counts the supplied value of mGLP and staked ZOO-ETH LP.", moonbeam: { tvl, - staking: sumTokensExport({ owners: stakingContracts, tokens: [ ZOODAO_TOKEN] }), + staking: sumTokensExport({ owners: stakingContracts, tokens: [ZOODAO_TOKEN] }), }, arbitrum: { tvl: tvlArbitrum, From e780c44f77888234e8ee33af5b32335c1c38545b Mon Sep 17 00:00:00 2001 From: baklavaspace <93024988+baklavaspace@users.noreply.github.com> Date: Mon, 5 Feb 2024 19:23:50 +0800 Subject: [PATCH 0183/2004] Enter new BSC vaults and update BASE vault (#8854) * Added Base AerodromeVault * Update index.js Update address for base, and added addresses for bsc. Added function to get bsc tvl --- projects/baklava-space/index.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/projects/baklava-space/index.js b/projects/baklava-space/index.js index 866daf7055b..8446eff2244 100644 --- a/projects/baklava-space/index.js +++ b/projects/baklava-space/index.js @@ -36,8 +36,13 @@ const config = { base: [ '0x37f716f6693EB2681879642e38BbD9e922A53CDf', '0x49AF8CAf88CFc8394FcF08Cf997f69Cee2105f2b', - '0x83B2D994A1d16E6A3A44281D12542E2bc0d5EBFD' - ] + '0x83B2D994A1d16E6A3A44281D12542E2bc0d5EBFD', + '0xea505C49B43CD0F9Ed3b40D77CAF1e32b0097328' + ], + bsc: [ + '0x6659B42C106222a50EE555F76BaD09b68EC056f9', + '0x81Ea18C7c54217C523F2C072C72D732869c4d661' + ] } const bavaStakingRewards = "0x2F445C4cC8E114893279fa515C291A3d02160b02" @@ -48,7 +53,8 @@ module.exports = { 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 } + base: { tvl: baseTvl }, + bsc: { tvl: bscTvl } }; async function fxTvl(_, _1, _2, { api }) { @@ -67,6 +73,14 @@ async function baseTvl(_, _1, _2, { api }) { return sumTokens2({ api, resolveLP: true, }) } +async function bscTvl(_, _1, _2, { 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 (_, _b, _cb, { api, }) => { From 911862d1f8543cf79eee3b46792b150ab0b0a792 Mon Sep 17 00:00:00 2001 From: 0xBluePingu <156801910+0xBluePingu@users.noreply.github.com> Date: Mon, 5 Feb 2024 12:27:22 +0100 Subject: [PATCH 0184/2004] add pingu (#8857) Co-authored-by: 0xBluePingu <0xBluePingu@pingu.exchange> --- projects/pingu/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/pingu/index.js diff --git a/projects/pingu/index.js b/projects/pingu/index.js new file mode 100644 index 00000000000..1b2c836ee04 --- /dev/null +++ b/projects/pingu/index.js @@ -0,0 +1,12 @@ +const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') + +const fundStore = "0x7Cc41ee3Cba9a1D2C978c37A18A0d6b59c340224"; // FundStore +const PINGU = "0x4615fa30fFA5716984d4372030ce28D99fCB702f"; // PINGU +const assets = [nullAddress, "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] // ETH, USDC + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ owners: [fundStore], tokens: assets}), + staking: sumTokensExport({ owners: [fundStore], tokens: [PINGU]}), + }, +} From ac937d323a0fc1e935a8c085e30357e8649fb729 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 5 Feb 2024 16:40:38 +0100 Subject: [PATCH 0185/2004] Add 'zeta' contract to iziswap liquidityManager contracts --- projects/izumi-iziswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 3bccec39041..0924d77847e 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -28,6 +28,7 @@ const poolHelpers = { 'scroll': ['0x1502d025BfA624469892289D45C0352997251728'], 'base': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], 'zkfair': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], + 'zeta': ['0x2db0AFD0045F3518c77eC6591a542e326Befd3D7'], } // iziswap liquidityManager contracts const blacklistedTokens = [ From 7e85bd8604ae14ea5ea6e011c31f88a4fd44c13e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Mon, 5 Feb 2024 23:50:40 +0100 Subject: [PATCH 0186/2004] Update Nostra's hallmarks (#8864) --- projects/nostra-pools/index.js | 3 +++ projects/nostra/index.js | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/nostra-pools/index.js b/projects/nostra-pools/index.js index 15037064f27..2846ee38042 100644 --- a/projects/nostra-pools/index.js +++ b/projects/nostra-pools/index.js @@ -51,4 +51,7 @@ module.exports = { starknet: { tvl, }, + hallmarks: [ + [1706106000, "Nostra Pools launch"], + ] }; diff --git a/projects/nostra/index.js b/projects/nostra/index.js index 26de9b596f9..369410e6ad2 100644 --- a/projects/nostra/index.js +++ b/projects/nostra/index.js @@ -82,7 +82,6 @@ module.exports = { borrowed, }, hallmarks: [ - [1697634000, "Nostra Mainnet launch"], - [1701863400, "Nostra Points launch"] + [1697634000, "Nostra Money Market launch"] ] }; From e0f72894ecaec3096e812548156f8bbd0ab614e6 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Mon, 5 Feb 2024 22:51:00 +0000 Subject: [PATCH 0187/2004] symbiosis adds MODE chain support (#8861) --- projects/symbiosis-finance/config.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index a2d713b67a4..2feba50aa51 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -249,5 +249,14 @@ module.exports = { '0xd8db4fb1fEf63045A443202d506Bcf30ef404160', // portal v2 ] }, + { + name: 'mode', + tokens: [ + ADDRESSES.mode.WETH, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From 258b2dfd660f7cf9cd0197a55af2a3057ef65746 Mon Sep 17 00:00:00 2001 From: Rafael Ugolini Date: Mon, 5 Feb 2024 23:52:12 +0100 Subject: [PATCH 0188/2004] feat: add prime staked (#8862) --- projects/prime-staked/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/prime-staked/index.js diff --git a/projects/prime-staked/index.js b/projects/prime-staked/index.js new file mode 100644 index 00000000000..d8bd3c3a705 --- /dev/null +++ b/projects/prime-staked/index.js @@ -0,0 +1,18 @@ +const DEPOSIT_POOL = "0xa479582c8b64533102f6f528774c536e354b8d32"; + +async function tvl(_, _1, _2, { 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 = { + methodology: + "Returns the total assets owned by primeETH", + start: 19128047, + ethereum: { + tvl, + }, +}; From 941d9e02b964d4e54bd8acb92a6a25a989f3464f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 6 Feb 2024 01:06:47 +0000 Subject: [PATCH 0189/2004] remove buggy chain --- projects/pnetwork.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/pnetwork.js b/projects/pnetwork.js index f65b3a85046..6d035f78357 100644 --- a/projects/pnetwork.js +++ b/projects/pnetwork.js @@ -45,7 +45,7 @@ const chainMapping = { 'binance-smart-chain': 'bsc', eosio: 'eos', ethereum: 'ethereum', - libre: 'lbry', + //libre: 'lbry', polygon: 'polygon', telos: 'telos', ultra: 'ultra', From 8d9997f206ac54c66fcd81ca9149f337967a4fe0 Mon Sep 17 00:00:00 2001 From: KatanaSwapDex Date: Tue, 6 Feb 2024 09:40:05 +0700 Subject: [PATCH 0190/2004] katanaswap --- projects/katanaswap/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/katanaswap/index.js diff --git a/projects/katanaswap/index.js b/projects/katanaswap/index.js new file mode 100644 index 00000000000..6ed787cc02a --- /dev/null +++ b/projects/katanaswap/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + zeta: { + tvl: getUniTVL({ + factory: "0xc6ef2008a5a717329648420F429dA53d3351cF5E", + useDefaultCoreAssets: true, + }), + }, +}; From 82637bb08d85a23e6d947639fe940ffcdf7025b2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Feb 2024 14:27:50 +0100 Subject: [PATCH 0191/2004] Anzen (#8874) * add Anzen TVL * Refactor TVL and add borrowed function --------- Co-authored-by: Ben Shyong --- projects/anzen/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/anzen/index.js diff --git a/projects/anzen/index.js b/projects/anzen/index.js new file mode 100644 index 00000000000..0af540521cd --- /dev/null +++ b/projects/anzen/index.js @@ -0,0 +1,24 @@ +const tokens = [ + '0xEf5AAcB3c38a5Be7785a361008e27fb0328a62B5', // secured private credit token + // '0xE16f2eC94E8a0819EB93022c45E05D582f4E5c15', // private credit token +]; + +async function tvl(_, _1, _2, { api }) { + const uTokens = await api.multiCall({ abi: 'address:usdc', calls: tokens }) + return api.sumTokens({ tokensAndOwners2: [uTokens, tokens,] }) +} +async function borrowed(_, _1, _2, { api }) { + const uTokens = await api.multiCall({ abi: 'address:usdc', calls: tokens }) + const bals = (await api.multiCall({ abi: 'uint256:totalPooledUSD', calls: tokens })).map(i => i / 1e12) + const inContracts = (await api.multiCall({ abi: 'address:reserveUSD', calls: tokens })).map(i => i * -1) + api.add(uTokens, bals) + api.add(uTokens, inContracts) + return api.getBalances() +} + +module.exports = { + methodology: "Sums the locked collateral amounts and depositor token balances.", + ethereum: { + tvl, borrowed, + }, +}; From 39f730d65384642d71a6999155c72bc19f2c7bfd Mon Sep 17 00:00:00 2001 From: bluewhale-saito <126760033+bluewhale-saito@users.noreply.github.com> Date: Tue, 6 Feb 2024 22:50:16 +0900 Subject: [PATCH 0192/2004] init Klaytn Bluewhale (#8855) * init Klaytn Bluewhale * Refactor Bluewhale contract and update token addresses --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bluewhale/index.js | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 projects/bluewhale/index.js diff --git a/projects/bluewhale/index.js b/projects/bluewhale/index.js new file mode 100644 index 00000000000..bba63346fea --- /dev/null +++ b/projects/bluewhale/index.js @@ -0,0 +1,55 @@ +const { staking } = require('../helper/staking') +const { getUniTVL } = require('../helper/unknownTokens'); +const { sumTokensExport } = require('../helper/sumTokens'); + +const AQUA_FACTORY = '0x77716798B9E470439D02C27107632FbFd10aF345'; +const CLAM_MASTERCHEF = '0x19562EF0c60837e71eb78b66786D7070bB3675a0'; +const PEARL_MASTERCHEF = '0x952F202B5E58058DEb468cd30d081922C36bf29a'; +const KRILL_MASTERCHEF = '0x68e83E5300594E664701Aa38A1d80F9524cA82D8'; + +const tokens = { + "sBWPM": "0xf4546e1d3ad590a3c6d178d671b3bc0e8a81e27d", + "KRILL": "0x83bc9fe9eebfeb1ad4178ac5e7445dc6a7e95718", + "PEARL": "0xb3b1b54e3b9a27cee606f1018760abec4274bd35", + "CLAM": "0xba9725eaccf07044625f1d232ef682216f5371c2", + "sADOL": "0x4f3ac44bb2345d3960e34dd5dfe275249e43ae4a" +} + +const LPs = { + ksp: { + sbwpm_ousdt: "0xb6eaa073881c9cac7141ef20b25a588914a367b2", + clam_ousdc: "0x87882c1a76fad9ae5bf5ba1bedd7d82be73430c8", + // clam_oxrp_v3: "0x7c9a31020b32a528367602468688f16d7b469337", + // clam_klay_v3: "0xbdb8ddf58ff70bfa1b1a2e2ab9751bc5fcdfefab", + // clam_ksp_v3: "0xb36df541218dd2ee26f54c2775c528c27e484ef6", + // clam_owbtc_v3: "0xf0e21e240a291258db0417c6ac1a3fe156073a96", + // clam_oeth_v3: "0xcae4254611097112b9cbe62e0d047a2957843c09", + // clam_pearl_v3: "0xfc37f916418d50adf4177d734463f822f73ebd99", + // clam_ousdt_v3: "0x633fd7084e9b2c098b88e90a2fcb582af5d9b0e1", + // pearl_oxrp_v3: "0x006965e875b108cf53cba9aa3759b700af464329", + // pearl_owbtc_v3: "0xad55cf6024a21c650569d3b28a8679e613e43348", + // pearl_oeth_v3: "0x388a8973b477924cc15f46d17967e10334fbbaca", + }, + pala: { + sbwpm_ousdt: "0xd90f637a7a1362028f8ad77eba9655c7b92bb919", + clam_ousdc: "0xbb6c0a0dd21bb3b880228c7736a7301f48b8200e", + clam_sbwpm: "0x5c8aadcbf79a861bf8f7ec69eb2bf6fe15b75e2e", + }, + aqua: { + sadol_clam: "0x144a347dabd17ffdb93f3a09a64a96743b273d67", + clam_ousdt: "0x8c9e758d5f448f2669f45bfec7749bc372996c2e", + }, + devteam: "0x8d4d436b6665e41a9caf4057c3f924d945a2aa8e", +} + +const pool2Tokens = Object.values(LPs.ksp).concat(Object.values(LPs.pala)) + +module.exports = { + misrepresentedTokens: true, + methodology: `counts the number of tokens in the Bluewhale contract. `, + klaytn: { + tvl: getUniTVL({ factory: AQUA_FACTORY, useDefaultCoreAssets: true }), + staking: staking([PEARL_MASTERCHEF, CLAM_MASTERCHEF, KRILL_MASTERCHEF], [tokens.PEARL, tokens.CLAM, tokens.sBWPM]), + pool2: sumTokensExport({ owner: CLAM_MASTERCHEF, tokens: pool2Tokens, resolveLP: true, }), + }, +}; \ No newline at end of file From 09a9e68ecf5910763b262cfd265f1190b12bf67c Mon Sep 17 00:00:00 2001 From: UjjwalGupta49 Date: Tue, 6 Feb 2024 19:23:15 +0530 Subject: [PATCH 0193/2004] Add Flash.Trade (#8870) * added SDK adapter for Flash Trade's TVL * updated methodology * added flash-trade.js * try again for llamatester * added folder /projects/flashtrade * added tvl key * rearrange tvl * export tvl check * solana: tvl * Update import path for sumTokens2 function --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/flashtrade/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/flashtrade/index.js diff --git a/projects/flashtrade/index.js b/projects/flashtrade/index.js new file mode 100644 index 00000000000..231d73967d3 --- /dev/null +++ b/projects/flashtrade/index.js @@ -0,0 +1,22 @@ +const { sumTokens2 } = require("../helper/solana"); + +async function tvl() { + const vaults = [ + "Hhed3wTHoVoPpnuBntGf236UfowMMAXfxqTLkMyJJENe", // SOL + "BC5xAUpEbfeSWi5fJdvhFQhM3eMbTok2c7SY62daB3da", // USDC + "FuFoCkfnrDjNmwPr54JEAYTUshXA4gQojevfvv3KXdx7", // ETH + "55UmrYacpb8v7gbKswDofmWjLS8TSP3VB8NKjNfxu11d", // BTC + "7b2jY9CeCWCnyKBvaLSnsV7qwUhbJGsJTPdyCsspPY7Q", // Virtual Pool - USDC + ]; + + return sumTokens2({ tokenAccounts: vaults }); +} + +module.exports = { + timetravel: false, + methodology: + "tvl is the usd equivalent value of all the assets in our pools.", + solana: { + tvl + }, +}; From a6b4f791754b24961020ca68a341fbfc66b74347 Mon Sep 17 00:00:00 2001 From: Ian Flexa <85500650+ianflexa@users.noreply.github.com> Date: Tue, 6 Feb 2024 09:55:59 -0400 Subject: [PATCH 0194/2004] add isolated markets manta (#8859) * list upgraded contracts: keom zkevm * add isolated markets --------- Co-authored-by: dlock --- projects/keom/index.js | 54 +++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/projects/keom/index.js b/projects/keom/index.js index 0d837f6a753..ebdf36da631 100644 --- a/projects/keom/index.js +++ b/projects/keom/index.js @@ -1,21 +1,37 @@ -const { compoundExports2 } = require('../helper/compound') +const { compoundExports2 } = require("../helper/compound"); +const { mergeExports } = require("../helper/utils"); -const addresses = { - polygon: { - comptroller: '0x5B7136CFFd40Eee5B882678a5D02AA25A48d669F', - cether: '0x7854D4Cfa7d0B877E399bcbDFfb49536d7A14fc7', - }, - manta: { - comptroller: '0x91e9e99AC7C39d5c057F83ef44136dFB1e7adD7d', - cether: '0x8903Dc1f4736D2FcB90C1497AebBABA133DaAC76', - }, - polygon_zkevm: { - comptroller: "0x6EA32f626e3A5c41547235ebBdf861526e11f482", - cether: "0xee1727f5074e747716637e1776b7f7c7133f16b1" - } -} -module.exports = { - polygon: compoundExports2({ ...addresses.polygon, }), - manta: compoundExports2({ ...addresses.manta, }), - polygon_zkevm: compoundExports2({ ...addresses.polygon_zkevm, }), +const config = { + polygon_zkevm: [ + { + comptroller: "0x6EA32f626e3A5c41547235ebBdf861526e11f482", + cether: "0xee1727f5074e747716637e1776b7f7c7133f16b1", + }, + ], + polygon: [ + { + comptroller: "0x5B7136CFFd40Eee5B882678a5D02AA25A48d669F", + cether: "0x7854D4Cfa7d0B877E399bcbDFfb49536d7A14fc7", + }, + ], + manta: [ + { + comptroller: "0x91e9e99AC7C39d5c057F83ef44136dFB1e7adD7d", + cether: "0x8903Dc1f4736D2FcB90C1497AebBABA133DaAC76", + }, + { + comptroller: "0xBAc1e5A0B14490Dd0b32fE769eb5637183D8655d", + cether: "0xd773ffa79258F2D7458F1B74d075F4524Ee3CCa0", + }, + ], }; + +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 From f4ab5b217586cc866331319302c13b902fafacbf Mon Sep 17 00:00:00 2001 From: 0x0sub <73170332+0x0sub@users.noreply.github.com> Date: Tue, 6 Feb 2024 08:57:34 -0500 Subject: [PATCH 0195/2004] update merit circle dao wallet address (#8863) --- projects/treasury/merit-circle.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/projects/treasury/merit-circle.js b/projects/treasury/merit-circle.js index 578222af65d..7aee4758db8 100644 --- a/projects/treasury/merit-circle.js +++ b/projects/treasury/merit-circle.js @@ -4,8 +4,16 @@ const { treasuryExports } = require("../helper/treasury"); module.exports = treasuryExports({ ethereum: { owners: [ - '0x7e9e4c0876B2102F33A1d82117Cc73B7FddD0032', '0x73F7261cF493105202F8dcbB11C126a65703dA55', '0xC4218226A5406Aa721EAEBc2D9dA9564AEdd7777', - '0xc040340bDD2F40374e9751Db0342D0AC668ef7C8', '0x3cB580c041Cce953adfc2148e5BE6c1c893CCa9E' + '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'], }, @@ -14,5 +22,5 @@ module.exports = treasuryExports({ '0xf92Bc9ee240B82A888c398e6965A7edcBF9399CF', '0xC4218226A5406Aa721EAEBc2D9dA9564AEdd7777' ], ownTokens: ['0x949D48EcA67b17269629c7194F4b727d4Ef9E5d6', '0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce'], -}, -}) \ No newline at end of file + }, +}) From d12c704cd0e8730012e54c0a01b07485c2a43880 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Feb 2024 15:05:52 +0100 Subject: [PATCH 0196/2004] Avantis (#8875) * add avantis * add avantis tvl * Refactor TVL calculation in AvantisFi index.js --------- Co-authored-by: skords --- projects/avantisfi/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/avantisfi/index.js diff --git a/projects/avantisfi/index.js b/projects/avantisfi/index.js new file mode 100644 index 00000000000..6dac805bfc3 --- /dev/null +++ b/projects/avantisfi/index.js @@ -0,0 +1,14 @@ +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 From d4b44ea4263c717263de3c9af833de5acffe544d Mon Sep 17 00:00:00 2001 From: Patrick Roy <126775449+patrickroyme@users.noreply.github.com> Date: Tue, 6 Feb 2024 17:10:02 +0300 Subject: [PATCH 0197/2004] Add Kinetix Perps (Derivatives) V2 (#8868) --- projects/kinetix-derivatives-v2/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/kinetix-derivatives-v2/index.js diff --git a/projects/kinetix-derivatives-v2/index.js b/projects/kinetix-derivatives-v2/index.js new file mode 100644 index 00000000000..3759cc62281 --- /dev/null +++ b/projects/kinetix-derivatives-v2/index.js @@ -0,0 +1,15 @@ +const ADDRESSES = require("../helper/coreAssets.json"); + +const { nullAddress } = require("../helper/unwrapLPs"); + +async function KavaTvl(_time, _ethBlock, _cb, { api }) { + const tokens = [nullAddress, ADDRESSES.kava.USDC]; + const owners = ["0x3d520d1979beC1E2f68B20fEcdf06AC8b543B435"]; + return api.sumTokens({ owners, tokens }); +} + +module.exports = { + kava: { + tvl: KavaTvl, + }, +}; From 71edb76f0796e80364053dfd0c888e352bdafc90 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 6 Feb 2024 22:10:40 +0800 Subject: [PATCH 0198/2004] add new glm vault in TVL calculation (#8871) --- projects/vaultka/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index 8158ba163ec..a347fdb34c1 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -47,6 +47,7 @@ module.exports = { gmArb: "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", // arb/usdc.e gmBtc: "0x47c031236e19d024b42f8AE6780E44A573170703", // btc/usdc.e gmUsdc: "0x9C2433dFD71096C435Be9465220BB2B189375eA7", // usdc/usdc.e + gmLink: "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", VLP: "0xc5b2d9fda8a82e8dcecd5e9e6e99b78a9188eb05", gDAI: "0xd85e038593d7a098614721eae955ec2022b9b91b", rum: "0x739fe1BE8CbBeaeA96fEA55c4052Cd87796c0a89", @@ -64,6 +65,7 @@ module.exports = { alpStaking: "0x85146C0c5968d9640121eebd13030c99298f87b3", alpAddresses: "0xBc76B3FD0D18C7496C0B04aeA0Fe7C3Ed0e4d9C9", vodkaV2DN_LINK_Water: "0xFF614Dd6fC857e4daDa196d75DaC51D522a2ccf7", + glmVault: "0xB455f2ab7905785e90ED09fF542290a722b3FBb5", }; await api.sumTokens({ @@ -95,6 +97,10 @@ module.exports = { [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], ], }); From 176b8649f30fff53df5d5e8ced6f311c5382e580 Mon Sep 17 00:00:00 2001 From: sgmntp <146187995+sgmntp@users.noreply.github.com> Date: Tue, 6 Feb 2024 15:12:01 +0100 Subject: [PATCH 0199/2004] add (Project) Segment Finance (#8872) * add (Project) Segment Finance * add (Segment Finance) cEther address * change (Segment Finance) seBNB address --- projects/segment-finance/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/segment-finance/index.js diff --git a/projects/segment-finance/index.js b/projects/segment-finance/index.js new file mode 100644 index 00000000000..f5b2d32a45f --- /dev/null +++ b/projects/segment-finance/index.js @@ -0,0 +1,19 @@ +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", + bsc: { + ...compoundExports2({ + comptroller: "0x57E09c96DAEE58B77dc771B017de015C38060173", + cether: "0x5fcea94b96858048433359bb5278a402363328c3", + }), + staking: staking( + [ + "0xC6BcBe182b0F85dBfF6b49DC81CecEe02A16fE57", + ], + "0x5de40c1152c990492eaeaeecc4ecaab788bbc4fd", + "bsc", + ), + }, +}; From 2f7368979302b199890aac4577938ee813688c09 Mon Sep 17 00:00:00 2001 From: Reppelin Tom <75627352+tomrpl@users.noreply.github.com> Date: Tue, 6 Feb 2024 15:34:50 +0100 Subject: [PATCH 0200/2004] feat(morpho-blue): adding more addresses (#8873) --- projects/morpho-blue/addresses.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/projects/morpho-blue/addresses.js b/projects/morpho-blue/addresses.js index e82994f8bb7..34e00ff82a8 100644 --- a/projects/morpho-blue/addresses.js +++ b/projects/morpho-blue/addresses.js @@ -1,12 +1,24 @@ -const wethWstethChainlinkAdaptiveCurveIRM945 = +const wstethWethChainlinkAdaptiveCurveIRM945 = "0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec41"; -const usdcWstethChainlinkAdaptiveCurveIRM860 = +const wstethUsdcChainlinkAdaptiveCurveIRM860 = "0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc"; +const weethWethChainlinkAdaptiveCurveIRM860 = + "0x698fe98247a40c5771537b5786b2f3f9d78eb487b4ce4d75533cd0e94d88a115"; +const wbib01UsdcChainlinkAdaptiveCurveIRM965 = + "0x495130878b7d2f1391e21589a8bcaef22cbc7e1fbbd6866127193b3cc239d8b1"; +const osethWethChainlinkAdaptiveCurveIRM860 = + "0xd5211d0e3f4a30d5c98653d988585792bb7812221f04801be73a44ceecb11e89"; +const idleWETH = + "0x58e212060645d18eab6d9b2af3d56fbc906a92ff5667385f616f662c70372284"; module.exports = { morphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", whitelistedIds: [ - wethWstethChainlinkAdaptiveCurveIRM945, - usdcWstethChainlinkAdaptiveCurveIRM860, + wstethWethChainlinkAdaptiveCurveIRM945, + wstethUsdcChainlinkAdaptiveCurveIRM860, + weethWethChainlinkAdaptiveCurveIRM860, + wbib01UsdcChainlinkAdaptiveCurveIRM965, + osethWethChainlinkAdaptiveCurveIRM860, + idleWETH, ], }; From 948559871653a3c4b9f90b292a364876794e7c4b Mon Sep 17 00:00:00 2001 From: haochizzle <36713098+haochizzle@users.noreply.github.com> Date: Tue, 6 Feb 2024 15:00:29 -0700 Subject: [PATCH 0201/2004] add sygma (#8880) * add PHA and tvl on sygma erc20 bridge handler * Refactor TVL calculation in Sygma index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sygma/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/sygma/index.js diff --git a/projects/sygma/index.js b/projects/sygma/index.js new file mode 100644 index 00000000000..e46ae73957f --- /dev/null +++ b/projects/sygma/index.js @@ -0,0 +1,10 @@ +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 From 9f9e5ee9d7647b2350adcf03570c2f2cb992017c Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Wed, 7 Feb 2024 05:06:18 +0700 Subject: [PATCH 0202/2004] update staking dackie (#8878) Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index 34a1dc73810..a92962d1352 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -1,4 +1,12 @@ const { getUniTVL } = require("../helper/unknownTokens"); +const { stakings } = require("../helper/staking"); + +const DACKIE = "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B"; + +const stakingPools = [ + // Lock & flexible pool + "0x4Ad387bcb03B92a6e22A72391Cc37493Fc388B05", +]; module.exports = { misrepresentedTokens: true, @@ -7,7 +15,8 @@ module.exports = { factory: "0x591f122D1df761E616c13d265006fcbf4c6d6551", useDefaultCoreAssets: true, fetchBalances: true - }) + }), + staking: stakings(stakingPools, DACKIE) }, optimism: { tvl: getUniTVL({ From b0cef4ef37e7b7304e0d001277a6d1fa0bd5672d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Feb 2024 23:09:43 +0100 Subject: [PATCH 0203/2004] Add support for Arbitrum in Fortunafi-fbill --- projects/fortunafi-fbill/index.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/projects/fortunafi-fbill/index.js b/projects/fortunafi-fbill/index.js index c1c19c55174..137682ff658 100644 --- a/projects/fortunafi-fbill/index.js +++ b/projects/fortunafi-fbill/index.js @@ -1,19 +1,22 @@ const ADDRESSES = require('../helper/coreAssets.json') const contracts = { - canto: { - token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' - } + canto: { + token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' + }, + arbitrum: { + token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' + } } const tvl = async (_, _1, _2, { api }) => { - const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); + const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); - api.add(ADDRESSES.canto.USDC, nav/1e12) + api.add(ADDRESSES[api.chain].USDC, nav / 1e12) } module.exports = { - canto: { - tvl - } + misrepresentedTokens: true, + canto: { tvl }, + arbitrum: { tvl }, }; From 749efa815a67e9f071b826cc571d5dd6d7267069 Mon Sep 17 00:00:00 2001 From: Dzianis Ihnatovich Date: Tue, 6 Feb 2024 23:21:25 +0100 Subject: [PATCH 0204/2004] Update dHEDGE and Toros with Base chain (#8881) --- projects/dhedge.js | 5 +++++ projects/toros/config.js | 4 ++++ projects/toros/index.js | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/projects/dhedge.js b/projects/dhedge.js index e2a48bb880d..c8b9b02e8c9 100644 --- a/projects/dhedge.js +++ b/projects/dhedge.js @@ -7,6 +7,7 @@ const DHEDGE_FACTORY_PROXIES = { polygon: "0xfdc7b8bFe0DD3513Cc669bB8d601Cb83e2F69cB0", optimism: "0x5e61a079A178f0E5784107a4963baAe0c5a680c6", arbitrum: "0xffFb5fB14606EB3a548C113026355020dDF27535", + base: "0x49Afe3abCf66CF09Fab86cb1139D8811C8afe56F", }; /* *** dHEDGE V1 *** */ @@ -92,6 +93,9 @@ module.exports = { arbitrum: { tvl, }, + base: { + tvl, + }, misrepresentedTokens: true, methodology: "Aggregates total value of each dHEDGE vault ever created", hallmarks: [ @@ -100,5 +104,6 @@ module.exports = { [1674003600, "Optimism Incentives Start"], [1679965200, "DHT Staking V2 Release"], [1701468842, "Arbitrum Launch"], + [1706569200, "Base Launch"], ], }; diff --git a/projects/toros/config.js b/projects/toros/config.js index 64f49a3a2ed..346ab94a189 100644 --- a/projects/toros/config.js +++ b/projects/toros/config.js @@ -11,6 +11,10 @@ const CONFIG_DATA = { dhedgeFactory: "0xffFb5fB14606EB3a548C113026355020dDF27535", torosMultisigManager: "0xfbd2b4216f422dc1eee1cff4fb64b726f099def5", }, + base: { + dhedgeFactory: "0x49Afe3abCf66CF09Fab86cb1139D8811C8afe56F", + torosMultisigManager: "0x5619AD05b0253a7e647Bd2E4C01c7f40CEaB0879", + }, }; module.exports = { diff --git a/projects/toros/index.js b/projects/toros/index.js index 01f6d09e488..c3d7def37a6 100644 --- a/projects/toros/index.js +++ b/projects/toros/index.js @@ -40,9 +40,13 @@ module.exports = { arbitrum: { tvl, }, + base: { + tvl, + }, hallmarks: [ [1674003600, "Optimism Incentives Start"], [1699050203, "Leverage Tokens on Optimism Release"], [1701468842, "First Arbitrum Vault Release"], + [1706569200, "First Base Vault Release"], ], }; From 41db5921eae55be76412bc19184c26557ae85ea0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Feb 2024 23:25:26 +0100 Subject: [PATCH 0205/2004] add new stablepool to hydradx --- projects/hydradx/api.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/hydradx/api.js b/projects/hydradx/api.js index a4c7a99c081..35cb3dd8222 100644 --- a/projects/hydradx/api.js +++ b/projects/hydradx/api.js @@ -4,6 +4,7 @@ const sdk = require('@defillama/sdk') const omnipoolAccountId = "7L53bUTBbfuj14UpdCNPwmgzzHSsrsTWBHX5pys32mVWM3C1" const stablepoolAccountId = "7JP6TvcH5x31TsbC6qVJHEhsW7UNmpREMZuLBpK2bG1goJRS" const stablepoolAccountId2 = "7MaKPwwnqN4cqg35PbxsGXUo1dfvjXQ3XfBjWF9UVvKMjJj8" +const stablepoolAccountId3 = "7LVGEVLFXpsCCtnsvhzkSMQARU7gRVCtwMckG7u7d3V6FVvG" async function tvl() { const { api: _api } = arguments[3] @@ -36,7 +37,7 @@ async function tvl() { for (const { decimals, assetId, symbol } of assetMetadata) { const cgId = cgMapping[symbol] if (cgId) { - const bals = await Promise.all([omnipoolAccountId, stablepoolAccountId, stablepoolAccountId2].map(accountId => api.query.tokens.accounts(accountId, assetId))) + const bals = await Promise.all([omnipoolAccountId, stablepoolAccountId, stablepoolAccountId2, stablepoolAccountId3,].map(accountId => api.query.tokens.accounts(accountId, assetId))) bals.forEach(bal => add(cgId, bal.free / (10 ** decimals))) } else { sdk.log(`No mapping for ${symbol}, skipping it`) From 9a3177b4c143e060caad4896b00c99ed0914543e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 6 Feb 2024 23:54:15 +0100 Subject: [PATCH 0206/2004] Remove unused addresses.js and update morphoBlue address in index.js --- projects/morpho-blue/addresses.js | 24 ------------------------ projects/morpho-blue/index.js | 6 +++--- 2 files changed, 3 insertions(+), 27 deletions(-) delete mode 100644 projects/morpho-blue/addresses.js diff --git a/projects/morpho-blue/addresses.js b/projects/morpho-blue/addresses.js deleted file mode 100644 index 34e00ff82a8..00000000000 --- a/projects/morpho-blue/addresses.js +++ /dev/null @@ -1,24 +0,0 @@ -const wstethWethChainlinkAdaptiveCurveIRM945 = - "0xc54d7acf14de29e0e5527cabd7a576506870346a78a11a6762e2cca66322ec41"; -const wstethUsdcChainlinkAdaptiveCurveIRM860 = - "0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc"; -const weethWethChainlinkAdaptiveCurveIRM860 = - "0x698fe98247a40c5771537b5786b2f3f9d78eb487b4ce4d75533cd0e94d88a115"; -const wbib01UsdcChainlinkAdaptiveCurveIRM965 = - "0x495130878b7d2f1391e21589a8bcaef22cbc7e1fbbd6866127193b3cc239d8b1"; -const osethWethChainlinkAdaptiveCurveIRM860 = - "0xd5211d0e3f4a30d5c98653d988585792bb7812221f04801be73a44ceecb11e89"; -const idleWETH = - "0x58e212060645d18eab6d9b2af3d56fbc906a92ff5667385f616f662c70372284"; - -module.exports = { - morphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", - whitelistedIds: [ - wstethWethChainlinkAdaptiveCurveIRM945, - wstethUsdcChainlinkAdaptiveCurveIRM860, - weethWethChainlinkAdaptiveCurveIRM860, - wbib01UsdcChainlinkAdaptiveCurveIRM965, - osethWethChainlinkAdaptiveCurveIRM860, - idleWETH, - ], -}; diff --git a/projects/morpho-blue/index.js b/projects/morpho-blue/index.js index e98a17f8be7..addb381794c 100644 --- a/projects/morpho-blue/index.js +++ b/projects/morpho-blue/index.js @@ -1,6 +1,5 @@ const { getLogs } = require('../helper/cache/getLogs') const abi = require("../helper/abis/morpho.json"); -const { morphoBlue, whitelistedIds } = require("./addresses"); module.exports = { methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, @@ -8,7 +7,7 @@ module.exports = { }; const config = { - ethereum: { morphoBlue, fromBlock: 18883124 } + ethereum: { morphoBlue: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb', fromBlock: 18883124 } } Object.keys(config).forEach(chain => { @@ -35,7 +34,8 @@ Object.keys(config).forEach(chain => { api, target: morphoBlue, eventAbi: 'event CreateMarket(bytes32 indexed id, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv) marketParams)', onlyArgs: true, fromBlock, + topics: ['0xac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac'], }) - return logs.map(i => i.id).concat(whitelistedIds) + return logs.map(i => i.id) } }) \ No newline at end of file From 2afacd81f91233a56386a7e26091ccf1cc911470 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 7 Feb 2024 00:38:33 +0100 Subject: [PATCH 0207/2004] wagmi-kava: rely on graph --- projects/wagmi-com/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/wagmi-com/index.js b/projects/wagmi-com/index.js index e8d841d30d9..ae95ac05fcc 100644 --- a/projects/wagmi-com/index.js +++ b/projects/wagmi-com/index.js @@ -1,4 +1,4 @@ -const { uniV3Export } = require("../helper/uniswapV3"); +const { uniV3Export, uniV3GraphExport } = require("../helper/uniswapV3"); module.exports = uniV3Export({ era: { factory: '0x31be61CE896e8770B21e7A1CAFA28402Dd701995', fromBlock: 1351075, }, @@ -6,4 +6,6 @@ module.exports = uniV3Export({ kava: { factory: '0x0e0Ce4D450c705F8a0B6Dd9d5123e3df2787D16B', fromBlock: 6037137, }, ethereum: { factory: '0xB9a14EE1cd3417f3AcC988F61650895151abde24', fromBlock: 18240112, }, metis: { factory: '0x8112E18a34b63964388a3B2984037d6a2EFE5B8A', fromBlock: 9740222, }, -}) \ No newline at end of file +}) + +module.exports.kava = { tvl: uniV3GraphExport({ name: 'wagmi-kava', graphURL: 'https://kava.graph.wagmi.com/subgraphs/name/v3', minTVLUSD: 0 }) } \ No newline at end of file From 08771ed1179004573abf200782a6a9d66effbd8e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 7 Feb 2024 01:04:15 +0100 Subject: [PATCH 0208/2004] track https://www.synonym.finance/ --- package-lock.json | 6 ++-- projects/synonym-finance/index.js | 52 +++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 projects/synonym-finance/index.js diff --git a/package-lock.json b/package-lock.json index 0be13ad6104..7591a503c82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.24", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.24.tgz", - "integrity": "sha512-s+Uug2oKbNk2P/7BQ08lKPcOzsJORLF3w2f70oI8HmYHWQdQih7SoyyqiwzxkpxLBF7NZO9hP3pJs6gUL3r16g==", + "version": "5.0.28", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.28.tgz", + "integrity": "sha512-TGtUXZVgDOwQBzEuMQ2uru7H1NYFzw4iGL4JYO1JgTX7fJRzczTyCoQATUhqSzgQRZN9NC0/eScL/+9TsLMhvg==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/synonym-finance/index.js b/projects/synonym-finance/index.js new file mode 100644 index 00000000000..ec5371e2eaf --- /dev/null +++ b/projects/synonym-finance/index.js @@ -0,0 +1,52 @@ + +const hub = '0x1e3f1f1cA8C62aABCB3B78D87223E988Dfa3780E' +async function tvl(_, _b, _cb, { api, }) { + const { tokens, tokenMappings } = await getTokenInfos(api) + 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(_, _b, _cb, { api, }) { + const { tokens, tokenMappings } = await getTokenInfos(api) + 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() +} + +module.exports = { + arbitrum: { tvl, borrowed, }, +} + +async function getTokenInfos(api) { + const registry = await api.call({ abi: 'address:getAssetRegistry', target: hub }) + const tokenBridge = await api.call({ abi: 'address:tokenBridge', target: hub }) + 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) + + }) + 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 = arbiAssets + const tokenMappings = arbiAssets.map(asset => 'arbitrum:' + asset) + bridgedAssets.forEach((asset, i) => { + let chain; + switch (chainId[i]) { + case '2': chain = 'ethereum'; break; + case '24': chain = 'optimism'; break; + default: console.log('Unsupported chain ' + chainId[i]); return; + } + tokenMappings.push(chain + ':' + "0x" + BigInt(natives[i]).toString(16)) + tokens.push(asset) + }) + + return { tokens, tokenMappings } + +} \ No newline at end of file From 975ef867e55547453a61b61ad107cc68a6b2de50 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 7 Feb 2024 04:25:38 +0000 Subject: [PATCH 0209/2004] add flag --- projects/synclub-staked-bnb/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/synclub-staked-bnb/index.js b/projects/synclub-staked-bnb/index.js index 038d0f559cb..acea71f7533 100644 --- a/projects/synclub-staked-bnb/index.js +++ b/projects/synclub-staked-bnb/index.js @@ -8,6 +8,7 @@ async function bscTvl(timestamp, block, chainBlocks, { api }) { } module.exports = { + doublecounted: true, methodology: 'We aggregated the assets staked across synclub staking protocols', bsc: { tvl: bscTvl From 8a29f0a3da91f1db8b69f4843618534db4e7d5ef Mon Sep 17 00:00:00 2001 From: yepp4you Date: Wed, 7 Feb 2024 09:42:42 +0400 Subject: [PATCH 0210/2004] add new address for Klaytn staking contracts and remove old ones. --- projects/neopin-staking/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js index 08f1f6abcf7..c4559746bb8 100644 --- a/projects/neopin-staking/index.js +++ b/projects/neopin-staking/index.js @@ -8,10 +8,9 @@ module.exports = { klaytn: { tvl: sumTokensExport({ owners: [ - '0xDa664b81C13b050F9b0435D0B712218Aa8BB1609', - '0x0D3ACA076712DE598DF856cEcEF76daD38F0A75b', '0xf9d92BAd7b1410dfFB0a204B7aa418C9fd5A898F', - '0xf20816C9bdcb25da3ba79b206e9b7107ae02ae10' + '0xf20816C9bdcb25da3ba79b206e9b7107ae02ae10', + '0x489d6d679F1CA4cFE6976C55B54427D1AaDb8057' ], tokens: [nullAddress], }), From 15507a948e00ced57c79b4470870e0b9efe95c89 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Wed, 7 Feb 2024 00:08:54 -0800 Subject: [PATCH 0211/2004] Update config.js (#8882) --- projects/visor/config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index 32b6cb72aa0..5628be004e8 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -77,6 +77,7 @@ const HYPE_REGISTRY = { ["0xB24DC81f8Be7284C76C7cF865b803807B3C2EF55", 4249062], // BaseX ["0x39ce2eB762e7bFe19b6AD4D5bA384c67CE4051f0", 7310157], // Swapbased ["0x8118C33513feC13f8cf488CCb4509190650F0e92", 7310111], // Baseswap + ["0xf1DF4F17e34Ba710DfFC487F73f1e19476E815a6", 8743213], // Thick ], kava: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 6384272], // Kinetix @@ -92,6 +93,9 @@ const HYPE_REGISTRY = { metis: [ ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 9080358], // Hercules ], + xdai: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 31760496], // Swapr + ], }; Object.keys(HYPE_REGISTRY).forEach(chain => { From a8bc2288e54ac4ff4af188ee464b856e99c4fe0d Mon Sep 17 00:00:00 2001 From: Define101 Date: Wed, 7 Feb 2024 12:05:52 +0000 Subject: [PATCH 0212/2004] hiveswap v3 --- projects/hiveswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/hiveswap-v3/index.js diff --git a/projects/hiveswap-v3/index.js b/projects/hiveswap-v3/index.js new file mode 100644 index 00000000000..e09faa793ba --- /dev/null +++ b/projects/hiveswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + map: { factory: '0xFF53fAdeA915cac79b55D912fd373545B890f93B', fromBlock: 25678 }, +}) \ No newline at end of file From 0923ec43d0d137defa090b24538c0ef9fe40a039 Mon Sep 17 00:00:00 2001 From: Define101 Date: Wed, 7 Feb 2024 13:32:35 +0000 Subject: [PATCH 0213/2004] divide claystack into two different listings --- .../claystack-matic/clayABIs/clayMain.json | 3 +++ projects/claystack-matic/index.js | 19 +++++++++++++++++++ projects/claystack/index.js | 5 +---- 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 projects/claystack-matic/clayABIs/clayMain.json create mode 100644 projects/claystack-matic/index.js diff --git a/projects/claystack-matic/clayABIs/clayMain.json b/projects/claystack-matic/clayABIs/clayMain.json new file mode 100644 index 00000000000..d908380f607 --- /dev/null +++ b/projects/claystack-matic/clayABIs/clayMain.json @@ -0,0 +1,3 @@ +{ + "funds": "function funds() view returns (uint256 currentDeposit, uint256 stakedDeposit, uint256 accruedFees)" +} diff --git a/projects/claystack-matic/index.js b/projects/claystack-matic/index.js new file mode 100644 index 00000000000..07692049e37 --- /dev/null +++ b/projects/claystack-matic/index.js @@ -0,0 +1,19 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const abi = require('./clayABIs/clayMain.json'); + +const clayAddresses = { + clayMatic: "0x91730940DCE63a7C0501cEDfc31D9C28bcF5F905", +}; + +async function getTvlOnEthereum(_, block, _1, { api }) { + const maticDeposits = await api.call({ target: clayAddresses.clayMatic, abi: abi.funds, }) + + api.add(ADDRESSES.ethereum.MATIC, maticDeposits.currentDeposit) +} + +module.exports = { + ethereum: { + tvl: getTvlOnEthereum, + }, + 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 index 4e72b669c1e..79e24869c06 100644 --- a/projects/claystack/index.js +++ b/projects/claystack/index.js @@ -2,21 +2,18 @@ const ADDRESSES = require('../helper/coreAssets.json') const abi = require('./clayABIs/clayMain.json'); const clayAddresses = { - clayMatic: "0x91730940DCE63a7C0501cEDfc31D9C28bcF5F905", clayEth: "0x331312DAbaf3d69138c047AaC278c9f9e0E8FFf8" }; async function getTvlOnEthereum(_, block, _1, { api }) { - const maticDeposits = await api.call({ target: clayAddresses.clayMatic, abi: abi.funds, }) const ethDeposits = await api.call({ target: clayAddresses.clayEth, abi: abi.funds, }) api.add(ADDRESSES.null, ethDeposits.currentDeposit) - api.add(ADDRESSES.ethereum.MATIC, maticDeposits.currentDeposit) } module.exports = { ethereum: { tvl: getTvlOnEthereum, }, - methodology: `We get the total token deposited in clay contracts and convert it to USD.` + methodology: `We get the total ETH deposited in clay contracts and convert it to USD.` } \ No newline at end of file From e5c42a7438f204fd4ef223ac56e46db1f8a1f5dc Mon Sep 17 00:00:00 2001 From: Define101 Date: Wed, 7 Feb 2024 14:19:09 +0000 Subject: [PATCH 0214/2004] hallmark --- projects/claystack/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/claystack/index.js b/projects/claystack/index.js index 79e24869c06..51dbb99a3c0 100644 --- a/projects/claystack/index.js +++ b/projects/claystack/index.js @@ -12,6 +12,9 @@ async function getTvlOnEthereum(_, block, _1, { api }) { } module.exports = { + hallmarks: [ + [1707315338,"Split Adapter"] + ], ethereum: { tvl: getTvlOnEthereum, }, From 80c5b1b9c7f60d2a2aba6a4c1f22f8c2af41c7a6 Mon Sep 17 00:00:00 2001 From: helloautodojo <159236165+helloautodojo@users.noreply.github.com> Date: Wed, 7 Feb 2024 20:13:14 +0530 Subject: [PATCH 0215/2004] feat: new vault (#8885) Co-authored-by: ninjavault --- projects/ninjavault/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/ninjavault/index.js diff --git a/projects/ninjavault/index.js b/projects/ninjavault/index.js new file mode 100644 index 00000000000..8ec2f72c06b --- /dev/null +++ b/projects/ninjavault/index.js @@ -0,0 +1,14 @@ +const { queryContract } = require('../helper/chain/cosmos') +const sdk = require('@defillama/sdk') + +async function staking(_, _2, _1, { 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 }, +}; From 38d8b1a060b1d399b09e798d1296384a92029fbf Mon Sep 17 00:00:00 2001 From: Define101 Date: Wed, 7 Feb 2024 16:07:00 +0000 Subject: [PATCH 0216/2004] binance new wallets --- projects/binance/config.js | 952 ++++++++++++++++++------------------- 1 file changed, 470 insertions(+), 482 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index b38f381e560..5a3ddbdc078 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -4,488 +4,476 @@ const { getUniqueAddresses } = require('../helper/utils') // taken from https://www.binance.com/en/blog/community/our-commitment-to-transparency-2895840147147652626 const assetList = [ - ["1INCH", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["1INCH", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["1INCH", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["1INCH", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["1INCH", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], - ["1INCH", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["1INCH", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["APT", "APT", "0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00"], - ["APT", "APT", "0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f"], - ["APT", "APT", "0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70"], - ["APT", "APT", "0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a"], - ["APT", "APT", "0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e"], - ["ARB", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], - ["ARB", "ARB", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["ARB", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["BNB", "BEP2", "bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg"], - ["BNB", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["BNB", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["BNB", "BEP2", "bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7"], - ["BNB", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["BNB", "BEP2", "bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy"], - ["BNB", "BEP20", "0x01c952174c24e1210d26961d456a77a39e1f0bb0"], - ["BNB", "BEP20", "0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645"], - ["BNB", "BEP20", "0x1fbe2acee135d991592f167ac371f3dd893a508b"], - ["BNB", "BEP20", "0x29bdfbf7d27462a2d115748ace2bd71a2646946c"], - ["BNB", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["BNB", "BEP20", "0x515b72ed8a97f42c568d6a143232775018f133c8"], - ["BNB", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["BNB", "BEP20", "0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f"], - ["BNB", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["BNB", "BEP20", "0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8"], - ["BNB", "BEP20", "0xa180fe01b906a1be37be6c534a3300785b20d947"], - ["BNB", "BEP20", "0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774"], - ["BNB", "BEP20", "0xdccf3b77da55107280bd850ea519df3705d1a75a"], - ["BNB", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["BNB", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["BNB", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["BNB", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["BNB", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["BTC", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["BTC", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["BTC", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["BTC", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["BTC", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["BTC", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["BTC", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["BTC", "BTC", "1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7"], - ["BTC", "BTC", "34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J"], - ["BTC", "BTC", "34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP"], - ["BTC", "BTC", "34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo"], - ["BTC", "BTC", "36zSLdRv1jyewjaC12fqK5fptn7PqewunL"], - ["BTC", "BTC", "38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn"], - ["BTC", "BTC", "38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE"], - ["BTC", "BTC", "395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ"], - ["BTC", "BTC", "39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v"], - ["BTC", "BTC", "3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry"], - ["BTC", "BTC", "3AtnehKDkFPC1bKvdrEVPSRGCtxQH8F1R8"], - ["BTC", "BTC", "3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN"], - ["BTC", "BTC", "3EVVc8e2rxwUuERtdJCduWig8DnpsUqyA6"], - ["BTC", "BTC", "3F9CGMu7JSJnMHA8jFM2KgxuH6hhxtvENP"], - ["BTC", "BTC", "3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B"], - ["BTC", "BTC", "3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA"], - ["BTC", "BTC", "3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ"], - ["BTC", "BTC", "3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ"], - ["BTC", "BTC", "3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a"], - ["BTC", "BTC", "3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH"], - ["BTC", "BTC", "3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6"], - ["BTC", "BTC", "3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj"], - ["BTC", "BTC", "3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa"], - ["BTC", "BTC", "3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb"], - ["BTC", "BTC", "3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA"], - ["BTC", "BTC", "bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h"], - ["BTC", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["BTC", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["BTC", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["BTC", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["BUSD", "AVAX", "0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8"], - ["BUSD", "AVAX", "0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9"], - ["BUSD", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["BUSD", "BEP2", "bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7"], - ["BUSD", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["BUSD", "BEP2", "bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy"], - ["BUSD", "BEP20", "0x01c952174c24e1210d26961d456a77a39e1f0bb0"], - ["BUSD", "BEP20", "0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645"], - ["BUSD", "BEP20", "0x1fbe2acee135d991592f167ac371f3dd893a508b"], - ["BUSD", "BEP20", "0x29bdfbf7d27462a2d115748ace2bd71a2646946c"], - ["BUSD", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["BUSD", "BEP20", "0x515b72ed8a97f42c568d6a143232775018f133c8"], - ["BUSD", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["BUSD", "BEP20", "0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f"], - ["BUSD", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["BUSD", "BEP20", "0xa180fe01b906a1be37be6c534a3300785b20d947"], - ["BUSD", "BEP20", "0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774"], - ["BUSD", "BEP20", "0xdccf3b77da55107280bd850ea519df3705d1a75a"], - ["BUSD", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["BUSD", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["BUSD", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["BUSD", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["BUSD", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["BUSD", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["BUSD", "ETH", "0x9696f59e4d72e237be84ffd425dcad154bf96976"], - ["BUSD", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["BUSD", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["BUSD", "MATIC", "0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245"], - ["BUSD", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], - ["BUSD", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], - ["BUSD", "TRX", "TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf"], - ["BUSD", "TRX", "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G"], - ["BUSD", "TRX", "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb"], - ["CHR", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["CHR", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["CHR", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["CHR", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["CHR", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["CHR", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["CHR", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["CHR", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], - ["CHR", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["CHR", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["CHZ", "BEP2", "bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg"], - ["CHZ", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["CHZ", "BEP2", "bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7"], - // ["CHZ", "CHZ", "0x87917d879ba83ce3ada6e02d49a10c1ec1988062"], // we dont track this - ["CHZ", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["CHZ", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["CHZ", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["CRV", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["CRV", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["CRV", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["CRV", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["CVP", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["CVP", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["CVP", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["CVP", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["CVP", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["CVP", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["CVP", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["CVP", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["DOGE", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["DOGE", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["DOGE", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["DOGE", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["DOGE", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["DOGE", "BEP20", "0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8"], - ["DOGE", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["DOGE", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["DOGE", "DOGE", "D6xiMfjQNdcGe9aVXCCUk2PyzWCxfnZww9"], - ["DOGE", "DOGE", "D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX"], - ["DOGE", "DOGE", "D7JLeAgZK2TyFRFtjKwHMxhFjWvJ9gS5kj"], - ["DOGE", "DOGE", "D7QZnXec5bkMyokPFPh6v4WAw5VF5TocAy"], - ["DOGE", "DOGE", "D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw"], - ["DOGE", "DOGE", "D7dm1b8DEqaCxcgaPuBXz9FqjAQ7UTK6sz"], - ["DOGE", "DOGE", "DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr"], - ["DOGE", "DOGE", "DCxFJEWsYJFnC3HP7YfZdsd3X43ttQA79Z"], - ["DOGE", "DOGE", "DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn"], // we dont track doge chain, but we added all wallets here in case someone wants to take a look. - ["DOGE", "DOGE", "DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX"], - ["DOGE", "DOGE", "DEvUEF9VrXbKf5rdaQCUzeh4MvZxd3Zx5T"], - ["DOGE", "DOGE", "DFyohYD3bMXCEg1TdMfdy1J7dYfK4shhPf"], - ["DOGE", "DOGE", "DGYUcgNQAAMzXynRHJJVAKkgXWhSddJNi2"], - ["DOGE", "DOGE", "DGiYKUGbzRtppwdoinym7ZJXWuBqBuHxUk"], - ["DOGE", "DOGE", "DHiKVUMdaAm43NMh2wMSfn7xtmUmfKSSNE"], - ["DOGE", "DOGE", "DJRaDXkewtLgwL9EZyTkWQEsxuyBUaveKU"], - ["DOGE", "DOGE", "DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC"], - ["DOGE", "DOGE", "DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC"], - ["DOGE", "DOGE", "DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW"], - ["DOGE", "DOGE", "DPKKpanH1hMVzdWb2oi126znjruvvGRQzj"], - ["DOGE", "DOGE", "DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx"], - ["DOGE", "DOGE", "DQkwksfYrAWAR9tRcqygA5pihmnURozxzo"], - ["DOGE", "DOGE", "DRuYd74gqPuQD9HKEBDxRr9gSogQmdj9DH"], - ["DOGE", "DOGE", "DRweGdMgohChLBn2TamjCNicKYEncRgj5a"], - ["DOT", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["DOT", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["DOT", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["DOT", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["DOT", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["DOT", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["DOT", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["DOT", "DOT", "16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD"], - ["DOT", "DOT", "1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF"], - ["DOT", "DOT", "1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7"], - ["DOT", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["DOT", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["DOT", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["DOT", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["ENJ", "ENJ", "enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h"], - ["ENJ", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["ENJ", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["ENJ", "ETH", "0x56eddb7aa87536c09ccc2793473599fd21a8b17f"], - ["ENJ", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["ENJ", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["ETH", "ARB", "0x5a52E96BAcdaBb82fd05763E25335261B270Efcb"], - ["ETH", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], - ["ETH", "ARB", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["ETH", "BASE", "0x3304e22ddaa22bcdc5fca2269b418046ae7b566a"], - ["ETH", "BASE", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], - ["ETH", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["ETH", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["ETH", "BEP2", "bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7"], - ["ETH", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["ETH", "BEP2", "bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy"], - ["ETH", "BEP20", "0x01c952174c24e1210d26961d456a77a39e1f0bb0"], - ["ETH", "BEP20", "0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645"], - ["ETH", "BEP20", "0x29bdfbf7d27462a2d115748ace2bd71a2646946c"], - ["ETH", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["ETH", "BEP20", "0x515b72ed8a97f42c568d6a143232775018f133c8"], - ["ETH", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["ETH", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["ETH", "BEP20", "0xa180fe01b906a1be37be6c534a3300785b20d947"], - ["ETH", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["ETH", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["ETH", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["ETH", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["ETH", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["ETH", "ETH", "0x4976a4a02f38326660d17bf34b431dc6e2eb2327"], - ["ETH", "ETH", "0x56eddb7aa87536c09ccc2793473599fd21a8b17f"], - ["ETH", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["ETH", "ETH", "0x9696f59e4d72e237be84ffd425dcad154bf96976"], - ["ETH", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], - ["ETH", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["ETH", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["ETH", "OP", "0x5a52E96BAcdaBb82fd05763E25335261B270Efcb"], - ["ETH", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], - ["ETH", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], - ["FDUSD", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["FDUSD", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["FDUSD", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["FDUSD", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["FDUSD", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["FDUSD", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["FDUSD", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["FDUSD", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["FDUSD", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["GRT", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["GRT", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["GRT", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["GRT", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["HFT", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["HFT", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["HFT", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["HFT", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["HFT", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["HFT", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["HFT", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["LINK", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["LINK", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["LINK", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["LINK", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["LINK", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["LINK", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["LINK", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["LINK", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["LINK", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["LINK", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], - ["LINK", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["LINK", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["LTC", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["LTC", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["LTC", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["LTC", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["LTC", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["LTC", "LTC", "LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm"], - ["LTC", "LTC", "LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN"], - ["LTC", "LTC", "LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq"], - ["LTC", "LTC", "M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua"], - ["LTC", "LTC", "MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k"], - ["LTC", "LTC", "MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z"], - ["LTC", "LTC", "MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ"], - ["LTC", "LTC", "MEhAHYijouCinmGKL6n1bRTXYznH1X24rD"], - ["LTC", "LTC", "MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F"], - ["LTC", "LTC", "MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3"], - ["LTC", "LTC", "MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N"], - ["LTC", "LTC", "MLkNzCps6cXou2DELVfxDuRC4uZGwr397o"], - ["LTC", "LTC", "MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS"], - ["LTC", "LTC", "MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf"], - ["LTC", "LTC", "MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67"], - ["LTC", "LTC", "MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy"], - ["MASK", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["MASK", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["MASK", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["MASK", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["MASK", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["MASK", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["MASK", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["MASK", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["MASK", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["MATIC", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["MATIC", "BEP2", "bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy"], - ["MATIC", "BEP20", "0x29bdfbf7d27462a2d115748ace2bd71a2646946c"], - ["MATIC", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["MATIC", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["MATIC", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["MATIC", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["MATIC", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["MATIC", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["MATIC", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["MATIC", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["MATIC", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["MATIC", "MATIC", "0x082489a616ab4d46d1947ee3f912e080815b08da"], - ["MATIC", "MATIC", "0x5a52E96BAcdaBb82fd05763E25335261B270Efcb"], - ["MATIC", "MATIC", "0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245"], - ["MATIC", "MATIC", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["OP", "OP", "0x5a52E96BAcdaBb82fd05763E25335261B270Efcb"], - ["OP", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], - ["OP", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], - ["SHIB", "BEP20", "0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645"], - ["SHIB", "BEP20", "0x1fbe2acee135d991592f167ac371f3dd893a508b"], - ["SHIB", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["SHIB", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["SHIB", "BEP20", "0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774"], - ["SHIB", "BEP20", "0xdccf3b77da55107280bd850ea519df3705d1a75a"], - ["SHIB", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["SHIB", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["SHIB", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["SHIB", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["SHIB", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["SHIB", "ETH", "0x4976a4a02f38326660d17bf34b431dc6e2eb2327"], - ["SHIB", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["SHIB", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["SHIB", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["SOL", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["SOL", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["SOL", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["SOL", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["SOL", "SOL", "2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S"], - ["SOL", "SOL", "3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E"], - ["SOL", "SOL", "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9"], - ["SOL", "SOL", "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"], - ["SSV", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["SSV", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["SSV", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["SSV", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["TUSD", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["TUSD", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["TUSD", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["TUSD", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["TUSD", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["TUSD", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["TUSD", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["TUSD", "TRX", "TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf"], - ["TUSD", "TRX", "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G"], - ["TUSD", "TRX", "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb"], - ["UNI", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["UNI", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["UNI", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["UNI", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["UNI", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["UNI", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["UNI", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["UNI", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["UNI", "ETH", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["UNI", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], - ["UNI", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["UNI", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDC", "ALGO", "MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI"], - ["USDC", "ALGO", "QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U"], - ["USDC", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], - ["USDC", "AVAX", "0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9"], - ["USDC", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["USDC", "BEP20", "0x1fbe2acee135d991592f167ac371f3dd893a508b"], - ["USDC", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["USDC", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["USDC", "BEP20", "0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f"], - ["USDC", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["USDC", "BEP20", "0xdccf3b77da55107280bd850ea519df3705d1a75a"], - ["USDC", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["USDC", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDC", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["USDC", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["USDC", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["USDC", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDC", "MATIC", "0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245"], - ["USDC", "MATIC", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDC", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], - ["USDC", "RON", "0x030e37ddd7df1b43db172b23916d523f1599c6cb"], - ["USDC", "RON", "0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3"], - ["USDC", "SOL", "2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S"], - ["USDC", "SOL", "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9"], - ["USDC", "TRX", "TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf"], - ["USDC", "TRX", "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G"], - ["USDC", "TRX", "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb"], - ["USDC", "XLM", "GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA"], - ["USDC", "XLM", "GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH"], - ["USDT", "ARB", "0xb38e8c17e38363af6ebdcb3dae12e0243582891d"], - ["USDT", "ARB", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDT", "AVAX", "0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8"], - ["USDT", "AVAX", "0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9"], - ["USDT", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["USDT", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["USDT", "BEP2", "bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7"], - ["USDT", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["USDT", "BEP2", "bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy"], - ["USDT", "BEP20", "0x01c952174c24e1210d26961d456a77a39e1f0bb0"], - ["USDT", "BEP20", "0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645"], - ["USDT", "BEP20", "0x1fbe2acee135d991592f167ac371f3dd893a508b"], - ["USDT", "BEP20", "0x29bdfbf7d27462a2d115748ace2bd71a2646946c"], - ["USDT", "BEP20", "0x3c783c21a0383057d128bae431894a5c19f9cf06"], - ["USDT", "BEP20", "0x515b72ed8a97f42c568d6a143232775018f133c8"], - ["USDT", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["USDT", "BEP20", "0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f"], - ["USDT", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["USDT", "BEP20", "0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8"], - ["USDT", "BEP20", "0xa180fe01b906a1be37be6c534a3300785b20d947"], - ["USDT", "BEP20", "0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774"], - ["USDT", "BEP20", "0xdccf3b77da55107280bd850ea519df3705d1a75a"], - ["USDT", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["USDT", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["USDT", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDT", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["USDT", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["USDT", "ETH", "0x56eddb7aa87536c09ccc2793473599fd21a8b17f"], - ["USDT", "ETH", "0x9696f59e4d72e237be84ffd425dcad154bf96976"], - ["USDT", "ETH", "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"], - ["USDT", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["USDT", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDT", "MATIC", "0x5a52E96BAcdaBb82fd05763E25335261B270Efcb"], - ["USDT", "MATIC", "0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245"], - ["USDT", "MATIC", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDT", "OP", "0xF977814e90dA44bFA03b6295A0616a897441aceC"], - ["USDT", "OP", "0xacd03d601e5bb1b275bb94076ff46ed9d753435a"], - ["USDT", "SOL", "2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S"], - ["USDT", "SOL", "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9"], - ["USDT", "SOL", "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"], - ["USDT", "TRX", "TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr"], - ["USDT", "TRX", "TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf"], - ["USDT", "TRX", "TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo"], - ["USDT", "TRX", "TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe"], - ["USDT", "TRX", "TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9"], - ["USDT", "TRX", "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G"], - ["USDT", "TRX", "TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm"], - ["USDT", "TRX", "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb"], - ["USDT", "TRX", "TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS"], - ["WRX", "BEP2", "bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg"], - ["WRX", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["WRX", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["WRX", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["WRX", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["WRX", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["WRX", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["WRX", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["WRX", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["WRX", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["XRP", "BEP2", "bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz"], - ["XRP", "BEP2", "bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t"], - ["XRP", "BEP2", "bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn"], - ["XRP", "BEP20", "0x5a52e96bacdabb82fd05763e25335261b270efcb"], - ["XRP", "BEP20", "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"], - ["XRP", "BEP20", "0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774"], - ["XRP", "BEP20", "0xe2fc31f816a9b94326492132018c3aecc4a93ae1"], - ["XRP", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["XRP", "BEP20", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["XRP", "ETH", "0x21a31ee1afc51d94c2efccaa2092ad1028285549"], - ["XRP", "ETH", "0x28c6c06298d514db089934071355e5743bf21d60"], - ["XRP", "ETH", "0xdfd5293d8e347dfe59e90efd55b2956a1343963d"], - ["XRP", "XRP", "rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A"], - ["XRP", "XRP", "rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr"], - ["XRP", "XRP", "rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ"], - ["XRP", "XRP", "rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK"], - ["XRP", "XRP", "rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza"], - // From 15dec binance will be moving some wallets/funds as mention here https://twitter.com/binance/status/1735610874579071466 - // In order to be as clear as possible, those new wallet will be added under this comments with the respective timestamp - ["USDT", "TRX", "TPtW5TEHhouj6KGshVu5ZQSKZA48QPBnXG"], // 1702638336 Fri, 15 Dec 2023 11:05:36 GMT - ["TRX", "TRX", "TPtW5TEHhouj6KGshVu5ZQSKZA48QPBnXG"], // 1702638336 Fri, 15 Dec 2023 11:05:36 GMT - ["BNB", "BSC", "0x835678a611b28684005a5e2233695fb6cbbb0007"], // from this one until - ["ETH", "ETH", "0x835678a611b28684005a5e2233695fb6cbbb0007"], - ["AVAX", "AVAX", "0x835678a611b28684005a5e2233695fb6cbbb0007"], - ["FTM", "FTM", "0x835678a611b28684005a5e2233695fb6cbbb0007"], - ["MATIC", "MATIC", "0x835678a611b28684005a5e2233695fb6cbbb0007"], - ["MATIC", "ETH", "0x835678a611b28684005a5e2233695fb6cbbb0007"], - ["TRX", "TRX", "TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY"], - ["USDT", "TRX", "TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY"], - ["XRP", "XRP", "rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A"], - ["SOL", "SOL", "6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U"], - ["DOGE", "DOGE", "DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3"], - ["BTC", "BTC", "1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw"], - ["BNB", "BEP2", "bnb17jky4rwhu9rzgrx7exrfc3pcd5z290ga8qfm0j"], // until this wallet where added on the Tuesday, 26 December 2023 07:00:00 - ["BTC", "BTC", "3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY"], - ["FDUSD", "BEP20", "0x835678a611B28684005a5e2233695fB6cbbB0007"], - ["FDUSD", "ETH", "0x835678a611B28684005a5e2233695fB6cbbB0007"], - ["SOL", "SOL", "3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u"], - ["TUSD", "ETH", "0xf977814e90da44bfa03b6295a0616a897441acec"], - ["USDC", "BEP20", "0xeb2d2f1b8c558a40207669291fda468e50c8a0bb"], - ["XRP", "XRP", "rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf"], + ['1INCH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['1INCH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['1INCH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['1INCH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['1INCH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['1INCH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['1INCH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['APT', 'APT', '0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00'], + ['APT', 'APT', '0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f'], + ['APT', 'APT', '0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70'], + ['APT', 'APT', '0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a'], + ['APT', 'APT', '0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e'], + ['ARB', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['ARB', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ARB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['BNB', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BNB', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['BNB', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['BNB', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BNB', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['BNB', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['BNB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['BNB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['BNB', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['BNB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['BNB', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['BNB', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BNB', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['BNB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BNB', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], + ['BNB', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['BNB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['BNB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['BNB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BNB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BTC', 'BTC', '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw'], + ['BTC', 'BTC', '1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7'], + ['BTC', 'BTC', '34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J'], + ['BTC', 'BTC', '34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP'], + ['BTC', 'BTC', '34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo'], + ['BTC', 'BTC', '36zSLdRv1jyewjaC12fqK5fptn7PqewunL'], + ['BTC', 'BTC', '38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn'], + ['BTC', 'BTC', '38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE'], + ['BTC', 'BTC', '395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ'], + ['BTC', 'BTC', '39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v'], + ['BTC', 'BTC', '3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry'], + ['BTC', 'BTC', '3AtnehKDkFPC1bKvdrEVPSRGCtxQH8F1R8'], + ['BTC', 'BTC', '3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN'], + ['BTC', 'BTC', '3EVVc8e2rxwUuERtdJCduWig8DnpsUqyA6'], + ['BTC', 'BTC', '3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B'], + ['BTC', 'BTC', '3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA'], + ['BTC', 'BTC', '3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ'], + ['BTC', 'BTC', '3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ'], + ['BTC', 'BTC', '3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a'], + ['BTC', 'BTC', '3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH'], + ['BTC', 'BTC', '3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY'], + ['BTC', 'BTC', '3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6'], + ['BTC', 'BTC', '3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj'], + ['BTC', 'BTC', '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa'], + ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], + ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], + ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], + ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['BTC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BTC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['BTC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BUSD', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['BUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BUSD', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['BUSD', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BUSD', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['BUSD', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['BUSD', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['BUSD', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['BUSD', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['BUSD', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['BUSD', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['BUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BUSD', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['BUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BUSD', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['BUSD', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['BUSD', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['BUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BUSD', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['BUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['BUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BUSD', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['BUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['BUSD', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['BUSD', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['BUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['BUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['CHR', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CHR', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['CHR', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CHR', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHR', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CHR', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CHR', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CHR', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['CHR', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CHR', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHZ', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['CHZ', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['CHZ', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CHZ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CHZ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CRV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CRV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CRV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CRV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CVP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['CVP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CVP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CVP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CVP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CVP', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CVP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CVP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['DOGE', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['DOGE', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], + ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], + ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], + ['DOGE', 'DOGE', 'D7JLeAgZK2TyFRFtjKwHMxhFjWvJ9gS5kj'], + ['DOGE', 'DOGE', 'D7QZnXec5bkMyokPFPh6v4WAw5VF5TocAy'], + ['DOGE', 'DOGE', 'D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw'], + ['DOGE', 'DOGE', 'D7dm1b8DEqaCxcgaPuBXz9FqjAQ7UTK6sz'], + ['DOGE', 'DOGE', 'DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr'], + ['DOGE', 'DOGE', 'DCxFJEWsYJFnC3HP7YfZdsd3X43ttQA79Z'], + ['DOGE', 'DOGE', 'DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn'], + ['DOGE', 'DOGE', 'DD6K5pfaPd93ri5x67PzVVUS8Cui3rRoBe'], + ['DOGE', 'DOGE', 'DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX'], + ['DOGE', 'DOGE', 'DEvUEF9VrXbKf5rdaQCUzeh4MvZxd3Zx5T'], + ['DOGE', 'DOGE', 'DFyohYD3bMXCEg1TdMfdy1J7dYfK4shhPf'], + ['DOGE', 'DOGE', 'DGYUcgNQAAMzXynRHJJVAKkgXWhSddJNi2'], + ['DOGE', 'DOGE', 'DGiYKUGbzRtppwdoinym7ZJXWuBqBuHxUk'], + ['DOGE', 'DOGE', 'DHiKVUMdaAm43NMh2wMSfn7xtmUmfKSSNE'], + ['DOGE', 'DOGE', 'DJRaDXkewtLgwL9EZyTkWQEsxuyBUaveKU'], + ['DOGE', 'DOGE', 'DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC'], + ['DOGE', 'DOGE', 'DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC'], + ['DOGE', 'DOGE', 'DN9NrgYzgh6AtNmTUFThqRxhbyoNWhG6iD'], + ['DOGE', 'DOGE', 'DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW'], + ['DOGE', 'DOGE', 'DPKKpanH1hMVzdWb2oi126znjruvvGRQzj'], + ['DOGE', 'DOGE', 'DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx'], + ['DOGE', 'DOGE', 'DQkwksfYrAWAR9tRcqygA5pihmnURozxzo'], + ['DOGE', 'DOGE', 'DQnhnNxW89AkFHDsT6aWHim4DvtzwF9sGo'], + ['DOGE', 'DOGE', 'DRuYd74gqPuQD9HKEBDxRr9gSogQmdj9DH'], + ['DOGE', 'DOGE', 'DRweGdMgohChLBn2TamjCNicKYEncRgj5a'], + ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], + ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], + ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['DOT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['DOT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['DOT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOT', 'DOT', '16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD'], + ['DOT', 'DOT', '1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF'], + ['DOT', 'DOT', '1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7'], + ['DOT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['DOT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['DOT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], + ['ENJ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['ENJ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['ENJ', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['ENJ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['ENJ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'ARB', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['ETH', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['ETH', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'BASE', '0x3304e22ddaa22bcdc5fca2269b418046ae7b566a'], + ['ETH', 'BASE', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['ETH', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['ETH', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['ETH', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['ETH', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['ETH', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['ETH', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['ETH', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['ETH', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['ETH', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['ETH', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['ETH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['ETH', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['ETH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['ETH', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['ETH', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['ETH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['ETH', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], + ['ETH', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['ETH', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['ETH', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['ETH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['ETH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['ETH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['ETH', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['FDUSD', 'BEP20', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['FDUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['FDUSD', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['FDUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['FDUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['GRT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['GRT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['GRT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['HFT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['HFT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['HFT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['HFT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['HFT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['HFT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['HFT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['LINK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LINK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['LINK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['LINK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['LINK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['LINK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['LTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['LTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LTC', 'LTC', 'LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm'], + ['LTC', 'LTC', 'LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN'], + ['LTC', 'LTC', 'LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq'], + ['LTC', 'LTC', 'M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua'], + ['LTC', 'LTC', 'MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k'], + ['LTC', 'LTC', 'MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z'], + ['LTC', 'LTC', 'MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ'], + ['LTC', 'LTC', 'MEhAHYijouCinmGKL6n1bRTXYznH1X24rD'], + ['LTC', 'LTC', 'MG9aFQgTH5C4UPcur8S2bh5duKYMfaJFUS'], + ['LTC', 'LTC', 'MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F'], + ['LTC', 'LTC', 'MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3'], + ['LTC', 'LTC', 'MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N'], + ['LTC', 'LTC', 'MLkNzCps6cXou2DELVfxDuRC4uZGwr397o'], + ['LTC', 'LTC', 'MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS'], + ['LTC', 'LTC', 'MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf'], + ['LTC', 'LTC', 'MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67'], + ['LTC', 'LTC', 'MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy'], + ['MASK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MASK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['MASK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['MASK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MASK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['MASK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['MASK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MASK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['MASK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MATIC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['MATIC', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['MATIC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['MATIC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['MATIC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['MATIC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['MATIC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['MATIC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MATIC', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['MATIC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['MATIC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MATIC', 'MATIC', '0x082489a616ab4d46d1947ee3f912e080815b08da'], + ['MATIC', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['MATIC', 'MATIC', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['MATIC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['MATIC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['OP', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['OP', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['OP', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['SHIB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['SHIB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['SHIB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['SHIB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['SHIB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['SHIB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['SHIB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['SHIB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['SHIB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SHIB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['SHIB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['SHIB', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], + ['SHIB', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['SHIB', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['SHIB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['SHIB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SOL', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['SOL', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['SOL', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['SOL', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SOL', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['SOL', 'SOL', '3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u'], + ['SOL', 'SOL', '3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E'], + ['SOL', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['SOL', 'SOL', '6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U'], + ['SOL', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['SSV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['SSV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['TUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['TUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['TUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['TUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['TUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['TUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['TUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['TUSD', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['UNI', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['UNI', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['UNI', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['UNI', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'ALGO', 'MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI'], + ['USDC', 'ALGO', 'QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U'], + ['USDC', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['USDC', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['USDC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['USDC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['USDC', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['USDC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['USDC', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['USDC', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['USDC', 'RON', '0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3'], + ['USDC', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['USDC', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['USDC', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], + ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], + ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['USDT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], + ['USDT', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['USDT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['USDT', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['USDT', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['USDT', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['USDT', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['USDT', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['USDT', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['USDT', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['USDT', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['USDT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['USDT', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], + ['USDT', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['USDT', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['USDT', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['USDT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['USDT', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['USDT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['USDT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['USDT', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['USDT', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['USDT', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['USDT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['USDT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['USDT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['USDT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['USDT', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['USDT', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['USDT', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['USDT', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['USDT', 'TRX', 'TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr'], + ['USDT', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['USDT', 'TRX', 'TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo'], + ['USDT', 'TRX', 'TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe'], + ['USDT', 'TRX', 'TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9'], + ['USDT', 'TRX', 'TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY'], + ['USDT', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['USDT', 'TRX', 'TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm'], + ['USDT', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], + ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['WRX', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['WRX', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['WRX', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['WRX', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['WRX', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['WRX', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['WRX', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['WRX', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['WRX', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['WRX', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['XRP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['XRP', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['XRP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['XRP', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['XRP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['XRP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['XRP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['XRP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'XRP', 'rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A'], + ['XRP', 'XRP', 'rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr'], + ['XRP', 'XRP', 'rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ'], + ['XRP', 'XRP', 'rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK'], + ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], + ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], + ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], ] function getAddresses(chain) { From 260ba4bed9e08457de0eee89379c379f454530a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Wed, 7 Feb 2024 21:01:37 +0100 Subject: [PATCH 0217/2004] Support new Nostra's stable pools (#8889) --- projects/nostra-pools/abi.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/nostra-pools/abi.js b/projects/nostra-pools/abi.js index 259dedf562f..b63fd6401ae 100644 --- a/projects/nostra-pools/abi.js +++ b/projects/nostra-pools/abi.js @@ -55,7 +55,7 @@ const pairAbi = [ inputs: [], outputs: [ { - type: "(core::integer::u256, core::integer::u256, core::integer::u64)", + type: "(core::integer::u256, core::integer::u256)", }, ], state_mutability: "view", From 0d075a220d1e91b2d4bcbbc1f7258f60781fa08a Mon Sep 17 00:00:00 2001 From: Tazmaan <128337562+taz-arx@users.noreply.github.com> Date: Wed, 7 Feb 2024 12:02:03 -0800 Subject: [PATCH 0218/2004] Create index.js (#8890) --- projects/SwapMode/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/SwapMode/index.js diff --git a/projects/SwapMode/index.js b/projects/SwapMode/index.js new file mode 100644 index 00000000000..542ab7986c2 --- /dev/null +++ b/projects/SwapMode/index.js @@ -0,0 +1,7 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + mode: { + tvl: getUniTVL({ factory: "0xfb926356BAf861c93C3557D7327Dbe8734A71891", useDefaultCoreAssets: true, }), + }, +}; From e38ab65fc32a1840dcf53f716f302fba2df077d2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 7 Feb 2024 21:21:59 +0100 Subject: [PATCH 0219/2004] Anzen-2 (#8891) * add Anzen TVL * correct TVL calculation for Anzen * Update SPCT TVL calculation --------- Co-authored-by: Ben Shyong --- projects/anzen/index.js | 42 ++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/projects/anzen/index.js b/projects/anzen/index.js index 0af540521cd..022376d7b70 100644 --- a/projects/anzen/index.js +++ b/projects/anzen/index.js @@ -1,24 +1,40 @@ -const tokens = [ - '0xEf5AAcB3c38a5Be7785a361008e27fb0328a62B5', // secured private credit token - // '0xE16f2eC94E8a0819EB93022c45E05D582f4E5c15', // private credit token -]; +const ADDRESSES = require('../helper/coreAssets.json') + +// Anzen Secured Private Credit Token +// minted by depositing USDC +const SPCT = '0xEf5AAcB3c38a5Be7785a361008e27fb0328a62B5'; async function tvl(_, _1, _2, { api }) { - const uTokens = await api.multiCall({ abi: 'address:usdc', calls: tokens }) - return api.sumTokens({ tokensAndOwners2: [uTokens, tokens,] }) + 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(_, _1, _2, { api }) { - const uTokens = await api.multiCall({ abi: 'address:usdc', calls: tokens }) - const bals = (await api.multiCall({ abi: 'uint256:totalPooledUSD', calls: tokens })).map(i => i / 1e12) - const inContracts = (await api.multiCall({ abi: 'address:reserveUSD', calls: tokens })).map(i => i * -1) - api.add(uTokens, bals) - api.add(uTokens, inContracts) + // 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 locked collateral amounts and depositor token balances.", + methodology: "Sums the total USDC value deposited to mint SPCT.", + misrepresentedTokens: true, ethereum: { - tvl, borrowed, + tvl, + borrowed, }, }; From b207d931df1449090d25254501c4db08d74d6df8 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Thu, 8 Feb 2024 10:56:18 +0800 Subject: [PATCH 0220/2004] add mux lp count --- projects/solv-protocol-funds/abi.json | 4 +++- projects/solv-protocol-funds/index.js | 24 +++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/projects/solv-protocol-funds/abi.json b/projects/solv-protocol-funds/abi.json index 45ad4cdcc3d..a0495db17d1 100644 --- a/projects/solv-protocol-funds/abi.json +++ b/projects/solv-protocol-funds/abi.json @@ -9,5 +9,7 @@ "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)" + "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)" } \ No newline at end of file diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 903df9369bf..b784f893dfa 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -17,8 +17,6 @@ const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-pro const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; -const stakedAmountsAbi = 'function stakedAmounts(address) external view returns (uint256)'; - async function borrowed(ts) { const { api } = arguments[3]; const network = api.chain; @@ -71,10 +69,14 @@ async function borrowed(ts) { return api.getBalances() } -async function tvl() { - const { api } = arguments[3]; - +async function tvl(ts, _, _1, { api }) { let address = (await getConfig('solv-protocol/funds', addressUrl)); + + await gm(api, address); + await mux(api, address); +} + +async function gm(api, address) { let gm = address[api.chain]["gm"]; let tokens = [] @@ -84,7 +86,15 @@ async function tvl() { } } - await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) + await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }); +} + +async function mux(api, address) { + 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) } @@ -102,7 +112,7 @@ async function klp(api, address) { let klp = address[api.chain]["klp"]; const stakedAmounts = await api.multiCall({ - abi: stakedAmountsAbi, + abi: abi.stakedAmountsAbi, calls: klp["klpPool"].map((pool) => ({ target: klp["address"], params: [pool] From db322ba59dfe61f0b8e84371a9d12ec20323ead4 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Thu, 8 Feb 2024 13:56:28 +0800 Subject: [PATCH 0221/2004] add mux lp count (#8892) * add arbitrum tvl * solv protocol funds add KLP * klp amount * refactor: dont fetch fsKLP price * Change the configuration of contract address * Modify judgment logic * Modify judgment logic * change cache file name * fix bug * add iziswap lp * fix * reduce usage of BigNumber * add lendle * add mux lp count --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/abi.json | 4 +++- projects/solv-protocol-funds/index.js | 24 +++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/projects/solv-protocol-funds/abi.json b/projects/solv-protocol-funds/abi.json index 45ad4cdcc3d..a0495db17d1 100644 --- a/projects/solv-protocol-funds/abi.json +++ b/projects/solv-protocol-funds/abi.json @@ -9,5 +9,7 @@ "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)" + "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)" } \ No newline at end of file diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 903df9369bf..b784f893dfa 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -17,8 +17,6 @@ const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-pro const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; -const stakedAmountsAbi = 'function stakedAmounts(address) external view returns (uint256)'; - async function borrowed(ts) { const { api } = arguments[3]; const network = api.chain; @@ -71,10 +69,14 @@ async function borrowed(ts) { return api.getBalances() } -async function tvl() { - const { api } = arguments[3]; - +async function tvl(ts, _, _1, { api }) { let address = (await getConfig('solv-protocol/funds', addressUrl)); + + await gm(api, address); + await mux(api, address); +} + +async function gm(api, address) { let gm = address[api.chain]["gm"]; let tokens = [] @@ -84,7 +86,15 @@ async function tvl() { } } - await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }) + await sumTokens2({ api, tokensAndOwners: tokens.map(i => [i.address, i.pool]), permitFailure: true }); +} + +async function mux(api, address) { + 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) } @@ -102,7 +112,7 @@ async function klp(api, address) { let klp = address[api.chain]["klp"]; const stakedAmounts = await api.multiCall({ - abi: stakedAmountsAbi, + abi: abi.stakedAmountsAbi, calls: klp["klpPool"].map((pool) => ({ target: klp["address"], params: [pool] From 403f8eaae8f9356b638b44717ed50055e738c8c0 Mon Sep 17 00:00:00 2001 From: Jazz Bashara <110779103+JazzBashara@users.noreply.github.com> Date: Thu, 8 Feb 2024 14:00:35 +0100 Subject: [PATCH 0222/2004] Add Mantle to FerdyFlip adapter (#8896) * Add earliest timestamp the FerdyFlip adapter will work at * Add Mantle treasury to FerdyFlip --- projects/ferdyflip/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/ferdyflip/index.js b/projects/ferdyflip/index.js index 97382690349..f20b732b281 100644 --- a/projects/ferdyflip/index.js +++ b/projects/ferdyflip/index.js @@ -9,6 +9,9 @@ const config = { base: { tokens: [ADDRESSES.base.WETH, nullAddress], owners: ['0x3b6014e4b38791444a352D687022D6d6d79Eb99c'], }, + mantle: { + tokens: [ADDRESSES.mantle.WMNT, nullAddress], owners: ['0x559036D9466C93d8Ca3c2232626548e62ceBC07c'], + }, }; Object.keys(config).forEach((chain) => { From dadbe4fd3555f871a777d6f8adf6e0f5136b37c6 Mon Sep 17 00:00:00 2001 From: 0xBluePingu <156801910+0xBluePingu@users.noreply.github.com> Date: Thu, 8 Feb 2024 14:27:09 +0100 Subject: [PATCH 0223/2004] add start timestamp (#8897) Co-authored-by: 0xBluePingu <0xBluePingu@pingu.exchange> --- projects/pingu/index.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/projects/pingu/index.js b/projects/pingu/index.js index 1b2c836ee04..6689f4a12af 100644 --- a/projects/pingu/index.js +++ b/projects/pingu/index.js @@ -5,8 +5,9 @@ const PINGU = "0x4615fa30fFA5716984d4372030ce28D99fCB702f"; // PINGU const assets = [nullAddress, "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] // ETH, USDC module.exports = { - arbitrum: { - tvl: sumTokensExport({ owners: [fundStore], tokens: assets}), - staking: sumTokensExport({ owners: [fundStore], tokens: [PINGU]}), - }, + start: 1704844800, + arbitrum: { + tvl: sumTokensExport({ owners: [fundStore], tokens: assets }), + staking: sumTokensExport({ owners: [fundStore], tokens: [PINGU] }), + }, } From 43776183654d29a9c5ca78e5ffec756ed91e330e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 8 Feb 2024 14:44:49 +0100 Subject: [PATCH 0224/2004] Add core asset addresses*** --- package.json | 1 + projects/1155Tech/index.js | 25 +--- projects/acala-euphrates/index.js | 3 +- projects/aptoslaunch/index.js | 7 +- projects/archon-bridge/index.js | 25 ++-- projects/bitBTC.js | 2 +- projects/bitstable-finance/index.js | 2 +- projects/blackpanther/index.js | 1 + projects/blindex/index.js | 215 ++-------------------------- projects/bracketX/index.js | 3 +- projects/bucket-protocol/index.js | 5 +- projects/cega-v2/index.js | 5 +- projects/cetus/index.js | 1 + projects/cmdao-gameswap/index.js | 3 +- projects/coindcx/index.js | 5 +- projects/deri-v4/index.js | 2 +- projects/dodo/index.js | 12 +- projects/equation-v2/index.js | 3 +- projects/helio-money/index.js | 2 +- projects/helper/compound.js | 2 +- projects/intentx.js | 3 +- projects/izumi-iziswap/index.js | 2 +- projects/kai/index.js | 6 +- projects/lemma/index.js | 2 +- projects/lila-finance/index.js | 3 +- projects/lyra/index.js | 2 +- projects/mayachain/index.js | 1 + projects/meanfinance/addresses.js | 2 +- projects/metalswap/index.js | 2 +- projects/mobiusfinance/index.js | 4 +- projects/omnibtc/index.js | 2 +- projects/orderly-network/index.js | 5 +- projects/pingu/index.js | 3 +- projects/popcorn/fraxVault.js | 3 +- projects/relayChain/index.js | 2 +- projects/starknet/index.js | 3 +- projects/tenderize/index.js | 5 +- projects/treasury/aave.js | 2 +- projects/treasury/beethovenx.js | 2 +- projects/weft-finance/index.js | 3 +- projects/woofi.js | 2 +- projects/yiedl-vaults/constants.js | 3 +- projects/zoodao/index.js | 2 +- 43 files changed, 103 insertions(+), 285 deletions(-) diff --git a/package.json b/package.json index f0c45b40543..cc900e75344 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "tvl": "cd utils;npm i; cd ..; node utils/testInteractive", "treasury": "cd utils;npm i; cd ..; node utils/testInteractive treasury", "entities": "cd utils;npm i; cd ..; node utils/testInteractive entities", + "useTokenLabels": "node utils/scripts/useTokenLabels.js", "postinstall": "echo 'run \"npm update @defillama/sdk\" if you want lastest sdk changes' " }, "author": "", diff --git a/projects/1155Tech/index.js b/projects/1155Tech/index.js index b895f49a370..85e5b89fba9 100644 --- a/projects/1155Tech/index.js +++ b/projects/1155Tech/index.js @@ -1,22 +1,11 @@ -const TOKEN_CONTRACT_NOTE = '0x4e71A2E537B7f9D9413D3991D37958c0b5e1e503'; +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokensExport } = require('../helper/unwrapLPs'); const MARKET_1155TECH_CONTRACT = '0x33b77fAf955Ed3eDAf939ae66C4D7a2D78bc30C6'; -async function tvl(_, _1, _2, { api }) { - const balance = await api.call({ - abi: 'erc20:balanceOf', - target: TOKEN_CONTRACT_NOTE, - params: [MARKET_1155TECH_CONTRACT], - }); - - api.add(TOKEN_CONTRACT_NOTE, balance) -} - module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Value of all Keys across all art markets is TVL in the protocol', - start: 7280880, - canto: { - tvl - } + methodology: 'Value of all Keys across all art markets is TVL in the protocol', + start: 7280880, + canto: { + tvl: sumTokensExport({ owner: MARKET_1155TECH_CONTRACT, tokens: [ADDRESSES.canto.NOTE] }) + } }; \ No newline at end of file diff --git a/projects/acala-euphrates/index.js b/projects/acala-euphrates/index.js index 65d9ed1f106..279ab36b1fd 100644 --- a/projects/acala-euphrates/index.js +++ b/projects/acala-euphrates/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const euphrates = '0x7Fe92EC600F15cD25253b421bc151c51b0276b7D'; -const ldotAddr = '0x0000000000000000000100000000000000000003'; +const ldotAddr = ADDRESSES.acala.LDOT; const wtdotAddr = '0xe1bD4306A178f86a9214c39ABCD53D021bEDb0f9'; async function tvl(timestamp) { diff --git a/projects/aptoslaunch/index.js b/projects/aptoslaunch/index.js index e9d98f7ab17..1e23042dfa5 100644 --- a/projects/aptoslaunch/index.js +++ b/projects/aptoslaunch/index.js @@ -1,9 +1,10 @@ +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 = "0x1::aptos_coin::AptosCoin"; +const APT = ADDRESSES.aptos.APT; const ALT = "0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::aptos_launch_token::AptosLaunchToken"; @@ -12,9 +13,9 @@ const MOVE = "0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund"; const lzUSDT = - "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT"; + ADDRESSES.aptos.USDT_2; const lzUSDC = - "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC"; + ADDRESSES.aptos.USDC_2; const MOVE_APT_LP = "0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa::swap::LPToken<0x1::aptos_coin::AptosCoin, 0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund>"; diff --git a/projects/archon-bridge/index.js b/projects/archon-bridge/index.js index 1cbb79cb5fc..fa1eb0e5c0f 100644 --- a/projects/archon-bridge/index.js +++ b/projects/archon-bridge/index.js @@ -1,22 +1,23 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); const tokens = { avax: { - WAVAX: "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", - USDC: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - USDT: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", - DAI: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + WAVAX: ADDRESSES.avax.WAVAX, + USDC: ADDRESSES.avax.USDC, + USDT: ADDRESSES.avax.USDt, + DAI: ADDRESSES.avax.DAI, LINK: "0x5947bb275c521040051d82396192181b413227a3", WBTC: "0x50b7545627a5162F82A992c33b87aDc75187B218", WZEN: "0xAA1dA1591cBF7f2Df46884E7144297FF15Ea3a7f", }, ethereum: { - WETH: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7", - DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - LINK: "0x514910771AF9Ca656af840dff83E8264EcF986CA", - WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + 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: { @@ -26,8 +27,8 @@ const tokens = { USDT: "0xA167bcAb6791304EDa9B636C8beEC75b3D2829E6", DAI: "0x38C2a6953F86a7453622B1E7103b738239728754", LINK: "0xDF8DBA35962Aa0fAD7ade0Df07501c54Ec7c4A89", - WBTC: "0x1d7fb99AED3C365B4DEf061B7978CE5055Dfc1e7", - WZEN: "0xF5cB8652a84329A2016A386206761f455bCEDab6", + WBTC: ADDRESSES.eon.WBTC, + WZEN: ADDRESSES.eon.ZEN, }, }; diff --git a/projects/bitBTC.js b/projects/bitBTC.js index 47680715dfe..3dd7eecf91c 100644 --- a/projects/bitBTC.js +++ b/projects/bitBTC.js @@ -1,7 +1,7 @@ const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const WBTC = "0x68f180fcce6836688e9084f035309e29bf0a2095"; +const WBTC = ADDRESSES.optimism.WBTC; const bitANT = ADDRESSES.optimism.BitANT; const bitBTC = "0xc98b98d17435aa00830c87ea02474c5007e1f272"; diff --git a/projects/bitstable-finance/index.js b/projects/bitstable-finance/index.js index b56af75a858..06f85d7ab13 100644 --- a/projects/bitstable-finance/index.js +++ b/projects/bitstable-finance/index.js @@ -7,7 +7,7 @@ const { const owner = "0x103dd1184599c7511a3016E0a383E11F84AE7173"; const tokens = { ethereum: [ADDRESS.ethereum.USDT], - bsc: ["0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409"], + bsc: [ADDRESSES.ethereum.FDUSD], }; module.exports = { diff --git a/projects/blackpanther/index.js b/projects/blackpanther/index.js index ffcb01e34e8..022a6256494 100644 --- a/projects/blackpanther/index.js +++ b/projects/blackpanther/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { queryContract: queryContractCosmos, } = require("../helper/chain/cosmos"); diff --git a/projects/blindex/index.js b/projects/blindex/index.js index bd223ac7697..198be0ab88c 100644 --- a/projects/blindex/index.js +++ b/projects/blindex/index.js @@ -1,217 +1,24 @@ -const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("../helper/abis/blindex.json"); -const { formatAddressChecksum } = require("../helper/formatAddressChecksum.js"); -const { getUniTVL, getTokenPrices, } = require("../helper/unknownTokens"); -//------------------------------------------------------------------------------------------------------------- -// How to add a new chain? -// 1. Add it to the chains global array -// 2. create a function to calculate the TVL of the chain (similar to what we did with the 'rskTvl' function) -// 3. Add your new chain to the export module -// 4. Add your new chain to the 'sumChainTvls' function in the export module -//------------------------------------------------------------------------------------------------------------- +const { getUniTVL, } = require("../helper/unknownTokens"); -// Test on the RSK network: -const blindexBTCLP = '0x15f2f01159a73a56a7149096942ae4e2c019cbef' -const wbtc = '0x542fda317318ebf1d3deaf76e0b632741a7e677d' const chains = { rsk: { - uniswapFactoryAddress: "0x5Af7cba7CDfE30664ab6E06D8D2210915Ef73c2E", bdxTokenAddress: "0x6542a10E68cEAc1Fa0641ec0D799a7492795AAC1", - // If a token doesn't exist on CoinGecko, map it to another token that's equal to it / wrappes it - coingeckoMapping: { - prefix: "rsk", - "0x542fda317318ebf1d3deaf76e0b632741a7e677d": "rootstock", // RSK's WRBTC - [ADDRESSES.rsk.ETHs]: "ethereum", // RSK's ETHs - "0xb450ff06d950efa9a9c0ad63790c51971c1be885": "usd-coin", // RSK's BDUS - USD stable - "0x99ac494badd0cba26143bd423e39a088591c7b09": "tether-eurt", // RSK's BDEU, - Euro stable - "0xa4a8fb98a26e5314397170e5d12da8b73dc2ceb5": "pax-gold", // RSK's bXAU, - Gold stable - "0x2415e222755fd1f07b0a565eb4f036e410852ee0": - "jarvis-synthetic-british-pound", // RSK's bGBP - British Pound Stable - "0xb5999795be0ebb5bab23144aa5fd6a02d080299f": "usd-coin", // RSK's XUSD, - USD stable - "0xe700691da7b9851f2f35f8b8182c69c53ccad9db": "usd-coin", // RSK's DOC - USD stable - }, }, }; -function mapCoingeckoAddress(chainName, address) { - let mappedName = - chains[chainName].coingeckoMapping[address] || - chains[chainName].coingeckoMapping[address.toLowerCase()]; - - if (!mappedName) { - const addressPrefix = - chainName === "ethereum" - ? "" - : `${chains[chainName].coingeckoMapping["prefix"]}:`; - mappedName = `${addressPrefix}${formatAddressChecksum(address, chainName)}`; - } - - return mappedName; -} - -async function getBDStableCollateralBalances(block, chainName, bdstable) { - const collateralPoolsLength = ( - await sdk.api.abi.call({ - target: formatAddressChecksum(bdstable.address, chainName), - abi: abi["getBdStablesPoolsLength"], - chain: chainName, - block, - }) - ).output; - - const bdstableCollateralPools = []; - for (let index = 0; index < collateralPoolsLength; index++) { - const poolAddress = ( - await sdk.api.abi.call({ - target: formatAddressChecksum(bdstable.address, chainName), - abi: abi["bdstable_pools_array"], - params: index, - chain: chainName, - block, - }) - ).output; - - bdstableCollateralPools.push(poolAddress); - } - - const balances = {}; - - for (let index = 0; index < bdstableCollateralPools.length; index++) { - const collateralAddress = await ( - await sdk.api.abi.call({ - target: formatAddressChecksum( - bdstableCollateralPools[index], - chainName - ), - abi: abi["getBDStablePoolCollateral"], - chain: chainName, - block, - }) - ).output; - - const coingeckoMappedName = mapCoingeckoAddress( - chainName, - collateralAddress - ); - const collateralBalance = await getBalanceOfWithPercision( - block, - chainName, - formatAddressChecksum(bdstableCollateralPools[index], chainName), - collateralAddress - ); - - sdk.util.sumSingleBalance(balances, coingeckoMappedName, collateralBalance) - } - - const bdxTokenAddress = chains[chainName].bdxTokenAddress; - const coingeckoMapBdxAddress = mapCoingeckoAddress( - chainName, - bdxTokenAddress - ); - - balances[coingeckoMapBdxAddress] = await getBalanceOfWithPercision( - block, - chainName, - formatAddressChecksum(bdstable.address, chainName), - formatAddressChecksum(bdxTokenAddress, chainName) - ); - - return balances; -} - -async function getBalanceOfWithPercision(block, chainName, owner, target) { - let balance = ( - await sdk.api.erc20.balanceOf({ - target: formatAddressChecksum(target, chainName), - owner: formatAddressChecksum(owner, chainName), - chain: chainName, - block, - }) - ).output; - - const decimals = ( - await sdk.api.erc20.decimals( - formatAddressChecksum(target, chainName), - chainName - ) - ).output; - - return balance / 10 ** decimals; -} - -function sumBalances(balancesArray) { - return balancesArray.reduce((balances, singleBalance) => { - for (const [coingeckoTokenId, amount] of Object.entries(singleBalance)) { - if (!balances[coingeckoTokenId]) { - balances[coingeckoTokenId] = 0; - } - - balances[coingeckoTokenId] += amount; - } - - return balances; - }, {}); -} - -async function getAllBDStables(block, bdxTokenAddress, chainName) { - const bdStables = []; - const bdstablesLength = ( - await sdk.api.abi.call({ - target: formatAddressChecksum(bdxTokenAddress, chainName), - abi: abi["getBdStablesLength"], - chain: chainName, - block, - }) - ).output; - - for (let index = 0; index < bdstablesLength; index++) { - bdStables.push({ - address: ( - await sdk.api.abi.call({ - target: formatAddressChecksum(bdxTokenAddress, chainName), - abi: abi["getBDStable"], - chain: chainName, - block, - params: index, - }) - ).output, - }); - } - - return bdStables; -} - -async function tvl(chainName, block) { - const chain = chainName - - //=================== - // Collateral - //=================== - const bdstables = await getAllBDStables( - block, - chains[chainName].bdxTokenAddress, - chainName - ); - let promises = [] - for (let index = 0; index < bdstables.length; index++) { - promises.push( - getBDStableCollateralBalances(block, chainName, bdstables[index]) - ); - } - - const balancesArray = await Promise.all(promises); - - const balances = sumBalances(balancesArray); - const { updateBalances } = await getTokenPrices({ chain, block, useDefaultCoreAssets: true, lps: [blindexBTCLP] }) // get blindex price from LP - await updateBalances(balances) - return balances +async function tvl(chainName, block,_, { api }) { + const bdstables = await api.fetchList({ lengthAbi: abi.getBdStablesLength, itemAbi: abi.getBDStable, target: chains.rsk.bdxTokenAddress }) + console.log(bdstables) + 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 rsk = async function rskTvl(timestamp, ethBlock, chainblocks) { - return tvl("rsk", chainblocks.rsk); -}; - const dexTVL = getUniTVL({ factory: '0x5Af7cba7CDfE30664ab6E06D8D2210915Ef73c2E', useDefaultCoreAssets: true, @@ -222,6 +29,6 @@ module.exports = { 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([rsk, dexTVL]), + tvl: sdk.util.sumChainTvls([tvl, dexTVL]), }, }; diff --git a/projects/bracketX/index.js b/projects/bracketX/index.js index c2a10403abe..3cff05b71cc 100644 --- a/projects/bracketX/index.js +++ b/projects/bracketX/index.js @@ -1,4 +1,5 @@ -const WETH_ARBITRUM = '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1'; +const ADDRESSES = require('../helper/coreAssets.json') +const WETH_ARBITRUM = ADDRESSES.arbitrum.WETH; const BRACKETX_PROXY_ARBITRUM = '0x12625Af4248E8137c6C58aed6eE804f8854669a6'; async function tvl(_, _1, _2, { api }) { diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index 125f821a31c..e5ea5e711c7 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sui = require("../helper/chain/sui"); const MAINNET_PROTOCOL_ID = @@ -5,9 +6,9 @@ const MAINNET_PROTOCOL_ID = const BUCK = "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK"; const USDC = - "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN"; + ADDRESSES.sui.USDC; const USDT = - "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN"; + ADDRESSES.sui.USDT; const AF_LP_IDs = [ "0xe2569ee20149c2909f0f6527c210bc9d97047fe948d34737de5420fab2db7062", diff --git a/projects/cega-v2/index.js b/projects/cega-v2/index.js index 26a9cc65093..4fa770c30ee 100644 --- a/projects/cega-v2/index.js +++ b/projects/cega-v2/index.js @@ -1,15 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: sumTokensExport({ - tokens:[nullAddress, "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xdac17f958d2ee523a2206206994597c13d831ec7"], + tokens:[nullAddress, ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT], owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"] }) }, arbitrum: { tvl: sumTokensExport({ - tokens:[nullAddress, "0x5979D7b546E38E414F7E9822514be443A4800529", "0xaf88d065e77c8cc2239327c5edb3a432268e5831", "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"], + tokens:[nullAddress, ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT], owners: ["0x475c4af369b28997b25bd756ef92797ad3f69593"] }) } diff --git a/projects/cetus/index.js b/projects/cetus/index.js index ef643b6c4bb..a0b12ea35e8 100644 --- a/projects/cetus/index.js +++ b/projects/cetus/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { dexExport, getResources } = require('../helper/chain/aptos') const sui = require('../helper/chain/sui') const { transformDexBalances } = require('../helper/portedTokens') diff --git a/projects/cmdao-gameswap/index.js b/projects/cmdao-gameswap/index.js index 9df72ee2cac..3e280724b4c 100644 --- a/projects/cmdao-gameswap/index.js +++ b/projects/cmdao-gameswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens'); module.exports = { jbc: { tvl: sumTokensExport({ owner: '0x280608DD7712a5675041b95d0000B9089903B569', - tokens: ['0x24599b658b57f91E7643f4F154B16bcd2884f9ac'], + tokens: [ADDRESSES.jbc.JUSDT], }), } }; diff --git a/projects/coindcx/index.js b/projects/coindcx/index.js index 7c3798df314..c690caf2634 100644 --- a/projects/coindcx/index.js +++ b/projects/coindcx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { cexExports } = require('../helper/cex') const config = { @@ -29,8 +30,8 @@ const config = { '0x8c7Efd5B04331EFC618e8006f19019A3Dc88973e', '0xCCFA6f3b01c7bf07B033A9d496Fdf22F0cdF5293', '0x90f76616d34Cb6A1F4423B33c0201B2A1980Fc81', - '0x4E15361FD6b4BB609Fa63C81A2be19d873717870', - '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', + ADDRESSES.ethereum.FTM, + ADDRESSES.ethereum.MATIC, '0xC1723Af0Dc5400A1cAAa47E76a45c39538A6AD49', '0x07E114C06462D8892Ae4574A7502b8c1c0FBdFbb', '0x274c427B1BF0bB4a137EDE688c6D621263CA7Ce8', diff --git a/projects/deri-v4/index.js b/projects/deri-v4/index.js index 9ce1437d7df..6e2cb99e8b1 100644 --- a/projects/deri-v4/index.js +++ b/projects/deri-v4/index.js @@ -14,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) { 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 === '0x0000000000000000000000000000000000000001' ? ADDRESSES.null : token) + 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)))) diff --git a/projects/dodo/index.js b/projects/dodo/index.js index d29cdd8fec1..e2f33a090a8 100644 --- a/projects/dodo/index.js +++ b/projects/dodo/index.js @@ -138,12 +138,12 @@ Object.keys(config).forEach(chain => { api.log(ownerTokens.length * 2, api.chain) if (chain === 'base') ownerTokens.push(...[ - [['0x4200000000000000000000000000000000000006', '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca'], '0x1172035a744ea18161497e94f0bbce244d51de9f'], - [['0x4200000000000000000000000000000000000006', '0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22'], '0xce670438dadb080d7aae65fdaff51355aa30535e'], - [['0x4200000000000000000000000000000000000006', '0x78a087d713be963bf307b18f2ff8122ef9a63ae9'], '0x3c388c812dada10e597f802a766e7ce898bc7751'], - [['0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca', '0x4200000000000000000000000000000000000006'], '0xd804cf0ac2a4b6dd6d375504a27874f5db073625'], - [['0x4200000000000000000000000000000000000006', '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca'], '0x72e663c4e8fd50184c8b8135315c20326cc4ad75'], - [['0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca'], '0xe8ef69e4dd7f6ed2d84f256e97469bca22b78a8b'], + [[ADDRESSES.optimism.WETH_1, ADDRESSES.base.USDbC], '0x1172035a744ea18161497e94f0bbce244d51de9f'], + [[ADDRESSES.optimism.WETH_1, '0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22'], '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, }) diff --git a/projects/equation-v2/index.js b/projects/equation-v2/index.js index 305e3c8a49d..9ab5105a667 100644 --- a/projects/equation-v2/index.js +++ b/projects/equation-v2/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { arbitrum: { marketManager: "0x719Cf2A5bDb64BC47B72556A1439eF4b876D5A0C", - usd: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" + usd: ADDRESSES.arbitrum.USDT } }; diff --git a/projects/helio-money/index.js b/projects/helio-money/index.js index 126301995e2..769661eadd1 100644 --- a/projects/helio-money/index.js +++ b/projects/helio-money/index.js @@ -43,7 +43,7 @@ module.exports = { // eth [ - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ADDRESSES.bsc.ETH, "0xA230805C28121cc97B348f8209c79BEBEa3839C0", ], diff --git a/projects/helper/compound.js b/projects/helper/compound.js index a9532505824..0ee8d93bcea 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -46,7 +46,7 @@ async function getMarkets(comptroller, block, chain, cether, cetheEquivalent, bl return; } if (['0xd2ec53e8dd00d204d3d9313af5474eb9f5188ef6', '0x0aeadb9d4c6a80462a47e87e76e487fa8b9a37d7'].includes(cToken) && chain === 'rsk') { - markets.push({ underlying: '0x542fda317318ebf1d3deaf76e0b632741a7e677d', cToken }) + markets.push({ underlying: ADDRESSES.rsk.WRBTC1, cToken }) return; } diff --git a/projects/intentx.js b/projects/intentx.js index ceee18d69b4..5632984d007 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('helper/coreAssets.json') const { request, gql } = require("graphql-request"); const graphUrl = @@ -37,7 +38,7 @@ async function getTVL(toTimestamp) { ); return { - "base:0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": total, + ["base:" + ADDRESSES.base.USDbC]: total, }; } diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 0924d77847e..9249da1e34a 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -34,7 +34,7 @@ const poolHelpers = { const blacklistedTokens = [ ADDRESSES.bsc.iUSD, '0x1382628e018010035999A1FF330447a0751aa84f', - '0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D', // mantle iUSD + ADDRESSES.bsc.iUSD, // mantle iUSD '0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD ] diff --git a/projects/kai/index.js b/projects/kai/index.js index d4d484273e4..9685770ccee 100644 --- a/projects/kai/index.js +++ b/projects/kai/index.js @@ -3,15 +3,15 @@ const sui = require("../helper/chain/sui"); const UsdcVault = { id: '0x7a2f75a3e50fd5f72dfc2f8c9910da5eaa3a1486e4eb1e54a825c09d82214526', - tType: '0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN' + tType: ADDRESSES.sui.USDC } const UsdtVault = { id: '0x0fce8baed43faadf6831cd27e5b3a32a11d2a05b3cd1ed36c7c09c5f7bcb4ef4', - tType: '0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN' + tType: ADDRESSES.sui.USDT } const SuiVault = { id: '0x16272b75d880ab944c308d47e91d46b2027f55136ee61b3db99098a926b3973c', - tType: '0x2::sui::SUI' + tType: ADDRESSES.sui.SUI } async function tvl(_, _1, _2, { api }) { diff --git a/projects/lemma/index.js b/projects/lemma/index.js index 172e7cd52c4..4f45688f46f 100644 --- a/projects/lemma/index.js +++ b/projects/lemma/index.js @@ -7,7 +7,7 @@ const PERP_V2_VAULT = "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60"; const tokens = [ ADDRESSES.tombchain.FTM, - "0x68f180fcce6836688e9084f035309e29bf0a2095", + ADDRESSES.optimism.WBTC, "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6", "0x76FB31fb4af56892A25e32cFC43De717950c9278", "0x0994206dfe8de6ec6920ff4d779b0d950605fb53", diff --git a/projects/lila-finance/index.js b/projects/lila-finance/index.js index 9270077c453..4d7a856e43e 100644 --- a/projects/lila-finance/index.js +++ b/projects/lila-finance/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const pools_provider = "0xE4534d76Cc512a14F288453F06F8961740Ae2a1E" async function tvl(_, _b, _cb, { api, }) { let 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.filter(i => i.strategy !== '0x0000000000000000000000000000000000000000') + 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 }) diff --git a/projects/lyra/index.js b/projects/lyra/index.js index 954e559f998..40abcd7f4fa 100644 --- a/projects/lyra/index.js +++ b/projects/lyra/index.js @@ -54,7 +54,7 @@ const arb_pools = [...new Set([...v1_3_arb_ShortCollateral, ...v1_3_arb_Liquidit const op_tokens = [ADDRESSES.optimism.sUSD, ADDRESSES.optimism.sETH, '0xc5db22719a06418028a40a9b5e9a7c02959d0d08', '0x298b9b95708152ff6968aafd889c6586e9169f1d', - ADDRESSES.optimism.OP, '0x68f180fcce6836688e9084f035309e29bf0a2095', + ADDRESSES.optimism.OP, ADDRESSES.optimism.WBTC, ADDRESSES.optimism.WETH, ADDRESSES.optimism.USDC] const arb_tokens = [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, diff --git a/projects/mayachain/index.js b/projects/mayachain/index.js index a1a6c9eb2f8..962e9c58902 100644 --- a/projects/mayachain/index.js +++ b/projects/mayachain/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getCache, get } = require("../helper/http"); const sdk = require("@defillama/sdk"); const { nullAddress } = require("../helper/tokenMapping"); diff --git a/projects/meanfinance/addresses.js b/projects/meanfinance/addresses.js index 0e16b822a8b..e06c3fb11a5 100644 --- a/projects/meanfinance/addresses.js +++ b/projects/meanfinance/addresses.js @@ -21,7 +21,7 @@ const TOKENS_IN_LEGACY_VERSIONS = { ADDRESSES.optimism.BitANT, // BitANT ADDRESSES.base.DAI, // LYRA '0x65559aa14915a70190438ef90104769e5e890a00', // ENS - '0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC + ADDRESSES.optimism.WBTC, // WBTC '0x6fd9d7ad17242c41f7131d257212c54a0e816691', // UNI ADDRESSES.optimism.USDC, // USDC '0x7fb688ccf682d58f86d7e38e03f9d22e7705448b', // RAI diff --git a/projects/metalswap/index.js b/projects/metalswap/index.js index 4870f0f2778..f58de63464f 100644 --- a/projects/metalswap/index.js +++ b/projects/metalswap/index.js @@ -44,7 +44,7 @@ const config = { toa: [ [nullAddress, '0x5B7C5daa5f4Bb37c457dA468Da1CDaA6219892A1'], // ETH pool [ADDRESSES.optimism.USDC, '0x24682cFDc060316355C26C420d0748F289502e83'], //usdt pool new - ['0x68f180fcCe6836688e9084f035309E29Bf0A2095', '0x469CC7AF1696B5e4E6151796Dc3B3fEf39b34f39'], //wbtc pool new + [ADDRESSES.optimism.WBTC, '0x469CC7AF1696B5e4E6151796Dc3B3fEf39b34f39'], //wbtc pool new [ADDRESSES.optimism.OP, '0xc9394748D5f633152AD3F8f557a9B7743148db1B'], //Op pool new ], token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e', diff --git a/projects/mobiusfinance/index.js b/projects/mobiusfinance/index.js index 1a5a126f650..a4ac584e929 100644 --- a/projects/mobiusfinance/index.js +++ b/projects/mobiusfinance/index.js @@ -7,8 +7,8 @@ async function tvl(ts, _block, { polygon: block }, { api }) { owner: '0xa6D0e001A257296d5246edcEFE4Ac56BD558F6c6', tokens: [ ADDRESSES.null, - '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', - '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', + ADDRESSES.polygon.DAI, + ADDRESSES.polygon.WETH_1, '0xa3Fa99A148fA48D14Ed51d610c367C61876997F1', '0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171', ] diff --git a/projects/omnibtc/index.js b/projects/omnibtc/index.js index 9bc760025f2..cea1b734c1f 100644 --- a/projects/omnibtc/index.js +++ b/projects/omnibtc/index.js @@ -99,7 +99,7 @@ module.exports = { ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDT, ADDRESSES.optimism.USDC, // Bridge USDC - "0x68f180fcCe6836688e9084f035309E29Bf0A2095", // WBTC + ADDRESSES.optimism.WBTC, // WBTC ], }), }, diff --git a/projects/orderly-network/index.js b/projects/orderly-network/index.js index 60348b620ff..134328ecb16 100644 --- a/projects/orderly-network/index.js +++ b/projects/orderly-network/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { call, view_account, addTokenBalances, sumSingleBalance } = require('../helper/chain/near'); const { sumTokensExport } = require('../helper/unwrapLPs'); @@ -8,8 +9,8 @@ const FT_NEAR = 'wrap.near'; const owner = '0x816f722424b49cf1275cc86da9840fbd5a6167e9' const tokenAddress = { - arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', - optimism: '0x0b2c639c533813f4aa9d7837caf62653d097ff85', + arbitrum: ADDRESSES.arbitrum.USDC_CIRCLE, + optimism: ADDRESSES.optimism.USDC_CIRCLE, } async function tvl() { diff --git a/projects/pingu/index.js b/projects/pingu/index.js index 6689f4a12af..d51a00c3e3c 100644 --- a/projects/pingu/index.js +++ b/projects/pingu/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const fundStore = "0x7Cc41ee3Cba9a1D2C978c37A18A0d6b59c340224"; // FundStore const PINGU = "0x4615fa30fFA5716984d4372030ce28D99fCB702f"; // PINGU -const assets = [nullAddress, "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] // ETH, USDC +const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC module.exports = { start: 1704844800, diff --git a/projects/popcorn/fraxVault.js b/projects/popcorn/fraxVault.js index 078e1c5e4d0..c301b046e40 100644 --- a/projects/popcorn/fraxVault.js +++ b/projects/popcorn/fraxVault.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const getVaultsAbi = 'address[]:getRegisteredAddresses'; @@ -16,7 +17,7 @@ async function addFraxVaultToTVL(balances, api) { const totalAssets = []; for (let i = 0; i < vaultAddresses.length; i++) { // if the vault has no strategy: 1 share = 1 asset - if (strategies[i] === "0x0000000000000000000000000000000000000000") { + if (strategies[i] === ADDRESSES.null) { totalAssets.push(totalSupply[i]); } else { const assets = await api.call({ target: strategies[i], abi: convertToAssetsAbi, params: [totalSupply[i]] }) diff --git a/projects/relayChain/index.js b/projects/relayChain/index.js index 6821d0958a6..1e0fad1ea19 100644 --- a/projects/relayChain/index.js +++ b/projects/relayChain/index.js @@ -119,7 +119,7 @@ const wIotex = ADDRESSES.iotex.WIOTX; const usdtOptimism = ADDRESSES.optimism.USDT; const daiOptimism = ADDRESSES.optimism.DAI; -const wbtcOptimism = "0x68f180fcCe6836688e9084f035309E29Bf0A2095"; +const wbtcOptimism = ADDRESSES.optimism.WBTC; const wbtcArbitrum = ADDRESSES.arbitrum.WBTC; const usdtArbitrum = ADDRESSES.arbitrum.USDT; diff --git a/projects/starknet/index.js b/projects/starknet/index.js index 0d8c547e998..9ce72fe3a3b 100644 --- a/projects/starknet/index.js +++ b/projects/starknet/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { get } = require("../helper/http"); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -12,7 +13,7 @@ async function tvl(_, _b, _c, { api }) { t.l1_bridge_address, ]); tokensAndOwners.push([ - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.DAI, "0x0437465dfb5B79726e35F08559B0cBea55bb585C", ]); return sumTokens2({ diff --git a/projects/tenderize/index.js b/projects/tenderize/index.js index 3160fdbaee9..e170c7ee22a 100644 --- a/projects/tenderize/index.js +++ b/projects/tenderize/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const config = { arbitrum: [ - { "tenderSwap": "0x2429fc7082eb517c14946b392b195b181d0b9781", "steak": "0x289ba1701c2f088cf0faf8b3705246331cb8a839", "tenderToken": "0xfac38532829fdd744373fdcd4708ab90fa0c4078" } + { "tenderSwap": "0x2429fc7082eb517c14946b392b195b181d0b9781", "steak": ADDRESSES.arbitrum.LPT, "tenderToken": "0xfac38532829fdd744373fdcd4708ab90fa0c4078" } ], ethereum: [ { "tenderSwap": "0x7de47d1c5b9415877fe6863263f97180117fdaaa", "steak": "0x18aaa7115705e8be94bffebde57af9bfc265b998", "tenderToken": "0xc83badbf764f957acc23bc9e9aac71c298b07243" }, { "tenderSwap": "0xf56f61f8181d118c010ca9c5f1e9e447e37b207e", "steak": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", "tenderToken": "0xc29f5611dcd89bc5d3a19762783d3006bc2ad2ac" }, - { "tenderSwap": "0x23c24c1253c602106255b357cd3efe260a3a469e", "steak": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", "tenderToken": "0x2336c10a1d3100343fa9911a2c57b77c333599a3" } + { "tenderSwap": "0x23c24c1253c602106255b357cd3efe260a3a469e", "steak": ADDRESSES.ethereum.MATIC, "tenderToken": "0x2336c10a1d3100343fa9911a2c57b77c333599a3" } ] } diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index 0aa792d7d3d..5eb7164bfc6 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -247,7 +247,7 @@ module.exports = treasuryExports({ tokens: [ ADDRESSES.tombchain.FTM, // WETH '0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aOptWETH - '0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC + ADDRESSES.optimism.WBTC, // WBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aOptWBTC ADDRESSES.optimism.OP, // OP '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aOptOP diff --git a/projects/treasury/beethovenx.js b/projects/treasury/beethovenx.js index 1a564f0bfe4..37b2ee1d878 100644 --- a/projects/treasury/beethovenx.js +++ b/projects/treasury/beethovenx.js @@ -11,7 +11,7 @@ const ftmTokens = [ "0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE", // BOO ADDRESSES.fantom.WFTM, // WFTM "0x91a40c733c97a6e1bf876eaf9ed8c08102eb491f", // lzDAI - "0x28a92dde19D9989F39A49905d7C9C2FAc7799bDf", // lzUSDC + ADDRESSES.fantom.USDC_L0, // lzUSDC "0xcc1b99dDAc1a33c201a742A1851662E87BC7f22C", // lzUSDT "0xf1648C50d2863f780c57849D812b4B7686031A3D", // lzWBTC "0x695921034f0387eAc4e11620EE91b1b15A6A09fE", // lzWETH diff --git a/projects/weft-finance/index.js b/projects/weft-finance/index.js index 7f751ad52b2..20b5da308e7 100644 --- a/projects/weft-finance/index.js +++ b/projects/weft-finance/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { queryAddresses } = require('../helper/chain/radixdlt'); const pools = [ { pool: 'component_rdx1cq8mm5z49x6lyet44a0jd7zq52flrmykwwxszq65uzfn6pk3mvm0k4', - resource: 'resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd', + resource: ADDRESSES.radixdlt.XRD, priceFeed: 'component_rdx1cz9u0svc4d2jtnkdqypxpcea8cj3da9vdqakrt748ackl82khfxv25' }, { diff --git a/projects/woofi.js b/projects/woofi.js index 4a9d7352fa5..f8859416270 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -46,7 +46,7 @@ const wooPPConfig = { ], optimism: [ ADDRESSES.optimism.WETH_1, // WETH - '0x68f180fcCe6836688e9084f035309E29Bf0A2095', // WBTC + ADDRESSES.optimism.WBTC, // WBTC ADDRESSES.optimism.OP, // OP ADDRESSES.optimism.USDC, // USDC ADDRESSES.optimism.USDT, diff --git a/projects/yiedl-vaults/constants.js b/projects/yiedl-vaults/constants.js index 1d558031e3e..f443fb29318 100644 --- a/projects/yiedl-vaults/constants.js +++ b/projects/yiedl-vaults/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const VAULTS = { Neutral: { Vault: '0x90A039797E93f2c671DE25DD24E5333b5e8F9Ab3', @@ -14,7 +15,7 @@ const VAULTS = { }; const HELPER = "0x8A2dD0eabE8b1A1066731C43AaC08dCDd50fcA63" -const SUSD = '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9' +const SUSD = ADDRESSES.optimism.sUSD module.exports = { VAULTS, diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index 5abd1dfb9c6..8103b670122 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -14,7 +14,7 @@ const VE_ZOO_CONTRACT_ARBITRUM = "0xF7F963dC9c9f66c86Acd37255312FfbAC0d65b23" const CAMELOT_LP_TOKEN_ARBITRUM = '0x2517cd42eE966862e8EcaAc9Abd1CcD272d897b6' const BATTLE_ARENA_ARBITRUM = '0x19C98B4302e64d2De1cd14a7AD7d592F5dAE1319' -const FSGLP_ARBITRUM = '0x1aDDD80E6039594eE970E5872D247bf0414C8903' +const FSGLP_ARBITRUM = ADDRESSES.arbitrum.fsGLP const VAULT_CONTRACT_ARBITRUM = '0x9d284e037c20f029c8C56bbE4ff7C0F8de0FA4A9' const LIQUIDITY_MINING_ARBITRUM = '0x96EBfd5dfaBf5E94f55940FC1872f39031fb332c' From 388324bc40b3cbc7538deabe287e1af9073fb2c7 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 8 Feb 2024 21:33:26 +0000 Subject: [PATCH 0225/2004] add supaswap v2 and v3 --- projects/supswap-v2/index.js | 3 +++ projects/supswap-v3/index.js | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 projects/supswap-v2/index.js create mode 100644 projects/supswap-v3/index.js diff --git a/projects/supswap-v2/index.js b/projects/supswap-v2/index.js new file mode 100644 index 00000000000..2591ce252c4 --- /dev/null +++ b/projects/supswap-v2/index.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000000..d22d7de2b41 --- /dev/null +++ b/projects/supswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + mode: { factory: '0xa0b018Fe0d00ed075fb9b0eEe26d25cf72e1F693', fromBlock: 3061677 }, +}) \ No newline at end of file From 86807898d693ba25a92a1d804bb49aa84fdc6d80 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 8 Feb 2024 21:51:18 +0000 Subject: [PATCH 0226/2004] fix server --- projects/intentx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/intentx.js b/projects/intentx.js index 5632984d007..1c87bee9a31 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('helper/coreAssets.json') +const ADDRESSES = require('./helper/coreAssets.json') const { request, gql } = require("graphql-request"); const graphUrl = From 2cedfa656974a19b9c52e3b60fb88b5973770029 Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 8 Feb 2024 21:57:46 +0000 Subject: [PATCH 0227/2004] fix syntatic bit --- projects/bitstable-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/bitstable-finance/index.js b/projects/bitstable-finance/index.js index 06f85d7ab13..db845956ec1 100644 --- a/projects/bitstable-finance/index.js +++ b/projects/bitstable-finance/index.js @@ -7,7 +7,7 @@ const { const owner = "0x103dd1184599c7511a3016E0a383E11F84AE7173"; const tokens = { ethereum: [ADDRESS.ethereum.USDT], - bsc: [ADDRESSES.ethereum.FDUSD], + bsc: [ADDRESS.ethereum.FDUSD], }; module.exports = { From fc027570f31cf608c66bc77cc66d81543ad3984b Mon Sep 17 00:00:00 2001 From: Define101 Date: Thu, 8 Feb 2024 22:35:25 +0000 Subject: [PATCH 0228/2004] fix inception commit #8900 --- projects/inception-lrt/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js index a66bf308af0..83f3d5c5158 100644 --- a/projects/inception-lrt/index.js +++ b/projects/inception-lrt/index.js @@ -1,7 +1,9 @@ async function tvl(_, _b, _cb, { api, }) { const vaults = ['0x36B429439AB227fAB170A4dFb3321741c8815e55', '0xfE715358368416E01d3A961D3a037b7359735d5e', '0x90E80E25ABDB6205B08DeBa29a87f7eb039023C2', '0x4878F636A9Aa314B776Ac51A25021C44CAF86bEd', '0xA9F8c770661BeE8DF2D026edB1Cb6FF763C780FF', '0x1Aa53BC4Beb82aDf7f5EDEE9e3bBF3434aD59F12', '0x814CC6B8fd2555845541FB843f37418b05977d8d', '0xc4181dC7BB31453C4A48689ce0CBe975e495321c', '0xC0660932C5dCaD4A1409b7975d147203B1e9A2B6', '0x6E17a8b5D33e6DBdB9fC61d758BF554b6AD93322', '0x295234B7E370a5Db2D2447aCA83bc7448f151161', '0xd0ee89d82183D7Ddaef14C6b4fC0AA742F426355'] - const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: vaults, permitFailure: true}) - bals.forEach(i => api.addGasToken(i ?? 0)) + const total_deposited = await api.multiCall({ abi: 'uint256:getTotalDeposited', calls: vaults, permitFailure: true}) + const total_withdraw = await api.multiCall({ abi: 'uint256:totalAmountToWithdraw', calls: vaults, permitFailure: true}) + const result = total_deposited.map((deposited, index) => deposited - total_withdraw[index]); + result.forEach(i => api.addGasToken(i ?? 0)) } module.exports = { From a742a337489d3c641f7034a0c8672189987494e6 Mon Sep 17 00:00:00 2001 From: EVMlord <85406816+EVMlord@users.noreply.github.com> Date: Fri, 9 Feb 2024 02:12:14 +0100 Subject: [PATCH 0229/2004] Track Omnidrome TVL (#8901) --- projects/Omnidrome/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/Omnidrome/index.js diff --git a/projects/Omnidrome/index.js b/projects/Omnidrome/index.js new file mode 100644 index 00000000000..f5fc9886821 --- /dev/null +++ b/projects/Omnidrome/index.js @@ -0,0 +1,11 @@ +const { uniTvlExport } = require('../helper/calculateUniTvl.js') + +module.exports = { + misrepresentedTokens: true, + zeta: { + tvl: uniTvlExport("0x769d1BcB5FDf30F5a9D19f1ab8A3cF8b60a6e855", undefined, undefined, { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, { fetchBalances: true, useDefaultCoreAssets: true, hasStablePools: true, }), + }, +} From 21f85e0f1a2458dd693974c58bbbc279130ecb78 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Fri, 9 Feb 2024 06:45:24 +0530 Subject: [PATCH 0230/2004] TVL for core pools (#8903) --- projects/eddyfinance/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/eddyfinance/index.js diff --git a/projects/eddyfinance/index.js b/projects/eddyfinance/index.js new file mode 100644 index 00000000000..6b155c1b7fa --- /dev/null +++ b/projects/eddyfinance/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1)' + +const zetaTVL = getUniTVL({ factory: '0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c', abis: { getReserves } }) + +module.exports = { + zeta: { tvl: zetaTVL }, +}; \ No newline at end of file From 6d0fb75cf14fb784af1aa6a946bd2326a4f8439d Mon Sep 17 00:00:00 2001 From: Phil <30321052+philipjames44@users.noreply.github.com> Date: Thu, 8 Feb 2024 18:16:51 -0700 Subject: [PATCH 0231/2004] Sommelier: Add Turbo eETH V2 vault (#8906) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults * Sommelier: Add Turbo eETH V2 * Sommelier: Add Turbo eETH V2 vault --- projects/sommelier/cellar-constants.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index 8575cfc63cd..e51492f68fe 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -54,6 +54,7 @@ const TURBO_STETH_STETH_DEPOSIT = "0xc7372Ab5dd315606dB799246E8aA112405abAeFf"; const MORPHO_MAXIMIZER = "0xcf4b531b4cde95bd35d71926e09b2b54c564f5b6"; const TURBO_DIVETH = "0x6c1edce139291Af5b84fB1e496c9747F83E876c9"; const TURBO_ETHX = "0x19B8D8FC682fC56FbB42653F68c7d48Dd3fe597E"; +const TURBO_EETH_V2 = "0xdAdC82e26b3739750E036dFd9dEfd3eD459b877A"; const cellarsV2p5 = [ { id: TURBO_SWETH, startBlock: 17910374 }, @@ -66,6 +67,7 @@ const cellarsV2p5 = [ { id: MORPHO_MAXIMIZER, startBlock: 19103256 }, { id: TURBO_DIVETH, startBlock: 19117472 }, { id: TURBO_ETHX, startBlock: 19117547 }, + { id: TURBO_EETH_V2, startBlock: 19163705 }, ]; module.exports = { From eb3dd6bf93efac5f67f236324ab3a602578f4e2b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 9 Feb 2024 05:54:30 +0000 Subject: [PATCH 0232/2004] add tezfin adapter --- projects/tezfin/index.js | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 projects/tezfin/index.js diff --git a/projects/tezfin/index.js b/projects/tezfin/index.js new file mode 100644 index 00000000000..727d5a792f4 --- /dev/null +++ b/projects/tezfin/index.js @@ -0,0 +1,51 @@ +const sdk = require("@defillama/sdk"); +const { getStorage, sumTokens2 } = require("../helper/chain/tezos"); + +async function tvl() { + return sumTokens2({ + owners: [ + "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", + "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", + "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46" + ], + includeTezos: true, + }); +} + +async function borrowed() { + const borrowedTokensAddresses = [ + "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", + "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", + "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46" + ]; + + const balances = {}; + + for (const address of borrowedTokensAddresses) { + const storage = await getStorage(address); + let token_borrows = storage.totalBorrows; + let token_address = ''; + + if (storage.fa1_2_TokenAddress) { + token_address = storage.fa1_2_TokenAddress; + } else if (storage.fa2_TokenAddress) { + token_address = storage.fa2_TokenAddress; + } else { + token_address = "tezos"; + token_borrows = token_borrows / 1e6; // Divide by 1e6 if the token address is "tezos" + } + + sdk.util.sumSingleBalance(balances, `tezos:${token_address}`, token_borrows); + } + + return balances; +} + +module.exports = { + timetravel: false, + tezos: { + tvl, + borrowed, + }, + methodology: 'TVL counts the liquidity and reserves for each market. Borrowed amounts are calculated based on the total borrows from each contract address, with special handling for "tezos" to adjust for precision.', +}; \ No newline at end of file From 0bd79540078db6c2d60ccf6fdd22281ced6ed4d0 Mon Sep 17 00:00:00 2001 From: Define101 Date: Fri, 9 Feb 2024 10:51:17 +0000 Subject: [PATCH 0233/2004] move ethereum foundation own tokens --- projects/treasury/eth-foundation.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/treasury/eth-foundation.js b/projects/treasury/eth-foundation.js index dfc066dd96f..5b77d47aede 100644 --- a/projects/treasury/eth-foundation.js +++ b/projects/treasury/eth-foundation.js @@ -9,12 +9,11 @@ const ETH = ADDRESSES.null; module.exports = treasuryExports({ ethereum: { tokens: [ - nullAddress, ADDRESSES.ethereum.USDC, //USDC "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", //OMG ADDRESSES.ethereum.BNB, //BNB - WETH ], owners: [treasury], + ownTokens: [WETH, ETH], }, }) \ No newline at end of file From a328859a3d74a1c8227d8ac503828a3cfae2e2ce Mon Sep 17 00:00:00 2001 From: Define101 Date: Fri, 9 Feb 2024 14:30:28 +0000 Subject: [PATCH 0234/2004] revert commit 8915 --- projects/treasury/eth-foundation.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/treasury/eth-foundation.js b/projects/treasury/eth-foundation.js index 5b77d47aede..dfc066dd96f 100644 --- a/projects/treasury/eth-foundation.js +++ b/projects/treasury/eth-foundation.js @@ -9,11 +9,12 @@ const ETH = ADDRESSES.null; module.exports = treasuryExports({ ethereum: { tokens: [ + nullAddress, ADDRESSES.ethereum.USDC, //USDC "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", //OMG ADDRESSES.ethereum.BNB, //BNB + WETH ], owners: [treasury], - ownTokens: [WETH, ETH], }, }) \ No newline at end of file From a31becb29c77e26bf02bd51637ec2067e10730ea Mon Sep 17 00:00:00 2001 From: Lutro <76906369+lutr0@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:46:59 +0100 Subject: [PATCH 0235/2004] feat: add mantle to Gravita (#8917) --- projects/gravita-protocol/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/gravita-protocol/index.js b/projects/gravita-protocol/index.js index 164e3d20874..84b7aae065f 100644 --- a/projects/gravita-protocol/index.js +++ b/projects/gravita-protocol/index.js @@ -7,6 +7,7 @@ const ADMIN_ADDRESSES = { linea: "0xC8a25eA0Cbd92A6F787AeED8387E04559053a9f8", optimism: "0x326398De2dB419Ee39F97600a5eeE97093cf3B27", polygon_zkevm: "0x6b42581aC12F442503Dfb3dff2bC75ed83850637", + mantle: "0x4F39F12064D83F6Dd7A2BDb0D53aF8be560356A6", }; async function tvl(_, _1, _2, { api }) { From 2f3ff623643d840c55995b6b2c3792de0269c8c7 Mon Sep 17 00:00:00 2001 From: Nghia Pham <57862573+ngfam@users.noreply.github.com> Date: Fri, 9 Feb 2024 22:47:42 +0700 Subject: [PATCH 0236/2004] Added Pendle EETH TVL (#8919) --- projects/helper/coreAssets.json | 3 ++- projects/pendle/v2.js | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 0416007ccf6..4222e0e9bad 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -43,7 +43,8 @@ "sUSD": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", - "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409" + "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", + "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2" }, "fantom": { "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index 7188b66724e..45ba00479e5 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -2,7 +2,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const contracts = require("./contracts"); const { staking } = require("../helper/staking"); const { getLogs } = require("../helper/cache/getLogs"); -const steth = ADDRESSES.ethereum.STETH; +const bridgedAssets = [ADDRESSES.ethereum.STETH, ADDRESSES.ethereum.EETH]; const config = { ethereum: { factory: "0x27b1dacd74688af24a64bd3c9c1b143118740784", @@ -102,10 +102,13 @@ Object.keys(config).forEach((chain) => { api.add(v.uAsset.toLowerCase(), value); }); let balances = api.getBalances(); - const bridged = `${chain}:${steth}`; - if (bridged in balances) { - balances[steth] = balances[bridged]; - delete balances[bridged]; + + for(let bridgingToken of bridgedAssets){ + const bridged = `${chain}:${bridgingToken}`; + if (bridged in balances) { + balances[bridgingToken] = balances[bridged]; + delete balances[bridged]; + } } return balances; }, From 60583fe3a48a68fc49ca88c50f0c93418d0a022b Mon Sep 17 00:00:00 2001 From: "AndreyAverin_DSF.Finance_CTO" <122683424+dsf-cto@users.noreply.github.com> Date: Fri, 9 Feb 2024 22:53:56 +0700 Subject: [PATCH 0237/2004] Update index.js (#8914) * Update index.js Add old smart-contract * Update token addresses in DSF finance index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dsf-finance/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/dsf-finance/index.js b/projects/dsf-finance/index.js index 2a7087bb447..1088d2dfbaa 100644 --- a/projects/dsf-finance/index.js +++ b/projects/dsf-finance/index.js @@ -1,9 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') const DSF_Contract_usdLP = "0x22586ea4fdaa9ef012581109b336f0124530ae69"; +const DSF_Contract_Old_contract = "0x68837EefaA5852775928E9695079bF6444e99253"; async function ethTvl(timestamp, block, _, { 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 = { @@ -11,5 +13,8 @@ module.exports = { ethereum: { tvl: ethTvl, }, + hallmarks: [ + [Math.floor(new Date('2022-07-30')/1e3), 'The first smart contract was created'], + ], methodology: "Total value of digital assets that are locked in DSF.Finance Omnipools", }; From e3903aa9b6c496584e8c0c25d75c9b4679035f56 Mon Sep 17 00:00:00 2001 From: Elliot Shiu Date: Fri, 9 Feb 2024 07:57:48 -0800 Subject: [PATCH 0238/2004] arcadexyz: update subgraph url (#8913) --- projects/arcade-xyz/constants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/arcade-xyz/constants.js b/projects/arcade-xyz/constants.js index d39f2bb8e7a..fc07a6d76c6 100644 --- a/projects/arcade-xyz/constants.js +++ b/projects/arcade-xyz/constants.js @@ -1,4 +1,4 @@ -const SUBGRAPH_URL = 'https://protocol-sg.arcade.xyz/subgraphs/name/arcade/protocol'; +const SUBGRAPH_URL = 'https://subgraph.satsuma-prod.com/c59d37e827d0/non-fungible-technologies/protocol/api'; const CHAIN = 'ethereum'; // V2 Protocol From 406880a7bbd8559bb046a3b5279729eecc4a3fd1 Mon Sep 17 00:00:00 2001 From: lesterli Date: Sat, 10 Feb 2024 00:00:01 +0800 Subject: [PATCH 0239/2004] add octopus network (#8912) Co-authored-by: xsb <389483673@qq.com> --- projects/octopus-network.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/octopus-network.js diff --git a/projects/octopus-network.js b/projects/octopus-network.js new file mode 100644 index 00000000000..3c163d41b29 --- /dev/null +++ b/projects/octopus-network.js @@ -0,0 +1,22 @@ +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, + }, +}; From 703ad954ce2b2250d87f44f6b99fdd3143c34aa9 Mon Sep 17 00:00:00 2001 From: MD <0xhyoga@cygnusdao.finance> Date: Fri, 9 Feb 2024 17:07:25 +0100 Subject: [PATCH 0240/2004] add cygnusdao on zkevm (#8911) * add cygnusdao on zkevm * adding borrows for cygnus on zkevm * Refactor CygnusDAO index.js file --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cygnusdao/index.js | 16 +++++----------- projects/helper/coreAssets.json | 3 ++- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/projects/cygnusdao/index.js b/projects/cygnusdao/index.js index 11d80b57737..3aa5ed0655b 100644 --- a/projects/cygnusdao/index.js +++ b/projects/cygnusdao/index.js @@ -2,13 +2,13 @@ const FACTORY_CONTRACT = "0x8796747946871B6b8ea495CCE8d7814b17959296"; const vaultAbi = require('../charmfinance/vaultAbi.json') const { getLogs } = require('../helper/cache/getLogs'); const { getUniqueAddresses } = require("@defillama/sdk/build/generalUtil"); -const ADDRESSES = require('../helper/coreAssets.json') async function tvl(timestamp, block, _, { 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({ @@ -40,24 +40,18 @@ async function tvl(timestamp, block, _, { api }) { api.add(tokens0s[idx], hypervisorBals[idx][0] * ratio) api.add(tokens1s[idx], hypervisorBals[idx][1] * ratio) }) - // const tvls= await api.fetchList({ lengthAbi: abi.shuttlesDeployed, itemAbi: abi.shuttleTvlUsd, target: FACTORY_CONTRACT, startFrom: 2, }) - // tvls.forEach(i => api.add(ADDRESSES.polygon.USDC, i)) } async function borrowed(_, _b, _cb, { api, }) { - api.add(ADDRESSES.polygon.USDC, await api.call({ abi: 'uint256:cygnusTotalBorrows', target: FACTORY_CONTRACT })) - api.add(ADDRESSES.arbitrum.USDC, await api.call({ abi: 'uint256:cygnusTotalBorrows', target: FACTORY_CONTRACT })) + 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, - }, + arbitrum: { tvl, borrowed, }, + polygon: { tvl, borrowed, }, + polygon_zkevm: { tvl, borrowed, } }; diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 4222e0e9bad..af9ce989117 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1293,7 +1293,8 @@ }, "polygon_zkevm": { "WETH": "0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9", - "USDC": "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035" + "USDC": "0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035", + "USDC_CIRCLE": "0x37eaa0ef3549a5bb7d431be78a3d99bd360d19e5" }, "eos_evm": { "WEOS": "0xc00592aA41D32D137dC480d9f6d0Df19b860104F", From 12ad25a86d056e7417301459638657945806fd84 Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Fri, 9 Feb 2024 11:14:02 -0500 Subject: [PATCH 0241/2004] Add fantom equalizer vaults to tvl calculations (#8910) * Add opBNB vaults * Add Fantom Equalizer vaults to tvl --------- Co-authored-by: Tatyana Stemkovski --- projects/ichifarm/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index 0ca7e3774d7..cba1fa1681b 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -63,6 +63,11 @@ const config = { { factory: '0x8a76c26E0089111989C14EF56b9733aa38B94148', fromBlock: 20999423, isAlgebra: false, }, // zkSync Era ] }, + fantom: { + vaultConfigs: [ + { factory: '0x932E1908461De58b0891E5022431dc995Cb95C5E', fromBlock: 74304207, isAlgebra: false, }, // Equalizer + ] + }, linea: { vaultConfigs: [ { factory: '0x0248b992ac2a75294b05286E9DD3A2bD3C9CFE4B', fromBlock: 1599561, isAlgebra: true, }, // Lynex From d0ece560766330cc8ba9a72288259d496c4bbc70 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Feb 2024 17:23:09 +0100 Subject: [PATCH 0242/2004] Add staking functionality to omax-swap --- projects/omax-swap/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/omax-swap/index.js b/projects/omax-swap/index.js index f85c30e5817..92713a299e8 100644 --- a/projects/omax-swap/index.js +++ b/projects/omax-swap/index.js @@ -1,3 +1,11 @@ const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('omax', '0x441b9333D1D1ccAd27f2755e69d24E60c9d8F9CF') \ No newline at end of file +module.exports = uniTvlExport('omax', '0x441b9333D1D1ccAd27f2755e69d24E60c9d8F9CF') +module.exports.omax.staking = staking + +const ADDRESSES = require("../helper/coreAssets.json"); +const stakingContractAddress = '0x3A2DcDc705031eDBD94254ef7CEFB93D8066cC8D' + +async function staking(_, _1, _2, { api }) { + return api.sumTokens({ owner: stakingContractAddress, tokens: [ADDRESSES.null]}); +} \ No newline at end of file From 22277f7ab2c06715e50ef1972c80a587c27eb9d3 Mon Sep 17 00:00:00 2001 From: amydlarz Date: Fri, 9 Feb 2024 17:27:00 +0100 Subject: [PATCH 0243/2004] IPOR Protocol - add Arbitrum chain tvl (#8898) --- projects/ipor/index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/projects/ipor/index.js b/projects/ipor/index.js index 9b03ce067b8..727cc47b64b 100644 --- a/projects/ipor/index.js +++ b/projects/ipor/index.js @@ -3,13 +3,17 @@ const { abi } = require("./abi"); const V2DeploymentBlockNumber = 18333744 -async function tvl(_, block, _1, { api }) { +async function tvlEthereum(_, block, _1, { api }) { if (block >= V2DeploymentBlockNumber) { return await calculateTvlForV2(api); } else { return await calculateTvlForV1(api); } } +async function tvlArbitrum(_, block, _1, {api}) { + const ammTreasuryWstEthArbitrum = '0xBd013Ea2E01C2Ab3462dd67e9C83aa3834882A5D' + return api.sumTokens({owner: ammTreasuryWstEthArbitrum, tokens: [ADDRESSES.arbitrum.WSTETH]}) +} async function calculateTvlForV2(api) { const assets = [ @@ -55,6 +59,9 @@ async function calculateTvlForV1(api) { 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 + tvl: tvlEthereum + }, + arbitrum: { + tvl: tvlArbitrum } }; From 33bf816c9daa3b408eea3fdc9d4188a34135cad9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Feb 2024 17:40:00 +0100 Subject: [PATCH 0244/2004] Omni-1 (#8921) * feat:Add omni project * Update token mappings and TVL calculations --------- Co-authored-by: cheng --- projects/helper/tokenMapping.js | 12 ++++++++++++ projects/omni/index.js | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 projects/omni/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 672fa1c854a..8c915f35c90 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -50,6 +50,18 @@ const fixBalancesTokens = { }, kujira: { 'factory:kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t:ufuzn': { coingeckoId: 'fuzion', decimals: 6 }, + }, + astar: { + '0xffffffff00000000000000010000000000000010': { coingeckoId: 'astar', decimals:18 }, + }, + moonriver: { + '0xffffffff98e37bf6a393504b5adc5b53b4d0ba11': { coingeckoId: 'moonriver', decimals: 18 }, + '0xffffffff3646a00f78cadf8883c5a2791bfcddc4': { coingeckoId: 'bifrost-native-coin', decimals: 12 }, + '0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe': { coingeckoId: 'kusama', decimals: 12 }, + }, + moonbeam: { + '0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c': { coingeckoId: 'voucher-glmr', decimals: 18 }, + '0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1': { coingeckoId: 'filecoin', decimals: 18 }, } } diff --git a/projects/omni/index.js b/projects/omni/index.js new file mode 100644 index 00000000000..7edb0da0f03 --- /dev/null +++ b/projects/omni/index.js @@ -0,0 +1,34 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + timetravel: false, +}; + +const config = { + astar: [ + "0xFfFfFfff00000000000000010000000000000008", + "0xfffFffff00000000000000010000000000000010", + ], + moonbeam: [ + "0xFFFfffFf15e1b7E3dF971DD813Bc394deB899aBf", + "0xFfFfFFff99dABE1a8De0EA22bAa6FD48fdE96F6c", + "0xFffffFffCd0aD0EA6576B7b285295c85E94cf4c1", + ], + moonriver: [ + "0xFFffffff3646A00f78caDf8883c5A2791BfCDdc4", + "0xFFffffFFC6DEec7Fc8B11A2C8ddE9a59F8c62EFe", + "0xfFfffFfF98e37bF6a393504b5aDC5B53B4D0ba11", + ], +} + + +Object.keys(config).forEach(chain => { + const tokens = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) + api.add(tokens, supplies) + return sumTokens2({ api }) + } + } +}) \ No newline at end of file From 9f0eafe8619adc86036ecd9d7cbc0805cb61549f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Feb 2024 18:53:42 +0100 Subject: [PATCH 0245/2004] track merlin chain tvl --- projects/helper/tokenMapping.js | 5 +++++ projects/merlin-l2/index.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 projects/merlin-l2/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8c915f35c90..361f84156d0 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -41,6 +41,11 @@ const fixBalancesTokens = { bitcoin: { BSSB: { coingeckoId: 'bitstable-finance', decimals: 0 }, MUBI: { coingeckoId: 'multibit', decimals: 0 }, + rats: { coingeckoId: 'rats', decimals: 0 }, + BTCs: { coingeckoId: 'btcs', decimals: 0 }, + BTCs: { coingeckoId: 'btcs', decimals: 0 }, + MMSS: { coingeckoId: 'mmss', decimals: 0 }, + AINN: { coingeckoId: 'artificial-neural-network-ordinals', decimals: 0 }, }, btn: { '0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58': { coingeckoId: 'bitnet', decimals: 18 }, diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js new file mode 100644 index 00000000000..029921e107e --- /dev/null +++ b/projects/merlin-l2/index.js @@ -0,0 +1,29 @@ +const sdk = require('@defillama/sdk') +const { sumTokensExport: sumBRC20TokensExport, } = require("../helper/chain/brc20"); +const { sumTokensExport } = require('../helper/sumTokens') + +// 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 +const owners = [ + "bc1qtu66zfqxj6pam6e0zunwnggh87f5pjr7vdr5cd", + "15zVuow5e9Zwj4nTrxSH3Rvupk32wiKEsr", + "bc1q4gfsheqz7ll2wdgfwjh2l5hhr45ytc4ekgxaex", + "bc1qua5y9yhknpysslxypd4dahagj9jamf90x4v90x", + "bc1qm64dsdz853ntzwleqsrdt5p53w75zfrtnmyzcx", + "1EEU18ZvWrbMxdXEuqdii6goDKbAbaXiA1", + "bc1qptgujmlkez7e6744yctzjgztu0st372mxs6702", + "16LDby5cWxzQqTFJrA1DDmbwABumCQHteG", + "bc1qq3c6kehun66sdek3q0wmu540n3vg0hgrekkjce", + "124SzTv3bBXZVPz2Li9ADs9oz4zCfT3VmM", + "bc1qyqt9zs42qmyf373k7yvy0t3askxd927v304xlv", +] + +module.exports = { + methodology: "Staking tokens via BitStable counts as TVL", + bitcoin: { + tvl: sdk.util.sumChainTvls([ + sumTokensExport({ owners }), + sumBRC20TokensExport({ owners }), + ]), + }, +}; From 6d0751ee7e5645a02b1319e291549afadd585409 Mon Sep 17 00:00:00 2001 From: defininja <91393134+defininja@users.noreply.github.com> Date: Sat, 10 Feb 2024 00:03:37 +0530 Subject: [PATCH 0246/2004] Adding New Farm TVL (#8920) * new farm tvl * Update ABI files for Planet Finance --------- Co-authored-by: defininja Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/planet-finance/abiNew.json | 9 ++ projects/planet-finance/abiV3.json | 12 +++ projects/planet-finance/index.js | 122 +++++++++------------------- projects/planet-green/index.js | 2 +- 4 files changed, 59 insertions(+), 86 deletions(-) create mode 100644 projects/planet-finance/abiNew.json create mode 100644 projects/planet-finance/abiV3.json diff --git a/projects/planet-finance/abiNew.json b/projects/planet-finance/abiNew.json new file mode 100644 index 00000000000..ea311f415e0 --- /dev/null +++ b/projects/planet-finance/abiNew.json @@ -0,0 +1,9 @@ +{ + "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 new file mode 100644 index 00000000000..9950acc8aaf --- /dev/null +++ b/projects/planet-finance/abiV3.json @@ -0,0 +1,12 @@ +{ + "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 index 0d49445c62f..d8f99469526 100644 --- a/projects/planet-finance/index.js +++ b/projects/planet-finance/index.js @@ -1,101 +1,53 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); +const abiV3 = require("./abiV3.json"); +const abiNew = require("./abiNew.json"); +const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking.js"); -const { getPoolInfo } = require("../helper/masterchef.js"); - -const replacements = { - [ADDRESSES.bsc.beltBNB]: - ADDRESSES.bsc.WBNB, //beltBNB -> wbnb - [ADDRESSES.bsc.Belt4]: - ADDRESSES.bsc.USDT, // 4belt -> usdt - [ADDRESSES.bsc.beltBTC]: - ADDRESSES.bsc.BTCB, //beltBTC-> - [ADDRESSES.bsc.beltETH]: - ADDRESSES.bsc.ETH, //beltETH-> -}; // liquidity pools -async function tvl(timestamp, ethBlock, chainBlocks) { - let balances = {}; - const lps = []; - const transform = i => `bsc:${i}`; - - const [poolInfo1, poolInfo2] = await Promise.all([ - await getPoolInfo( - "0x0ac58Fd25f334975b1B61732CF79564b6200A933", - chainBlocks.bsc, - "bsc", - abi.poolInfo - ), // aquaFarm - await getPoolInfo( - "0xB87F7016585510505478D1d160BDf76c1f41b53d", - chainBlocks.bsc, - "bsc", - abi.poolInfo - ), // newFarm - ]); - const allPoolInfos = poolInfo1.concat(poolInfo2); - - const [poolTvl, wantSymbol] = await Promise.all([ - sdk.api.abi.multiCall({ - calls: allPoolInfos.map(p => ({ - target: p.output.strat - })), - abi: abi.wantLockedTotal, - chain: "bsc", - block: chainBlocks.bsc, - }), - sdk.api.abi.multiCall({ - calls: allPoolInfos.map(p => ({ - target: p.output.want - })), - abi: "erc20:symbol", - chain: "bsc", - block: chainBlocks.bsc, - }) - ]); - - for (let i = 0; i < poolTvl.output.length; i++) { - if (wantSymbol.output[i].output.endsWith("LP")) { - lps.push({ - token: allPoolInfos[i].output.want, - balance: poolTvl.output[i].output, - }); - +async function tvl(timestamp, ethBlock, chainBlocks, { 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() !== "0x0000000000000000000000000000000000000000".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 { - const addr = replacements[allPoolInfos[i].output.want] - ?? allPoolInfos[i].output.want; - sdk.util.sumSingleBalance( - balances, - transform(addr), - poolTvl.output[i].output - ); + 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) } - await unwrapUniswapLPs( - balances, - lps, - chainBlocks.bsc, - "bsc", - transform - ); - - return balances; + return sumTokens2({ api, resolveLP: true, }) } - -// node test.js projects/planet-finance/index.js module.exports = { doublecounted: true, bsc: { tvl, - staking: staking( - "0xb7eD4A5AF620B52022fb26035C565277035d4FD7", - "0x72B7D61E8fC8cF971960DD9cfA59B8C829D91991", - "bsc", - ) + staking: staking("0x60A895073AdC0e5F5a22C60bdfc584D79B5219a1", "0xb3cb6d2f8f2fde203a022201c81a96c167607f15",) }, }; diff --git a/projects/planet-green/index.js b/projects/planet-green/index.js index ecc94e63a85..f798ee1ef5a 100644 --- a/projects/planet-green/index.js +++ b/projects/planet-green/index.js @@ -20,7 +20,7 @@ const compoundTVL2 = compoundExports( ADDRESSES.bsc.WBNB ) -// node test.js projects/green-planet/index.js +// node test.js projects/planet-green/index.js module.exports = mergeExports([ {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.. 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."}, { bsc: { From 6e8baf459136d4be979e18326e8f9b6ba777124a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:09:24 +0100 Subject: [PATCH 0247/2004] Add mode configuration to poolshark --- projects/poolshark/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/poolshark/index.js b/projects/poolshark/index.js index 875490c81be..5342dee01ac 100644 --- a/projects/poolshark/index.js +++ b/projects/poolshark/index.js @@ -4,6 +4,7 @@ const { getLogs } = require('../helper/cache/getLogs') const config = { arbitrum: { limitPoolFactory: '0x8bb5db1625adb4ae4beb94a188d33062303f8fb7', limitPoolFromBlock: 158864748 }, scroll: { limitPoolFactory: '0x3FA761492f411EBC64A81FCf3292fdC0b677c00f', limitPoolFromBlock: 2632885 }, + mode: { limitPoolFactory: '0x3FA761492f411EBC64A81FCf3292fdC0b677c00f', limitPoolFromBlock: 3371958 }, } Object.keys(config).forEach(chain => { From 9631c96f3811cdb5131e3ec89304078d24ac9f73 Mon Sep 17 00:00:00 2001 From: chabana758 <157071461+chabana758@users.noreply.github.com> Date: Sat, 10 Feb 2024 06:12:27 +1000 Subject: [PATCH 0248/2004] Update aquarius loan tvl on arbitrum (#8922) --- projects/aquarius-loan/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/aquarius-loan/index.js b/projects/aquarius-loan/index.js index ed95b861842..0612d8804f2 100644 --- a/projects/aquarius-loan/index.js +++ b/projects/aquarius-loan/index.js @@ -2,6 +2,7 @@ const { compoundExports2 } = require("../helper/compound"); const { stakingUnknownPricedLP } = require('../helper/staking') module.exports = { + arbitrum: compoundExports2({ comptroller: '0xf854c6b57e6d8ec3e790ec6da1a13060d19549d4', cether: '0x13f9a7f33550fe935bf7b544e536584d30ecf50a'}), core: compoundExports2({ comptroller: '0x6056Eb6a5634468647B8cB892d3DaA5F816939FC', cether: '0x03ef96f537a7cda4411c8643afd9d8814d5b4906'}) }; From 5357c0ee701bbf6ebec4adbf783cc0c6d47f5630 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 9 Feb 2024 21:12:54 +0100 Subject: [PATCH 0249/2004] Remove duplicate token mapping for BTCs --- projects/helper/tokenMapping.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 361f84156d0..2523386241b 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -43,7 +43,6 @@ const fixBalancesTokens = { MUBI: { coingeckoId: 'multibit', decimals: 0 }, rats: { coingeckoId: 'rats', decimals: 0 }, BTCs: { coingeckoId: 'btcs', decimals: 0 }, - BTCs: { coingeckoId: 'btcs', decimals: 0 }, MMSS: { coingeckoId: 'mmss', decimals: 0 }, AINN: { coingeckoId: 'artificial-neural-network-ordinals', decimals: 0 }, }, From e721a5c2155b629a7264f672191fc953bad417b7 Mon Sep 17 00:00:00 2001 From: Kashew <42247026+youngkashew@users.noreply.github.com> Date: Sun, 11 Feb 2024 03:45:33 +0800 Subject: [PATCH 0250/2004] add sAVAX/AVAX autopool vaults to Struct Finance TVL (#8926) * add sAVAX token address to coreAssets.json * add sAVAX/AVAX autovault metadata to constants.js * add sAVAX to sumTokens2 --- projects/helper/coreAssets.json | 1 + projects/struct-finance/constants.js | 8 ++++++++ projects/struct-finance/index.js | 1 + 3 files changed, 10 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index af9ce989117..501bf726f7e 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -74,6 +74,7 @@ }, "avax": { "WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + "SAVAX": "0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be", "USDC": "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e", "EURC": "0xc891eb4cbdeff6e073e859e987815ed1505c2acd", "DAI": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", diff --git a/projects/struct-finance/constants.js b/projects/struct-finance/constants.js index 4fcffbbf821..a8a3e02c1a5 100644 --- a/projects/struct-finance/constants.js +++ b/projects/struct-finance/constants.js @@ -17,6 +17,7 @@ const addresses = { yieldSourceAvaxBtcb: "0x736A826cF94dA966EE8ea924c5F0D079Bb25691d", yieldSourceAvaxWeth: "0x3BAf708e49669d54753366Bec0e77f112CF76662", yieldSourceEurcUsdc: "0xB35C3e0A1B889f6eC4e8e2bFFC8fE792FCF85884", + yieldSourceSavaxAvax: "0x8696F212D12FdFbfFD40209Fd926c3E45e62DA28", factory: "0x269B0AA870f1257DE00fA7E786Fd07d46cE8d26b", }, }, @@ -29,6 +30,7 @@ const addresses = { avaxBtcbAutovault: "0x1C739A43606794849750C50bC7C43FBbDAcdf801", avaxWetheAutovault: "0x6178dE6E552055862CF5c56310763EeC0145688d", eurcUsdcAutovault: "0x052AF5B8aC73082D8c4C8202bB21F4531A51DC73", + savaxAvaxAutovault: "0xF812a978A08F370b9AB358a620377c0A261AA403", }, }, }; @@ -58,6 +60,12 @@ const autopoolsMetaData = { 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, + }, }; const aptFarmUserInfoCalls = Object.values(autopoolsMetaData).map( diff --git a/projects/struct-finance/index.js b/projects/struct-finance/index.js index ea60dfe31de..0fe03140b79 100644 --- a/projects/struct-finance/index.js +++ b/projects/struct-finance/index.js @@ -52,6 +52,7 @@ async function tvl(ts, _, __, { api }) { ADDRESSES.avax.WETH_e, ADDRESSES.avax.EURC, ADDRESSES.avax.WAVAX, + ADDRESSES.avax.SAVAX, addresses.token.gmx.fsGlp, ], }); From 15d24f4b455b73dcccb3091f236130a148abfdbc Mon Sep 17 00:00:00 2001 From: Define101 Date: Sun, 11 Feb 2024 11:47:27 +0000 Subject: [PATCH 0251/2004] add eth and arbitrum chain merlin --- projects/merlin-l2/index.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index 029921e107e..cca62e5b930 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -1,9 +1,8 @@ -const sdk = require('@defillama/sdk') -const { sumTokensExport: sumBRC20TokensExport, } = require("../helper/chain/brc20"); -const { sumTokensExport } = require('../helper/sumTokens') +const sdk = require('@defillama/sdk'); +const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); +const { sumTokensExport } = require('../helper/sumTokens'); -// 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 +// Owners' addresses for BRC20 tokens const owners = [ "bc1qtu66zfqxj6pam6e0zunwnggh87f5pjr7vdr5cd", "15zVuow5e9Zwj4nTrxSH3Rvupk32wiKEsr", @@ -16,7 +15,7 @@ const owners = [ "bc1qq3c6kehun66sdek3q0wmu540n3vg0hgrekkjce", "124SzTv3bBXZVPz2Li9ADs9oz4zCfT3VmM", "bc1qyqt9zs42qmyf373k7yvy0t3askxd927v304xlv", -] +]; module.exports = { methodology: "Staking tokens via BitStable counts as TVL", @@ -26,4 +25,25 @@ module.exports = { sumBRC20TokensExport({ owners }), ]), }, -}; + ethereum: { + tvl: sdk.util.sumChainTvls([ + sumTokensExport({ + owners: ["0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5"], + tokens: ["0x7122985656e38BDC0302Db86685bb972b145bD3C"], //sttone + doublecounted: true, + }), + sumTokensExport({ + owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], + tokens: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"] //usdc + }), + ]), + }, + arbitrum: { + tvl: sdk.util.sumChainTvls([ + sumTokensExport({ + owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], + tokens: ["0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] //usdc and usdt + }), + ]), + }, +}; \ No newline at end of file From 3997e384f1c51b4c936b17c8df929aac0a145a98 Mon Sep 17 00:00:00 2001 From: Define101 Date: Sun, 11 Feb 2024 11:48:16 +0000 Subject: [PATCH 0252/2004] more stuff --- projects/merlin-l2/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index cca62e5b930..e88f5826b27 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -2,7 +2,9 @@ const sdk = require('@defillama/sdk'); const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); const { sumTokensExport } = require('../helper/sumTokens'); -// Owners' addresses for BRC20 tokens +// 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 + const owners = [ "bc1qtu66zfqxj6pam6e0zunwnggh87f5pjr7vdr5cd", "15zVuow5e9Zwj4nTrxSH3Rvupk32wiKEsr", From 5ad11bf382a9581fa3bf2fff06812d2f5c787c7e Mon Sep 17 00:00:00 2001 From: Fahim Ahmed <68152521+fahimahmedx@users.noreply.github.com> Date: Sun, 11 Feb 2024 07:14:03 -0500 Subject: [PATCH 0253/2004] Add Fluidity's TVL on Solana (#8927) * Add Fluidity's TVL on Solana * update methodology on solana --- projects/fluidity-money/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/fluidity-money/index.js b/projects/fluidity-money/index.js index bc6b358e3cd..5143ca8761e 100644 --- a/projects/fluidity-money/index.js +++ b/projects/fluidity-money/index.js @@ -1,4 +1,5 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); +const { getTokenSupply } = require("../helper/solana") const ATOKENS_ETHEREUM = ['0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x101cc05f4A51C0319f570d5E146a8C625198e636', '0xd4937682df3C8aEF4FE912A96A74121C0829E664']; const APOOL_ETHEREUM = ['0xFC66c25dbDb0606e7F9cA1d2754Eb0A0f8306dA9', '0x5E88f6dc0aa126FA28A137B24d0B4d7231352a0B', '0xB7a2930e66D84Da74CdcFE4f97FaE9fC8f1114e8']; const ATOKENS_ARBITRUM = ['0x6ab707Aca953eDAeFBc4fD23bA73294241490620', '0x625E7708f30cA75bfd92586e17077590C60eb4cD', '0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE', '0x724dc807b04555b71ed48a6896b6f41593b8c637']; @@ -16,11 +17,21 @@ async function tvl_arb(timestamp, block, chainBlocks, { api }) { await sumTokens2({ api, tokensAndOwners2: [ATOKENS_ARBITRUM, APOOL_ARBITRUM] }) } +async function tvl_sol(timestamp, block, chainBlocks, { api }) { + const fUSDC = 'Ez2zVjw85tZan1ycnJ5PywNNxR6Gm4jbXQtZKyQNu3Lv' + const supply = await getTokenSupply(fUSDC) + api.add(fUSDC, supply * 1e6) +} + 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 From afc01273a6d73860ef4f3536e3a984cfa60e08b2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:18:25 +0100 Subject: [PATCH 0254/2004] Merlin l2: Refactor Ethereum and Arbitrum TVL calculation --- projects/merlin-l2/index.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index e88f5826b27..d65ade07044 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -28,24 +28,17 @@ module.exports = { ]), }, ethereum: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ - owners: ["0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5"], - tokens: ["0x7122985656e38BDC0302Db86685bb972b145bD3C"], //sttone - doublecounted: true, - }), - sumTokensExport({ - owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], - tokens: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"] //usdc - }), - ]), + tvl: sumTokensExport({ + ownerTokens: [ + [["0x7122985656e38BDC0302Db86685bb972b145bD3C"], "0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5",], //sttone + [["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183", //usdc + ]] + }), }, arbitrum: { - tvl: sdk.util.sumChainTvls([ - sumTokensExport({ - owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], - tokens: ["0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] //usdc and usdt - }), - ]), + tvl: sumTokensExport({ + owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], + tokens: ["0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] //usdc and usdt + }), }, }; \ No newline at end of file From 399308e9e8b562c172a6bcf3bafd1d19d002a985 Mon Sep 17 00:00:00 2001 From: Alejandro <84141043+0xDro@users.noreply.github.com> Date: Sun, 11 Feb 2024 08:45:19 -0500 Subject: [PATCH 0255/2004] track new stream vaults tvl (#8923) * add new vaults * Refactor TVL calculation and add support for multiple vaults --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/stream/abi.js | 6 +++-- projects/stream/index.js | 50 ++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/projects/stream/abi.js b/projects/stream/abi.js index 59be2467e3b..d3fe5946d8c 100644 --- a/projects/stream/abi.js +++ b/projects/stream/abi.js @@ -1,4 +1,6 @@ module.exports = { - currentExchangeRate: - "function currentExchangeRate() view returns (uint256 vaultToken, uint256 baseToken)", + 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" }; + diff --git a/projects/stream/index.js b/projects/stream/index.js index 2c07821302f..88c1c204bf8 100644 --- a/projects/stream/index.js +++ b/projects/stream/index.js @@ -1,40 +1,36 @@ -const sdk = require("@defillama/sdk"); const abi = require("./abi.js"); +const ADDRESSES = require("../helper/coreAssets.json"); + const USDW4_TOKEN_CONTRACT = "0xadf789e61bf38c463e4ba5b2b6e9c1af6659e11b"; + +const vaults = Object.values({ + LEVUSDC_VAULT_CONTRACT: "0xf3b466F09ef476E311Ce275407Cfb09a8D8De3a7", + HODLWBTC_VAULT_CONTRACT: "0x6efa12b38038A6249B7aBdd5a047D211fB0aD48E", + HODLWETH_VAULT_CONTRACT: "0x2a2f84e9AfE7b39146CDaF068b06b84EE23892c2", +}) + const TBILL_VAULT_CLUB_BOND_CONTRACT = "0xd86FFB404147163e19E010a0e9d4995E0e36F335"; async function tvl(_, _1, _2, { api }) { - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: USDW4_TOKEN_CONTRACT, - }); - - const decimals = await api.call({ - abi: "erc20:decimals", - target: USDW4_TOKEN_CONTRACT, - }); - - const vaultBalance = await api.call({ - abi: "erc20:balanceOf", - target: USDW4_TOKEN_CONTRACT, - params: [TBILL_VAULT_CLUB_BOND_CONTRACT], - }); - - const { vaultToken, baseToken } = await api.call({ - abi: abi.currentExchangeRate, - target: TBILL_VAULT_CLUB_BOND_CONTRACT, - }); - - return { - "usd-coin": - (totalSupply - vaultBalance) / (vaultToken / baseToken) / 10 ** decimals, - }; + const bals = await api.multiCall({ abi: abi.totalBalance, calls: vaults}) + const vaultParams = await api.multiCall({ abi: abi.vaultParams, calls: vaults}) + const tokens = vaultParams.map(i => i.asset) + api.addTokens(tokens, bals) + + const usdw4_totalSupply = await api.call({ abi: "erc20:totalSupply", target: USDW4_TOKEN_CONTRACT, }); + const usdw4_decimals = await api.call({ abi: "erc20:decimals", target: USDW4_TOKEN_CONTRACT, }); + const usdw4_vaultBalance = await api.call({ abi: "erc20:balanceOf", target: USDW4_TOKEN_CONTRACT, params: [TBILL_VAULT_CLUB_BOND_CONTRACT], }); + + const { vaultToken, baseToken } = await api.call({ abi: abi.currentExchangeRate, target: TBILL_VAULT_CLUB_BOND_CONTRACT, }); + + const usdw4_total = (usdw4_totalSupply - usdw4_vaultBalance) / (vaultToken / baseToken) / 10 ** (usdw4_decimals - 6); + api.add(ADDRESSES.ethereum.USDC, usdw4_total) } module.exports = { misrepresentedTokens: true, - methodology: "Calculates the TVL of the General Purpose T-Bills Vault.", + methodology: "Calculates the TVL of all Stream vaults", start: 16685700, ethereum: { tvl, From 67be9491844cd9cccbe15f5d5f7789fb3adfd101 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 11 Feb 2024 16:35:28 +0100 Subject: [PATCH 0256/2004] Savvy (#8931) * feat: automate token list via RPC (hard coded underlying tokens for wrapped token) * chore: clean code * automatatic tvl * capture wrapped yield tokens * code refactor --------- Co-authored-by: maxpen00 Co-authored-by: daiki saito Co-authored-by: Akshay Gupta --- projects/savvy/contracts.json | 46 +------------------------------- projects/savvy/index.js | 49 +++++++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 53 deletions(-) diff --git a/projects/savvy/contracts.json b/projects/savvy/contracts.json index 3b874ce1afb..662fb38139e 100644 --- a/projects/savvy/contracts.json +++ b/projects/savvy/contracts.json @@ -1,53 +1,9 @@ { "infoAggregator": "0x68D54ff41BA47355b95Bd477Bcf4d5ff4b2c2A59", - "tokenHolders": { - "SavvyPositionManagerBTC": "0x3204d81C73F8100766C1691A67078b16Ec7c142c", - "SavvyPositionManagerETH": "0x5c4eb1909fB21e39Fc45ee753420AeDeBA07F3EF", - "SavvyPositionManagerUSD": "0x36358A1597DB299033b16fda567010D53c0A4EdA", - "YieldStrategyManagerBTC": "0xdC82E20111767f4a2A76A65BD85E41F7859c7b9f", - "YieldStrategyManagerETH": "0x23627eb1C6692Adf25AD79285FDe2bc6bdf12C82", - "YieldStrategyManagerUSD": "0x09Dde6661fd023cf7c3751555347a5cB8687F806", - "SavvySwapWETH": "0xb5231e17596bEAf436A25B018bd63e5b42e14135", - "SavvySwapBTCb": "0x43be188901F529c11337f28bC1F753a878B2F691", - "SavvySwapWBTC": "0x9A3A3ba687Fcb8AFE6367Eff3A5F5A11F51626DA", - "SavvySwapUSDCe": "0xD9565AB01AA30D7Aa2b982b8b1c740480C1C8497", - "SavvySwapUSDT": "0x0E56d518E5d3F5e6cFCfD46095B6B4024541027b", - "SavvySwapDAI": "0x03fA5a7fA80E5EA464559d21B8843E15b7969c07", - "SavvySageBTC": "0x2fcCd0f67d0722f5EB7c1A404DFF0224544155E3", - "SavvySageETH": "0xCd5156Fdd53fD9A0f5bfc37B212DD9c989C10533", - "SavvySageUSD": "0x78A370c3d5fFF93Da53a2B088a117244c52AF857", - "AaveUSDCAdapter": "0xCdFF8576683E22621f512fc2E6d347A9D241DAd3", - "AaveWETHAdapter": "0xCaB3886D48bAd0F749ba7e7c7A255b636c64F937", - "AaveWBTCAdapter": "0xDD7e69c478288A9596DECc2230A39c7b922413Dd", - "JonesUSDCAdapter": "0x32157bEE957411EDf2648ED2Bc184B15f2Fe8d1C", - "GmdUSDCAdapter": "0xbf8Aa25aD262AaA3D875034412ea080Ff1144cda", - "GmdETHAdapter": "0x7628B50765C9D407058b2262b04Cf5E69b5e59D3", - "GmdBTCAdapter": "0x43e6ecb5C17B069fdc61456Fb1E12B295Ab8591B" - - }, "savvyTokens": { "SVY": "0x43aB8f7d2A8Dd4102cCEA6b438F6d747b1B9F034", "svUSD": "0xF202Ab403Cd7E90197ec0f010ee897E283037706", "svBTC": "0xeEE18334c414A47FB886a7317E1885b2Bfb8c2A6", "svETH": "0xf7728582002ef82908c8242CF552E969BA863Ffa" - }, - "baseTokens": { - "WETH": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "WBTC": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - "USDCe": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "USDC": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - "USDT": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", - "DAI": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "BTCb": "0x2297aEbD383787A160DD0d9F71508148769342E3" - }, - "yieldTokens": { - "aArbWBTC": "0x078f358208685046a11C85e8ad32895DED33A249", - "aArbWETH": "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "aArbUSDC": "0x625E7708f30cA75bfd92586e17077590C60eb4cD", - "jUSDC": "0xe66998533a1992ecE9eA99cDf47686F4fc8458E0", - "gmdUSDC": "0x3DB4B7DA67dd5aF61Cb9b3C70501B1BdB24b2C22", - "gmdBTC": "0x147FF11D9B9Ae284c271B2fAaE7068f4CA9BB619", - "gmdETH": "0x1E95A37Be8A17328fbf4b25b9ce3cE81e271BeB3" } -} - +} \ No newline at end of file diff --git a/projects/savvy/index.js b/projects/savvy/index.js index 91dd32d5dd0..50e9a72c6df 100644 --- a/projects/savvy/index.js +++ b/projects/savvy/index.js @@ -1,17 +1,50 @@ const contracts = require("./contracts.json"); -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -function tvl(chain) { - return async (timestamp, block, chainBlocks, { api }) => { - const tokens = Object.values(contracts.baseTokens).concat(Object.values(contracts.yieldTokens)); - await sumTokens2({ tokens, api, owners: Object.values(contracts.tokenHolders) }) - }; -} +async function tvl(timestamp, block, chainBlocks, { api }) { + const savvyPositionManagers = await api.call({ abi: 'address[]:getSavvyPositionManagers', target: contracts.infoAggregator, }) + console.log(savvyPositionManagers) + const yieldStrategyManagers = await api.multiCall({ abi: 'address:yieldStrategyManager', calls: savvyPositionManagers, }) + console.log(yieldStrategyManagers) + 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) + console.log(passThroughAMOs) + 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) + + console.log(aTokens) + 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: tvl("arbitrum") + tvl }, hallmarks: [ [1691473498, "LBP Launch"] From b9dad423f6650c62fb8e3414b910f33745afb30a Mon Sep 17 00:00:00 2001 From: ControlCplusControlV <44706811+ControlCplusControlV@users.noreply.github.com> Date: Mon, 12 Feb 2024 06:48:06 -0700 Subject: [PATCH 0257/2004] Update Cog-Finance Factory (#8932) * Updated with new factory * Update config to support multiple factories --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cog-finance/index.js | 18 +++++++++++++----- projects/savvy/index.js | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/projects/cog-finance/index.js b/projects/cog-finance/index.js index 211fff104dd..ee3fa02c5af 100644 --- a/projects/cog-finance/index.js +++ b/projects/cog-finance/index.js @@ -2,7 +2,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { - scroll: { factory: '0xbabd55549c266c6755b99173fe7604238d04117d', fromBlock: 85518 } + scroll: [{ factory: '0xbabd55549c266c6755b99173fe7604238d04117d', fromBlock: 85518 }, { factory: '0xCd44fecb08bb28405992358131Fd5081A0F550D0', fromBlock: 3147376 }], } async function _getLogs(api, factory, fromBlock,) { @@ -19,15 +19,23 @@ async function _getLogs(api, factory, fromBlock,) { } Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] + const factories = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const logs = await _getLogs(api, factory, fromBlock,) + 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 (_, _b, _cb, { api, }) => { - const logs = await _getLogs(api, factory, fromBlock,) + 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) => { @@ -37,4 +45,4 @@ Object.keys(config).forEach(chain => { return api.getBalances() } } -}) \ No newline at end of file +}) diff --git a/projects/savvy/index.js b/projects/savvy/index.js index 50e9a72c6df..0e5377d5261 100644 --- a/projects/savvy/index.js +++ b/projects/savvy/index.js @@ -39,7 +39,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { 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.', From 85f4283a8e3afd4bb51347d7892c2b90fc021b9f Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 12 Feb 2024 15:09:54 +0000 Subject: [PATCH 0258/2004] update ent (WIP) (#8935) * update ent (WIP) * more --- projects/entities/animoca-brands.js | 12 ++++++++++ projects/entities/digital-finance-group.js | 8 +++++++ projects/entities/fbg-capital.js | 13 ++++++++++- projects/entities/fenbushi-capital.js | 11 +++++++-- projects/entities/jump-capital.js | 27 +++++++++++++++++----- projects/entities/mechanism-capital.js | 13 ++++++++++- projects/entities/ngc-ventures.js | 2 ++ projects/entities/pantera-capital.js | 6 ++++- 8 files changed, 81 insertions(+), 11 deletions(-) diff --git a/projects/entities/animoca-brands.js b/projects/entities/animoca-brands.js index 10980983c34..ab23e38edce 100644 --- a/projects/entities/animoca-brands.js +++ b/projects/entities/animoca-brands.js @@ -5,6 +5,18 @@ const config = { owners: [ "0xd6AF301A8770659c1Dc880843db4d1aaA01048b4", "0xE929c67Db94f5b1541FB241eB3E5CbC6468c37e6", //binance deposited account + "0xbDCb95A80d4C770fa811B1FAF0bb4Cf204d310b5", + "0x2D2140E7159b6Cb1f82dC4cfd244A6C8aeE215FC" + ], + }, + polygon: { + owners: [ + "0xbDCb95A80d4C770fa811B1FAF0bb4Cf204d310b5" + ], + }, + bsc: { + owners: [ + "0xbDCb95A80d4C770fa811B1FAF0bb4Cf204d310b5" ], }, } diff --git a/projects/entities/digital-finance-group.js b/projects/entities/digital-finance-group.js index 1a09d213127..7442279b8f3 100644 --- a/projects/entities/digital-finance-group.js +++ b/projects/entities/digital-finance-group.js @@ -10,6 +10,14 @@ const config = { ], }, bsc: { + owners: [ + "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", + "0x2C20E739552cd0BEAF523930BAAD7754C426C962", + "0x36822AD3f4dF3E49EB042AFE74e43551d3c3Adba", + "0xC71BaF5d8667FfF515246811a4f61350D26A191F", + ], + }, + arbitrum: { owners: [ "0xEaf3B28A87D498530cDC7f0700E70502CF896D3f", "0x2C20E739552cd0BEAF523930BAAD7754C426C962", diff --git a/projects/entities/fbg-capital.js b/projects/entities/fbg-capital.js index 9793937d6f1..cffe1ea1356 100644 --- a/projects/entities/fbg-capital.js +++ b/projects/entities/fbg-capital.js @@ -5,7 +5,8 @@ const config = { owners: [ "0xe25397734a184053cF382E5C4e32cA7eF8335F31", "0x7c04A698855d1ECF9610636a1d7AFf8E03331fa5", - "0xb079F40dd951d842f688275100524c09bEf9b4E2" + "0xb079F40dd951d842f688275100524c09bEf9b4E2", + "0x6d51fDc0C57CBBFf6DAC4a565B35a17b88c6CEB5" ], }, avax: { @@ -13,6 +14,16 @@ const config = { "0xe25397734a184053cF382E5C4e32cA7eF8335F31" ], }, + bsc: { + owners: [ + "0x6d51fDc0C57CBBFf6DAC4a565B35a17b88c6CEB5" + ], + }, + polygon: { + owners: [ + "0xe25397734a184053cF382E5C4e32cA7eF8335F31" + ], + }, } module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/entities/fenbushi-capital.js b/projects/entities/fenbushi-capital.js index 1554a127c95..fc8e78e1d11 100644 --- a/projects/entities/fenbushi-capital.js +++ b/projects/entities/fenbushi-capital.js @@ -4,11 +4,18 @@ const config = { ethereum: { owners: [ "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7", - "0x5963efF631bf3d28b68388909e2404AA6dB1e7a8" // binance deposited account - + "0x5963efF631bf3d28b68388909e2404AA6dB1e7a8", // binance deposited account + "0x7286fCB1f0B9652063325f9d9Dc6fef092D6E711", + "0xC5D063205C9fF82A7D060be081E238b643C0D613" ], }, arbitrum: { + owners: [ + "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7", + "0xC5D063205C9fF82A7D060be081E238b643C0D613" + ], + }, + polygon: { owners: [ "0xCef1B4Bf8F05F623A2A688b56d9dA679D302EBa7" ], diff --git a/projects/entities/jump-capital.js b/projects/entities/jump-capital.js index 9beb7bf1dfd..882fba095e9 100644 --- a/projects/entities/jump-capital.js +++ b/projects/entities/jump-capital.js @@ -4,20 +4,35 @@ const { treasuryExports } = require("../helper/treasury") const config = { ethereum: { owners: [ - "0xCB8EFB0c065071E4110932858A84365A80C8feF0" - + "0xCB8EFB0c065071E4110932858A84365A80C8feF0", + "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483", + "0xaA4237995A8DDb6FC30C3C5bC4Cb9C0c15eE7C4F", + "0xe198c2FE9Ff0A1CBcDeE96A5A3e4ccd8DE707AB0" ], }, avax: { owners: [ - "0xCB8EFB0c065071E4110932858A84365A80C8feF0" - + "0xCB8EFB0c065071E4110932858A84365A80C8feF0", + "0xe198c2FE9Ff0A1CBcDeE96A5A3e4ccd8DE707AB0" ], }, bsc: { owners: [ - "0xCB8EFB0c065071E4110932858A84365A80C8feF0" - + "0xCB8EFB0c065071E4110932858A84365A80C8feF0", + "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483", + "0xaA4237995A8DDb6FC30C3C5bC4Cb9C0c15eE7C4F", + "0xe198c2FE9Ff0A1CBcDeE96A5A3e4ccd8DE707AB0" + ], + }, + polygon: { + owners: [ + "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483", + "0xaA4237995A8DDb6FC30C3C5bC4Cb9C0c15eE7C4F" + ], + }, + arbitrum: { + owners: [ + "0x4F20Cb7a1D567A54350a18DAcB0cc803aEBB4483" ], }, } diff --git a/projects/entities/mechanism-capital.js b/projects/entities/mechanism-capital.js index 9ba8906dcb7..d227a4255fe 100644 --- a/projects/entities/mechanism-capital.js +++ b/projects/entities/mechanism-capital.js @@ -5,7 +5,18 @@ const config = { owners: [ "0x6Af3D183d225725d975C5EaA08D442dd01Aad8fF", "0x953a50bd2daAa852A4Bc3E58b3AcFb95EA4E82D2", - "0x1366Dcf0f0178802Be85d405BBeA8026EC0876c4" // binance deposited account + "0x1366Dcf0f0178802Be85d405BBeA8026EC0876c4", // binance deposited account + "0xD5d5A7CB1807364CDE0BAd51D0a7D758943aB114" + ], + }, + optimism: { + owners: [ + "0xD5d5A7CB1807364CDE0BAd51D0a7D758943aB114" + ], + }, + arbitrum: { + owners: [ + "0xD5d5A7CB1807364CDE0BAd51D0a7D758943aB114" ], }, } diff --git a/projects/entities/ngc-ventures.js b/projects/entities/ngc-ventures.js index 844a2d886f4..fcd35e56197 100644 --- a/projects/entities/ngc-ventures.js +++ b/projects/entities/ngc-ventures.js @@ -4,6 +4,7 @@ const config = { ethereum: { owners: [ "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + "0xA773b135Df6265DF762709492799f31d8cE00692" ], }, arbitrum: { @@ -14,6 +15,7 @@ const config = { bsc: { owners: [ "0x53F470A909d7CE7f35e62f4470fD440B1eD5D8CD", + "0xA773b135Df6265DF762709492799f31d8cE00692" ], }, polygon: { diff --git a/projects/entities/pantera-capital.js b/projects/entities/pantera-capital.js index bf5fa494ef0..b91a61b6b3c 100644 --- a/projects/entities/pantera-capital.js +++ b/projects/entities/pantera-capital.js @@ -4,7 +4,11 @@ const config = { ethereum: { owners: [ "0x12ca45FEd7998ba0E56f52D678823A508BA9A99E", - "0x5789C571552b4820BfA64eFB6F0CaD80fD2A9Bca" + "0x5789C571552b4820BfA64eFB6F0CaD80fD2A9Bca", + "0x1a0EBB8B15c61879a8e8DA7817Bb94374A7c4007", + "0x24DE2762ccC97e44CCeA68CaF8270dA1820b3aa6", + "0x512218CB6120F45C15720F875d02fC0a07b4b1a6", + "0xe523Fc253BcdEA8373E030ee66e00c6864776d70" ], }, } From cd3dce1bf84ecb5ba4542b31d3f1afbeca24e42a Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 13 Feb 2024 05:14:23 +0000 Subject: [PATCH 0259/2004] add scrol --- projects/aave/v3.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/aave/v3.js b/projects/aave/v3.js index d961bb7358c..15df795cafa 100644 --- a/projects/aave/v3.js +++ b/projects/aave/v3.js @@ -10,8 +10,10 @@ function v3(chain) { params = ['0x9E7B73ffD9D2026F3ff4212c29E209E09C8A91F5', undefined, ['0x99411FC17Ad1B56f49719E3850B2CDcc0f9bBFd8']] else if (chain === 'base') params = ['0x2f6571d3Eb9a4e350C68C36bCD2afe39530078E2', undefined, ['0x2d8A3C5677189723C4cB8873CfC9C8976FDF38Ac']] - else if (chain === 'xdai') + else if (chain === 'xdai') params = ['0x36616cf17557639614c1cdDb356b1B83fc0B2132', undefined, ['0x501B4c19dd9C2e06E94dA7b6D5Ed4ddA013EC741']] + else if (chain === 'scroll') + params = ['0xFBedc64AeE24921cb43004312B9eF367a4162b57', undefined, ['0xa99F4E69acF23C6838DE90dD1B5c02EA928A53ee']] const section = borrowed => aaveChainTvl(chain, ...params, borrowed, true); return { tvl: section(false), @@ -22,7 +24,7 @@ function v3(chain) { 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`, avax: v3("avax"), - ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", "metis", "base", "xdai"].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), + ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", "metis", "base", "xdai", "scroll"].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), hallmarks: [ [1659630089, "Start OP Rewards"], [1650471689, "Start AVAX Rewards"] From 6f9c7ae130534064873a135927f73bae74b7135a Mon Sep 17 00:00:00 2001 From: alex-wombat <90595868+alex-wombat@users.noreply.github.com> Date: Tue, 13 Feb 2024 14:47:55 +0800 Subject: [PATCH 0260/2004] add gogopool and sfrax (#8941) * feat: add cross chain pool addresses (#8) * update to include scroll and avax * update to include scroll and avax * add wom, vewom * added base, usds, and usdv * update to include optimisim for wombat * update to include scroll and avax * add wom, vewom * added base, usds, and usdv * update to include optimisim for wombat * remove duplicates * add ggAVAX and frax --------- Co-authored-by: thanh-wombat <139751487+thanh-wombat@users.noreply.github.com> Co-authored-by: arthur-rollie --- projects/wombat-exchange/config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/wombat-exchange/config.js b/projects/wombat-exchange/config.js index 0202b4f14ad..9457e22a5db 100644 --- a/projects/wombat-exchange/config.js +++ b/projects/wombat-exchange/config.js @@ -53,6 +53,7 @@ module.exports = { fUSD: "0x956454C7BE9318863297309183C79b793D370401", crossChainPool: "0xe78876C360716f2225F55A6726B32324FE1B1145", USDV: "0xa6eF6C45EbFDBc13f6D032fbDFeC9b389C1603E5", + sFRAX: "0xaBF19eAdb08693278FdbAD35Cb4E3c1D6484c8Bb", }, }, ethereum: { @@ -83,6 +84,7 @@ module.exports = { crossChainPool: "0xC9bFC3eFeFe4CF96877009F75a61F5c1937e5d1a", sAVAX: "0xE3Abc29B035874a9f6dCDB06f8F20d9975069D87", USDV: "0x108c990c93Fa8E3cD88DDb13594D39f09D9B3C02", + ggAVAX: "0xBbA43749efC1bC29eA434d88ebaf8A97DC7aEB77", }, }, base: { From b87345567ccb5a18ce85c90f169e316331512b20 Mon Sep 17 00:00:00 2001 From: "flashliquidity.finance" Date: Tue, 13 Feb 2024 07:50:41 +0100 Subject: [PATCH 0261/2004] Track TVL on Arbitrum deployment (#8939) * Add files via upload * minor fix * Update index.js * Update index.js * Track TVL on Arbitrum deployment --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/FlashLiquidity/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/FlashLiquidity/index.js b/projects/FlashLiquidity/index.js index 48a19a7da2d..54711fd7279 100644 --- a/projects/FlashLiquidity/index.js +++ b/projects/FlashLiquidity/index.js @@ -9,6 +9,7 @@ module.exports = { polygon_zkevm: { tvl, }, avax: { tvl, }, base: { tvl, }, + arbitrum: { tvl, }, methodology: "TVL comes from the DEX liquidity pools" }; From c5178ed1fada1926e929a96821c24396cf1a1859 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 13 Feb 2024 06:53:56 +0000 Subject: [PATCH 0262/2004] use coins2 --- test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.js b/test.js index f83f5ce5895..60bcac91c59 100644 --- a/test.js +++ b/test.js @@ -373,7 +373,7 @@ async function computeTVL(balances, timestamp) { const { errors } = await PromisePool.withConcurrency(5) .for(sliceIntoChunks(readKeys, 100)) .process(async (keys) => { - tokenData.push((await axios.get(`https://coins.llama.fi/prices/current/${keys.join(',')}`)).data.coins) + tokenData.push((await axios.get(`https://coins2.llama.fi/prices/current/${keys.join(',')}`)).data.coins) }) if (errors && errors.length) From e83d2530d0b64f24553b75cf371e57dfb57744e9 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 13 Feb 2024 10:48:25 +0000 Subject: [PATCH 0263/2004] unicrypto-v3 wip (#8944) * unicrypto-v3 wip * Update @defillama/sdk version * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- package-lock.json | 6 ++--- projects/unicrypt-v3/index.js | 43 +++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7591a503c82..0a3b12c2fa2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.28", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.28.tgz", - "integrity": "sha512-TGtUXZVgDOwQBzEuMQ2uru7H1NYFzw4iGL4JYO1JgTX7fJRzczTyCoQATUhqSzgQRZN9NC0/eScL/+9TsLMhvg==", + "version": "5.0.31", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.31.tgz", + "integrity": "sha512-KEIWahIF5FOLDp5+ZfCj+sZmjqyDgkYYpVuscZc5bis7fPSAy8LmOGysFpaBuPfaUL1DMK2QKPEy0WnGL4BMKQ==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index 1aa98b6f552..f596727c978 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -1,27 +1,32 @@ -const sdk = require('@defillama/sdk') -const { sumTokens2 } = require('../helper/unwrapLPs') -const { getCoreAssets } = require('../helper/tokenMapping') +const { sumTokens2 } = require('../helper/unwrapLPs'); +const { getCoreAssets } = require('../helper/tokenMapping'); const config = { - ethereum: { reserves: ['0x231278edd38b00b07fbd52120cef685b9baebcc1', '0x7f5c649856f900d15c83741f45ae46f5c6858234'] }, - arbitrum: { reserves: ['0xfa104eb3925a27e6263e05acc88f2e983a890637', '0xcb8b00d4018ad6031e28a44bf74616014bfb62ec'] }, - bsc: { reserves: ['0x0D29598EC01fa03665feEAD91d4Fb423F393886c', '0xf1f7f21e2ea80ab110d0f95faa64655688341990'] }, - polygon: { reserves: ['0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84', '0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1'] }, -} + ethereum: { + reserves: ['0x231278edd38b00b07fbd52120cef685b9baebcc1', '0x7f5c649856f900d15c83741f45ae46f5c6858234', '0xFD235968e65B0990584585763f837A5b5330e6DE'], + }, + arbitrum: { + reserves: ['0xfa104eb3925a27e6263e05acc88f2e983a890637', '0xcb8b00d4018ad6031e28a44bf74616014bfb62ec', '0x6b5360B419e0851b4b81644e0F63c1A9778f2506'], + }, + bsc: { + reserves: ['0x0D29598EC01fa03665feEAD91d4Fb423F393886c', '0xf1f7f21e2ea80ab110d0f95faa64655688341990', '0xfe88DAB083964C56429baa01F37eC2265AbF1557'], + }, + polygon: { + reserves: ['0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84', '0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1', '0x40f6301edb774e8B22ADC874f6cb17242BaEB8c4'], + }, +}; module.exports = { misrepresentedTokens: true, -} +}; Object.keys(config).forEach(chain => { - const { reserves } = config[chain] + const { reserves, } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { - const uniV3WhitelistedTokens = await getCoreAssets(api.chain) - const tempBalances = await sumTokens2({ api, owners: reserves, resolveUniV3: true, uniV3WhitelistedTokens, }) - const balances = {} // we multiple core assets value by 2 as positions are spread between 0 - ∞ - Object.entries(tempBalances).forEach(([token, balance]) => sdk.util.sumSingleBalance(balances, token, balance * 2)) - return balances - } - } -}) \ No newline at end of file + tvl: async (_, _b, _cb, { 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 - ∞ + }, + }; +}); From 23d9a49adaa1f151f33280b63118984bdb8891d6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:50:58 +0100 Subject: [PATCH 0264/2004] UNCX v3: track base --- projects/unicrypt-v3/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index f596727c978..e053e6e4ac0 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -14,6 +14,9 @@ const config = { polygon: { reserves: ['0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84', '0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1', '0x40f6301edb774e8B22ADC874f6cb17242BaEB8c4'], }, + base: { + reserves: ['0xd6cd8fb001cbdae91f0af7a58a1602c945967d67'] + } }; module.exports = { From 9cb6ae3ea9da3637a18098b829bb18173846bc4e Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:16:46 +0000 Subject: [PATCH 0265/2004] Logx (#8945) * unicrypto-v3 wip * add logx mode chain * fix --- projects/logx/index.js | 3 ++- projects/unicrypt-v3/index.js | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/logx/index.js b/projects/logx/index.js index 83f475d433e..1c1450805b9 100644 --- a/projects/logx/index.js +++ b/projects/logx/index.js @@ -7,7 +7,8 @@ const config = { mantle: '0x7A74Dd56Ba2FB26101A7f2bC9b167A93bA5e1353', kroma: '0xC5f444D25D5013C395F70398350d2969eF0F6AA0', manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5', - telos: '0x082321F9939373b02Ad54ea214BF6e822531e679' + telos: '0x082321F9939373b02Ad54ea214BF6e822531e679', + mode: '0x34b83A3759ba4c9F99c339604181bf6bBdED4C79' } Object.keys(config).forEach(chain => { diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index e053e6e4ac0..aa1fac0ef02 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -32,4 +32,3 @@ Object.keys(config).forEach(chain => { return api.getBalancesV2().clone(2).getBalances() // we multiple core assets value by 2 as positions are spread between 0 - ∞ }, }; -}); From 06d9022080c1e5d4c2d913586db27827b3cb825f Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:21:53 +0000 Subject: [PATCH 0266/2004] Fix unicrypt v3 (#8946) * unicrypto-v3 wip * add logx mode chain * fix * final * fix unicrypto-v3 --- projects/unicrypt-v3/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index aa1fac0ef02..99a38c55084 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -32,3 +32,4 @@ Object.keys(config).forEach(chain => { return api.getBalancesV2().clone(2).getBalances() // we multiple core assets value by 2 as positions are spread between 0 - ∞ }, }; + });// From 23d464a390927e198edf0eb197b624a2d0f4b724 Mon Sep 17 00:00:00 2001 From: Marc Zeller Date: Tue, 13 Feb 2024 12:51:27 +0100 Subject: [PATCH 0267/2004] add bnb tracking (#8943) --- projects/aave/v3.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/aave/v3.js b/projects/aave/v3.js index 15df795cafa..d07e380324f 100644 --- a/projects/aave/v3.js +++ b/projects/aave/v3.js @@ -14,6 +14,8 @@ function v3(chain) { params = ['0x36616cf17557639614c1cdDb356b1B83fc0B2132', undefined, ['0x501B4c19dd9C2e06E94dA7b6D5Ed4ddA013EC741']] else if (chain === 'scroll') params = ['0xFBedc64AeE24921cb43004312B9eF367a4162b57', undefined, ['0xa99F4E69acF23C6838DE90dD1B5c02EA928A53ee']] + else if (chain === 'bsc') + params = ['0x117684358D990E42Eb1649E7e8C4691951dc1E71', undefined, ['0x41585C50524fb8c3899B43D7D797d9486AAc94DB']] const section = borrowed => aaveChainTvl(chain, ...params, borrowed, true); return { tvl: section(false), @@ -24,7 +26,7 @@ function v3(chain) { 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`, avax: v3("avax"), - ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", "metis", "base", "xdai", "scroll"].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), + ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", "metis", "base", "xdai", "scroll", "bsc"].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), hallmarks: [ [1659630089, "Start OP Rewards"], [1650471689, "Start AVAX Rewards"] From ffafb08c25cd9d347fa258919c821fa8790f6dd6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Feb 2024 13:09:16 +0100 Subject: [PATCH 0268/2004] Ambit (#8948) * adding Ambit Finance adapter * code refactor --------- Co-authored-by: cosullivan --- projects/ambit-finance/index.js | 77 +++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 projects/ambit-finance/index.js diff --git a/projects/ambit-finance/index.js b/projects/ambit-finance/index.js new file mode 100644 index 00000000000..2a476cf1494 --- /dev/null +++ b/projects/ambit-finance/index.js @@ -0,0 +1,77 @@ +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(_, _1, _2, { 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(_, _1, _2, { 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", +}; From c326decaa9796926391e30acb3f7d02a49eca9c5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 13 Feb 2024 13:16:31 +0100 Subject: [PATCH 0269/2004] Stader-fantom (#8949) * move liquid staked fantom tvl from stader to beethovenx * minor fix --------- Co-authored-by: franz --- projects/beethovenx-sftmx/index.js | 17 +++++++++++++++++ projects/stader/index.js | 9 +-------- 2 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 projects/beethovenx-sftmx/index.js diff --git a/projects/beethovenx-sftmx/index.js b/projects/beethovenx-sftmx/index.js new file mode 100644 index 00000000000..a4e6fe4451a --- /dev/null +++ b/projects/beethovenx-sftmx/index.js @@ -0,0 +1,17 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const liquidStakingContract = "0xB458BfC855ab504a8a327720FcEF98886065529b"; + +async function tvl(_, _1, _2, { api }) { + const supply = await api.call({ + abi: "uint256:totalFTMWorth", + target: liquidStakingContract, + }); + api.add(ADDRESSES.null, supply); +} + +module.exports = { + methodology: "Retrieve the total underlying FTM supply", + fantom: { + tvl, + }, +}; diff --git a/projects/stader/index.js b/projects/stader/index.js index 0f2d887cb14..3bdf24ccc55 100644 --- a/projects/stader/index.js +++ b/projects/stader/index.js @@ -21,13 +21,6 @@ async function maticTvl() { }; } -async function ftmTvl() { - const res = await getData(); - return { - fantom: res.fantom.native, - }; -} - async function terra2Tvl() { const res = await getData(); return { @@ -71,7 +64,7 @@ module.exports = { tvl: maticTvl }, */ fantom: { - tvl: ftmTvl, + tvl: () => ({}), }, terra2: { tvl: terra2Tvl, From d9d779ff0d73c6ee7619ece4febd49a164a5306e Mon Sep 17 00:00:00 2001 From: Astrarizon <111271396+astrarizon@users.noreply.github.com> Date: Tue, 13 Feb 2024 23:41:56 +0100 Subject: [PATCH 0270/2004] Updated PulsarMoney project addresses (#8955) * added adapter for pulsar-money tvl * added owner address * minor fix * minor fix * added SocialPayments and SmartTransfers modules TVL * minor fix * add one more address * undo file changes * undo changes * last minor changes --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/elrond.js | 2 +- projects/pulsar-money/index.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/helper/chain/elrond.js b/projects/helper/chain/elrond.js index 6d8ef875e0f..d557b5d2b7b 100644 --- a/projects/helper/chain/elrond.js +++ b/projects/helper/chain/elrond.js @@ -64,7 +64,7 @@ async function sumTokens({ owner, owners = [], tokens = [], balances = {}, black 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) diff --git a/projects/pulsar-money/index.js b/projects/pulsar-money/index.js index c4d0436d0ca..88cccc63aa8 100644 --- a/projects/pulsar-money/index.js +++ b/projects/pulsar-money/index.js @@ -1,15 +1,15 @@ const { sumTokensExport } = require("../helper/chain/elrond"); const { getCoreAssets } = require("../helper/tokenMapping"); -// const API_URL = "https://pulsar-money-prod.herokuapp.com/metrics/tvl"; - const vault = "erd1qqqqqqqqqqqqqpgq39rqpn2xvm0ykl2ccaa4h5zk5c9r647wdteswmap9l"; const socialPayments = "erd1qqqqqqqqqqqqqpgq85tlmqudva0fyawkkuc6qga60kclzyzj60ws7kxxf5"; -const smartTransfers = +const smartTransfers1 = "erd1qqqqqqqqqqqqqpgqd6l8ayd0zxfekl53geyxgjzjxu3ceyca60wsje6asx"; +const smartTransfers2 = + "erd1qqqqqqqqqqqqqpgq2jjxnsa025me89a4pe5az9dujz28us7t60wsz3mcxs"; -const ADDRESSES = [vault, socialPayments, smartTransfers]; +const ADDRESSES = [vault, socialPayments, smartTransfers1, smartTransfers2]; module.exports = { timetravel: false, From 398ff4ea82b9e398ba22b732645bfa60caf6adac Mon Sep 17 00:00:00 2001 From: Kashew <42247026+youngkashew@users.noreply.github.com> Date: Wed, 14 Feb 2024 06:51:16 +0800 Subject: [PATCH 0271/2004] Feature: add wBTC.e/BTC.b TraderJoe AutoPool integration to Struct Finance TVL (#8953) * feature: add wBTC.e token address to AVAX coreAssets.json * feature: add wBTC/BTC.b yield source to struct finance TVL * feature: add wBTC.e to sumTokens2 list for struct finance --- projects/helper/coreAssets.json | 1 + projects/struct-finance/constants.js | 8 ++++++++ projects/struct-finance/index.js | 1 + 3 files changed, 10 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 501bf726f7e..6232297a15a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -81,6 +81,7 @@ "USDT_e": "0xc7198437980c041c805a1edcba50c1ce5db95118", "USDt": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7", "BTC_b": "0x152b9d0fdc40c096757f570a51e494bd4b943e50", + "WBTC_e": "0x50b7545627a5162F82A992c33b87aDc75187B218", "USDC_e": "0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664", "WETH_e": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab", "JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", diff --git a/projects/struct-finance/constants.js b/projects/struct-finance/constants.js index a8a3e02c1a5..dae95c58bd3 100644 --- a/projects/struct-finance/constants.js +++ b/projects/struct-finance/constants.js @@ -18,6 +18,7 @@ const addresses = { yieldSourceAvaxWeth: "0x3BAf708e49669d54753366Bec0e77f112CF76662", yieldSourceEurcUsdc: "0xB35C3e0A1B889f6eC4e8e2bFFC8fE792FCF85884", yieldSourceSavaxAvax: "0x8696F212D12FdFbfFD40209Fd926c3E45e62DA28", + yieldSourceWbtcBtcb: "0x63CC3EC54342acF18064772Dc2b267eCB83D64Ec", factory: "0x269B0AA870f1257DE00fA7E786Fd07d46cE8d26b", }, }, @@ -31,6 +32,7 @@ const addresses = { avaxWetheAutovault: "0x6178dE6E552055862CF5c56310763EeC0145688d", eurcUsdcAutovault: "0x052AF5B8aC73082D8c4C8202bB21F4531A51DC73", savaxAvaxAutovault: "0xF812a978A08F370b9AB358a620377c0A261AA403", + wbtcBtcbAutovault: "0x856ea7383dE9C799cb07079Fb416Fc97Ca248300", }, }, }; @@ -66,6 +68,12 @@ const autopoolsMetaData = { 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( diff --git a/projects/struct-finance/index.js b/projects/struct-finance/index.js index 0fe03140b79..a8b9bba245c 100644 --- a/projects/struct-finance/index.js +++ b/projects/struct-finance/index.js @@ -48,6 +48,7 @@ async function tvl(ts, _, __, { api }) { owners: [vaultsTjap, vaultsGmx].flat(), tokens: [ ADDRESSES.avax.BTC_b, + ADDRESSES.avax.WBTC_e, ADDRESSES.avax.USDC, ADDRESSES.avax.WETH_e, ADDRESSES.avax.EURC, From 03207cfac4590d9d276713ef3d3d9fc47e12a08d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 14 Feb 2024 00:02:49 +0100 Subject: [PATCH 0272/2004] Restake-fi (#8956) * Add restake-finance project * 'restake-finance': fix code * code refactor --------- Co-authored-by: Slava Matvienco --- projects/restake-finance/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/restake-finance/index.js diff --git a/projects/restake-finance/index.js b/projects/restake-finance/index.js new file mode 100644 index 00000000000..826e38e2eac --- /dev/null +++ b/projects/restake-finance/index.js @@ -0,0 +1,20 @@ +const StakePools = [ + '0xe384251B5f445A006519A2197bc6bD8E5fA228E5', + '0x0448FddC3f4D666eC81DAc8172E60b8e5852386c', + '0x357DEeD02020b73F8A124c4ea2bE3B6A725aaeC2', + '0xD7BC2FE1d0167BD2532587e991abE556E3a66f3b', + '0xD5193B851bf7C751BBA862Eca1298D4B4Cb17B81', +]; + +async function tvl(_1, _2, _3, { 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 = { + ethereum: { + tvl, + } +}; From 07dc8e679a0218dcab2f646941765f8914167a0c Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Tue, 13 Feb 2024 23:04:40 +0000 Subject: [PATCH 0273/2004] symbiosis adds RSK chain support (#8951) --- projects/helper/coreAssets.json | 3 ++- projects/symbiosis-finance/config.js | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 6232297a15a..db99df59a5d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -725,7 +725,8 @@ "rsk": { "WRBTC": "0x967f8799af07df1534d48a95a5c9febe92c53ae0", "WRBTC1": "0x542fDA317318eBF1d3DEAf76E0b632741A7e677d", - "ETHs": "0x1d931bf8656d795e50ef6d639562c5bd8ac2b78f" + "ETHs": "0x1d931bf8656d795e50ef6d639562c5bd8ac2b78f", + "rUSDT": "0xef213441a85df4d7acbdae0cf78004e1e486bb96" }, "polis": { "WPOLIS": "0x6fc851b8d66116627fb1137b9d5fe4e2e1bea978" diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 2feba50aa51..9401926055a 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -258,5 +258,14 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'rsk', + tokens: [ + ADDRESSES.rsk.rUSDT, + ], + holders: [ + '0x5aa5f7f84ed0e5db0a4a85c3947ea16b53352fd4', // portal v2 + ] + }, ] } \ No newline at end of file From 8e8b96c363a84dad405160cee47c3f0c8745d246 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 14 Feb 2024 02:32:02 +0000 Subject: [PATCH 0274/2004] add yearn polygon --- projects/yearn/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/projects/yearn/index.js b/projects/yearn/index.js index db9d422fdc3..9c8b9a99546 100644 --- a/projects/yearn/index.js +++ b/projects/yearn/index.js @@ -42,9 +42,14 @@ const blacklist = [ ] async function tvl(timestamp, _, _1, { api }) { - const data = await getConfig('yearn/' + api.chain, `https://api.yearn.finance/v1/chains/${api.chainId}/vaults/all`) - const vaults = data.map(i => i.address).filter(i => !blacklist.includes(i)) - await api.erc4626Sum({ calls: vaults, balanceAbi: 'totalAssets', }) + if(api.chain==="polygon"){ + const data = await getConfig('yearn/' + api.chain, `https://ydaemon.yearn.finance/vaults/all?chainids=137&limit=100000`) + await api.erc4626Sum({ calls: data.filter(v=>v.kind==="Multi Strategy").map(v=>v.address), balanceAbi: 'totalAssets', tokenAbi: "asset" }) + } else { + const data = await getConfig('yearn/' + api.chain, `https://api.yearn.finance/v1/chains/${api.chainId}/vaults/all`) + const vaults = data.map(i => i.address).filter(i => !blacklist.includes(i)) + await api.erc4626Sum({ calls: vaults, balanceAbi: 'totalAssets', }) + } if (api.chain === 'ethereum') { const tokens = await api.multiCall({ abi: 'address:token', calls: v1Vaults }) let bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: v1Vaults }) @@ -64,6 +69,7 @@ module.exports = { arbitrum: { tvl }, optimism: { tvl }, base: { tvl }, + polygon: { tvl }, hallmarks: [ [1594944000, "YFI token Launch"], ] From 265ddab4930d99d7c469a695fdc9eaed473f019f Mon Sep 17 00:00:00 2001 From: Max Kaplan Date: Wed, 14 Feb 2024 02:30:07 -0500 Subject: [PATCH 0275/2004] adding edgevana adapter (#8954) --- projects/edgevana/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/edgevana/index.js diff --git a/projects/edgevana/index.js b/projects/edgevana/index.js new file mode 100644 index 00000000000..4003c9d1f15 --- /dev/null +++ b/projects/edgevana/index.js @@ -0,0 +1,19 @@ +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, + }, +}; From d5edb84f80839e26979c5555919bf31dd721e48d Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 14 Feb 2024 09:01:20 +0000 Subject: [PATCH 0276/2004] morpho fix --- projects/morpho-blue/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/morpho-blue/index.js b/projects/morpho-blue/index.js index addb381794c..1029c4d98f9 100644 --- a/projects/morpho-blue/index.js +++ b/projects/morpho-blue/index.js @@ -32,10 +32,14 @@ Object.keys(config).forEach(chain => { async function getMarkets(api) { const logs = await getLogs({ api, target: morphoBlue, + skipCache: true, eventAbi: 'event CreateMarket(bytes32 indexed id, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv) marketParams)', onlyArgs: true, fromBlock, topics: ['0xac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac'], }) + if(logs.length < 5){ + throw new Error("Missing markets!") + } return logs.map(i => i.id) } }) \ No newline at end of file From 29c7704e62035f49db8e337c392f054c548f3e9c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 14 Feb 2024 09:04:01 +0000 Subject: [PATCH 0277/2004] better limit --- projects/morpho-blue/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/morpho-blue/index.js b/projects/morpho-blue/index.js index 1029c4d98f9..50332ba7005 100644 --- a/projects/morpho-blue/index.js +++ b/projects/morpho-blue/index.js @@ -37,7 +37,7 @@ Object.keys(config).forEach(chain => { onlyArgs: true, fromBlock, topics: ['0xac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac'], }) - if(logs.length < 5){ + if(logs.length < 29){ throw new Error("Missing markets!") } return logs.map(i => i.id) From 8b69b675ca0a29274fec485daf3df373c3e57852 Mon Sep 17 00:00:00 2001 From: ruvlol <31368712+ruvlol@users.noreply.github.com> Date: Wed, 14 Feb 2024 19:21:19 +0500 Subject: [PATCH 0278/2004] blueprint (#8960) --- projects/blueprint/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/blueprint/index.js diff --git a/projects/blueprint/index.js b/projects/blueprint/index.js new file mode 100644 index 00000000000..1c09d013a47 --- /dev/null +++ b/projects/blueprint/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + ethereum: { + factory: "0xe777c3da43ec554ec845649323215afaa34d6c23", + fromBlock: 18692575, + }, +}); From e73737a44e5639f2fd14efbe3161a26ebcaf4fd1 Mon Sep 17 00:00:00 2001 From: OxMarco <10283625+OxMarco@users.noreply.github.com> Date: Wed, 14 Feb 2024 20:19:09 +0100 Subject: [PATCH 0279/2004] ithil v2 (#8959) * ithil v2 * add old vaults --------- Co-authored-by: OxMarco <> --- projects/ithil/index.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/projects/ithil/index.js b/projects/ithil/index.js index d3584819529..8f083e0f553 100644 --- a/projects/ithil/index.js +++ b/projects/ithil/index.js @@ -3,17 +3,23 @@ const { sumERC4626VaultsExport } = require('../helper/erc4626') const config = { arbitrum: { vaults: { - USDC: '0x6b416C9727fb248C3097b5c1D10c39a7EBDFf239', - USDT: '0x8b002cf7380403329627149aA3D730E633BF1D33', - DAI: '0xdC4c8Bfbf326d5F87fCB58D1a6E5B6E23992E61d', - WETH: '0xE8FEB169cc9ffbF3873EbfD31e34144672D9D7D0', - WBTC: '0xd5687bfa0b5EBc020dc726282cFD94086701DF94', + 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', - start: 119401838, + start: 171730567, hallmarks: [ [1691649008, "private mainnet launch"] ], @@ -24,4 +30,4 @@ Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: sumERC4626VaultsExport({ vaults: Object.values(vaults), tokenAbi: 'asset', balanceAbi: 'totalAssets' }) } -}) \ No newline at end of file +}) From 5ef74157857fe4504826c7b917484e567147f702 Mon Sep 17 00:00:00 2001 From: Curbis Norris <130688524+curbisn@users.noreply.github.com> Date: Thu, 15 Feb 2024 02:21:56 +0700 Subject: [PATCH 0280/2004] Add Mode network for Dexilla (#8961) * add Dexilla project * Update contract * update timestamp * add optimism chain * add V.4 contracts * add zk contracts * add arbitrum contracts * add base chain * add v.5 contracts * add AXL/USDC.e contract on arbitrum chain * add exchanges on mode mainnet --- projects/dexilla/index.js | 16 ++++++++++++---- projects/helper/coreAssets.json | 5 ++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js index b46d44ffdd0..b9587960d3d 100644 --- a/projects/dexilla/index.js +++ b/projects/dexilla/index.js @@ -34,10 +34,18 @@ const config = { '0x51c0378f913Fe3b79580E54AE5FB8682b856b5B6', ], }, - base:{ + base: { exchanges: [ '0x3F7F51983fb95084a5cb73EB2F28757Bd8bb65E3', ], + }, + mode: { + exchanges: [ + '0xA3320CfD2027119fAe3DB4142546B86C6669646D', + '0x7165DE038b6b76F05F30696A40bEF228731D6DdC', + '0x4a0f2074F11FDB7084722fdF078e15E8E3a7A25D', + '0x72E0f90cdaEE4A919FA15F465e15210a5E5b9306', + ], } } @@ -50,9 +58,9 @@ Object.keys(config).forEach(chain => { const { exchanges } = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { 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()}) + 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/helper/coreAssets.json b/projects/helper/coreAssets.json index db99df59a5d..54726cd99c0 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1525,7 +1525,10 @@ "MEER_2": "0x457dE4e275A6b3C0D3750519221dD1dF19d54f01" }, "mode": { - "WETH": "0x4200000000000000000000000000000000000006" + "WETH": "0x4200000000000000000000000000000000000006", + "USDC": "0xd988097fb8612cc24eeC14542bC03424c656005f", + "USDT": "0xf0F161fDA2712DB8b566946122a5af183995e2eD", + "WBTC": "0xcdd475325d6f564d27247d1dddbb0dac6fa0a5cf" }, "zilliqa": { "WZIL": "0x94e18ae7dd5ee57b55f30c4b63e2760c09efb192", From 9a68b18b7e13a7e620f8fcdd1c43a4507b28d113 Mon Sep 17 00:00:00 2001 From: minnzee <143181943+minnzee@users.noreply.github.com> Date: Thu, 15 Feb 2024 03:25:35 +0800 Subject: [PATCH 0281/2004] Add aqua pool for Syncswap (#8962) --- projects/syncswap/index.js | 54 +++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/projects/syncswap/index.js b/projects/syncswap/index.js index a457b06bb83..048e6afcc70 100644 --- a/projects/syncswap/index.js +++ b/projects/syncswap/index.js @@ -3,20 +3,29 @@ const { transformDexBalances } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') async function tvl(timestamp, ethBlock, chainBlocks, { api }) { - const { fromBlock, stableFactory, classicFactory, } = config[api.chain] - const stableLogs = await getFactoryLogs(api, stableFactory) - const classicLogs = await getFactoryLogs(api, classicFactory) + const { fromBlock, classicFactorys, stableFactorys, aquaFactorys = [] } = config[api.chain] + + const logs = await Promise.all([...classicFactorys, ...stableFactorys, ...aquaFactorys].map(factory => (getFactoryLogs(api, factory)))); + const balances = {} const data = [] - const stableReserves = await api.multiCall({ abi: 'function getReserves() external view returns (uint, uint)', calls: stableLogs.map(i => i.pool) }) - const classicReserves = await api.multiCall({ abi: 'function getReserves() external view returns (uint, uint)', calls: classicLogs.map(i => i.pool) }) - stableReserves.forEach(([reserve0, reserve1], i) => { - sdk.util.sumSingleBalance(balances, stableLogs[i].token0, reserve0) - sdk.util.sumSingleBalance(balances, stableLogs[i].token1, reserve1) - }) - classicReserves.forEach(([token0Bal, token1Bal], i) => { - data.push({ token0Bal, token1Bal, token0: classicLogs[i].token0, token1: classicLogs[i].token1, }) - }) + + 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) + }) + } + } + + return transformDexBalances({ balances, data, chain: api.chain }) async function getFactoryLogs(api, factory) { @@ -32,13 +41,26 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { } const config = { - era: { fromBlock: 9775, stableFactory: '0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3', classicFactory: '0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb', }, - linea: { fromBlock: 716, stableFactory: '0xE4CF807E351b56720B17A59094179e7Ed9dD3727', classicFactory: '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d', }, - scroll: { fromBlock: 80875, stableFactory: '0xE4CF807E351b56720B17A59094179e7Ed9dD3727', classicFactory: '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d', }, + era: { + fromBlock: 9775, + stableFactorys: ['0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3'], + classicFactorys: ['0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb'], + aquaFactorys: ['0x20b28B1e4665FFf290650586ad76E977EAb90c5D'] + }, + linea: { + fromBlock: 716, + stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727'], + classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d'], + }, + scroll: { + fromBlock: 80875, + stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727'], + classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d'], + }, } module.exports = { misrepresentedTokens: true, } -Object.keys(config).forEach(chain => { module.exports[chain] = { tvl } }) +Object.keys(config).forEach(chain => { module.exports[chain] = { tvl } }) \ No newline at end of file From 27a2c085517c9f20256ac450bb6fe93ff9ffec86 Mon Sep 17 00:00:00 2001 From: atozICT <60227992+atozICT20@users.noreply.github.com> Date: Wed, 14 Feb 2024 15:12:12 -0500 Subject: [PATCH 0282/2004] add Sturdy v2 (#8963) --- projects/sturdy-v2/abi.json | 5 +++++ projects/sturdy-v2/index.js | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 projects/sturdy-v2/abi.json create mode 100644 projects/sturdy-v2/index.js diff --git a/projects/sturdy-v2/abi.json b/projects/sturdy-v2/abi.json new file mode 100644 index 00000000000..88d708bbe37 --- /dev/null +++ b/projects/sturdy-v2/abi.json @@ -0,0 +1,5 @@ +{ + "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 new file mode 100644 index 00000000000..65926cf05f7 --- /dev/null +++ b/projects/sturdy-v2/index.js @@ -0,0 +1,27 @@ +const abi = require("./abi.json"); + +const REGISTRY_ADDR = "0x69764E3e0671747A7768A1C1AfB7C0C39868CC9e" + +async function tvl(timestamp, block, chainBlocks, { api }) { + const aggregators = await api.call({target: REGISTRY_ADDR, abi: abi['getVaults'], }) + const totalAssets = aggregators.forEach((aggregator) => api.add(aggregator.asset, aggregator.totalAssets)) + + const strategies = await api.call({ target: REGISTRY_ADDR, abi: abi['getStrategies'], }) + const totalCollaterals = strategies.forEach((strategy) => api.add(strategy.pairData.collateral, strategy.pairData.totalCollateral)) + + return totalAssets + totalCollaterals; +} +async function borrowed(timestamp, block, chainBlocks, { api }) { + const strategies = await api.call({ target: REGISTRY_ADDR, 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)) +} + +module.exports = { + methodology: 'Gets the aggregators & strategies from the REGISTRY_ADDRESS and adds the asset amounts from each of them', + ethereum: { + tvl, borrowed, + }, +} \ No newline at end of file From eb488afd897a5826d81f6cba55ce5e3b8ac06cb0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 14 Feb 2024 22:50:48 +0100 Subject: [PATCH 0283/2004] Refactor code to remove unused variables and improve readability --- projects/sturdy-v2/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/sturdy-v2/index.js b/projects/sturdy-v2/index.js index 65926cf05f7..259300d795d 100644 --- a/projects/sturdy-v2/index.js +++ b/projects/sturdy-v2/index.js @@ -4,12 +4,10 @@ const REGISTRY_ADDR = "0x69764E3e0671747A7768A1C1AfB7C0C39868CC9e" async function tvl(timestamp, block, chainBlocks, { api }) { const aggregators = await api.call({target: REGISTRY_ADDR, abi: abi['getVaults'], }) - const totalAssets = aggregators.forEach((aggregator) => api.add(aggregator.asset, aggregator.totalAssets)) + aggregators.forEach((aggregator) => api.add(aggregator.asset, aggregator.totalAssets)) const strategies = await api.call({ target: REGISTRY_ADDR, abi: abi['getStrategies'], }) - const totalCollaterals = strategies.forEach((strategy) => api.add(strategy.pairData.collateral, strategy.pairData.totalCollateral)) - - return totalAssets + totalCollaterals; + strategies.forEach((strategy) => api.add(strategy.pairData.collateral, strategy.pairData.totalCollateral)) } async function borrowed(timestamp, block, chainBlocks, { api }) { const strategies = await api.call({ target: REGISTRY_ADDR, abi: abi['getStrategies'], }) From 6aae3fcb156e7b4ca8abbc4510c50f6bac87ca32 Mon Sep 17 00:00:00 2001 From: 0xFantomMenace <93462858+0xFantomMenace@users.noreply.github.com> Date: Wed, 14 Feb 2024 16:43:27 -0600 Subject: [PATCH 0284/2004] Adds Harbor Market (#8957) --- projects/harbor/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/harbor/index.js diff --git a/projects/harbor/index.js b/projects/harbor/index.js new file mode 100644 index 00000000000..d0e91887c6f --- /dev/null +++ b/projects/harbor/index.js @@ -0,0 +1,16 @@ +const sdk = require("@defillama/sdk"); +const { aaveChainTvl } = require('../helper/aave'); + +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 = { + bsc: v2("bsc", "0x31406A8c12813b64bF9985761BA51412B92fFb4E"), +} From ddde581ddf2f5f084c5c9241672aa565a7a3f6cd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 08:46:33 +0100 Subject: [PATCH 0285/2004] fix tarot --- projects/tarot/index.js | 2 -- projects/tarot/tarotHelper.js | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/tarot/index.js b/projects/tarot/index.js index 7bdb44c97ed..88698212342 100644 --- a/projects/tarot/index.js +++ b/projects/tarot/index.js @@ -66,6 +66,4 @@ const config = { }, } -module.exports = {} - tarotHelper(module.exports, config) diff --git a/projects/tarot/tarotHelper.js b/projects/tarot/tarotHelper.js index 370141e73ba..a4ce3b65ab5 100644 --- a/projects/tarot/tarotHelper.js +++ b/projects/tarot/tarotHelper.js @@ -69,9 +69,14 @@ function tarotHelper(exportsObj, config, { tarotSymbol = 'vTAROT' } = {}) { calls: borrowables }) + // think these have lot of bad debt + const blacklistedBorrowables = new Set([ + '0x5990Ddc40b63D90d3B783207069F5b9A8b661C1C', + ].map(a => a.toLowerCase())) + underlyings.forEach((v, i) => { // Lot of MAI pools have bad debt, ignoring it - if (v.toLowerCase() !== '0xfb98b335551a418cd0737375a2ea0ded62ea213b') { + if (v.toLowerCase() !== '0xfb98b335551a418cd0737375a2ea0ded62ea213b' || !blacklistedBorrowables.has(borrowables[i].toLowerCase())) { sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain) } }) From e7cd2d15263e8a98b4656d4329b0d6baea9e4375 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:48:49 +0100 Subject: [PATCH 0286/2004] fix tarot bug --- projects/tarot/tarotHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/tarot/tarotHelper.js b/projects/tarot/tarotHelper.js index a4ce3b65ab5..ac1b7ed3eca 100644 --- a/projects/tarot/tarotHelper.js +++ b/projects/tarot/tarotHelper.js @@ -76,7 +76,7 @@ function tarotHelper(exportsObj, config, { tarotSymbol = 'vTAROT' } = {}) { underlyings.forEach((v, i) => { // Lot of MAI pools have bad debt, ignoring it - if (v.toLowerCase() !== '0xfb98b335551a418cd0737375a2ea0ded62ea213b' || !blacklistedBorrowables.has(borrowables[i].toLowerCase())) { + if (v.toLowerCase() !== '0xfb98b335551a418cd0737375a2ea0ded62ea213b' && !blacklistedBorrowables.has(borrowables[i].toLowerCase())) { sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain) } }) From 0dc06a9ec2f2e749d94cfa033b7aa10aa930e92a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 10:55:38 +0100 Subject: [PATCH 0287/2004] Add getBalances() function call to borrowed() function --- projects/smartcredit.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/smartcredit.js b/projects/smartcredit.js index 7c4654b1118..df93d19195d 100644 --- a/projects/smartcredit.js +++ b/projects/smartcredit.js @@ -109,4 +109,5 @@ async function borrowed(_, _b, _cb, { api, }) { if (i.outstandingAmount === '0') return api.add(loanRequests[idx].underlying.ethAddress, i.outstandingAmount) }) + return api.getBalances() } \ No newline at end of file From f59a4150247a29d8a072f959755645ae6c2a7756 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:50:06 +0100 Subject: [PATCH 0288/2004] fix broken adapters --- projects/alchemist/index.js | 51 +++++++++++++++-------------------- projects/fusion/index.js | 31 ++++++++++++--------- projects/helper/solana.js | 2 +- projects/mushrooms.js | 27 ++----------------- projects/quasar-swap/index.js | 9 +++++-- 5 files changed, 51 insertions(+), 69 deletions(-) diff --git a/projects/alchemist/index.js b/projects/alchemist/index.js index 8eecfc7cc4c..31f97a134d6 100644 --- a/projects/alchemist/index.js +++ b/projects/alchemist/index.js @@ -1,35 +1,28 @@ -const utils = require('../helper/utils') +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') -const pool2s = [ - "0xf0D415189949d913264A454F57f4279ad66cB24d", // Aludel v1 - "0x93c31fc68E613f9A89114f10B38F9fd2EA5de6BC" // Aludel v1.5 -] +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)" -// Retrieve Staked Token Values from API -const endpoint = "https://crucible.alchemist.wtf/api/get-program-staked-usd?network=1" - -function get(includePool2) { - return async function () { - const rewardPrograms = await utils.fetchURL(endpoint) - const tether = Object.entries(rewardPrograms.data).reduce((t, c) => { - let isPool2 = pool2s.some(p => p.toLowerCase() === c[0].toLowerCase()) - if (includePool2) { - isPool2 = !isPool2 - } - if (isPool2) { - return t - } - return t + c[1] - }, 0) - return { tether } - } +async function tvl(_, _b, _cb, { 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 = { - methodology: 'Tvl equals the sum of the tokens locked on all rewards programs except their own (aludels). Aludels are counted as pool2', - timetravel: false, - ethereum: { - tvl: get(false), - pool2: get(true), - } + ethereum: { + tvl, + pool2: () => ({}), + } } diff --git a/projects/fusion/index.js b/projects/fusion/index.js index 5224723c116..fb58ca8aa84 100644 --- a/projects/fusion/index.js +++ b/projects/fusion/index.js @@ -46,11 +46,14 @@ const yieldFarmsClassic = "0x9599ceBf169A1F3503996CBf90deA38C515ddd54"; // 61 const dexTVL = { // Nova Network + // nova: { + // tvl: getUniTVL({ + // factory: dexFactory, + // useDefaultCoreAssets: true, + // }), + // }, nova: { - tvl: getUniTVL({ - factory: dexFactory, - useDefaultCoreAssets: true, - }), + tvl: () => ({}), }, // Fantom Opera @@ -76,15 +79,19 @@ const dexTVL = { 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: async (_, _b, { nova: block }) => - sumTokens2({ - owners: [callStaking, callStakingV2, bondStaking, liquidStaking, incomeStaking], - tokens: [nullAddress, sntNovaNetwork, nusdNovaNetwork], - lps: [yieldFarms], - chain: "nova", - block, - }), + staking: () => ({}), }, // Fantom Opera diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 9a4750e1dea..68097446a32 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -142,7 +142,7 @@ async function getTokenBalance(token, account) { const tokenBalance = await axios.post(endpoint(), formTokenBalanceQuery(token, account)); return tokenBalance.data.result.value.reduce( (total, account) => - total + account.account.data.parsed.info.tokenAmount.uiAmount, + total + account.account.data.parsed?.info.tokenAmount.uiAmount ?? 0, 0 ); } diff --git a/projects/mushrooms.js b/projects/mushrooms.js index 8d9cbe8b0af..0021f5c7199 100644 --- a/projects/mushrooms.js +++ b/projects/mushrooms.js @@ -1,11 +1,3 @@ -const sdk = require('@defillama/sdk') -const { getChainTransform } = require('./helper/portedTokens') -const { unwrapLPsAuto, } = require('./helper/unwrapLPs') -const abi = { - balance: "uint256:balance", - token: "address:token", -} - const config = { ethereum: { vaults: [ @@ -83,24 +75,9 @@ module.exports = { Object.keys(config).forEach((chain) => { module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const balances = {} - const transform = await getChainTransform(chain) + tvl: async (_, _b, _cb, { api }) => { const vaults = config[chain].vaults - const calls = vaults.map(i => ({ target: i })) - const { output: tokens } = await sdk.api.abi.multiCall({ - abi: abi.token, - calls, chain, block, - }) - const { output: balance } = await sdk.api.abi.multiCall({ - abi: abi.balance, - calls, chain, block, - }) - - tokens.forEach(({ output: token }, i) => { - sdk.util.sumSingleBalance(balances, transform(token), balance[i].output) - }) - return unwrapLPsAuto({ balances, chain, block, transformAddress: transform, }) + return api.erc4626Sum({ calls: vaults, permitFailure: true, }) } } }) \ No newline at end of file diff --git a/projects/quasar-swap/index.js b/projects/quasar-swap/index.js index 978a457c47d..de27a982312 100644 --- a/projects/quasar-swap/index.js +++ b/projects/quasar-swap/index.js @@ -16,7 +16,7 @@ const poolManual = "0x693D075Db2F6c231e2f375c29EDd52F47027b45E"; const dexFactory = "0x9FF350c22d2A1A9d2867E1afb44B83eF114DFD7b"; module.exports = { - nova: { +/* nova: { tvl: getUniTVL({ factory: dexFactory, useDefaultCoreAssets: true, @@ -30,5 +30,10 @@ module.exports = { chain: "nova", block, }), - }, + }, */ + //deadFrom: "2024-01-01", + nova: { + tvl: () => ({}), + staking: () => ({}), + } } \ No newline at end of file From 8313add5b61f7b63a4ca966bd529f7ddce50ea68 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Thu, 15 Feb 2024 18:56:13 +0800 Subject: [PATCH 0289/2004] include a new vault into TVL (#8969) --- projects/vaultka/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index a347fdb34c1..bb70a3e9d85 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -66,6 +66,8 @@ module.exports = { alpAddresses: "0xBc76B3FD0D18C7496C0B04aeA0Fe7C3Ed0e4d9C9", vodkaV2DN_LINK_Water: "0xFF614Dd6fC857e4daDa196d75DaC51D522a2ccf7", glmVault: "0xB455f2ab7905785e90ED09fF542290a722b3FBb5", + klpVault: "0x9ef87C85592a6722E2A3b314AEc722365f3FbF4D", + fsKlp: "0xfd624233741f86A7fAB57A5aDd8929422395b221", }; await api.sumTokens({ @@ -112,6 +114,9 @@ module.exports = { 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({ @@ -139,12 +144,27 @@ module.exports = { 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.hlp, StakedHLPBal); api.add(ADDRESSES.arbitrum.USDC, alpValue); + api.add(ADDRESSES.arbitrum.USDC, klpValue); }, }, }; From 50e0f8ff759817f687ff776267391066690b23c8 Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Thu, 15 Feb 2024 17:57:27 +0700 Subject: [PATCH 0290/2004] DackieSwap onboarded Arbitrum (#8968) * update staking dackie * update arbitrum --------- Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 7 +++++++ projects/dackieswap/index.js | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index a92962d1352..1181d219bc0 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -24,5 +24,12 @@ module.exports = { useDefaultCoreAssets: true, fetchBalances: true }) + }, + arbitrum: { + tvl: getUniTVL({ + factory: "0x507940c2469e6E3B33032F1d4FF8d123BDDe2f5C", + useDefaultCoreAssets: true, + fetchBalances: true + }) } }; \ No newline at end of file diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index 271d718de1d..3f6bd78aadc 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -2,5 +2,6 @@ const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ base: { factory: "0x3D237AC6D2f425D2E890Cc99198818cc1FA48870", fromBlock: 2031627 }, - optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 } + optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 }, + arbitrum: { factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", fromBlock: 180722131 }, }); \ No newline at end of file From d680b238b4b06a07c2da4f3854c546c069847196 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 12:05:58 +0100 Subject: [PATCH 0291/2004] Ajira2 (#8971) * feat: Ajira Pay Finance V2 * update: activate linea chain and recalculate tvl * code refactor --------- Co-authored-by: dickensodera --- projects/ajira-pay-finance-v2/index.js | 25 +++++++++++++++++++++++++ projects/helper/streamingHelper.js | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 projects/ajira-pay-finance-v2/index.js diff --git a/projects/ajira-pay-finance-v2/index.js b/projects/ajira-pay-finance-v2/index.js new file mode 100644 index 00000000000..fc70752ffea --- /dev/null +++ b/projects/ajira-pay-finance-v2/index.js @@ -0,0 +1,25 @@ +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 (_, _1, _2, { 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/helper/streamingHelper.js b/projects/helper/streamingHelper.js index af7fcea9a30..82feff3b985 100644 --- a/projects/helper/streamingHelper.js +++ b/projects/helper/streamingHelper.js @@ -1,4 +1,5 @@ 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', @@ -10,6 +11,7 @@ function isStableToken(symbol = '', address = '') { } async function getWhitelistedTokens({ api, tokens, isVesting }) { + tokens = getUniqueAddresses(tokens) const symbols = await api.multiCall({ abi: 'string:symbol', calls: tokens, permitFailure: true}) tokens = tokens.filter((v, i) => isWhitelistedToken(symbols[i], v, isVesting)) return tokens From 51ce58fdc2f1cf586a2da05b28e7707d35effda3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 15:38:54 +0100 Subject: [PATCH 0292/2004] fix starknet --- projects/starknet/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/starknet/index.js b/projects/starknet/index.js index 9ce72fe3a3b..2b28c7aa5ad 100644 --- a/projects/starknet/index.js +++ b/projects/starknet/index.js @@ -6,7 +6,7 @@ async function tvl(_, _b, _c, { api }) { const mapping = await get( `https://raw.githubusercontent.com/starknet-io/starknet-addresses/master/bridged_tokens/mainnet.json` ); - const tokensAndOwners = mapping.map((t) => [ + const tokensAndOwners = mapping.filter(i => i.l1_token_address).map((t) => [ t.l1_token_address == "0x0000000000000000000000000000000000455448" ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : t.l1_token_address, From 4959c066a16dd0c0abbe9358c29db6df7d52b228 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 15 Feb 2024 14:47:34 +0000 Subject: [PATCH 0293/2004] add volta to own tokens (#8972) --- projects/treasury/wonderland.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index 3ddeda97ea0..f8b0b3cc54d 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -42,7 +42,7 @@ module.exports = treasuryExports({ '0x67fadbd9bf8899d7c578db22d7af5e2e500e13e5',// uwu lend token ], owners: [ethWallet], - ownTokens: ['0x3b79a28264fc52c7b4cea90558aa0b162f7faf57'], + ownTokens: ['0x3b79a28264fc52c7b4cea90558aa0b162f7faf57', '0x9b06f3c5de42d4623d7a2bd940ec735103c68a76'], //wmemo, volta }, avax: { tokens: [ @@ -55,7 +55,7 @@ module.exports = treasuryExports({ "0x9e295b5b976a184b14ad8cd72413ad846c299660",//fsGLP ], owners: treasuries, - ownTokens: [TIME, '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b'], + ownTokens: [TIME, '0x0da67235dd5787d67955420c84ca1cecd4e5bb3b', '0x9b06f3c5de42d4623d7a2bd940ec735103c68a76'], //last is volta }, arbitrum: { tokens: [ @@ -64,7 +64,8 @@ module.exports = treasuryExports({ ADDRESSES.arbitrum.GMX,//gmx "0xd2D1162512F927a7e282Ef43a362659E4F2a728F",//sbfGMX ], - owners: treasuries + owners: treasuries, + ownTokens: ['0x9b06f3c5de42d4623d7a2bd940ec735103c68a76'], //volta }, polygon: { tokens: [ From 237981aec5ff2c38f16dc63a012fc3bb14d92a9c Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 15 Feb 2024 15:22:15 +0000 Subject: [PATCH 0294/2004] Volta treasury 2 (#8973) * add volta to own tokens * volta treasury add uwu to own tokens --- projects/treasury/wonderland.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index f8b0b3cc54d..77a13103dbe 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -18,7 +18,6 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.ethereum.USDC,//USDC - '0x55c08ca52497e2f1534b59e2917bf524d4765257', // uwu ADDRESSES.ethereum.cvxFXS, // cvxFXS '0x3E04863DBa602713Bb5d0edbf7DB7C3A9A2B6027', // SLP ADDRESSES.ethereum.DAI,//DAI @@ -42,7 +41,7 @@ module.exports = treasuryExports({ '0x67fadbd9bf8899d7c578db22d7af5e2e500e13e5',// uwu lend token ], owners: [ethWallet], - ownTokens: ['0x3b79a28264fc52c7b4cea90558aa0b162f7faf57', '0x9b06f3c5de42d4623d7a2bd940ec735103c68a76'], //wmemo, volta + ownTokens: ['0x3b79a28264fc52c7b4cea90558aa0b162f7faf57', '0x9b06f3c5de42d4623d7a2bd940ec735103c68a76', '0x55c08ca52497e2f1534b59e2917bf524d4765257'], //wmemo, volta, uwu, }, avax: { tokens: [ From b00375f188a360ce99c219658d75b6238e0dcb4f Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 15 Feb 2024 16:55:39 +0000 Subject: [PATCH 0295/2004] sushi v2 zetachain (#8974) --- projects/sushiswap/api.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index a78a68adf1a..1266e28c68d 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -93,6 +93,9 @@ module.exports = { filecoin: { tvl: getUniTVL({ factory: '0x9B3336186a38E1b6c21955d112dbb0343Ee061eE', useDefaultCoreAssets: true, }), }, + zeta: { + tvl: getUniTVL({ factory: '0x33d91116e0370970444B0281AB117e161fEbFcdD', useDefaultCoreAssets: true, }), + }, } module.exports.polygon.tvl = getChainTVL('polygon') From 3b247c0741a95f448d3145b24e16a56744763f9e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 20:09:30 +0100 Subject: [PATCH 0296/2004] Add Zeta factory address --- projects/sushiswap-v3/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index c53922404fb..ab7a6008c93 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -71,6 +71,7 @@ module.exports = uniV3Export({ kava: { factory: '0x1e9B24073183d5c6B7aE5FB4b8f0b1dd83FDC77a', fromBlock: 7251753, }, metis: { factory: '0x145d82bCa93cCa2AE057D1c6f26245d1b9522E6F', fromBlock: 9077930, }, bittorrent: { factory: '0xBBDe1d67297329148Fe1ED5e6B00114842728e65', fromBlock: 29265724, }, + zeta: { factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', fromBlock: 1551069, }, }); const config = { From 462636c67463120855364117f825f8a2f1ff0eaf Mon Sep 17 00:00:00 2001 From: Iagon Tech Team <131194847+iagontech@users.noreply.github.com> Date: Fri, 16 Feb 2024 01:43:15 +0545 Subject: [PATCH 0297/2004] iagon added (#8958) * iagon added * moved tvl to pool2 --------- Co-authored-by: unknown --- projects/iagon/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/iagon/index.js diff --git a/projects/iagon/index.js b/projects/iagon/index.js new file mode 100644 index 00000000000..3eaef7ba1be --- /dev/null +++ b/projects/iagon/index.js @@ -0,0 +1,22 @@ +const {sumTokensExport} = require("../helper/chain/cardano") +const {get} = require("../helper/http") +const iagTokenAddress = "5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147" +const iagStaking ="addr1w9k25wa83tyfk5d26tgx4w99e5yhxd86hg33yl7x7ej7yusggvmu3" +async function pool2(){ + const poolValue = await get('https://api.iagon.com/api/v1/pools/tvl/total') +return { + cardano: parseFloat(poolValue.data.tvl) +} +} +module.exports = { + + timetravel:false, + cardano:{ + tvl:()=>({}), + pool2, + staking:sumTokensExport({ + owner:iagStaking, + tokens:[iagTokenAddress] + }) + } +} \ No newline at end of file From 6f930b618fadbcc606878685c4d05e1dc0e9c01d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 15 Feb 2024 23:46:21 +0100 Subject: [PATCH 0298/2004] Bitflow (#8977) * feat: add BitFlow adapter * code refactor --------- Co-authored-by: Rodrigo Eduardo --- projects/bitflow/index.js | 17 +++++++++++++++++ projects/helper/chain/stacks.js | 4 +++- projects/helper/tokenMapping.js | 5 +++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 projects/bitflow/index.js diff --git a/projects/bitflow/index.js b/projects/bitflow/index.js new file mode 100644 index 00000000000..ffd2235fb2f --- /dev/null +++ b/projects/bitflow/index.js @@ -0,0 +1,17 @@ +const { sumTokensExport } = require("../helper/sumTokens"); + +const BITFLOW_ADDRESS = "SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M"; + +const PAIRS = [ + `${BITFLOW_ADDRESS}.stableswap-stx-ststx-v-1-1`, + `${BITFLOW_ADDRESS}.stableswap-stx-ststx-v-1-2`, + `${BITFLOW_ADDRESS}.stableswap-usda-susdt-v-1-2`, + `${BITFLOW_ADDRESS}.stableswap-abtc-xbtc-v-1-2`, +] + +module.exports = { + stacks: { + tvl: sumTokensExport({ owners: PAIRS }), + }, + methodology: "Total Liquidity Added to DEX Trading Pools", +}; diff --git a/projects/helper/chain/stacks.js b/projects/helper/chain/stacks.js index 04989fd2cf7..579e39dbe7a 100644 --- a/projects/helper/chain/stacks.js +++ b/projects/helper/chain/stacks.js @@ -1,5 +1,6 @@ const { get, } = require('../http') const { nullAddress } = require('../tokenMapping') +const { getFixBalancesSync } = require('../portedTokens') const sdk = require('@defillama/sdk') const chain = 'stacks' @@ -41,7 +42,8 @@ async function sumTokens({ owner, owners = [], tokens = [], balances = {}, black if (owner) owners = [owner] await Promise.all(owners.map(i => addTokens(i, { balances, tokens, blacklistedTokens, }))) - return balances + const transform = getFixBalancesSync(chain) + return transform(balances) } module.exports = { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2523386241b..c88302a7b91 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -66,6 +66,11 @@ const fixBalancesTokens = { moonbeam: { '0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c': { coingeckoId: 'voucher-glmr', decimals: 18 }, '0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1': { coingeckoId: 'filecoin', decimals: 18 }, + }, + stacks: { + 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx': { coingeckoId: 'blockstack', decimals: 6 }, + 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt': { coingeckoId: 'tether', decimals: 8 }, + 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc': { coingeckoId: 'bitcoin', decimals: 8 }, } } From e8428ba1285b22d4e733595f49110520577ae425 Mon Sep 17 00:00:00 2001 From: dragon-swap <159241265+dragon-swap@users.noreply.github.com> Date: Fri, 16 Feb 2024 16:54:40 +0900 Subject: [PATCH 0299/2004] Add DragonSwap, DragonSwapV3 Reserves in TVL (#8981) * Add dragonswap, dragonswap-v3 * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dragonswap-v3/index.js | 6 ++++++ projects/dragonswap/index.js | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 projects/dragonswap-v3/index.js create mode 100644 projects/dragonswap/index.js diff --git a/projects/dragonswap-v3/index.js b/projects/dragonswap-v3/index.js new file mode 100644 index 00000000000..8fc9ea748f0 --- /dev/null +++ b/projects/dragonswap-v3/index.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 00000000000..d3a4833adc6 --- /dev/null +++ b/projects/dragonswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport('klaytn', '0x224302153096E3ba16c4423d9Ba102D365a94B2B') From 2eb532619f033332963b8462eb708d432ca9adc7 Mon Sep 17 00:00:00 2001 From: encrypt3dw4lrus <111157912+encrypt3dw4lrus@users.noreply.github.com> Date: Fri, 16 Feb 2024 08:23:12 +0000 Subject: [PATCH 0300/2004] =?UTF-8?q?adding=20seneca=20tvl=20for=20chamber?= =?UTF-8?q?s=20on=20arbitrum=20and=20ethereum,=20staking=20tvl=20=E2=80=A6?= =?UTF-8?q?=20(#8978)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * adding seneca tvl for chambers on arbitrum and ethereum, staking tvl for arbitrum * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/seneca/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/seneca/index.js diff --git a/projects/seneca/index.js b/projects/seneca/index.js new file mode 100644 index 00000000000..d527e738de3 --- /dev/null +++ b/projects/seneca/index.js @@ -0,0 +1,28 @@ +const { staking } = require('../helper/staking'); + +const stakingContract = '0x0bD623E8150918b4252a1df407B914250AcE4CC6'; +const senToken = '0x154388a4650D63acC823e06Ef9e47C1eDdD3cBb2'; + +const config = { + arbitrum: { chambers: ['0x2d99E1116E73110B88C468189aa6AF8Bb4675ec9', '0x4D7b1A1900b74ea4b843a5747740F483152cbA5C', '0x7C160FfE3741a28e754E018DCcBD25dB04B313AC',], lens: '0x5c6cBA80e5FA3c8D9FD53F17d6F5a7A2EDb5fC8C', }, + ethereum: { chambers: ['0xBC83F2711D0749D7454e4A9D53d8594DF0377c05'], 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 (_, _b, _cb, { 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 From 85c69e14c5544fa2853d902ae5138b055a362209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Fri, 16 Feb 2024 15:10:03 +0100 Subject: [PATCH 0301/2004] Add more assets to Nostra Money Market (#8982) --- projects/nostra/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/projects/nostra/index.js b/projects/nostra/index.js index 369410e6ad2..324db7c62e7 100644 --- a/projects/nostra/index.js +++ b/projects/nostra/index.js @@ -27,6 +27,16 @@ const supplyTokens = [ "0x0453c4c996f1047d9370f824d68145bd5e7ce12d00437140ad02181e1d11dc83", "0x06669cb476aa7e6a29c18b59b54f30b8bfcfbb8444f09e7bbb06c10895bf5d7b", "0x0514bd7ee8c97d4286bd481c54aa0793e43edbfb7e1ab9784c4b30469dcf9313", + // wstETH + "0x7e2c010c0b381f347926d5a203da0335ef17aefee75a89292ef2b0f94924864", + "0x5eb6de9c7461b3270d029f00046c8a10d27d4f4a4c931a4ea9769c72ef4edbb", + "0xca44c79a77bcb186f8cdd1a0cd222cc258bebc3bec29a0a020ba20fdca40e9", + "0x9377fdde350e01e0397820ea83ed3b4f05df30bfb8cf8055d62cafa1b2106a", + // LORDS + "0xd294e16a8d24c32eed65ea63757adde543d72bad4af3927f4c7c8969ff43d", + "0x2530a305dd3d92aad5cf97e373a3d07577f6c859337fb0444b9e851ee4a2dd4", + "0x507eb06dd372cb5885d3aaf18b980c41cd3cd4691cfd3a820339a6c0cec2674", + "0x739760bce37f89b6c1e6b1198bb8dc7166b8cf21509032894f912c9d5de9cbd", ]; const debtTokens = [ "0x0491480f21299223b9ce770f23a2c383437f9fbf57abc2ac952e9af8cdb12c97", @@ -34,6 +44,8 @@ const debtTokens = [ "0x063d69ae657bd2f40337c39bf35a870ac27ddf91e6623c2f52529db4c1619a51", "0x066037c083c33330a8460a65e4748ceec275bbf5f28aa71b686cbc0010e12597", "0x024e9b0d6bc79e111e6872bb1ada2a874c25712cf08dfc5bcf0de008a7cca55f", + "0x348cc417fc877a7868a66510e8e0d0f3f351f5e6b0886a86b652fcb30a3d1fb", + "0x35778d24792bbebcf7651146896df5f787641af9e2a3db06480a637fbc9fff8", ]; function* chunks(arr, n) { From de5d46425f3965afd573303da660e3019ab4ec37 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 16 Feb 2024 15:53:25 +0100 Subject: [PATCH 0302/2004] Clip (#8986) * add Clip Finance TVL fetching * set doublecounted as true * rewrite TVL calculation * add vaultRegistry to fetch vaults * code refactor --------- Co-authored-by: Vitaliy Shulik --- projects/clip-finance/index.js | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 projects/clip-finance/index.js diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js new file mode 100644 index 00000000000..0edfbbf5c60 --- /dev/null +++ b/projects/clip-finance/index.js @@ -0,0 +1,54 @@ +const config = { + bsc: { + vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", + }, + linea: { + vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", + }, +} + +const tvl = async (_, _b, _cb, { api }) => { + const { vaultRegistry } = config[api.chain]; + const vaultDatas = await api.call({ abi: abis.getVaults, target: vaultRegistry }) + const vaults = vaultDatas.map(i => i.vault) + + + const isAMMVaults = (await api.multiCall({ calls: vaults, abi: abis.getTotalAmounts, permitFailure: true, })).map(i => !!i) + const ammVaults = vaults.filter((_, i) => isAMMVaults[i]) + const ammPools = vaultDatas.filter((_, i) => isAMMVaults[i]).map(i => '0x' + i.data.slice(-40)) + 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) + }) + + + const isStargate = (await api.multiCall({ calls: vaults, abi: 'address:stargateFarm', permitFailure: true, })).map(i => !!i) + const stargateVaults = vaults.filter((_, i) => isStargate[i]) + 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: 1697627757, // (Oct-18-2023 11:15:57 AM +UTC) deployed on the BSC network +}; + +Object.keys(config).forEach((chain) => { + module.exports[chain] = { + tvl, + }; +}); + +const abis = { + getTotalAmounts: + "function getTotalAmounts() public view returns (uint256 total0, uint256 total1, uint128 liquidity)", + token0: "address:token0", + token1: "address:token1", + depositToken: "address:depositToken", + totalTokens: "uint256:totalTokens", + getVaults: "function getVaults() view returns ((address vault, bytes data)[])", +}; From aa9c2db4fae224a114388432a07c38ba73a98ee2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 16 Feb 2024 16:16:59 +0100 Subject: [PATCH 0303/2004] update logx --- projects/logx/index.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/projects/logx/index.js b/projects/logx/index.js index 1c1450805b9..b8a64c511ac 100644 --- a/projects/logx/index.js +++ b/projects/logx/index.js @@ -8,15 +8,21 @@ const config = { kroma: '0xC5f444D25D5013C395F70398350d2969eF0F6AA0', manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5', telos: '0x082321F9939373b02Ad54ea214BF6e822531e679', - mode: '0x34b83A3759ba4c9F99c339604181bf6bBdED4C79' + fuse: '0x082321F9939373b02Ad54ea214BF6e822531e679', + mode: ['0x34b83A3759ba4c9F99c339604181bf6bBdED4C79', '0x082321F9939373b02Ad54ea214BF6e822531e679'] } Object.keys(config).forEach(chain => { - const vault = config[chain] + let vault = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - const tokens = await api.fetchList({ lengthAbi: 'allWhitelistedTokensLength', itemAbi: 'allWhitelistedTokens', target: vault }) - return api.sumTokens({ owner: vault, tokens }) + 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, v]) + } + return api.sumTokens({ ownerTokens }) } } }) \ No newline at end of file From 57fddb2250014645b7149e5713eb7e9e0ea35194 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 17 Feb 2024 01:17:43 +0100 Subject: [PATCH 0304/2004] Remove duplicate line in getUniTVL function --- projects/helper/cache/uniswap.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index 166a6787eb4..f9515f97de1 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -106,7 +106,6 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, 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.token0s[i], _reserve0) sdk.util.sumSingleBalance(balances, cache.token1s[i], _reserve1) } else { data.push({ From 59cc92056e034b0d1b1f0fab103fcb9ca2f4fd92 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 17 Feb 2024 01:14:14 +0000 Subject: [PATCH 0305/2004] fix soyfinance --- projects/soyfinance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/soyfinance/index.js b/projects/soyfinance/index.js index cc8899fa920..4bc55bc7718 100644 --- a/projects/soyfinance/index.js +++ b/projects/soyfinance/index.js @@ -9,6 +9,7 @@ module.exports = { tvl: getUniTVL({ factory: '0x9CC7C769eA3B37F1Af0Ad642A268b80dc80754c5', useDefaultCoreAssets: true, + blacklistedTokens: ["0x9fae2529863bd691b4a7171bdfcf33c7ebb10a65"] }) }, ethereumclassic: { From 5f88433e0b1f5345746c6e925b9972336ca86815 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 17 Feb 2024 01:17:35 +0000 Subject: [PATCH 0306/2004] remove token from bridge --- projects/arbitrumNova/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/arbitrumNova/index.js b/projects/arbitrumNova/index.js index 39f614ed787..f78593c37f3 100644 --- a/projects/arbitrumNova/index.js +++ b/projects/arbitrumNova/index.js @@ -12,6 +12,9 @@ module.exports = { "0xA2e996f0cb33575FA0E36e8f62fCd4a9b897aAd3" ], fetchCoValentTokens: true, + blacklistedTokens: [ + "0xe3dbc4f88eaa632ddf9708732e2832eeaa6688ab" // Arbius, bridged whole supply + ] }), }, }; From 6b885fbd6cb928e366f319bd6d22686132248a17 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Sun, 18 Feb 2024 00:13:25 +0800 Subject: [PATCH 0307/2004] Add cetable psm to tvl (#8991) * feature: add cetus lp data, usdc psm, and bucketus psm * feature: add psm of usdt * add bucket borrowed data * add cetable psm --- projects/bucket-protocol/index.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index e5ea5e711c7..e6b1dbde744 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -1,14 +1,12 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const sui = require("../helper/chain/sui"); const MAINNET_PROTOCOL_ID = "0x9e3dab13212b27f5434416939db5dec6a319d15b89a84fd074d03ece6350d3df"; const BUCK = "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK"; -const USDC = - ADDRESSES.sui.USDC; -const USDT = - ADDRESSES.sui.USDT; +const USDC = ADDRESSES.sui.USDC; +const USDT = ADDRESSES.sui.USDT; const AF_LP_IDs = [ "0xe2569ee20149c2909f0f6527c210bc9d97047fe948d34737de5420fab2db7062", @@ -42,6 +40,9 @@ const USDT_PSM = const BUCKETUS_PSM = "0xba86a0f37377844f38060a9f62b5c5cd3f8ba13901fa6c4ee5777c1cc535306b"; +const CETABLE_PSM = + "0x6e94fe6910747a30e52addf446f2d7e844f69bf39eced6bed03441e01fa66acd"; + async function tvl(_, _1, _2, { api }) { const protocolFields = await sui.getDynamicFieldObjects({ parent: MAINNET_PROTOCOL_ID, @@ -69,6 +70,9 @@ async function tvl(_, _1, _2, { api }) { const bucketusPSMObj = await sui.getObject(BUCKETUS_PSM); const bucketusPSMAmount = bucketusPSMObj.fields.pool; + const cetablePSMObj = await sui.getObject(CETABLE_PSM); + const cetablePSMAmount = cetablePSMObj.fields.pool; + const bucketList = protocolFields.filter((item) => item.type.includes("Bucket") ); @@ -129,15 +133,19 @@ async function tvl(_, _1, _2, { api }) { // 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(BUCK, halfStakedBucketus); api.add(USDC, Math.floor(halfStakedBucketus / 1000)); api.add(USDC, Math.floor(usdcPSMAmount)); api.add(USDT, Math.floor(usdtPSMAmount)); + // 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)); + const halfBucketusAmount = Math.floor(bucketusPSMAmount / 2); - // api.add(BUCK, halfBucketusAmount); api.add(USDC, Math.floor(halfBucketusAmount / 1000)); } From 3092d271ec89f7a6b114b9ca45a4e2ea889ec5fc Mon Sep 17 00:00:00 2001 From: hildobby Date: Sat, 17 Feb 2024 17:24:47 +0100 Subject: [PATCH 0308/2004] Some fixes for Cega (#8866) * Some fixes for Cega * fix --- projects/cega-v2/index.js | 4 ++-- projects/cega/evm.js | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/projects/cega-v2/index.js b/projects/cega-v2/index.js index 4fa770c30ee..124e65cbf5f 100644 --- a/projects/cega-v2/index.js +++ b/projects/cega-v2/index.js @@ -4,13 +4,13 @@ const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: sumTokensExport({ - tokens:[nullAddress, ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT], + tokens:[nullAddress, ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WBTC], owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"] }) }, arbitrum: { tvl: sumTokensExport({ - tokens:[nullAddress, ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT], + tokens:[nullAddress, ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.WBTC], owners: ["0x475c4af369b28997b25bd756ef92797ad3f69593"] }) } diff --git a/projects/cega/evm.js b/projects/cega/evm.js index 7ac158c6768..888dd78d52f 100644 --- a/projects/cega/evm.js +++ b/projects/cega/evm.js @@ -44,7 +44,7 @@ async function getSumFCNProductQueuedDeposits(fcnProducts, api) { function getLOVCalls(lovProducts) { const calls = [] for (const product of lovProducts) - for (let i = 1; i < maxLeverage; i++) + for (let i = 1; i <= maxLeverage; i++) calls.push([product, i]) return calls.map(i => ({ params: i })) } @@ -69,7 +69,9 @@ async function getEthereumTvl(_, _1, _2, { api }) { getSumLOVProductQueuedDeposits(lovProducts, api) ] if (api.chain === 'ethereum') { - calls.push(getSumFCNProductDeposits(FCN_PURE_OPTIONS_ADDRESSES, api), getSumFCNProductQueuedDeposits(FCN_PURE_OPTIONS_ADDRESSES, api)) + 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); @@ -80,8 +82,7 @@ async function getEthereumTvl(_, _1, _2, { api }) { async function getBorrowedTvl(_, _1, _2, { api }) { const { usdcAddress } = config[api.chain] const results = await Promise.all([ - getSumFCNProductDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api), - getSumFCNProductQueuedDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api), + getSumFCNProductDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api) ]); const sum = results.flat().flat().reduce((total, currentValue) => total + +currentValue, 0); api.add(usdcAddress, sum) From fa92e52f39208194faf238aef3cefb707b1d536d Mon Sep 17 00:00:00 2001 From: Samster91 <37342443+samster91@users.noreply.github.com> Date: Sat, 17 Feb 2024 17:34:50 +0100 Subject: [PATCH 0309/2004] Amphor vault for Idle Finance (#8989) * NEW: optimism & zkEVM for Idle * FIX: lower case underlying mapping addresses * minor fix * NEW: automatically get Idle vaults from apis * FIX: added hallmarks * NEW: added amphor vaults --------- Co-authored-by: Samster91 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/idle/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/idle/index.js b/projects/idle/index.js index 6c07a27df2f..00486f80f65 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -40,7 +40,8 @@ const contracts = { "0xDcE26B2c78609b983cF91cCcD43E238353653b0E", // IdleCDO_clearpool_DAI // "0xd0DbcD556cA22d3f3c142e9a3220053FD7a247BC", // "0x1f5A97fB665e295303D2F7215bA2160cc5313c8E", // - "0x8E0A8A5c1e5B3ac0670Ea5a613bB15724D51Fc37" // Instadapp stETH + "0x8E0A8A5c1e5B3ac0670Ea5a613bB15724D51Fc37", // Instadapp stETH + "0x9e0c5ee5e4B187Cf18B23745FCF2b6aE66a9B52f" // Amphor wstETH ] }, polygon: { From a957f7dd3d08e25805e84dedaa685544b1b63bc1 Mon Sep 17 00:00:00 2001 From: Phil <30321052+philipjames44@users.noreply.github.com> Date: Sat, 17 Feb 2024 09:36:32 -0700 Subject: [PATCH 0310/2004] Sommelier: Update TVL Calcs to Include new Arbitrum Vault (#8990) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults * Sommelier: Add Turbo eETH V2 * Sommelier: Add Turbo eETH V2 vault * Sommelier: Arbitrum vaults * Fix Arbitrum TVL cals --- projects/sommelier/cellar-constants.js | 16 ++++++++----- projects/sommelier/index.js | 30 +++++++++++++++++++++---- projects/sommelier/v2.js | 31 +++++++++++++++----------- 3 files changed, 55 insertions(+), 22 deletions(-) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index e51492f68fe..43a343fbfee 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -70,9 +70,15 @@ const cellarsV2p5 = [ { id: TURBO_EETH_V2, startBlock: 19163705 }, ]; +// v2.5 Cellars on Arbitrum +const REAL_YIELD_ETH_ARB = "0xC47bB288178Ea40bF520a91826a3DEE9e0DbFA4C"; + +const arbitrumCellarsV2p5 = [{ id: REAL_YIELD_ETH_ARB, startBlock: 178830458 }]; + module.exports = { - cellarsV0815, - cellarsV0816, - cellarsV2, - cellarsV2p5 -} \ No newline at end of file + cellarsV0815, + cellarsV0816, + cellarsV2, + cellarsV2p5, + arbitrumCellarsV2p5, +}; diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index 6e70c7599d5..ccd6eeabd7e 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -1,11 +1,16 @@ const v0815 = require("./v0-8-15"); const v0816 = require("./v0-8-16"); const v2 = require("./v2"); -const chain = "ethereum"; -const { cellarsV0815, cellarsV0816, cellarsV2, cellarsV2p5 } = require("./cellar-constants"); +const { + cellarsV0815, + cellarsV0816, + cellarsV2, + cellarsV2p5, + arbitrumCellarsV2p5, +} = require("./cellar-constants"); -async function tvl(timestamp, block, chainBlocks, { api }) { +async function ethereum_tvl(timestamp, block, chainBlocks, { api }) { const balances = {}; const baseOptions = { balances, chainBlocks }; @@ -25,6 +30,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { ...baseOptions, api, cellars: filterActiveCellars(cellarsV2, block), + ownersToDedupe: cellarsV2.concat(cellarsV2p5), }); // no change in sumTvl implementation from v2 to v2.5 @@ -32,6 +38,21 @@ async function tvl(timestamp, block, chainBlocks, { api }) { ...baseOptions, api, cellars: filterActiveCellars(cellarsV2p5, block), + ownersToDedupe: cellarsV2.concat(cellarsV2p5), + }); + + return balances; +} + +async function arbitrum_tvl(timestamp, block, chainBlocks, { api }) { + const balances = {}; + const baseOptions = { balances, chainBlocks }; + + await v2.sumTvl({ + ...baseOptions, + api, + cellars: arbitrumCellarsV2p5.map((cellar) => cellar.id), + ownersToDedupe: arbitrumCellarsV2p5, }); return balances; @@ -50,7 +71,8 @@ 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: 1656652494, - [chain]: { tvl }, + ["ethereum"]: { tvl: ethereum_tvl }, + ["arbitrum"]: { tvl: arbitrum_tvl }, hallmarks: [ [1658419200, "aave2 Cellar Launch"], [1674671068, "Real Yield USD Cellar Launch"], diff --git a/projects/sommelier/v2.js b/projects/sommelier/v2.js index a712e2d4405..f0368fb1c0e 100644 --- a/projects/sommelier/v2.js +++ b/projects/sommelier/v2.js @@ -1,42 +1,47 @@ const sdk = require("@defillama/sdk"); -const { cellarsV2, cellarsV2p5 } = require("./cellar-constants"); -async function sumTvl({ balances, cellars, api }) { - const assets = await api.multiCall({ abi: "address:asset", calls: cellars}) - const bals = await api.multiCall({ abi: "uint256:totalAssets", calls: cellars}) +async function sumTvl({ balances, 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 - // Concatenate cellar owners to dedupe (only need v2+, older veriosns dont take positions in other cellars) - const owners = cellarsV2.concat(cellarsV2p5) - 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 sdk.api.abi.multiCall({ - calls: owners.map((owner) => ({ + const shares = await api.multiCall({ + calls: ownersToDedupe.map((owner) => ({ target: target, // Base Cellar - params: owner.id, // Potential cellar holding shares in 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.output.reduce((sum, share) => sum + Number(share.output), 0); + 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 sdk.api.abi.multiCall({ + 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.output.map((share) => share.output); + totalShares = totalShares.map((share) => share); // Create a ratio of 1-(sharesToIgnore/totalShares) to multiply by the totalAssets const ratios = totalShares.map((share, i) => { From fbe83a7540f5e95634a9f7057509f86ccf37aee5 Mon Sep 17 00:00:00 2001 From: Stone <125890624+Stonepapa@users.noreply.github.com> Date: Sun, 18 Feb 2024 03:24:49 +0800 Subject: [PATCH 0311/2004] =?UTF-8?q?Add=20B=C2=B2=20Buzz=20TVL=20(#8992)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create index.js Add B² Buzz TVL * Refactor token TVL calculations * Update UniTVL cache to use abi.allPairs instead of abi.allPairsLength --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bsquared/index.js | 44 ++++++++++++++++++++++++++++++++ projects/helper/cache/uniswap.js | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 projects/bsquared/index.js diff --git a/projects/bsquared/index.js b/projects/bsquared/index.js new file mode 100644 index 00000000000..615e604250c --- /dev/null +++ b/projects/bsquared/index.js @@ -0,0 +1,44 @@ +const sdk = require('@defillama/sdk'); +const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); +const { sumTokensExport } = require('../helper/sumTokens'); +const ADDRESSES = require('../helper/coreAssets.json') + +const BTCOwners = [ + "bc1qva5m5e7da2zm590z03tdnj42u9q2uye3hgrehwrzgg8j4kxq9seq9rvw0m", +]; +const BRC20Owners = [ + "bc1q97ctqygjgj0ljxgge4q735ujxvlad8smass7f0axc6x3ggffr8xqwn69hc", +]; + +const ADDRESSES_ETHEREUM_STONE = '0x7122985656e38BDC0302Db86685bb972b145bD3C'; + +module.exports = { + methodology: "Staking tokens via BSquared Network Buzz counts as TVL", + bitcoin: { + tvl: sdk.util.sumChainTvls([ + sumTokensExport({ owners: BTCOwners }), + sumBRC20TokensExport({ owners: BRC20Owners }), + ]), + }, + ethereum: { + tvl: sumTokensExport({ + ownerTokens: [ + [[ADDRESSES_ETHEREUM_STONE, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WBTC], "0xeea3A032f381AB1E415e82Fe08ebeb20F513c42c",], + ] + }), + }, + polygon: { + tvl: sumTokensExport({ + ownerTokens: [ + [[ADDRESSES.null], "0x01cE88498ED095d386e09834D32Fd8f1FeCd184a",], + ] + }), + }, + bsc: { + tvl: sumTokensExport({ + ownerTokens: [ + [[ADDRESSES.bsc.BTCB, ADDRESSES.ethereum.FDUSD], "0x0A80028d73Faaee6e57484E3335BeFda0de7f455",], + ] + }), + }, +}; diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index f9515f97de1..c75d1b260b1 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -133,7 +133,7 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, if (cache.pairs) { for (let i = 0; i < cache.pairs.length; i++) { if (!cache.pairs[i]) { - cache.pairs[i] = await api.call({ abi: abi.allPairsLength, target: factory, params: i }) + cache.pairs[i] = await api.call({ abi: abi.allPairs, target: factory, params: i }) updateCache = true } let pair = cache.pairs[i] From 7d2523cc98524666f3af854f2ec2ccc12e4aa015 Mon Sep 17 00:00:00 2001 From: od-git <47507903+od-git@users.noreply.github.com> Date: Sat, 17 Feb 2024 23:55:41 +0100 Subject: [PATCH 0312/2004] Stratum Exchange (#8993) * Add stratumexchange adapter * Add TGE to hallmarks --- projects/stratumexchange/index.js | 79 +++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 projects/stratumexchange/index.js diff --git a/projects/stratumexchange/index.js b/projects/stratumexchange/index.js new file mode 100644 index 00000000000..510fe3ec714 --- /dev/null +++ b/projects/stratumexchange/index.js @@ -0,0 +1,79 @@ +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 (_, _b, _cb, {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 From d054fb02861fd0161a8055161cae4f5bc7849561 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 18 Feb 2024 19:40:26 +0100 Subject: [PATCH 0313/2004] Refactor TVL calculation and add support for multiple tokens --- projects/inception-lrt/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js index 83f3d5c5158..2b4d0394a02 100644 --- a/projects/inception-lrt/index.js +++ b/projects/inception-lrt/index.js @@ -1,9 +1,11 @@ async function tvl(_, _b, _cb, { api, }) { const vaults = ['0x36B429439AB227fAB170A4dFb3321741c8815e55', '0xfE715358368416E01d3A961D3a037b7359735d5e', '0x90E80E25ABDB6205B08DeBa29a87f7eb039023C2', '0x4878F636A9Aa314B776Ac51A25021C44CAF86bEd', '0xA9F8c770661BeE8DF2D026edB1Cb6FF763C780FF', '0x1Aa53BC4Beb82aDf7f5EDEE9e3bBF3434aD59F12', '0x814CC6B8fd2555845541FB843f37418b05977d8d', '0xc4181dC7BB31453C4A48689ce0CBe975e495321c', '0xC0660932C5dCaD4A1409b7975d147203B1e9A2B6', '0x6E17a8b5D33e6DBdB9fC61d758BF554b6AD93322', '0x295234B7E370a5Db2D2447aCA83bc7448f151161', '0xd0ee89d82183D7Ddaef14C6b4fC0AA742F426355'] const total_deposited = await api.multiCall({ abi: 'uint256:getTotalDeposited', calls: vaults, permitFailure: true}) - const total_withdraw = await api.multiCall({ abi: 'uint256:totalAmountToWithdraw', calls: vaults, permitFailure: true}) - const result = total_deposited.map((deposited, index) => deposited - total_withdraw[index]); - result.forEach(i => api.addGasToken(i ?? 0)) + // const total_withdraw = await api.multiCall({ abi: 'uint256:totalAmountToWithdraw', calls: vaults, permitFailure: true}) + const strategies = await api.multiCall({ abi: 'address:strategy', calls: vaults}) + const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: strategies}) + // const result = total_deposited.map((deposited, index) => deposited - total_withdraw[index]); + api.add(tokens, total_deposited) } module.exports = { From 76413adfeab82a6010110d34a5a1959bd1d9554c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Feb 2024 08:44:48 +0100 Subject: [PATCH 0314/2004] track sobax-io tvl --- projects/sobax-io/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/sobax-io/index.js diff --git a/projects/sobax-io/index.js b/projects/sobax-io/index.js new file mode 100644 index 00000000000..1c0621eeb3b --- /dev/null +++ b/projects/sobax-io/index.js @@ -0,0 +1,9 @@ +const {staking} = require('../helper/staking') +const { gmxExports } = require('../helper/gmx') + +module.exports = { + polygon:{ + staking: staking('0xa326cF15E65FDEA84E63506ed56c122bC9E9A4BE', '0x0709E962221dd8AC9eC5c56f85ef789D3C1b9776'), + tvl: gmxExports({ vault: '0x0e1D69B5888a0411Fe0A05a5A4d2ACED4305f67c', }) + } +}; From ceef6fe3d4db01f1bbd95bdb611b026d1b4459b7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Feb 2024 10:26:27 +0100 Subject: [PATCH 0315/2004] track jediswap v2 --- projects/helper/chain/starknet.js | 30 ++++++++++++++++++++++++++++-- projects/helper/utils.js | 2 +- projects/jediswap-v2/index.js | 21 +++++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 projects/jediswap-v2/index.js diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index d1af2a57b3a..7082821298b 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -1,4 +1,6 @@ // 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') @@ -6,6 +8,7 @@ const axios = require('axios') const plimit = require('p-limit') const { sliceIntoChunks, sleep } = require('../utils') const { getUniTVL } = require('../cache/uniswap') +const { getCache } = require('../cache') const _rateLimited = plimit(1) const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) @@ -100,7 +103,7 @@ const balanceOfABI = { } -async function sumTokens({ owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], token, api, }) { +async function sumTokens({ owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], token, ownerTokens = [], api, }) { if (token) tokens = [token] if (owner) owners = [owner] @@ -113,11 +116,15 @@ async function sumTokens({ owner, owners = [], tokens = [], tokensAndOwners = [] 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) { @@ -152,5 +159,24 @@ module.exports = { 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) + console.log(data) +} + api.call = module.exports.call -api.multiCall = module.exports.multiCall \ No newline at end of file +api.multiCall = module.exports.multiCall diff --git a/projects/helper/utils.js b/projects/helper/utils.js index af6ee4b968c..a517070d3c6 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -244,7 +244,7 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' labelMapping[label] = token return } - if (!token.startsWith('0x')) return; + if (!token.startsWith('0x') || chain === 'starknet') return; if (!label.startsWith(chain)) ethTokens.push(token) else diff --git a/projects/jediswap-v2/index.js b/projects/jediswap-v2/index.js new file mode 100644 index 00000000000..83330a6f64f --- /dev/null +++ b/projects/jediswap-v2/index.js @@ -0,0 +1,21 @@ +const { sumTokens } = require('../helper/chain/starknet') +const { cachedGraphQuery } = require('../helper/cache') +const factory = '0x04ba0de31008f4e3edd42b3c31db8f49490505885d684b78f5aa1572850b3a5a' + +async function tvl() { + const { api } = arguments[3] + 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) + return {} +} + +module.exports = { + timetravel: false, + starknet: { + tvl, + } +} \ No newline at end of file From 0f267a90bee1ffd01ad5950a4cc9631e4ca95502 Mon Sep 17 00:00:00 2001 From: Efe <97621690+efeDaniels@users.noreply.github.com> Date: Mon, 19 Feb 2024 15:17:50 +0300 Subject: [PATCH 0316/2004] chore: Update Factory addresses (#8996) * chore: Update Factory addresses * chore: Update new token and delete telos/arb factory info * chore: Re-add deleted chains and BANANA token --- projects/apeswap-amm/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/apeswap-amm/index.js b/projects/apeswap-amm/index.js index 99157d69bc7..3e19809fa15 100644 --- a/projects/apeswap-amm/index.js +++ b/projects/apeswap-amm/index.js @@ -2,13 +2,14 @@ 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" +const FACTORY_ARBITRUM = "0xCf083Be4164828f00cAE704EC15a36D711491284"; module.exports = { misrepresentedTokens: true, @@ -17,7 +18,11 @@ module.exports = { factory: FACTORY_BSC, useDefaultCoreAssets: true, }), - staking: staking([MASTER_APE, MASTER_APE_V2], BANANA_TOKEN, "bsc"), + staking: staking( + [MASTER_APE, MASTER_APE_V2], + [BANANA_TOKEN, ABOND_TOKEN], + "bsc" + ), }, polygon: { tvl: getUniTVL({ From b3ec4ef929fd64cd191fb24b87df354da4c0a366 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Feb 2024 14:48:41 +0100 Subject: [PATCH 0317/2004] fix hotcross --- projects/hotcross/index.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/projects/hotcross/index.js b/projects/hotcross/index.js index 9d823e284dc..28cfa0a693b 100644 --- a/projects/hotcross/index.js +++ b/projects/hotcross/index.js @@ -1,5 +1,5 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); -const { fetchURL } = require("../helper/utils"); +const { getConfig } = require("../helper/cache"); const chainKeys = { ethereum: { @@ -12,9 +12,9 @@ const chainKeys = { }, }; -function tvl(chain, get) { +function tvl(chain) { return async (_t, _e, { [chain]: block }) => { - const assets = (await get).data; + const assets = await getConfig('hotcross', "https://api.hotcross.com/bridges"); const tokensAndOwners = assets.map((data) => [ data[chainKeys[chain].asset], data[`${chainKeys[chain].chain}BridgeAddress`], @@ -24,9 +24,8 @@ function tvl(chain, get) { } const chainTypeExports = () => { - const get = fetchURL("https://api.hotcross.com/bridges"); return Object.keys(chainKeys).reduce( - (obj, chain) => ({ ...obj, [chain]: { tvl: tvl(chain, get) } }), + (obj, chain) => ({ ...obj, [chain]: { tvl: tvl(chain) } }), {} ); }; From f339526e3e1090329278cd6be2e80f18dedfc70d Mon Sep 17 00:00:00 2001 From: kappayield-range <131840920+kappayield-range@users.noreply.github.com> Date: Mon, 19 Feb 2024 22:10:35 +0800 Subject: [PATCH 0318/2004] [Range Protocol] Add Zkfair Factory (#8995) * Add ethereum-uniswap factory vault * Add zeta chain factory for izumi * Add Scroll Factory * code refactor * Add zkfair factory --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/range/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/range/index.js b/projects/range/index.js index 351af5b60c7..1a1c7b2f235 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -38,6 +38,9 @@ const config ={ ], scroll: [ { factory: '0x52B29C6154Ad0f5C02416B8cB1cEB76E082fC9C7', fromBlock: 1803841, factoryType: 'izumi' } // izumi + ], + zkfair: [ + { factory: '0x873fD467A2A7e4E0A71aD3c45966A84797e55B5B', fromBlock: 6740958, factoryType: 'izumi' } // izumi ] } From a2d9911de4a9055ea1e49d219c948d381df9b590 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Feb 2024 15:26:56 +0100 Subject: [PATCH 0319/2004] Wemix-kroma (#8997) * add WEMIX On Kroma TVL on kroma chain * fix: change methodology to balance of from total supply * code refactor --------- Co-authored-by: martin-ryunseok --- projects/helper/tokenMapping.js | 3 +++ projects/wemix-on-kroma/index.js | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 projects/wemix-on-kroma/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index c88302a7b91..8c845552a7d 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -55,6 +55,9 @@ const fixBalancesTokens = { kujira: { 'factory:kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t:ufuzn': { coingeckoId: 'fuzion', decimals: 6 }, }, + kroma: { + '0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e': { coingeckoId: 'wemix-token', decimals: 18 }, + }, astar: { '0xffffffff00000000000000010000000000000010': { coingeckoId: 'astar', decimals:18 }, }, diff --git a/projects/wemix-on-kroma/index.js b/projects/wemix-on-kroma/index.js new file mode 100644 index 00000000000..2ff05591159 --- /dev/null +++ b/projects/wemix-on-kroma/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs'); +const wemixEContract = '0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e'; +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]}) }, +} From 3c201fd0ba2fccad3d0327f6654054038c772b0a Mon Sep 17 00:00:00 2001 From: cerraio <147749662+cerraio@users.noreply.github.com> Date: Mon, 19 Feb 2024 18:27:08 +0200 Subject: [PATCH 0320/2004] Update cerra.io (#8998) After audit smart contracts were redeployed, adding new smart contract address --- projects/cerra/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/cerra/index.js b/projects/cerra/index.js index 2b7c0e5eb69..34dce89be35 100644 --- a/projects/cerra/index.js +++ b/projects/cerra/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require("../helper/chain/cardano"); -const LENDING_SCRIPT = "addr1w8z7wt5leqj5cv9x887a4mw257f63ze4h64cput99cr373qfjgjwn"; +const LENDING_SCRIPT = "addr1zy7d8hd6httaxc5xgtqsgcazdj0ughe2p534ns5lgh66jus0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhqlkdnye"; async function tvl() { return sumTokens2({ scripts: [LENDING_SCRIPT] }) From 255ebbcbbf7e9376b7336b95168f9c4a9e65484c Mon Sep 17 00:00:00 2001 From: Juan Snaider Cruickshank <32991293+jscrui@users.noreply.github.com> Date: Mon, 19 Feb 2024 13:29:02 -0300 Subject: [PATCH 0321/2004] 0xscans (#8999) * addition of 0xscans I've added the staking pools from 0xscans. About 0xscans: Automated smart-contracts analysis tool leveraging AI testing and simulation providing detailed audit reports outlining vulnerabilities and actionable insights. * Update index.js * Delete yarn --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/0xscans/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/0xscans/index.js diff --git a/projects/0xscans/index.js b/projects/0xscans/index.js new file mode 100644 index 00000000000..9bb7d401285 --- /dev/null +++ b/projects/0xscans/index.js @@ -0,0 +1,13 @@ +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", +}; From 07671643523785f7440d0d46a45552a1dbbc6f89 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:29:34 +0100 Subject: [PATCH 0322/2004] bugfix --- projects/jediswap-v2/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/jediswap-v2/index.js b/projects/jediswap-v2/index.js index 83330a6f64f..04f0c05245e 100644 --- a/projects/jediswap-v2/index.js +++ b/projects/jediswap-v2/index.js @@ -10,7 +10,6 @@ async function tvl() { 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) - return {} } module.exports = { From c822c908b6a3d8d125154030379dc8f414f232a4 Mon Sep 17 00:00:00 2001 From: alnoki <43892045+alnoki@users.noreply.github.com> Date: Mon, 19 Feb 2024 15:35:59 -0800 Subject: [PATCH 0323/2004] add TVL for Econia (#9000) Co-authored-by: Bogdan Crisan --- projects/econia.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/econia.js diff --git a/projects/econia.js b/projects/econia.js new file mode 100644 index 00000000000..8d4e5a2fa1b --- /dev/null +++ b/projects/econia.js @@ -0,0 +1,37 @@ +const axios = require("axios"); +const BigNumber = require("bignumber.js"); + +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() { + 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; + } + } + })) + + const tvl = convertedTvls.reduce((p, c) => p + c, 0); + + return tvl; +} + +module.exports = { + fetch: getTvl +} From 1dad706de323d1de27101a8aede0c85aab4efc6b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Feb 2024 00:53:07 +0100 Subject: [PATCH 0324/2004] track meteora dlmm --- projects/meteora-dlmm/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/meteora-dlmm/index.js diff --git a/projects/meteora-dlmm/index.js b/projects/meteora-dlmm/index.js new file mode 100644 index 00000000000..7eac27a54ab --- /dev/null +++ b/projects/meteora-dlmm/index.js @@ -0,0 +1,18 @@ +const { getProvider, sumTokens2, } = require('../helper/solana') +const { Program, } = require("@project-serum/anchor"); + +// https://docs.meteora.ag/dlmm/dlmm-integration/dlmm-sdk +async function tvl() { + 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, + solana: { tvl, }, +} From 738c555da88df9f3866051c065d37168f7369b20 Mon Sep 17 00:00:00 2001 From: Nico Szerman Date: Mon, 19 Feb 2024 18:58:19 -0500 Subject: [PATCH 0325/2004] Added project token and removed need for price feed (#8979) * added arkk token and removed need for offchain price feed * added pricing mechanism for tokens without enough LP liquidity * fetches price from liquidity pool * fixed wrong timetravel flag * removed axios * added 24 hours price averaging and try catch to support time traveling * fixed eslint * using api price instead of liquidity pool price. keeping backup in nicszerman backup repo * removed comments * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sailingprotocol/index.js | 47 +++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js index f0ad9e49f99..2573009a70d 100644 --- a/projects/sailingprotocol/index.js +++ b/projects/sailingprotocol/index.js @@ -1,19 +1,42 @@ -const sdk = require('@defillama/sdk') +const sdk = require('@defillama/sdk'); +const axios = require('axios'); -async function tvl(_0, _1, _2, { api }) { - const SPY = '0x75B5DACEc8DACcb260eA47549aE882513A21CE01' - const arbitrumApi = new sdk.ChainApi({ chain: 'arbitrum' }) - const totalSupply = await api.call({ abi: 'erc20:totalSupply', target: SPY }) - // https://pyth.network/developers/price-feed-ids - const { price, expo } = await arbitrumApi.call({ abi: 'function getPriceUnsafe(bytes32 id) view returns (tuple(int64 price, uint64 conf, int32 expo, uint256 publishTime) price)', target: '0xff1a0f4744e8582df1ae09d5611b887b6a12925c', params: '0x19e09bb805456ada3979a7d1cbb4b6d63babc3a0f8e8a9509f68afa5c4c11cd5' }) - return { - tether: (totalSupply * price) / 10 ** (18 - expo) +const tokens = [ + { + "address": "0x75B5DACEc8DACcb260eA47549aE882513A21CE01", + "ticker": "SPY", + "sufficientLiquidityForDefiLlamaIndexer": false, + }, + { + "address": "0x2E4763AdBEe00D5eB3089ec25973599c0e62dD07", + "ticker": "ARKK", + "sufficientLiquidityForDefiLlamaIndexer": false, + } +]; + +async function tvl(_0, blockNumber, _2, { api }) { + for (const token of tokens) { + const tokenTotalSupply = await api.call({ target: token.address, abi: 'erc20:totalSupply' }); + // api.add(token.address, tokenTotalSupply); + if (!token.sufficientLiquidityForDefiLlamaIndexer) { + const tickerPricing = await axios.post( + 'https://sailingprotocol.org/api/sailingprotocol/market_data/historical_intraday', + { + ticker: token.ticker + } + ); + const tickerPrice = tickerPricing.data.at(-1)[1]; + api.add( + '0x919C1c267BC06a7039e03fcc2eF738525769109c', // usdtKavaAddress + tokenTotalSupply * tickerPrice * (1e6 / 1e18) + ); + } } } module.exports = { - misrepresentedTokens: true, - timetravel: false, + 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 is extracted from the contract found in the Sailing Protocol API, and this value is multiplied by the latest closing price of the S&P500 to obtain the TVL in USD.' + methodology: 'The total supply of their circulating stocks is extracted from their stock token contracts.' } From 55d4edbc893f7cfcaba58f0a500ac371335e3d6f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Feb 2024 01:34:50 +0100 Subject: [PATCH 0326/2004] Aurelius (#9002) * tvl integration for ethos reserve * Add Ethos V2 and V2.1 TVL * Add Aurelius * Clean up * Split up borrowed from money market tvl * code refactor --------- Co-authored-by: 0xTheCrow Co-authored-by: The Crow <16514232+0xTheCrow@users.noreply.github.com> Co-authored-by: Kenny Quach Co-authored-by: Kenny Quach <85771015+Kquach12@users.noreply.github.com> --- projects/aurelius/index.js | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 projects/aurelius/index.js diff --git a/projects/aurelius/index.js b/projects/aurelius/index.js new file mode 100644 index 00000000000..9a27de22e8b --- /dev/null +++ b/projects/aurelius/index.js @@ -0,0 +1,42 @@ +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() { + const { api } = arguments[3] + 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 From f6d414ee43b927509a8ff11756b892c4d014ec71 Mon Sep 17 00:00:00 2001 From: Nico Szerman Date: Tue, 20 Feb 2024 02:44:36 -0500 Subject: [PATCH 0327/2004] added new tickers (#9006) --- projects/sailingprotocol/index.js | 72 +++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js index 2573009a70d..ae499eaafc1 100644 --- a/projects/sailingprotocol/index.js +++ b/projects/sailingprotocol/index.js @@ -11,14 +11,80 @@ const tokens = [ "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": "0xBa5c32915e2303EA41d1986f5B3AAd0a98B4Fd80", + "ticker": "ETHE", + "sufficientLiquidityForDefiLlamaIndexer": false, + }, + { + "address": "0xA78Fb2b64Ce2Fb8bBe46968cf961C5Be6eB12924", + "ticker": "AAAU", + "sufficientLiquidityForDefiLlamaIndexer": false, + }, ]; async function tvl(_0, blockNumber, _2, { api }) { for (const token of tokens) { const tokenTotalSupply = await api.call({ target: token.address, abi: 'erc20:totalSupply' }); - // api.add(token.address, tokenTotalSupply); - if (!token.sufficientLiquidityForDefiLlamaIndexer) { + if (token.sufficientLiquidityForDefiLlamaIndexer) { + api.add(token.address, tokenTotalSupply); + } else { const tickerPricing = await axios.post( 'https://sailingprotocol.org/api/sailingprotocol/market_data/historical_intraday', { From c840053345395469b45a648126987db32b62ecc6 Mon Sep 17 00:00:00 2001 From: Bookcliff <99197390+Bookcliff@users.noreply.github.com> Date: Tue, 20 Feb 2024 18:52:59 +0800 Subject: [PATCH 0328/2004] add ggpVault (#9003) * add ggpVault * correct underlying asset --- projects/ggpVault/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/ggpVault/index.js diff --git a/projects/ggpVault/index.js b/projects/ggpVault/index.js new file mode 100644 index 00000000000..399acda4e6f --- /dev/null +++ b/projects/ggpVault/index.js @@ -0,0 +1,16 @@ +const GGPVAULT_CONTRACT = "0xdF34022e8a280fc79499cA560439Bb6f9797EbD8"; +const GGP = "0x69260B9483F9871ca57f81A90D91E2F96c2Cd11d"; + +async function tvl(_, _b, _cb, { api }) { + const bal = await api.call({ + abi: "uint256:totalAssets", + target: GGPVAULT_CONTRACT, + }); + api.add(GGP, bal); +} + +module.exports = { + avax: { + tvl, + }, +}; From 0e991eb695e93cb3e5aa5074bece7c8973ec28a6 Mon Sep 17 00:00:00 2001 From: yanfeizuo <69463394+yanfeizuo@users.noreply.github.com> Date: Tue, 20 Feb 2024 18:55:28 +0800 Subject: [PATCH 0329/2004] Add base to project Sumer (#9005) * update for sumer * Revert "update for sumer" This reverts commit c2d61474251f429ce5d50dc600deb5822bff4379. * add base to project sumer --------- Co-authored-by: yanfeizuo --- projects/sumer/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sumer/index.js b/projects/sumer/index.js index 213807040c2..db9c5d88666 100644 --- a/projects/sumer/index.js +++ b/projects/sumer/index.js @@ -2,4 +2,5 @@ const { compoundExports2 } = require('../helper/compound') module.exports = { meter: compoundExports2({ comptroller: '0xcB4cdDA50C1B6B0E33F544c98420722093B7Aa88' }), + base: compoundExports2({ comptroller: '0x611375907733D9576907E125Fb29704712F0BAfA' }), } \ No newline at end of file From cd8d00e4e6072dd03d4f95e93084cc756da1853c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Feb 2024 12:03:15 +0100 Subject: [PATCH 0330/2004] Shprd (#9011) * Add shprd vaults TVL * code refactor * Update pull request template --------- Co-authored-by: Francis Berger --- projects/shprd/index.js | 34 ++++++++++++++++++++++++++++++++++ pull_request_template.md | 15 +++++++++------ 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 projects/shprd/index.js diff --git a/projects/shprd/index.js b/projects/shprd/index.js new file mode 100644 index 00000000000..7b3b8a420aa --- /dev/null +++ b/projects/shprd/index.js @@ -0,0 +1,34 @@ +const protocolConfig = { + factories: { + ethereum: { address: '0xf14c4b935054b8d1017ad96c9a265eb7f8ecf13c' }, + arbitrum: { address: '0xf0ee0b31aae29f0bea8ff806c101377fc92e4ffa' }, + } +} + +async function tvl(ts, block, _, { 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: 1688162400, + 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/pull_request_template.md b/pull_request_template.md index d421a39413c..daa4f8e2b11 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -1,15 +1,18 @@ **NOTE** +#### Please enable "Allow edits by maintainers" while putting up the PR. + +--- + > - If you would like to add a `volume` adapter please submit the PR [here](https://github.com/DefiLlama/adapters). > - If you would like to add a `liquidations` adapter, please refer to [this readme document](https://github.com/DefiLlama/DefiLlama-Adapters/tree/main/liquidations) for details. 1. Once your adapter has been merged, it takes time to show on the UI. If more than 24 hours have passed, please let us know in Discord. -2. Please enable "Allow edits by maintainers" while putting up the PR. -3. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. -4. Please fill the form below **only if the PR is for listing a new protocol** else it can be ignored/replaced with reason/details about the PR -5. **For updating listing info** It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR -6. Do not edit/push `package-lock.json` file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI -7. No need to go to our discord and announce that you've created a PR, we monitor all PRs and will review it asap +2. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. +3. Please fill the form below **only if the PR is for listing a new protocol** else it can be ignored/replaced with reason/details about the PR +4. **For updating listing info** It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR +5. Do not edit/push `package-lock.json` file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI +6. No need to go to our discord and announce that you've created a PR, we monitor all PRs and will review it asap --- ##### Name (to be shown on DefiLlama): From d1d28d2d682ee812150fb14b924f2979cc81b2b2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Feb 2024 12:07:28 +0100 Subject: [PATCH 0331/2004] track https://polter.finance --- projects/polter/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/polter/index.js diff --git a/projects/polter/index.js b/projects/polter/index.js new file mode 100644 index 00000000000..1b39af92519 --- /dev/null +++ b/projects/polter/index.js @@ -0,0 +1,5 @@ +const { aaveV2Export } = require('../helper/aave') + +module.exports = { + fantom: aaveV2Export('0x867fAa51b3A437B4E2e699945590Ef4f2be2a6d5'), +} \ No newline at end of file From ec874a52ba4390be594bc2f2c2f2219828d91b24 Mon Sep 17 00:00:00 2001 From: hnustfeng Date: Tue, 20 Feb 2024 19:19:12 +0800 Subject: [PATCH 0332/2004] add MeowProtocol (#9008) * add MeowProtocol * fix scroll * fix block * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/MeowProtocol/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/MeowProtocol/index.js diff --git a/projects/MeowProtocol/index.js b/projects/MeowProtocol/index.js new file mode 100644 index 00000000000..efc81a40e07 --- /dev/null +++ b/projects/MeowProtocol/index.js @@ -0,0 +1,22 @@ +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 (_, _b, _cb, { api, }) => { + const tokens = await api.call({ abi: 'address[]:getReserves', target: lendingPoolCore }) + return sumTokens2({api, tokens, owner: lendingPoolCore }) + }, + borrowed: async (_, _b, _cb, { 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() + } + } +}) \ No newline at end of file From 27e45f4a17cf1d6ec5f0ff81a89753199819a78f Mon Sep 17 00:00:00 2001 From: Xeonus Date: Tue, 20 Feb 2024 12:25:56 +0100 Subject: [PATCH 0333/2004] Upgrade Balancer Treasury (#9010) * Upgrade Balancer Treasury ### Upgrade Balancer Treasury wallets - restructure mapping and remove wrong treasury entries - add managed wallet by Karpatkey - add missing wallets for avax, xdai, polygon, polygon_zkevm, base and op ### Data validation - Treasury wallets: https://docs.balancer.fi/concepts/governance/multisig.html - BAL Token addresses: https://docs.balancer.fi/concepts/governance/bal-token.html#bal-token * FIX: token mapping on Arbitrum * FIX: adjust wrong token mappings --- projects/treasury/balancer.js | 161 +++++++++++++++++++++++++++++----- 1 file changed, 137 insertions(+), 24 deletions(-) diff --git a/projects/treasury/balancer.js b/projects/treasury/balancer.js index c574c04df00..516dddb977a 100644 --- a/projects/treasury/balancer.js +++ b/projects/treasury/balancer.js @@ -1,36 +1,149 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const { nullAddress, treasuryExports } = require("../helper/treasury"); +// Treasury addresses per chain const eth = "0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f"; -const eth2 = "0xb129f73f1afd3a49c701241f374db17ae63b20eb" +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, + "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", // GTC + "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + "0x4da27a545c0c5B758a6BA100e3a049001de870f5", // stAAVE + "0x83F20F44975D03b1b09e64809B757c47f942BEeA", // 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 +]; -const bal = "0xba100000625a3754423978a60c9317c58a424e3D"; -const abal = "0x272F97b7a56a387aE942350bBC7Df5700f8a4576"; module.exports = treasuryExports({ ethereum: { - tokens: [ - nullAddress, - ADDRESSES.ethereum.LIDO, - ADDRESSES.ethereum.USDC, - "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", // GTC - "0xCFEAead4947f0705A14ec42aC3D44129E1Ef3eD5", // NOTE - ADDRESSES.ethereum.WETH, - "0x2d94AA3e47d9D5024503Ca8491fcE9A2fB4DA198", // BANK - ADDRESSES.ethereum.DAI, - "0x226f7b842E0F0120b7E194D05432b3fd14773a9D", // UNN - ADDRESSES.ethereum.STETH, - ADDRESSES.ethereum.SAFE, - ], owners: [eth, eth2], - ownTokens: [bal, abal], + tokens: ethTokens, + ownTokens: ethOwnTokens }, arbitrum: { - owners: ['0xaf23dc5983230e9eeaf93280e312e57539d098d0'], - tokens: [ - ADDRESSES.arbitrum.WETH, - ADDRESSES.arbitrum.USDC, - ], - ownTokens: ['0xbc2597d3f1f9565100582cde02e3712d03b8b0f6'], + 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 } }); From aa3c2257a69dbde552f560647056bd12a0e28387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Tue, 20 Feb 2024 15:31:40 +0100 Subject: [PATCH 0334/2004] Add STRK to Nostra Money Market (#9012) --- projects/nostra/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/nostra/index.js b/projects/nostra/index.js index 324db7c62e7..e7df5965930 100644 --- a/projects/nostra/index.js +++ b/projects/nostra/index.js @@ -37,6 +37,11 @@ const supplyTokens = [ "0x2530a305dd3d92aad5cf97e373a3d07577f6c859337fb0444b9e851ee4a2dd4", "0x507eb06dd372cb5885d3aaf18b980c41cd3cd4691cfd3a820339a6c0cec2674", "0x739760bce37f89b6c1e6b1198bb8dc7166b8cf21509032894f912c9d5de9cbd", + // STRK + "0x7c535ddb7bf3d3cb7c033bd1a4c3aac02927a4832da795606c0f3dbbc6efd17", + "0x40f5a6b7a6d3c472c12ca31ae6250b462c6d35bbdae17bd52f6c6ca065e30cf", + "0x26c5994c2462770bbf940552c5824fb0e0920e2a8a5ce1180042da1b3e489db", + "0x7c2e1e733f28daa23e78be3a4f6c724c0ab06af65f6a95b5e0545215f1abc1b", ]; const debtTokens = [ "0x0491480f21299223b9ce770f23a2c383437f9fbf57abc2ac952e9af8cdb12c97", @@ -46,6 +51,7 @@ const debtTokens = [ "0x024e9b0d6bc79e111e6872bb1ada2a874c25712cf08dfc5bcf0de008a7cca55f", "0x348cc417fc877a7868a66510e8e0d0f3f351f5e6b0886a86b652fcb30a3d1fb", "0x35778d24792bbebcf7651146896df5f787641af9e2a3db06480a637fbc9fff8", + "0x1258eae3eae5002125bebf062d611a772e8aea3a1879b64a19f363ebd00947", ]; function* chunks(arr, n) { From b79b6fc5bf8309d1b19851f257a15c5503e3496f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 20 Feb 2024 19:09:45 +0100 Subject: [PATCH 0335/2004] track orby.network --- projects/orby-network/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/orby-network/index.js diff --git a/projects/orby-network/index.js b/projects/orby-network/index.js new file mode 100644 index 00000000000..6905bccaa70 --- /dev/null +++ b/projects/orby-network/index.js @@ -0,0 +1,7 @@ +const { getLiquityTvl } = require("../helper/liquity"); + +module.exports = { + cronos: { + tvl: getLiquityTvl('0x7a47cf15a1fcbad09c66077d1d021430eed7ac65', { collateralToken: '0x7a7c9db510aB29A2FC362a4c34260BEcB5cE3446'}), + } +}; From 5fccad0c32932391158c4907e2609c224ebdffe1 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Feb 2024 00:42:21 +0000 Subject: [PATCH 0336/2004] add linea wbtc & weth vaults --- projects/qidao/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index 24421a3aed9..edbb94c835a 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -106,6 +106,12 @@ const config = { "0x654a31ba7d714cfcab19b17d0066171c1a292349" ] }, + linea: { + vaults: [ + "0x8ab01c5ee3422099156ab151eecb83c095626599", + "0x7f9dd991e8fd0cbb52cb8eb35dd35c474a9a7a70" + ] + }, ethereum: { vaults: [ "0x60d133c666919B54a3254E0d3F14332cB783B733", From e757d27d37de0dc2725f1159671e60481df8e58d Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 21 Feb 2024 00:52:20 +0000 Subject: [PATCH 0337/2004] export aptos tvl as aptos tvl --- projects/econia.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/econia.js b/projects/econia.js index 8d4e5a2fa1b..43682d065ce 100644 --- a/projects/econia.js +++ b/projects/econia.js @@ -33,5 +33,8 @@ async function getTvl() { } module.exports = { + aptos: { + fetch: getTvl + }, fetch: getTvl } From edd44ee06ffa0dedeb429b733edef756ab7e9951 Mon Sep 17 00:00:00 2001 From: henrio123 Date: Wed, 21 Feb 2024 10:04:26 +0200 Subject: [PATCH 0338/2004] Sommelier - added new vault RYUSD Arbitrum (#9015) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults * Sommelier: Add Turbo eETH V2 * Sommelier: Add Turbo eETH V2 vault * Sommelier: Arbitrum vaults * Fix Arbitrum TVL cals * RYUSD-ARB --------- Co-authored-by: Phil Co-authored-by: Phil <30321052+philipjames44@users.noreply.github.com> --- projects/sommelier/cellar-constants.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index 43a343fbfee..cf684756e2a 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -72,8 +72,13 @@ const cellarsV2p5 = [ // 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 }]; + -const arbitrumCellarsV2p5 = [{ id: REAL_YIELD_ETH_ARB, startBlock: 178830458 }]; module.exports = { cellarsV0815, From badd5485bd1dc12366a7510692d8111504b16d0d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:25:51 +0100 Subject: [PATCH 0339/2004] track uni v2 tvl --- projects/uniswap-v2/index.js | 19 +++++++++++++++++++ projects/uniswap/index.js | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/projects/uniswap-v2/index.js b/projects/uniswap-v2/index.js index 567703e8d2f..6844f203231 100644 --- a/projects/uniswap-v2/index.js +++ b/projects/uniswap-v2/index.js @@ -1,4 +1,5 @@ const { getChainTvl } = require('../helper/getUniSubgraphTvl'); +const { getUniTVL } = require('../helper/unknownTokens'); const v2graph = getChainTvl({ ethereum: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v2-dev' @@ -11,3 +12,21 @@ module.exports = { tvl: v2graph('ethereum'), }, } + +const config = { + // ethereum: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f', + optimism: '0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf', + arbitrum: '0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9', + avax: '0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C', + base: '0x8909dc15e40173ff4699343b6eb8132c65e18ec6', + bsc: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6', + polygon: '0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C', + celo: '0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f' +} + +Object.keys(config).forEach(chain => { + const factory = config[chain] + module.exports[chain] = { + tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) + } +}) \ No newline at end of file diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 4df63b2d540..814e57d0830 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -15,7 +15,7 @@ const graphs = { const blacklists = { base: ['0xb17d69c91135516b0256c67e8bd32cd238b56161'], - ethereum: ['0xa850478adaace4c08fc61de44d8cf3b64f359bec', '0x055284a4ca6532ecc219ac06b577d540c686669d', '0x8c0411f2ad5470a66cb2e9c64536cfb8dcd54d51', '0x277667eb3e34f134adf870be9550e9f323d0dc24', '0x4c83a7f819a5c37d64b4c5a2f8238ea082fa1f4e', '0x290a6a7460b308ee3f19023d2d00de604bcf5b42', '0x4b5ab61593a2401b1075b90c04cbcdd3f87ce011', '0x582d23c7ec6b59afd041a522ff64ff081e8c0d2d', '0x1f98431c8ad98523631ae4a59f267346ea31f984', '0xaf44e10ed87d90f28bff2d1fbef1f64b090f5ebb', '0xdfef6416ea3e6ce587ed42aa7cb2e586362cbbfa', '0x7e9c15c43f0d6c4a12e6bdff7c7d55d0f80e3e23', '0x1111111becab3c8866712ebf23fc4741010b8dce', '0x77777777b79f2fa437bf526169f98aa0c884c4b7'], + ethereum: ['0xa850478adaace4c08fc61de44d8cf3b64f359bec', '0x055284a4ca6532ecc219ac06b577d540c686669d', '0x8c0411f2ad5470a66cb2e9c64536cfb8dcd54d51', '0x277667eb3e34f134adf870be9550e9f323d0dc24', '0x4c83a7f819a5c37d64b4c5a2f8238ea082fa1f4e', '0x290a6a7460b308ee3f19023d2d00de604bcf5b42', '0x4b5ab61593a2401b1075b90c04cbcdd3f87ce011', '0x582d23c7ec6b59afd041a522ff64ff081e8c0d2d', '0x1f98431c8ad98523631ae4a59f267346ea31f984', '0xaf44e10ed87d90f28bff2d1fbef1f64b090f5ebb', '0xdfef6416ea3e6ce587ed42aa7cb2e586362cbbfa', '0x7e9c15c43f0d6c4a12e6bdff7c7d55d0f80e3e23', '0x1111111becab3c8866712ebf23fc4741010b8dce', '0x77777777b79f2fa437bf526169f98aa0c884c4b7', '0x630d98424efe0ea27fb1b3ab7741907dffeaad78'], arbitrum: ['0xd4d2f4110878a33ea5b97f0665e518253446161a', '0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1',], polygon: ['0x8d52c2d70a7c28a9daac2ff12ad9bfbf041cd318', '0x1f98431c8ad98523631ae4a59f267346ea31f984', '0xd5302a8ead77b85ea3326b45f4714e0b3432b233', '0xc951ab482ff11d8df636742e1f1c3fc8037427a9',], } From a9a7c22d0a34f1a5defddd6b56158a8218e2cc39 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:05:55 +0100 Subject: [PATCH 0340/2004] update mercurical tvl --- projects/mercurial.js | 112 +++++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/projects/mercurial.js b/projects/mercurial.js index a5f1da11530..7848842675b 100644 --- a/projects/mercurial.js +++ b/projects/mercurial.js @@ -1,5 +1,6 @@ +const { Program, } = require("@project-serum/anchor"); +const { getProvider, sumTokens2, } = require('./helper/solana') const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens2 } = require("./helper/solana"); async function tvl() { const tokensAndOwners = [ @@ -10,91 +11,100 @@ async function tvl() { ['Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS', '2dc3UgMuVkASzW4sABDjDB5PjFbPTncyECUnZL73bmQR'], // UST-3Pool - ['CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm','FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], - [ADDRESSES.solana.USDC,'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], - [ADDRESSES.solana.USDT,'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], + ['CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm', 'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], + [ADDRESSES.solana.USDC, 'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], + [ADDRESSES.solana.USDT, 'FDonWCo5RJhx8rzSwtToUXiLEL7dAqLmUhnyH76F888D'], // pSOL-2Pool - [ADDRESSES.solana.pSOL,'8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], - [ADDRESSES.solana.SOL,'8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], + [ADDRESSES.solana.pSOL, '8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], + [ADDRESSES.solana.SOL, '8RXqdSRFGLX8iifT2Cu5gD3fG7G4XcEBWCk9X5JejpG3'], // wUSD-4Pool - [ADDRESSES.solana.DAI,'3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], - ['A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM','3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], - [ADDRESSES.solana.USDC,'3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], - ['Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1','3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], + [ADDRESSES.solana.DAI, '3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], + ['A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM', '3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], + [ADDRESSES.solana.USDC, '3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], + ['Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1', '3m15qNJDM5zydsYNJzkFYXE7iGCVnkKz1mrmbawrDUAH'], // stSOL-2Pool - [ADDRESSES.solana.SOL,'pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], - ['7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj','pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], + [ADDRESSES.solana.SOL, 'pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], + ['7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj', 'pG6noYMPVR9ykNgD4XSNa6paKKGGwciU2LckEQPDoSW'], // mSOL-2Pool - [ADDRESSES.solana.SOL,'GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], - ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So','GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], + [ADDRESSES.solana.SOL, 'GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], + ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'GcJckEnDiWjpjQ8sqDKuNZjJUKAFZSiuQZ9WmuQpC92a'], // wbBUSD-4Pool - [ADDRESSES.solana.USDC,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], - [ADDRESSES.solana.USDTbs,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], - [ADDRESSES.solana.USDCbs,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], - [ADDRESSES.solana.BUSDbs,'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.USDC, 'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.USDTbs, 'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.USDCbs, 'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], + [ADDRESSES.solana.BUSDbs, 'D9QnVSaKxcoYHhXpyhpHWjVhY1xtNxaQbuHocjHKVzf1'], // UXD-3Pool - ['7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT','62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], - [ADDRESSES.solana.USDC,'62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], - [ADDRESSES.solana.USDT,'62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], + ['7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT', '62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], + [ADDRESSES.solana.USDC, '62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], + [ADDRESSES.solana.USDT, '62JkSDhZLgwLu8in73E46CPTzEf8hMGMxSNUw5r5mMA8'], // USTv2-3Pool - ['9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i','44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], - [ADDRESSES.solana.USDC,'44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], - [ADDRESSES.solana.USDT,'44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], + ['9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i', '44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], + [ADDRESSES.solana.USDC, '44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], + [ADDRESSES.solana.USDT, '44K7k9pjjKB6LcWZ1sJ7TvksR3sb4AXpBxwzF1pcEJ5n'], // USDH-3Pool - ['USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX','F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], - [ADDRESSES.solana.USDC,'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], - [ADDRESSES.solana.USDT,'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], + ['USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX', 'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], + [ADDRESSES.solana.USDC, 'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], + [ADDRESSES.solana.USDT, 'F1TVmk1LAaVDGDfEFJWfNLCh9wikZxv33e54ZPeRQzEh'], // aUSDC-4Pool - [ADDRESSES.solana.aeUSDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], - [ADDRESSES.solana.aaUSDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], - [ADDRESSES.solana.apUSDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], - [ADDRESSES.solana.USDC,'5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.aeUSDC, '5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.aaUSDC, '5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.apUSDC, '5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], + [ADDRESSES.solana.USDC, '5g5yYtiCy3ZrUpfvNg3LXVQDnVJtjmL1eMWXoMgqEuRx'], // acUSD-3Pool - ['A96PoNcxa9LMxcF9HhKAfA1p3M1dGbubPMWf19gHAkgJ','FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], - ['EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e','FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], - [ADDRESSES.solana.USDC,'FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], + ['A96PoNcxa9LMxcF9HhKAfA1p3M1dGbubPMWf19gHAkgJ', 'FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], + ['EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e', 'FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], + [ADDRESSES.solana.USDC, 'FhqkDgkhrDY75Tq6rx1ezp6R36AjHsXVvRYJkiyhFoZU'], // fUSD-3Pool - ['B7mXkkZgn7abwz1A3HnKkb18Y6y18WcbeSkh1DuLMkee','EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], - [ADDRESSES.solana.USDC,'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], - [ADDRESSES.solana.USDT,'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], + ['B7mXkkZgn7abwz1A3HnKkb18Y6y18WcbeSkh1DuLMkee', 'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], + [ADDRESSES.solana.USDC, 'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], + [ADDRESSES.solana.USDT, 'EdJbEpfASQB99Y2BMUEb5rtgVUcJ2bBUqe59f4JJ9o6t'], // USN-4Pool - ['EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e','CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], - [ADDRESSES.solana.afUSDC,'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], - ['PUhuAtMHsKavMTwZsLaDeKy2jb7ciETHJP7rhbKLJGY','CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], - [ADDRESSES.solana.USDC,'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], + ['EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e', 'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], + [ADDRESSES.solana.afUSDC, 'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], + ['PUhuAtMHsKavMTwZsLaDeKy2jb7ciETHJP7rhbKLJGY', 'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], + [ADDRESSES.solana.USDC, 'CrUucFMGc8iLxT4uZX965M7iQWozsRxai8ChevwdtXri'], // abBUSD-4Pool - [ADDRESSES.solana.abUSDC,'89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], - [ADDRESSES.solana.USDC,'89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], - [ADDRESSES.solana.abUSDT,'89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], - ['6nuaX3ogrr2CaoAPjtaKHAoBNWok32BMcRozuf32s2QF','89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + [ADDRESSES.solana.abUSDC, '89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + [ADDRESSES.solana.USDC, '89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + [ADDRESSES.solana.abUSDT, '89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], + ['6nuaX3ogrr2CaoAPjtaKHAoBNWok32BMcRozuf32s2QF', '89WiJDwdAqjgsKrb9gxXcVgsmh38BBNm13xnPTuXjBwA'], // aaUSDT-4Pool - ['DNhZkUaxHXYvpxZ7LNnHtss8sQgdAfd1ZYS1fB7LKWUZ','A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], - [ADDRESSES.solana.aeUSDT,'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], - [ADDRESSES.solana.aaUSDT,'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], - [ADDRESSES.solana.USDT,'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + ['DNhZkUaxHXYvpxZ7LNnHtss8sQgdAfd1ZYS1fB7LKWUZ', 'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + [ADDRESSES.solana.aeUSDT, 'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + [ADDRESSES.solana.aaUSDT, 'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], + [ADDRESSES.solana.USDT, 'A2UHy42vcoKKK4JhNzNTY9PJ5kPcb4EZUSxRAbUtKeUU'], ] + 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() + pools.forEach(({ account: i }) => { + tokensAndOwners.push([i.tokenAMint, i.aVault]) + tokensAndOwners.push([i.tokenBMint, i.bVault]) + }) return sumTokens2({ tokensAndOwners }) } module.exports = { timetravel: false, - solana: {tvl, }, + 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 From d6e3ef9394bc446819bf9dd155936131406d55fb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 13:52:04 +0100 Subject: [PATCH 0341/2004] refactor white protocol --- projects/white-protocol/index.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/projects/white-protocol/index.js b/projects/white-protocol/index.js index a93d9a82739..a692b5afc2a 100644 --- a/projects/white-protocol/index.js +++ b/projects/white-protocol/index.js @@ -1,14 +1,15 @@ -const { staking } = require("../helper/staking"); +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: () => 0, - staking: staking([stakingContractAddress],[whiteTokenAddress, nullAddress]), + tvl: sumTokensExport({ owner: stakingContractAddress, tokens: [nullAddress]}), + staking: sumTokensExport({ owner: stakingContractAddress, tokens: [whiteTokenAddress],lps: [LP]}), + pool2: sumTokensExport({ owner: '0xdB9320dDE030cEF08C615E7547cee98848Bd297e', tokens: [LP]}), }, }; \ No newline at end of file From 6e1fb7f4e3e83fc0e93e16032c470e8522b18115 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:13:31 +0100 Subject: [PATCH 0342/2004] track apebond --- projects/apebond/index.js | 67 ++++++++++++++++++++++++++++++++++++ projects/helper/unwrapLPs.js | 42 +++++++++++++++++++++- projects/helper/utils.js | 7 ++++ 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 projects/apebond/index.js diff --git a/projects/apebond/index.js b/projects/apebond/index.js new file mode 100644 index 00000000000..4167a17988b --- /dev/null +++ b/projects/apebond/index.js @@ -0,0 +1,67 @@ +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 (_, _b, _cb, { 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 (_, _b, _cb, { 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/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 39814c3794e..bb920b53e6b 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -8,7 +8,7 @@ const { requery } = require('./requery') const { getChainTransform, getFixBalances } = require('./portedTokens') const { getUniqueAddresses, normalizeAddress } = require('./tokenMapping') const creamAbi = require('./abis/cream.json') -const { isLP, log, sliceIntoChunks, } = require('./utils') +const { isLP, log, sliceIntoChunks, isICHIVaultToken, } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') const wildCreditABI = require('../wildcredit/abi.json'); const { covalentGetTokens, } = require("./token"); @@ -693,6 +693,7 @@ async function sumTokens2({ tokenConfig = {}, sumChunkSize = undefined, uniV3ExtraConfig = {}, + resolveICHIVault = false, }) { if (api) { chain = api.chain ?? chain @@ -751,8 +752,23 @@ async function sumTokens2({ tokensAndOwners = getUniqueToA(tokensAndOwners) log(chain, 'summing tokens', tokensAndOwners.length) + + let ichiVaultToAs = [] + if (resolveICHIVault) { + const symbols = (await api.multiCall({ abi: 'erc20:symbol', calls: tokensAndOwners.map(t => t[0]) })) + tokensAndOwners.filter(([token, owner], i) => { + if (isICHIVaultToken(symbols[i], token, api.chain)) { + ichiVaultToAs.push([token, owner]) + return false + } + return true + }) + } + await sumTokens(balances, tokensAndOwners, block, chain, transformAddress, { resolveLP, unwrapAll, blacklistedLPs, skipFixBalances: true, abis, permitFailure, sumChunkSize, }) + if (ichiVaultToAs.length) + await unwrapICHIVaults() if (!skipFixBalances) { const fixBalances = await getFixBalances(chain) @@ -765,6 +781,30 @@ async function sumTokens2({ toa = toa.map(i => i.join('-')) return getUniqueAddresses(toa, chain).map(i => i.split('-')) } + + + async function unwrapICHIVaults() { + const lps = ichiVaultToAs.map(i => i[0]) + const balanceOfCalls = ichiVaultToAs.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 getTotalAmounts() 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 + sdk.util.sumSingleBalance(balances, token0s[i], token0Bal) + sdk.util.sumSingleBalance(balances, token1s[i], token1Bal) + }) + return balances + } } function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, logCalls, ...args }) { diff --git a/projects/helper/utils.js b/projects/helper/utils.js index a517070d3c6..e043f052906 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -49,6 +49,12 @@ const blacklisted_LPS = [ '0x253f67aacaf0213a750e3b1704e94ff9accee10b', ].map(i => i.toLowerCase()) +function isICHIVaultToken(symbol, token, chain) { + if (symbol === 'ICHI_Vault_LP') return true + if (chain === 'bsc' && symbol.startsWith('IV-') && symbol.endsWith('-THE')) return true + return false +} + function isLP(symbol, token, chain) { // sdk.log(symbol, chain, token) if (!symbol) return false @@ -327,4 +333,5 @@ module.exports = { getDecimals, getParamCalls, once, + isICHIVaultToken, } From f39267e4aaec91ecabc4fe255a8b63ed327563d3 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 21 Feb 2024 16:24:31 +0000 Subject: [PATCH 0343/2004] add quickswap staking --- projects/quickswap/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js index dc552207c59..3f997b1e944 100644 --- a/projects/quickswap/index.js +++ b/projects/quickswap/index.js @@ -1,9 +1,12 @@ const { getChainTvl } = require('../helper/getUniSubgraphTvl'); +const { staking } = require('../helper/staking'); + module.exports = { misrepresentedTokens: true, timetravel: true, polygon:{ + staking: staking("0x958d208Cdf087843e9AD98d23823d32E17d723A1", "0xB5C064F955D8e7F38fE0460C556a72987494eE17"), tvl: getChainTvl({ polygon: 'https://api.thegraph.com/subgraphs/name/sameepsi/quickswap06' })('polygon') From bc90e03280dc7c78c9e17fd33367dbd43a665b22 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:51:22 +0100 Subject: [PATCH 0344/2004] fix lint error --- projects/orby-network/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/orby-network/index.js b/projects/orby-network/index.js index 6905bccaa70..af444e90ec2 100644 --- a/projects/orby-network/index.js +++ b/projects/orby-network/index.js @@ -2,6 +2,6 @@ const { getLiquityTvl } = require("../helper/liquity"); module.exports = { cronos: { - tvl: getLiquityTvl('0x7a47cf15a1fcbad09c66077d1d021430eed7ac65', { collateralToken: '0x7a7c9db510aB29A2FC362a4c34260BEcB5cE3446'}), + tvl: getLiquityTvl('0x7a47cf15a1fcbad09c66077d1d021430eed7ac65', { collateralToken: '0x7a7c9db510aB29A2FC362a4c34260BEcB5cE3446' }), } }; From ad163551b15d9458853eb442bdbb3b1667da2bc7 Mon Sep 17 00:00:00 2001 From: encrypt3dw4lrus <111157912+encrypt3dw4lrus@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:04:25 +0000 Subject: [PATCH 0345/2004] New Chamber for Ethereum Seneca (#9026) * adding seneca tvl for chambers on arbitrum and ethereum, staking tvl for arbitrum * code refactor * new Ethereum chamber for Seneca --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/seneca/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/seneca/index.js b/projects/seneca/index.js index d527e738de3..3f539113f14 100644 --- a/projects/seneca/index.js +++ b/projects/seneca/index.js @@ -5,7 +5,7 @@ const senToken = '0x154388a4650D63acC823e06Ef9e47C1eDdD3cBb2'; const config = { arbitrum: { chambers: ['0x2d99E1116E73110B88C468189aa6AF8Bb4675ec9', '0x4D7b1A1900b74ea4b843a5747740F483152cbA5C', '0x7C160FfE3741a28e754E018DCcBD25dB04B313AC',], lens: '0x5c6cBA80e5FA3c8D9FD53F17d6F5a7A2EDb5fC8C', }, - ethereum: { chambers: ['0xBC83F2711D0749D7454e4A9D53d8594DF0377c05'], lens: '0x9cae6d5a09E4860AfCD1DF144250dd02A014DF15', }, + ethereum: { chambers: ['0xBC83F2711D0749D7454e4A9D53d8594DF0377c05', '0x65c210c59B43EB68112b7a4f75C8393C36491F06'], lens: '0x9cae6d5a09E4860AfCD1DF144250dd02A014DF15', }, } module.exports = { From 2b667882518774bc4098c0842bfd6e6faebab9dd Mon Sep 17 00:00:00 2001 From: TJ <58812386+TJ-2@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:11:56 +0000 Subject: [PATCH 0346/2004] Meridian: update supported networks (#9023) --- projects/meridian/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/meridian/index.js b/projects/meridian/index.js index 82951935889..9c2d836b9fc 100644 --- a/projects/meridian/index.js +++ b/projects/meridian/index.js @@ -4,4 +4,5 @@ module.exports = { methodology: "Deposited ETH and TLOS on the Base and Telos network", base: { tvl: getLiquityTvl("0x56a901FdF67FC52e7012eb08Cfb47308490A982C") }, telos: { tvl: getLiquityTvl("0xb1F92104E1Ad5Ed84592666EfB1eB52b946E6e68") }, + fuse: { tvl: getLiquityTvl("0xCD413fC3347cE295fc5DB3099839a203d8c2E6D9") }, }; \ No newline at end of file From 390344cbf8ad79203c26b290fe30d1d426d9f9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Wed, 21 Feb 2024 18:13:23 +0100 Subject: [PATCH 0347/2004] Add STRK in Starknet's core assets (#9021) --- projects/helper/coreAssets.json | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 54726cd99c0..d0c3c5b7ff6 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1220,6 +1220,7 @@ "EVMOS_boot": "4B322204B4F59D770680FE4D7A565DDC3F37BFF035474B717476C66A4F83DD72" }, "starknet": { + "STRK": "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", "DAI": "0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", "USDC": "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", "USDT": "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", From 23a8b5460214680ad07c686f1e38975402ca3431 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 18:18:30 +0100 Subject: [PATCH 0348/2004] update apollodao --- projects/apollodao/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/apollodao/index.js b/projects/apollodao/index.js index 31b4d7b5f5c..14ece94054d 100644 --- a/projects/apollodao/index.js +++ b/projects/apollodao/index.js @@ -84,6 +84,8 @@ function calculateTokenAmounts(poolData, gammAmount) { const neutronVaults = { pcl_wstETH_axlWETH: "neutron1yvhe4f0q3swtf37pkf9kku59l52nevr3trxs62vah004a08pkl8qlaccc7", xyk_ASTRO_axlUSDC: "neutron135nkp0fth0vtertv7ngvkkgc4cwamp2tpnmjdlppat0047f9wjmqxeu9p8", + pxl_capped_stTIA_TIA: "neutron1qzf6t478xuutq0ahkm07pl2y2tctreccrlafkrl38k4cafk3rgdq3lfky5", + pcl_wstETH_NTRN: "neutron17vedy2clhctw0654k93m375ud7h5jsy8nj9gnlkjnyd4mcfnfrdql226al", }; async function neutronTvl(_, _1, _2, { api }) { From 6179b3b61a5ba7831c49c653ef0ad4ec011f56ac Mon Sep 17 00:00:00 2001 From: yanfeizuo <69463394+yanfeizuo@users.noreply.github.com> Date: Thu, 22 Feb 2024 01:20:47 +0800 Subject: [PATCH 0349/2004] add Arbitrum to project sumer (#9019) * update for sumer * Revert "update for sumer" This reverts commit c2d61474251f429ce5d50dc600deb5822bff4379. * add base to project sumer * add arbitrum to project sumer --------- Co-authored-by: yanfeizuo --- projects/sumer/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sumer/index.js b/projects/sumer/index.js index db9c5d88666..02958bea500 100644 --- a/projects/sumer/index.js +++ b/projects/sumer/index.js @@ -3,4 +3,5 @@ const { compoundExports2 } = require('../helper/compound') module.exports = { meter: compoundExports2({ comptroller: '0xcB4cdDA50C1B6B0E33F544c98420722093B7Aa88' }), base: compoundExports2({ comptroller: '0x611375907733D9576907E125Fb29704712F0BAfA' }), + arbitrum: compoundExports2({ comptroller: '0xBfb69860C91A22A2287df1Ff3Cdf0476c5aab24A' }), } \ No newline at end of file From e7a629462e089e5b6857dd2afcd31e1b3b826d22 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 18:26:00 +0100 Subject: [PATCH 0350/2004] addd new factory to lynex v1 --- projects/lynex-v1/index.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/projects/lynex-v1/index.js b/projects/lynex-v1/index.js index bebe3133e44..57a93b07200 100644 --- a/projects/lynex-v1/index.js +++ b/projects/lynex-v1/index.js @@ -1,10 +1,7 @@ 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)) -module.exports = uniTvlExport( - "linea", - "0x6ed7b91c8133e85921f8028b51a8248488b3336c", - { - hasStablePools: true, - useDefaultCoreAssets: true, - } -); From f8fdbf4d13924d5ef55f999bb1d4c0d42aea4728 Mon Sep 17 00:00:00 2001 From: Weaver <105595435+WeaverSphere@users.noreply.github.com> Date: Wed, 21 Feb 2024 19:32:58 +0200 Subject: [PATCH 0351/2004] Adjust the code to use the new Dyson API (#9014) * refactor: Adjust the code to use the new Dyson API * chore: adjust methodology text --- projects/dyson-money/index.js | 53 ++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js index 6c8151e58ca..194dfd45ede 100644 --- a/projects/dyson-money/index.js +++ b/projects/dyson-money/index.js @@ -4,9 +4,15 @@ 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 = {}; @@ -27,51 +33,54 @@ async function polygonTvl(timestamp, block, chainBlocks) { }) // calculate TVL for polygon from API - const dysonTvl = await fetchChain(137)() - for (const [token, balance] of Object.entries(dysonTvl)) { + const polygon_tvl = await fetchNetworkTVL('polygon')(); + for (const [token, balance] of Object.entries(polygon_tvl)) { balances[token] = (balances[token] || 0) + balance } return balances; } -let _response - -function fetchChain(chainId) { +function fetchNetworkTVL(network) { return async () => { - if (!_response) _response = utils.fetchURL('https://api.dyson.money/tvl'); - const response = await _response; + try { + if(!TVL_byNetwork) TVL_byNetwork = utils.fetchURL(`${TVL_URL}`).then(response => response.data); - let tvl = 0; - const chain = response.data[chainId]; - for (const vault in chain) { - tvl += Number(chain[vault]); - } - if (tvl === 0) { + 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 {}; } - - return toUSDTBalances(tvl); - }; + } } + + module.exports = { doublecounted: true, misrepresentedTokens: false, - methodology: "TVL is calculated by summing the liquidity in the Uniswap V3 pools.", + methodology: "Counts the tokens locked in the contracts.", polygon: { tvl: polygonTvl, staking: staking(ylSPHEREvault, sphere_token, "polygon") }, optimism: { - tvl: fetchChain(10), + tvl: fetchNetworkTVL('optimism'), }, arbitrum: { - tvl: fetchChain(42161), + tvl: fetchNetworkTVL('arbitrum'), }, bsc: { - tvl: fetchChain(56) + tvl: fetchNetworkTVL('binance') }, avax: { - tvl: fetchChain(43114) - } + tvl: fetchNetworkTVL('avalanche') + }, + kava: { + tvl: fetchNetworkTVL('kava'), + }, }; From 25444754a423450abfaa9ecb5899c264dea46f02 Mon Sep 17 00:00:00 2001 From: Alexander Ponomarev Date: Wed, 21 Feb 2024 21:37:52 +0400 Subject: [PATCH 0352/2004] Pythagorean bonding curves (#9016) * feat: init pyth * fix: typo * rename Pythagorean --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pythagorean/index.js | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 projects/pythagorean/index.js diff --git a/projects/pythagorean/index.js b/projects/pythagorean/index.js new file mode 100644 index 00000000000..f54b36f5216 --- /dev/null +++ b/projects/pythagorean/index.js @@ -0,0 +1,45 @@ +/** + * 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(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) + }); + + return baseAASumBalances + stakingBaseAASumBalances; +} + +module.exports = { + timetravel: false, + doublecounted: false, + misrepresentedTokens: true, + methodology: + "The TVL is the USD value of the assets locked into the autonomous agents that implement the Pythagorean protocol.", + obyte: { + fetch: tvl + }, + fetch: tvl +} From c6cd3a49e9dfed968912d389763f74c4699ceefb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 21 Feb 2024 18:44:29 +0100 Subject: [PATCH 0353/2004] polter:track staking --- projects/polter/index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/projects/polter/index.js b/projects/polter/index.js index 1b39af92519..ccd80386112 100644 --- a/projects/polter/index.js +++ b/projects/polter/index.js @@ -1,5 +1,12 @@ const { aaveV2Export } = require('../helper/aave') +const { sumTokensExport } = require("../helper/unknownTokens") + +const POLTER_CONTRACT = '0x5c725631FD299703D0A74C23F89a55c6B9A0C52F' +const MULTIFEE_CONTRACT = '0xb0F8fe472422Ae582a535b5418C82Ff0F9fa9267' +const POLTER_LP_CONTRACT = '0x44C85D45EB17C8A6b241807BE5c9c48201F91837' module.exports = { - fantom: aaveV2Export('0x867fAa51b3A437B4E2e699945590Ef4f2be2a6d5'), -} \ No newline at end of file + fantom: aaveV2Export('0x867fAa51b3A437B4E2e699945590Ef4f2be2a6d5'), +} + +module.exports.fantom.staking = sumTokensExport({ owner: MULTIFEE_CONTRACT, tokens: [POLTER_CONTRACT], lps: [POLTER_LP_CONTRACT], useDefaultCoreAssets: true, }) \ No newline at end of file From ef58dc3027deec57a98a4a368ca01bc9ac400a74 Mon Sep 17 00:00:00 2001 From: Deantoshi <141426562+Deantoshi@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:42:04 -0500 Subject: [PATCH 0354/2004] added yuzu-market, a Money Market on Horizen EON (#9032) * added yuzu-market, a Money Market on Horizen EON * code refactor --------- Co-authored-by: Daniel Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/yuzu-market/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/yuzu-market/index.js diff --git a/projects/yuzu-market/index.js b/projects/yuzu-market/index.js new file mode 100644 index 00000000000..bf5e828e1de --- /dev/null +++ b/projects/yuzu-market/index.js @@ -0,0 +1,5 @@ +const { aaveExports } = require('../helper/aave'); + +module.exports = { + eon: aaveExports("eon", "0x7CCE4c055BbC0Da1FeCb09F3d327b125FE19555a"), +} \ No newline at end of file From 6045fe099007e8c89d01c04e9bd89c76ebca6459 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Feb 2024 09:20:17 +0100 Subject: [PATCH 0355/2004] track cronos staked eth --- projects/cdc-eth/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/cdc-eth/index.js diff --git a/projects/cdc-eth/index.js b/projects/cdc-eth/index.js new file mode 100644 index 00000000000..22c5caf4fee --- /dev/null +++ b/projects/cdc-eth/index.js @@ -0,0 +1,10 @@ +const sdk = require("@defillama/sdk") +const token = '0x7a7c9db510ab29a2fc362a4c34260becb5ce3446' + +module.exports = { + cronos: { + tvl: async (_, block, chainBlocks, { api }) => ({ + ["cronos:" + token]: (await sdk.api.erc20.totalSupply({ target: token, chain:"cronos", block: chainBlocks.cronos})).output + }) + } +} \ No newline at end of file From b94c749a31ee001b00c4df968727aa9e0e34614e Mon Sep 17 00:00:00 2001 From: Joel Mun Date: Thu, 22 Feb 2024 16:23:06 +0800 Subject: [PATCH 0356/2004] feat: add STRK to zklend project (#9033) --- projects/zklend/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/zklend/index.js b/projects/zklend/index.js index 5ba0df193cb..e219d7c45a4 100644 --- a/projects/zklend/index.js +++ b/projects/zklend/index.js @@ -11,6 +11,7 @@ const assets = [ ADDRESSES.starknet.DAI, ADDRESSES.starknet.USDT, ADDRESSES.starknet.WSTETH, + ADDRESSES.starknet.STRK ] async function tvl(_, _1, _2, { api }) { From 88fef9b9864d4d259bed21a901232a338fcc5b95 Mon Sep 17 00:00:00 2001 From: gaspare100 Date: Thu, 22 Feb 2024 08:29:55 +0000 Subject: [PATCH 0357/2004] Scrubinvest hover (#9034) * New LPs 14/07 Scrub Invest * New Pool on Scrub Invest * add atom pool * Scrub Invest Hover Strategies * cleanup old pools * Hover pools * Hover pools added --------- Co-authored-by: theg Co-authored-by: TheG --- projects/scrubinvest/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index eae68ef0d16..1f30d38f259 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -38,6 +38,9 @@ async function tvl(_, _b, _cb, { api, }) { ['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'], From 740faf9b24aa46b3c0864e16f5db051f9e503e24 Mon Sep 17 00:00:00 2001 From: butcher-blaviken <120540037+butcher-blaviken@users.noreply.github.com> Date: Thu, 22 Feb 2024 18:45:47 +0800 Subject: [PATCH 0358/2004] Add roup project (#9025) * update: add roup project * update roup rvl algorithm * update roup rvl algorithm * update roup rvl algorithm * update roup tvl to brc20 balance on bitcoin * remove own token from bridge tvl --------- Co-authored-by: butcher Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/sumTokens.js | 50 +++++++++++++++++++++--------------- projects/roup/index.js | 19 ++++++++++++++ 2 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 projects/roup/index.js diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index f6c4715ed11..f6dfc0d5842 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -1,4 +1,4 @@ -const { ibcChains, getUniqueAddresses} = require('./tokenMapping') +const { ibcChains, getUniqueAddresses } = require('./tokenMapping') const { get, post, } = require('./http') const { sumTokens2: sumTokensEVM, nullAddress, } = require('./unwrapLPs') const sdk = require('@defillama/sdk') @@ -8,20 +8,21 @@ const helpers = { "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"), - "tezos":require("./chain/tezos"), - "zilliqa":require("./chain/zilliqa"), - "near":require("./chain/near"), - "bitcoin":require("./chain/bitcoin"), - "litecoin":require("./chain/litecoin"), - "polkadot":require("./chain/polkadot"), - "hedera":require("./chain/hbar"), - "stacks":require("./chain/stacks"), - "starknet":require("./chain/starknet"), + "cardano": require("./chain/cardano"), + "algorand": require("./chain/algorand"), + "cosmos": require("./chain/cosmos"), + "solana": require("./solana"), + "aptos": require("./chain/aptos"), + "tezos": require("./chain/tezos"), + "zilliqa": require("./chain/zilliqa"), + "near": require("./chain/near"), + "bitcoin": require("./chain/bitcoin"), + "litecoin": require("./chain/litecoin"), + "polkadot": require("./chain/polkadot"), + "hedera": require("./chain/hbar"), + "stacks": require("./chain/stacks"), + "starknet": require("./chain/starknet"), + "brc20": require("./chain/brc20"), } const geckoMapping = { @@ -49,7 +50,7 @@ function sumTokensExport(options) { } async function sumTokens(options) { - let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, api } = options + let { chain, owner, owners = [], tokens = [], tokensAndOwners = [], blacklistedTokens = [], balances = {}, token, api } = options if (api && !specialChains.includes(chain)) { chain = api.chain } @@ -68,7 +69,7 @@ async function sumTokens(options) { if (!tokensAndOwners.length) { if (!owners.length && owner) owners = [owner] - + tokensAndOwners = tokens.map(t => owners.map(o => ([t, o]))).flat() } @@ -80,22 +81,29 @@ async function sumTokens(options) { if (ibcChains.includes(chain)) helper = helpers.cosmos - if(helper) { - switch(chain) { + 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; } - return helper.sumTokens(options) + 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)) { 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)) + sdk.util.sumSingleBalance(balances, geckoId, balanceArray.reduce((a, i) => a + +i, 0)) return balances function getUniqueToA(toa, chain) { diff --git a/projects/roup/index.js b/projects/roup/index.js new file mode 100644 index 00000000000..0d424ca9590 --- /dev/null +++ b/projects/roup/index.js @@ -0,0 +1,19 @@ +const { sumTokensExport } = require("../helper/sumTokens"); + +module.exports = { + timetravel: false, + methodology: `Tokens bridged via ROUP are counted as TVL`, + bitcoin: { + tvl: sumTokensExport({ + owners: [ + 'bc1pv5lu5aklz64sye9f4zmnjkfg8j6s2tllu3fem4cs9t0hcrnz5e7qy0qw6e', + 'bc1p2tncs8egnj8e6qt46np3qla70mfx4telu92v4c9hp3pg8khqp37s9lvmfx', + 'bc1phnxqw4gfq349wm2xcqgqk77544ssqwa6ycuhjh7hdxks4mtjg33qrfenw5', + 'bc1pfsu3ts4equ7rdy63dgt7shkqlu2n5kw8p0z7p7c8lsrh2yqg40fsvz4ev3' + ], + includeBRC20: true, + blacklistedTokens: ['roup'], + }), + } +} + From c6c16bcbb588051e529bd1894022cb95b4dab279 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Thu, 22 Feb 2024 18:50:17 +0800 Subject: [PATCH 0359/2004] add hallmark hor GLM launch * add hallmark hor GLM launch --- projects/vaultka/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index bb70a3e9d85..943ab1913fc 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -18,6 +18,7 @@ module.exports = { [1699750000, "GLP Compound Vault"], [1701187200, "GMXV2 Leverage (Neutral) Vault"], [1702915200, "ALP Leverage Vault"], + [1707385004, "GLM(basket of GMs)"], ], arbitrum: { From d9f82cbc97c12c20c1b16968904bf17a2ff2aef3 Mon Sep 17 00:00:00 2001 From: Nghia Hoang Date: Thu, 22 Feb 2024 18:31:20 +0700 Subject: [PATCH 0360/2004] Add BlackrockFund project (#9037) * Add BlackrockFund project * Add BlackrockFund project * Refactor BlackrockFund project structure --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blackrock-fund/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/blackrock-fund/index.js diff --git a/projects/blackrock-fund/index.js b/projects/blackrock-fund/index.js new file mode 100644 index 00000000000..3ab987bde7f --- /dev/null +++ b/projects/blackrock-fund/index.js @@ -0,0 +1,25 @@ +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(_, _1, _2, { 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 From 9a95907d98834fa868b80229bcb63dc7799f724f Mon Sep 17 00:00:00 2001 From: Mykola Bezruk Date: Thu, 22 Feb 2024 13:32:18 +0200 Subject: [PATCH 0361/2004] add linea and telos to myso v2 (#9038) --- projects/myso-v2/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/myso-v2/index.js b/projects/myso-v2/index.js index dcbec297f56..4d1cf3d6a39 100644 --- a/projects/myso-v2/index.js +++ b/projects/myso-v2/index.js @@ -101,6 +101,12 @@ const config = { neon_evm: { fromBlock: 237206849, }, + telos: { + fromBlock: 324711636, + }, + linea: { + fromBlock: 2118418, + }, }; Object.keys(config).forEach((chain) => { From d2879519b08ecb235d06ddfff7ded0e6424c1807 Mon Sep 17 00:00:00 2001 From: larkloss Date: Thu, 22 Feb 2024 19:32:50 +0800 Subject: [PATCH 0362/2004] Create index.js (#9036) --- projects/shui/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/shui/index.js diff --git a/projects/shui/index.js b/projects/shui/index.js new file mode 100644 index 00000000000..77d60565883 --- /dev/null +++ b/projects/shui/index.js @@ -0,0 +1,16 @@ +const { sumTokensExport, } = require("../helper/unknownTokens"); + +const SCFX_TokenAddress = "0x1858a8d367e69cd9E23d0Da4169885a47F05f1bE"; + +const WCFX = "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b"; + +module.exports = { + conflux: { + tvl: async (_, _1, _2, { 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: SCFX_TokenAddress, abi: 'erc20:totalSupply' })) * exchangeRate / 1e18 + } + }, + } +} \ No newline at end of file From 1d301532b23409861e1c4ad75fae264940009b07 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Feb 2024 12:46:40 +0100 Subject: [PATCH 0363/2004] Add Prisma LRT module to fetch TVL --- projects/prisma-lrt/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/prisma-lrt/index.js diff --git a/projects/prisma-lrt/index.js b/projects/prisma-lrt/index.js new file mode 100644 index 00000000000..5a673c92b2f --- /dev/null +++ b/projects/prisma-lrt/index.js @@ -0,0 +1,22 @@ +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 (_, _b, _cb, { 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])}) + } + } +}) From 1d3e835a17d3a6bc9b7504227546b5af37da92c2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Feb 2024 15:10:24 +0100 Subject: [PATCH 0364/2004] fix fluxbeam --- projects/fluxbeam-xyz/index.js | 2 +- projects/helper/solana.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/fluxbeam-xyz/index.js b/projects/fluxbeam-xyz/index.js index 9270f3b8d92..74d701fe69b 100644 --- a/projects/fluxbeam-xyz/index.js +++ b/projects/fluxbeam-xyz/index.js @@ -15,7 +15,7 @@ async function tvl(_, _1, _2, { api }) { const i = decodeAccount('fluxbeam', account.account) return [i.tokenAccountA, i.tokenAccountB] }).flat().map(i => i.toString()) - return sumTokens2({ tokenAccounts }) + return sumTokens2({ tokenAccounts, allowError: true }) } module.exports = { diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 68097446a32..853aa915b37 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -181,6 +181,7 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun return; } if (allowError) return; + else throw new Error(`Invalid account: ${tokenAccounts[i]}`) } const { data: { parsed: { info: { mint, tokenAmount: { amount } } } } } = value sdk.util.sumSingleBalance(balances, mint, amount) From 70fb6926961f5e92b1bde7dfa53712bfdc92db40 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 22 Feb 2024 15:46:02 +0100 Subject: [PATCH 0365/2004] Update staking and treasury addresses --- projects/meowl/index.js | 2 +- projects/treasury/meowl.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/meowl/index.js b/projects/meowl/index.js index dacb86ee890..1f3585af454 100644 --- a/projects/meowl/index.js +++ b/projects/meowl/index.js @@ -8,6 +8,6 @@ module.exports = { methodology: `TVL for MEOWL consists of the staking of MEOWL tokens`, ethereum: { tvl: () => ({}), - staking: staking(stakingContract, MEOWL, "ethereum"), + staking: staking([stakingContract, '0x1e8ba7064e31bb3E9C041C2c2825833f499C2046'], [MEOWL, '0x556bB0B27E855e6f2cEBb47174495B9BBEB97fF1']), } } \ No newline at end of file diff --git a/projects/treasury/meowl.js b/projects/treasury/meowl.js index e17d0e8afe6..f6f9ca8e8a2 100644 --- a/projects/treasury/meowl.js +++ b/projects/treasury/meowl.js @@ -8,8 +8,9 @@ module.exports = treasuryExports({ nullAddress ], owners: [ - "0x842618c3f6E3E12edc5F02CC17561293e10CEb7d", + // "0x842618c3f6E3E12edc5F02CC17561293e10CEb7d", + "0x50fF6353C06Bd582971C1685573a0cD1555421C1" ], - ownTokens: ["0x1F1F26C966F483997728bEd0F9814938b2B5E294"], + ownTokens: ["0x1F1F26C966F483997728bEd0F9814938b2B5E294", '0x556bB0B27E855e6f2cEBb47174495B9BBEB97fF1'], }, }) \ No newline at end of file From 940e3da18d9c2364d0291bebeeb379e5d1bbf3ac Mon Sep 17 00:00:00 2001 From: reikodoteth <149171651+reikodoteth@users.noreply.github.com> Date: Thu, 22 Feb 2024 19:21:56 +0100 Subject: [PATCH 0366/2004] Create index.js (#9043) --- projects/goat-protocol/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/goat-protocol/index.js diff --git a/projects/goat-protocol/index.js b/projects/goat-protocol/index.js new file mode 100644 index 00000000000..c8950f50a4f --- /dev/null +++ b/projects/goat-protocol/index.js @@ -0,0 +1,21 @@ +const { yieldHelper } = require("../helper/unknownTokens"); +const { getConfig } = require('../helper/cache'); + +const chain = "arbitrum"; +const tokenAPI = "address:want"; + +module.exports = { + timetravel: false, + misrepresentedTokens: false, + doublecounted: true, + [chain]: { + tvl: async (_, _b, { [chain]: block }) => { + const pools = await getConfig('goat-protocol', 'https://raw.githubusercontent.com/goatfi/goat-address-book/main/vault-registry/arbitrum.json'); + const vaults = []; + for(var i = 0; i < pools.length; i++) + if(pools[i].platformId != 'goatfi') + vaults.push(pools[i].earnedTokenAddress); + return yieldHelper({ vaults, chain, block, tokenAPI, useDefaultCoreAssets: true, }) + } + } +} \ No newline at end of file From 5c15292d7a5b869d5f505b18b3aa2742bf9e01c5 Mon Sep 17 00:00:00 2001 From: layerbank <135123153+layerbank@users.noreply.github.com> Date: Fri, 23 Feb 2024 03:23:00 +0900 Subject: [PATCH 0367/2004] Update layerbank (#9042) --- projects/lineabank/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index 8d3421766c4..5bbba30ca6e 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -3,6 +3,7 @@ const config = { linea: '0x009a0b7C38B542208936F1179151CD08E2943833', scroll: '0xEC53c830f4444a8A56455c6836b5D2aA794289Aa', manta: '0xB7A23Fc0b066051dE58B922dC1a08f33DF748bbf', + mode: '0x80980869D90A737aff47aBA6FbaA923012C1FF50', } Object.keys(config).forEach(chain => { @@ -13,4 +14,4 @@ Object.keys(config).forEach(chain => { totalBorrows: "uint256:totalBorrow", }, }) -}) \ No newline at end of file +}) From bc5e848005ad774e689ac750c26565a125f2da13 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 23 Feb 2024 01:51:42 +0000 Subject: [PATCH 0368/2004] add goat protocol treasury --- projects/treasury/goat-protocol.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/treasury/goat-protocol.js diff --git a/projects/treasury/goat-protocol.js b/projects/treasury/goat-protocol.js new file mode 100644 index 00000000000..115b614850b --- /dev/null +++ b/projects/treasury/goat-protocol.js @@ -0,0 +1,17 @@ +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 From b6b4ff01816ce5fc08252c4fa2223d885f926a31 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:21:40 +0000 Subject: [PATCH 0369/2004] add new huobi-wallets (#9051) * add new huobi-wallets * add missing wallet + comment --- projects/huobi/index.js | 66 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/projects/huobi/index.js b/projects/huobi/index.js index fd4183e9d27..ed37465987b 100644 --- a/projects/huobi/index.js +++ b/projects/huobi/index.js @@ -16,7 +16,8 @@ const config = { '1L15W6b9vkxV81xW5HDtmMBycrdiettHEL', // add on 08/08/2023 (we defillama) '14o5ywJJmLPJe8egNo7a5fSdtEgarkus33', // add on 08/08/2023 (we defillama) '1BuiWj9wPbQwNY97xU53LRPhzqNQccSquM', // add on 08/08/2023 (we defillama) - '1ENWYLQZJRAZGtwBmoWrhmTtDUtJ5LseVj', + '1AQLXAB6aXSVbRMjbhSBudLf1kcsbWSEjg', // add on 23/02/2024 (we defillama) + '1ENWYLQZJRAZGtwBmoWrhmTtDUtJ5LseVj' ], }, ethereum: { @@ -51,20 +52,38 @@ const config = { '0x42dc966b7ecc3c6cc73e7bc04862859d5bddce65', // add on 08/08/2023 (we defillama) '0xe8d8a02601f54acb6fb69537be1f1d7cc76ccd8c', // add on 08/08/2023 (we defillama) '0xf881bcb3705926cea9c598ab05a837cf41a833a9', // add on 08/08/2023 (we defillama) - '0xb9F775179bcC7FcF4534700a48F09C590E390eAd', + '0xa03400e098f4421b34a3a44a1b4e571419517687', + '0x598273ea2cabd9f798564877851788c5e0d5b7b9', // start add on 23/02/2024 (we defillama) + '0x18709e89bd403f470088abdacebe86cc60dda12e', + '0x4fb312915b779b1339388e14b6d079741ca83128', + '0x30741289523c2e4d2a62c7d6722686d14e723851', + '0x5c985e89dde482efe97ea9f1950ad149eb73829b', + '0xe4818f8fde0c977a01da4fa467365b8bf22b071e', + '0xe93381fb4c4f14bda253907b18fad305d799241a', // end add on 23/02/2024 (we defillama) + ], blacklistedTokens: [ '0x0316eb71485b0ab14103307bf65a021042c6d380', // HBTC , we already track their backed BTC (1btc wallet on the list) ] }, polygon: { - owners: ['0xd70250731a72c33bfb93016e3d1f0ca160df7e42'] + owners: [ + '0xd70250731a72c33bfb93016e3d1f0ca160df7e42', + '0x9a7ffd7f6c42ab805e0edf16c25101964c6326b6', // add on 23/02/2024 + '0x18709e89bd403f470088abdacebe86cc60dda12e', + '0x2177c77a1f3c4900de7668662706633db4688726', + ] }, litecoin: { owners: ['MNky8PL58UjL14mcZm3ESvEkYQkzMY9kfu'] }, solana: { - owners: ['88xTWZMeKfiTgbfEmPLdsUCQcZinwUfk25EBQZ21XMAZ'] + owners: [ + '88xTWZMeKfiTgbfEmPLdsUCQcZinwUfk25EBQZ21XMAZ', + 'BY4StcU9Y2BpgH8quZzorg31EGE4L1rjomN8FNsCBEcx', // add on 23/02/2024 + '8NBEbxLknGv5aRYefFrW2qFXoDZyi9fSHJNiJRvEcMBE', + '5bJcc9eb2XE7mqcET2xDuAdMGuXWybb4YPmAHLjKLhQG', + ] }, tron: { owners: [ @@ -83,25 +102,56 @@ const config = { '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'] + owners: [ + '0xe195b82df6a797551eb1acd506e892531824af27', + '0xa77ff0e1c52f58363a53282624c7baa5fa91687d', //start add on 23/02/2024 + '0x18709e89bd403f470088abdacebe86cc60dda12e', + '0x8b6a3587676719a4fecbb24b503a3634c44a44d5', + ] }, eos: { owners: ['vuniyuoxoeub'], }, ripple: { - owners: ['rKUDvXFJMFu65LqPTH3Yfpii4rbKT9bSQT', 'raC4udvEeeni6aLPHbz9RKjHTQiWxKPfom'], + owners: [ + 'rKUDvXFJMFu65LqPTH3Yfpii4rbKT9bSQT', + 'raC4udvEeeni6aLPHbz9RKjHTQiWxKPfom', + 'ra4haepf6fehiCfVvB33j1D7vmv7JJD8M5', // add on 23/02/2024 + 'rNPuS242i9ufMPEMusnjYPxyyu4STqSDGq', + 'rPzT7GA6vWU3PvYSXBpdP5fQPnzwVLwL24', + ], }, arbitrum: { - owners: ['0xf2dbc42875e7764edbd89732a15214a9a0deb085'], + owners: [ + '0xf2dbc42875e7764edbd89732a15214a9a0deb085', + '0xce7ec11a5f306c6b896526149db1a86c7d1531e2', // add on 23/02/2024 + '0x18709e89bd403f470088abdacebe86cc60dda12e', + '0x82d015d74670d8645b56c3f453398a3e799ee582', + ], }, optimism: { - owners: ['0x9ef21be1c270aa1c3c3d750f458442397fbffcb6'], + owners: [ + '0x9ef21be1c270aa1c3c3d750f458442397fbffcb6', + '0xe0b7a39fef902c21bad124b144c62e7f85f5f5fa', // add on 23/02/2024 + '0x18709e89bd403f470088abdacebe86cc60dda12e', + '0xd3cc0c7d40366a061397274eae7c387d840e6ff8' + ], + }, + bsc: { + owners: [ + '0xdd3cb5c974601bc3974d908ea4a86020f9999e0c', // add on 23/02/2024 + '0x18709e89bd403f470088abdacebe86cc60dda12e', + '0xafdfd157d9361e621e476036fee62f688450692b', + ], }, } From 64c5e2fd24288eb4391ec08b2c34348ad8907db3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 23 Feb 2024 19:37:38 +0100 Subject: [PATCH 0370/2004] track https://app.moriprotocol.io --- projects/helper/tokenMapping.js | 7 +++++++ projects/mori/index.js | 5 +++++ 2 files changed, 12 insertions(+) create mode 100644 projects/mori/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8c845552a7d..f88fa4f9c1a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -74,6 +74,13 @@ const fixBalancesTokens = { 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx': { coingeckoId: 'blockstack', decimals: 6 }, 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt': { coingeckoId: 'tether', decimals: 8 }, 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc': { coingeckoId: 'bitcoin', decimals: 8 }, + }, + tomochain: { + '0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce': { coingeckoId: 'tomochain', decimals: 18 }, + '0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0': { coingeckoId: 'tether', decimals: 18 }, + '0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127': { coingeckoId: 'usd-coin', decimals: 6 }, + '0x9ede19ede2baf93d25fba4c8f58577e008b8f963': { coingeckoId: 'ethereum', decimals: 18 }, + '0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2': { coingeckoId: 'saros-finance', decimals: 18 }, } } diff --git a/projects/mori/index.js b/projects/mori/index.js new file mode 100644 index 00000000000..07c186d309e --- /dev/null +++ b/projects/mori/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + tomochain: { factory: "0xD1A76A4F4ff2AD3f899438Ea0e919049fC0a21BF", fromBlock: 74340484, }, +}); \ No newline at end of file From 016e630a5515ab0a537ae989197a4494510b3f58 Mon Sep 17 00:00:00 2001 From: larkloss Date: Sat, 24 Feb 2024 02:39:52 +0800 Subject: [PATCH 0371/2004] Fix_TVL_Issues (#9052) Readjust TVL calculation --- projects/shui/index.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/projects/shui/index.js b/projects/shui/index.js index 77d60565883..d223e962fb1 100644 --- a/projects/shui/index.js +++ b/projects/shui/index.js @@ -1,5 +1,3 @@ -const { sumTokensExport, } = require("../helper/unknownTokens"); - const SCFX_TokenAddress = "0x1858a8d367e69cd9E23d0Da4169885a47F05f1bE"; const WCFX = "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b"; @@ -7,10 +5,17 @@ const WCFX = "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b"; module.exports = { conflux: { tvl: async (_, _1, _2, { api }) => { - const [exchangeRate] = await api.call({ target: '0x808f81acc4618a05c8253a7b41240468c08cd64c', abi: 'function XCFX_burn_estim(uint256) returns (uint256,uint256)', params: 1e18 +''}) + 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]: (await api.call({ target: SCFX_TokenAddress, abi: 'erc20:totalSupply' })) * exchangeRate / 1e18 - } - }, + ["conflux:" + WCFX]: totalDeposited * ratioDepositedBySupply / 1e9 + }; + } } -} \ No newline at end of file +}; \ No newline at end of file From ad34f093d11d8ecaa43c951f84ad791ae8c1d63e Mon Sep 17 00:00:00 2001 From: CristianNitu Date: Fri, 23 Feb 2024 20:40:52 +0200 Subject: [PATCH 0372/2004] Revise Staking Methodology & Update DYP Token Contracts to DYP V2 Token Contracts (#9050) --- projects/dypius/index.js | 65 ++++++---------------------------------- 1 file changed, 9 insertions(+), 56 deletions(-) diff --git a/projects/dypius/index.js b/projects/dypius/index.js index f7025dbb844..9cd2927a130 100644 --- a/projects/dypius/index.js +++ b/projects/dypius/index.js @@ -2,82 +2,35 @@ const { stakings } = require("../helper/staking"); const stakingContractsBSC = [ // stakingContract1 = - "0x7c82513b69c1b42c23760cfc34234558119a3399", - // stakingContract2 = - "0xef9e50A19358CCC8816d9BC2c2355aea596efd06", - // stakingContract3 = - "0xa9efab22cCbfeAbB6dc4583d81421e76342faf8b", - // stakingContract4 = - "0xfc4493E85fD5424456f22135DB6864Dd4E4ED662", - // stakingContract5 = - "0xaF411BF994dA1435A3150B874395B86376C5f2d5", - // stakingContract6 = - "0xf13aDbEb27ea9d9469D95e925e56a1CF79c06E90", - // stakingContract7 = - "0x160fF3c4A6E9Aa8E4271aa71226Cc811BFEf7ED9", - // stakingContract8 = - "0x4C04E53f9aAa17fc2C914694B4Aae57a9d1bE445", - // stakingContract9 = - "0x58366902082B90Fca01bE07D929478bD48AcFB19", +"0x8cee06119fffecdd560ee83b26cccfe8e2fe6603", ]; const stakingContractsETH = [ // stakingContract1 = - "0x50014432772b4123D04181727C6EdEAB34F5F988", - // stakingContract2 = - "0x9eA966B4023049BFF858BB5E698ECfF24EA54c4A", - // stakingContract3 = - "0xD4bE7a106ed193BEe39D6389a481ec76027B2660", - // stakingContract4 = - "0x3fAb09ACAeDDAF579d7a72c24Ef3e9EB1D2975c4", - // stakingContract5 = - "0xa4da28B8e42680916b557459D338aF6e2D8d458f", - // stakingContract6 = - "0x8A30Be7B2780b503ff27dBeaCdecC4Fe2587Af5d", - // stakingContract7 = - "0x44bEd8ea3296bda44870d0Da98575520De1735d4", - // stakingContract8 = - "0xeb7dd6b50db34f7ff14898d0be57a99a9f158c4d", + "0xC9075092Cc46E176B1F3c0D0EB8223F1e46555B0", ]; const stakingContractsAVAX = [ // stakingContract1 = - "0xaF411BF994dA1435A3150B874395B86376C5f2d5", - // stakingContract2 = - "0x8f28110325a727f70B64bffEbf2B9dc94B932452", - // stakingContract3 = - "0xd13bdC0c9a9931cF959739631B1290b6BEE0c018", - // stakingContract4 = - "0x5536E02336771CFa0317D4B6a042f3c38749535e", - // stakingContract5 = - "0x1A4fd0E9046aeD92B6344F17B0a53969F4d5309B", - // stakingContract6 = - "0x5566B51a1B7D5E6CAC57a68182C63Cb615cAf3f9", - // stakingContract7 = - "0xb1875eeBbcF4456188968f439896053809698a8B", - // stakingContract8 = - "0x16429e51A64B7f88D4C018fbf66266A693df64b3", - // stakingContract9 = - "0xF035ec2562fbc4963e8c1c63f5c473D9696c59E3", - // stakingContract10 = - "0x6eb643813f0b4351b993f98bdeaef6e0f79573e9", -]; + "0x8cee06119fffecdd560ee83b26cccfe8e2fe6603", -const DYP = "0x961C8c0B1aaD0c0b10a51FeF6a867E3091BCef17"; +]; +const DYP_ETH = "0x39b46b212bdf15b42b166779b9d1787a68b9d0c3"; +const DYP_BNB_AVAX = "0x1a3264F2e7b1CFC6220ec9348d33cCF02Af7aaa4" module.exports = { misrepresentedTokens: true, bsc: { - staking: stakings(stakingContractsBSC, DYP), + staking: stakings(stakingContractsBSC, DYP_BNB_AVAX), tvl: (async) => ({}), }, ethereum: { - staking: stakings(stakingContractsETH, DYP), + staking: stakings(stakingContractsETH, DYP_ETH), tvl: (async) => ({}), }, avax: { - staking: stakings(stakingContractsAVAX, DYP), + staking: stakings(stakingContractsAVAX, DYP_BNB_AVAX), tvl: (async) => ({}), }, From 99a01b785a98519f95e9f4930cd7747b43cca6bb Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Sat, 24 Feb 2024 06:29:38 +0000 Subject: [PATCH 0373/2004] zero out tvl, protocol was exploited some time ago and is abandoned --- projects/ratio-finance/index.js | 34 ++------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/projects/ratio-finance/index.js b/projects/ratio-finance/index.js index ae08184e99e..3bdf533ad09 100644 --- a/projects/ratio-finance/index.js +++ b/projects/ratio-finance/index.js @@ -1,35 +1,5 @@ -const { PublicKey } = require('@solana/web3.js') -const { Program, utils } = require("@project-serum/anchor"); -const BigNumber = require("bignumber.js"); -const IDL = require("./ratio-state.json"); -const { toUSDTBalances } = require('../helper/balances') -const { getProvider } = require('../helper/solana') - -const programId = new PublicKey("RFLeGTwFXiXXETdJkZuu9iKgXNkYbywLpTu1TioDsDQ"); - -const encodeSeedString = (seedString) => Buffer.from(utils.bytes.utf8.encode(seedString)); - -const constructProgram = async (provider) => { - return new Program(IDL, programId, provider); -}; - -const findPDA = async (seeds) => { - return (await PublicKey.findProgramAddress(seeds, programId))[0]; -}; - -const findGlobalStatePDA = async (globalStateSeed) => { - const seed = encodeSeedString(globalStateSeed); - return findPDA([seed]); -}; - async function tvl() { - const provider = getProvider(); - const program = await constructProgram(provider); - const globalStateKey = await findGlobalStatePDA("GLOBAL_STATE_SEED"); - - const globalStateAccInfo = await program.account.globalState.fetch(globalStateKey); - const tvlUsd = new BigNumber(globalStateAccInfo.tvlUsd.toString()).div(1e6).toString(10); - return toUSDTBalances(tvlUsd) + return {} } module.exports = { @@ -39,4 +9,4 @@ module.exports = { }, methodology: "To obtain the Ratio Finance TVL we make on-chain calls", -}; \ No newline at end of file +}; From 09ae1e3cd72ef531f068b05c80b0e942f6dde038 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 24 Feb 2024 06:30:34 +0000 Subject: [PATCH 0374/2004] add hallmarks --- projects/ratio-finance/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/ratio-finance/index.js b/projects/ratio-finance/index.js index 3bdf533ad09..6249585e999 100644 --- a/projects/ratio-finance/index.js +++ b/projects/ratio-finance/index.js @@ -4,6 +4,10 @@ async function tvl() { module.exports = { timetravel: false, + hallmarks: [ + [1670025600, "Private key compromised"], + [1675728000, "Announcement to move from Ratio to PHNX"] + ], solana: { tvl, }, From c77bbd063176874d0442e503f8d1c6743f73ff75 Mon Sep 17 00:00:00 2001 From: 0xhedgie <153720395+0xhedgie@users.noreply.github.com> Date: Sun, 25 Feb 2024 04:05:15 +0800 Subject: [PATCH 0375/2004] Add Secta Finance (#9056) * feat: support secta finance * separate v2 and v3 --- projects/secta-v2/index.js | 16 ++++++++++++++++ projects/secta-v3/index.js | 6 ++++++ 2 files changed, 22 insertions(+) create mode 100644 projects/secta-v2/index.js create mode 100644 projects/secta-v3/index.js diff --git a/projects/secta-v2/index.js b/projects/secta-v2/index.js new file mode 100644 index 00000000000..393dd003c4b --- /dev/null +++ b/projects/secta-v2/index.js @@ -0,0 +1,16 @@ +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 new file mode 100644 index 00000000000..f23359bd120 --- /dev/null +++ b/projects/secta-v3/index.js @@ -0,0 +1,6 @@ +const { uniV3Export } = require("../helper/uniswapV3"); +const factory = "0x9BD425a416A276C72a13c13bBd8145272680Cf07"; + +module.exports = uniV3Export({ + linea: { factory, fromBlock: 2388856 }, +}); From 62b0157fe1a1fb44756937c5ebf5047d85c7eba2 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Sun, 25 Feb 2024 05:14:28 +0900 Subject: [PATCH 0376/2004] Add new manta market on manta mainnet (#9057) * add wemixChain * add manta-eth market * add manta stable market * fix mergeExport * add manta chain manta market --- projects/shoebillFinance-v2/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index 25f65a5000c..b975eaeba5e 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -25,4 +25,9 @@ module.exports = mergeExports([ comptroller: "0x3413Dc597aE3bE40C6f10fC3D706b884eaCF470A", }), }, + { + manta: compoundExports2({ + comptroller: "0x4e4b415F5aa78a44CE1fc259D2cEc47BF50A9216", + }), + }, ]); From 9e2db41b83fbc73037f057968d54076541365649 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 25 Feb 2024 06:41:07 +0000 Subject: [PATCH 0377/2004] add fluid --- projects/fluid/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/fluid/index.js diff --git a/projects/fluid/index.js b/projects/fluid/index.js new file mode 100644 index 00000000000..4b88a89e256 --- /dev/null +++ b/projects/fluid/index.js @@ -0,0 +1,11 @@ +module.exports={ + ethereum:{ + tvl: async (_, _b, _cb, { api, }) => { + const tokens = await api.call({ target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", abi: "function listedTokens() public view returns (address[] memory listedTokens_)" }) + return api.sumTokens({ owner: "0x52aa899454998be5b000ad077a46bbe360f4e497", tokens: [ + "0x0000000000000000000000000000000000000000", + ...tokens.filter(t=>t.toLowerCase()!=="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") + ] }) + }, + } +} \ No newline at end of file From 1f3fd4c397f9230437b2efa010a29179b3623501 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sun, 25 Feb 2024 12:34:27 +0000 Subject: [PATCH 0378/2004] add new wallets merlin (#9059) --- projects/merlin-l2/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index d65ade07044..b1253d63157 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -17,6 +17,10 @@ const owners = [ "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 ]; module.exports = { @@ -41,4 +45,10 @@ module.exports = { tokens: ["0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] //usdc and usdt }), }, + zkfair: { + tvl: sumTokensExport({ + owners: ["0x8E3e71f5c016A3c764D0D0210fF71F15BEa46e3b",], + tokens: ["0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b", "0x3f97bf3Cd76B5cA9D4A4E9cD8a73C24E32d6C193", "0x813bCb548F99Bc081e5EFeeAa65e3018befb92Ae"] // eth usdt and wbtc + }), + }, }; \ No newline at end of file From a29505b345d150413982d48b52561d9fd31da4e7 Mon Sep 17 00:00:00 2001 From: Adolf998 <154962952+Adolf998@users.noreply.github.com> Date: Mon, 26 Feb 2024 04:59:37 +0800 Subject: [PATCH 0379/2004] add Bouncebit project (#9040) * add bounce-bit project * feat: update bounce-bit tvl * update bounce-bit address --- projects/bounce-bit/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/bounce-bit/index.js diff --git a/projects/bounce-bit/index.js b/projects/bounce-bit/index.js new file mode 100644 index 00000000000..0bdb37be49f --- /dev/null +++ b/projects/bounce-bit/index.js @@ -0,0 +1,24 @@ +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"], + tokens: [ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.USDT] + }), + }, + bsc: { + tvl: sumTokensExport({ + owners: ["0x53C58E975f3F72162Fc0509b9742c9b55E24a599", "0x9d0e151414aAA3913f22ac95B9c6377Ea7826F08"], + tokens: [ADDRESSES.bsc.BTCB, '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409'] // BTCB FDUSD + }), + }, + tron: { + tvl: sumTokensExport({ + owners: ["TMNgo1318CLLqxRjeHVstYD6kLKDvAhR56", "TFoNA5yPfckPUHTxVHoK9uTPdE9AUKFLZC"], + tokens: [ADDRESSES.tron.BTC] + }), + }, +}; From 7b7fb3c29d5df46aca1ff506f00e23ff631efc40 Mon Sep 17 00:00:00 2001 From: Adolf998 <154962952+Adolf998@users.noreply.github.com> Date: Mon, 26 Feb 2024 15:46:00 +0800 Subject: [PATCH 0380/2004] Update BounceBit project info (#9063) * add bounce-bit project * feat: update bounce-bit tvl * update bounce-bit address * Add supported tokens for Ethereum. --- projects/bounce-bit/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/bounce-bit/index.js b/projects/bounce-bit/index.js index 0bdb37be49f..1fede078a92 100644 --- a/projects/bounce-bit/index.js +++ b/projects/bounce-bit/index.js @@ -5,8 +5,8 @@ module.exports = { methodology: "Staking tokens via BounceBit counts as TVL", ethereum: { tvl: sumTokensExport({ - owners: ["0x53C58E975f3F72162Fc0509b9742c9b55E24a599", "0xa318dc13107efa77b3dbdc35b87ddd79b33e1139"], - tokens: [ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.USDT] + owners: ["0x53C58E975f3F72162Fc0509b9742c9b55E24a599", "0xa318dc13107efa77b3dbdc35b87ddd79b33e1139", "0xD08426542212c2Bc2B3fADFb9529E7dBD14B86Ba"], + tokens: [ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.USDT, '0xA9B1Eb5908CfC3cdf91F9B8B3a74108598009096', "0x38e382F74dfb84608F3C1F10187f6bEf5951DE93", "0x1981E32C2154936741aB6541a737b87C68F13cE1"] // auction mubi DAII }), }, bsc: { From 3797649bad06651c9aaea11a1dc522c7f1705f90 Mon Sep 17 00:00:00 2001 From: tec05 <73139131+tec05@users.noreply.github.com> Date: Sun, 25 Feb 2024 23:50:46 -0800 Subject: [PATCH 0381/2004] Add Avalanche, Cronos, Mantle, Metis, and Neon for Archly TVL (#9062) --- projects/archly-finance-v2/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js index c07d476dd82..11f28f6c9c3 100644 --- a/projects/archly-finance-v2/index.js +++ b/projects/archly-finance-v2/index.js @@ -16,6 +16,11 @@ const config = { kava: { lp: '0x90e267b0bF52F9993d32DfAB9A415e2B00A870d0' }, optimism: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, polygon: { lp: '0xc01d8ee3A405f758a3bD9f8cA253F00B9EDec2be' }, + avax: { lp: '0x8a39ACACB5da8Fc4aEfDcaEeCA9ADf09758931da' }, + cronos: { lp: '0xCf4cEEA40DDeeB49cd407e32f804b22890A6DFD6' }, + mantle: { lp: '0x31bFb9003229BCC89EeF55895A374Fd0ed36772c' }, + metis: { lp: '0xA152A0Ee0Bc15A937D5365DEB8507D063467A68d' }, + neon_evm: { lp: '0x9a08ab9b8b9A90bF9fe836D28E85808Db29Dc1aD' }, } module.exports = { From 4b1000262b1412a5ec8cca3dc15670c05b8d2494 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 08:58:36 +0100 Subject: [PATCH 0382/2004] Popcorn (#9064) * popcorn: use correct list of vaults * code refactor --------- Co-authored-by: Ruhum --- projects/popcorn/constants.js | 21 ------------- projects/popcorn/index.js | 59 ++++++++++++++++++++--------------- projects/popcorn/vault.js | 17 ---------- 3 files changed, 33 insertions(+), 64 deletions(-) delete mode 100644 projects/popcorn/constants.js delete mode 100644 projects/popcorn/vault.js diff --git a/projects/popcorn/constants.js b/projects/popcorn/constants.js deleted file mode 100644 index 6f4b00ab849..00000000000 --- a/projects/popcorn/constants.js +++ /dev/null @@ -1,21 +0,0 @@ -const ADDRESSES_ = { - ethereum: { - vaultRegistry: '0x007318Dc89B314b47609C684260CfbfbcD412864' - }, - arbitrum: { - vaultRegistry: '0xB205e94D402742B919E851892f7d515592a7A6cC' - }, - polygon: { - vaultRegistry: '0x2246c4c469735bCE95C120939b0C078EC37A08D0' - }, - bsc: { - vaultRegistry: '0x25172C73958064f9ABc757ffc63EB859D7dc2219' - }, - optimism: { - vaultRegistry: '0xdD0d135b5b52B7EDd90a83d4A4112C55a1A6D23A' - }, -} - -module.exports = { - ADDRESSES: ADDRESSES_ -} \ No newline at end of file diff --git a/projects/popcorn/index.js b/projects/popcorn/index.js index 1f7c8af82e1..072e57b0669 100644 --- a/projects/popcorn/index.js +++ b/projects/popcorn/index.js @@ -1,43 +1,50 @@ -const { ADDRESSES } = require("./constants"); -const { addVaultToTVL } = require("./vault"); +const sdk = require('@defillama/sdk'); +const { getConfig } = require('../helper/cache') + const { addFraxVaultToTVL } = require("./fraxVault"); const { staking } = require("../helper/staking"); +const { sumTokens2 } = require('../helper/unwrapLPs'); -function getTVL(chain = undefined) { - return async (timestamp, block, chainBlocks, { api }) => { - let balances = {}; +const getVaultsAbi = 'address[]:getRegisteredAddresses'; +const getAssetAbi = 'address:asset'; +const getTotalAssets = 'uint256:totalAssets'; - await addVaultToTVL(balances, api, ADDRESSES[chain].vaultRegistry); +// these vaults were not added to the registry. +// So we add them manually to the list of frax lock vaults +const fraxLockVaultsNotRegistered = [ + "0x44a7b29335cfc61C2bEA1c48710A1fE11f4aFBa9", + "0x1F0a3bF1e4Ea8f27449AFa0a3A27eFc3817431fc", + "0xDc5Ed7b972710594082479AF498B1dA02d03a273", +]; +async function tvl(timestamp, block, chainBlocks, { api }) { + let balances = {}; + const data = await getConfig('popcorn/' + api.chain, `https://raw.githubusercontent.com/Popcorn-Limited/defi-db/main/archive/vaults/${api.getChainId()}.json`); + let vaultAddresses = Object.keys(data); + if (api.chain === "arbitrum") { + let fraxLockVaults = await api.call({ target: "0x25172C73958064f9ABc757ffc63EB859D7dc2219", abi: getVaultsAbi }); + fraxLockVaults = fraxLockVaults.concat(fraxLockVaultsNotRegistered); + vaultAddresses = vaultAddresses.filter((address) => !fraxLockVaults.includes(address)); + await addFraxVaultToTVL(balances, api); + } + const assets = await api.multiCall({ abi: getAssetAbi, calls: vaultAddresses, }); + const totalAssets = await api.multiCall({ abi: getTotalAssets, calls: vaultAddresses, }); - if (chain === "arbitrum") { - await addFraxVaultToTVL(balances, api); - } + assets.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, totalAssets[i], api.chain)) - return balances; - } + return sumTokens2({ balances, api, resolveLP: true, }) } const veVCX = "0x0aB4bC35Ef33089B9082Ca7BB8657D7c4E819a1A"; const WETH_VCX_BAL_LP_TOKEN = "0x577A7f7EE659Aa14Dc16FD384B3F8078E23F1920"; module.exports = { - timetravel: true, - methodology: ``, ethereum: { start: 12237585, staking: staking(veVCX, WETH_VCX_BAL_LP_TOKEN), - tvl: getTVL('ethereum'), - }, - bsc: { - tvl: getTVL('bsc'), + tvl, }, - polygon: { - tvl: getTVL('polygon'), - }, - arbitrum: { - tvl: getTVL('arbitrum'), - }, - optimism: { - tvl: getTVL('optimism'), - } + bsc: { tvl, }, + polygon: { tvl, }, + arbitrum: { tvl, }, + optimism: { tvl, } }; \ No newline at end of file diff --git a/projects/popcorn/vault.js b/projects/popcorn/vault.js deleted file mode 100644 index ee61dfb0a8c..00000000000 --- a/projects/popcorn/vault.js +++ /dev/null @@ -1,17 +0,0 @@ -const sdk = require('@defillama/sdk'); - -const getVaultsAbi = 'address[]:getRegisteredAddresses'; -const getAssetAbi = 'address:asset'; -const getTotalAssets = 'uint256:totalAssets'; - -async function addVaultToTVL(balances, api, vaultRegistryAddress) { - const vaultAddresses = await api.call({ target: vaultRegistryAddress, abi: getVaultsAbi }); - const assets = await api.multiCall({ abi: getAssetAbi, calls: vaultAddresses, }); - const totalAssets = await api.multiCall({ abi: getTotalAssets, calls: vaultAddresses, }); - - assets.forEach((v, i) => sdk.util.sumSingleBalance(balances, v, totalAssets[i], api.chain)) -} - -module.exports = { - addVaultToTVL -} \ No newline at end of file From 4701bd2b02e4d9e7694c1a8952d519e2c4f8182e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 09:02:55 +0100 Subject: [PATCH 0383/2004] add hallmark --- projects/brahmafi/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/brahmafi/index.js b/projects/brahmafi/index.js index 5aaaf960142..7db682fb4a2 100644 --- a/projects/brahmafi/index.js +++ b/projects/brahmafi/index.js @@ -60,4 +60,7 @@ module.exports = { polygon: { tvl: polygonTvl, }, + hallmarks: [ + [Math.floor(new Date('2023-03-28')/1e3), "Brahma vaults discontinued, Brahma Console announced [not tracked here]"], + ], }; From eb4c7601fecc5708325916adc56dc894f5ecc25d Mon Sep 17 00:00:00 2001 From: pthor11 <33623944+pthor11@users.noreply.github.com> Date: Mon, 26 Feb 2024 15:05:10 +0700 Subject: [PATCH 0384/2004] Adding Metastrike TVL (#9045) * Metastrike * counting vesting part under vesting key --- projects/metastrike/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/metastrike/index.js diff --git a/projects/metastrike/index.js b/projects/metastrike/index.js new file mode 100644 index 00000000000..20759fac7d7 --- /dev/null +++ b/projects/metastrike/index.js @@ -0,0 +1,28 @@ + +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' + +module.exports = { + timetravel: true, + 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], MTS_TOKEN, 'bsc'), + vesting: stakings([VestingCEXV1, VestingCEXV2, VestingAdvisors, VestingTeam, VestingMarketing], MTS_TOKEN, 'bsc'), + tvl: () => ({}), + } +} \ No newline at end of file From b599f066b001480ea2ffcb7a5f647d93e38e0d41 Mon Sep 17 00:00:00 2001 From: DeltaFi <85327545+DeltaFinanceContact@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:10:29 +0900 Subject: [PATCH 0385/2004] Add DELTAFi Adapter (#9048) --- projects/deltafi/index.js | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 projects/deltafi/index.js diff --git a/projects/deltafi/index.js b/projects/deltafi/index.js new file mode 100644 index 00000000000..b3862541661 --- /dev/null +++ b/projects/deltafi/index.js @@ -0,0 +1,44 @@ +const ADDRESSES = require("../helper/coreAssets.json"); + +const wemix = ADDRESSES.null; +const wwemixAddr = ADDRESSES.wemix.WWEMIX; + +const dwemixAddr = "0x531e6Abe1ad0c8313ad7c8f7ad96b8e70c56164E"; +const controllerAddr = "0x334f696FE78623861733444d8476C36B0e9CdfC5"; + +async function tvl(timestamp, block, chainBlocks, { 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 From 3f593b85524128df3e787d9d8270d55b7666c5ab Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 09:42:53 +0100 Subject: [PATCH 0386/2004] Blueberry (#9066) * To include blueberry earn * code refactor --------- Co-authored-by: Gornutz <90406700+Gornutz@users.noreply.github.com> --- projects/blueberry/index.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/projects/blueberry/index.js b/projects/blueberry/index.js index 48d4be6896f..0e7cd4cff78 100644 --- a/projects/blueberry/index.js +++ b/projects/blueberry/index.js @@ -1,6 +1,21 @@ 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 = '0x9b06eA9Fbc912845DF1302FE1641BEF9639009F7'; + +async function tvl(timestamp, block, chainBlocks, {api}) { + const positionValues = await api.fetchList({ lengthAbi: abi.getNextPositionId, itemAbi: abi.getPositionValue, target: BANK}) + api.addCGToken('tether', positionValues.reduce((acc, i) => acc + i/1e18, 0)) + return api.getBalances() +} module.exports = { - methodology: 'Gets the total value locked in the Blueberry Lending Market', + methodology: 'Gets the total value locked in the Blueberry Lending Market and Blueberry Earn', ethereum: compoundExports2({ comptroller: '0xfFadB0bbA4379dFAbFB20CA6823F6EC439429ec2'}), -} \ No newline at end of file +} + +module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, tvl]) \ No newline at end of file From 01d2aff2e36eee5f381d1efa4531b91dc5d9d234 Mon Sep 17 00:00:00 2001 From: poseidollar <158989616+poseidollar@users.noreply.github.com> Date: Mon, 26 Feb 2024 15:59:14 +0700 Subject: [PATCH 0387/2004] Add Poseidollar Protocol (#8867) * Add Poseidollar Protocol * Update: remove TVL from boardroom and earn cash --- projects/poseidollar/index.js | 131 ++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 projects/poseidollar/index.js diff --git a/projects/poseidollar/index.js b/projects/poseidollar/index.js new file mode 100644 index 00000000000..177559ffce9 --- /dev/null +++ b/projects/poseidollar/index.js @@ -0,0 +1,131 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { default: BigNumber } = require("bignumber.js"); +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 = new BigNumber(0); + let coinYStaked = new BigNumber(0); + if (lpType) { + const flowxPoolInfo = listPoolFlowX.find((item) => + item.lp_supply.type.includes(lpType) + ); + const lpRate = new BigNumber(totalStaked).div( + flowxPoolInfo.lp_supply.fields.value + ); + coinXStaked = lpRate.multipliedBy(flowxPoolInfo.reserve_x.fields.balance); + coinYStaked = lpRate.multipliedBy(flowxPoolInfo.reserve_y.fields.balance); + } else { + coinXStaked = new BigNumber(totalStaked); + } + + poolInfoResult.push({ + poolId: poolId, + totalStaked: totalStaked, + coinX: coinXType, + coinY: coinYType, + coinXStaked: coinXStaked, + coinYStaked: coinYStaked, + }); + } + + return poolInfoResult; +}; + +async function suiTVL() { + const { api } = arguments[3]; + const listPoolFlowX = ( + await sui.getDynamicFieldObjects({ + parent: + "0xd15e209f5a250d6055c264975fee57ec09bf9d6acdda3b5f866f76023d1563e6", + }) + ).map((i) => i.fields.value.fields); + + let poolShareInfo = await getPool( + listPoolFlowX, + "0x3cfad71fc1f65addbadc0d4056fbd1106aa6b9a219e3ea1f5356a2f500d13182" + ); + + let totalResult = {}; + + //TVL on PSH Earn + for (let i = 0; i < poolShareInfo.length; i++) { + if (!totalResult.hasOwnProperty(poolShareInfo[i].coinX)) { + totalResult[poolShareInfo[i].coinX] = poolShareInfo[i].coinXStaked; + } else { + totalResult[poolShareInfo[i].coinX] = totalResult[ + poolShareInfo[i].coinX + ].plus(poolShareInfo[i].coinXStaked); + } + + if (poolShareInfo[i].coinY) { + if (!totalResult.hasOwnProperty(poolShareInfo[i].coinY)) { + totalResult[poolShareInfo[i].coinY] = poolShareInfo[i].coinYStaked; + } else { + totalResult[poolShareInfo[i].coinY] = totalResult[ + poolShareInfo[i].coinY + ].plus(poolShareInfo[i].coinYStaked); + } + } + } + + //Result + for (const property in totalResult) { + if (property) { + api.add(property, totalResult[property].toFixed(0)); + } + } +} + +module.exports = { + sui: { + tvl: suiTVL, + }, +}; From d56c23ae531d43af9ded2f48da17c0c57e299942 Mon Sep 17 00:00:00 2001 From: miler012 <124125686+miler012@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:16:28 +0800 Subject: [PATCH 0388/2004] Satori add the swap tvl at base and linea (#9065) * add zksync satori adapter * add zksync * add linea * add scroll * add base chain * add satori swap --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/satoriSwap/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/satoriSwap/index.js diff --git a/projects/satoriSwap/index.js b/projects/satoriSwap/index.js new file mode 100644 index 00000000000..863705cb7a8 --- /dev/null +++ b/projects/satoriSwap/index.js @@ -0,0 +1,17 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + linea: { + tvl: getUniTVL({ + useDefaultCoreAssets: true, + factory: '0xfF5859B60BCb3F153431cA216B1b269EB66A2020', + }) + }, + base: { + tvl: getUniTVL({ + useDefaultCoreAssets: true, + factory: '0x4858C605862A91A34d83C19a9704f837f64fa405', + }) + } +} \ No newline at end of file From b750b61490c4b932fe2aa2830e93cc87db5a8fe9 Mon Sep 17 00:00:00 2001 From: edsonElong <156067126+edsonElong@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:42:05 +0800 Subject: [PATCH 0389/2004] add Satsat (#8894) * add Satsat * add satsat * change tvl * Refactor tvl function in index.js * add brc20 token mapping --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 17 +++++++++++++++++ projects/satsat/index.js | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 projects/satsat/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f88fa4f9c1a..009049add02 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -46,6 +46,23 @@ const fixBalancesTokens = { MMSS: { coingeckoId: 'mmss', decimals: 0 }, AINN: { coingeckoId: 'artificial-neural-network-ordinals', decimals: 0 }, }, + map: { + // https://docs.rolluper.xyz/how-does-roup-work/deployed-contracts + // https://app.rolluper.xyz/ + '0x3e76deF74d4187B5a01aBE4E011Bd94d9f057d94': { coingeckoId: 'roup', decimals: 18 }, + '0x5a1c3f3aaE616146C7b9bf9763E0ABA9bAFc5eaE': { coingeckoId: 'roup', decimals: 18 }, + // '0x3b7fC78434B00586a2ad7c3DAd821e1b02fcA66f': { coingeckoId: '', decimals: 18 }, // mapo + // '0xb84e5EF60f73ed0da684bC3C5d7962f3839ae619': { coingeckoId: '', decimals: 18 }, // STST + '0xB719e46B6eB5b23E2759526CdE24589d87097733': { coingeckoId: 'ordinals', decimals: 18 }, + '0x9CA528368964cFb92cfFdd51dCcED25E27ACCef9': { coingeckoId: 'ordinals', decimals: 18 }, + '0xcAF17cDdb80F72484e5A279921b98a0a9A2391ee': { coingeckoId: 'rats', decimals: 18 }, + '0x6369414F2b0e973c7E85A362141aA1430bc30056': { coingeckoId: 'rats', decimals: 18 }, + '0x640a4C0AaA4870BaDE2F646B7Da87b3D53819C4f': { coingeckoId: 'comsats', decimals: 18 }, + '0x141b30Dd30FAFb87ec10312d52e5dbD86122FE14': { coingeckoId: 'comsats', decimals: 18 }, + '0x0e2cA3e003f3c73C8cC18ec244d46DB9d4c4DCEB': { coingeckoId: 'btcs', decimals: 18 }, + '0xBE81B9390D894fEBf5e5D4Ea1486a003C1e8dc63': { coingeckoId: 'btcs', decimals: 18 }, + '0x0fBb3B3Fb1e928f75B3Ed8b506bAb4503373fdca': { coingeckoId: 'mmss', decimals: 18 }, + }, btn: { '0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58': { coingeckoId: 'bitnet', decimals: 18 }, }, diff --git a/projects/satsat/index.js b/projects/satsat/index.js new file mode 100644 index 00000000000..d65f74467c3 --- /dev/null +++ b/projects/satsat/index.js @@ -0,0 +1,17 @@ +const { configPost } = require('../helper/cache') +const { sumTokens2 } = require('../helper/unwrapLPs') +const HOST='https://order.satsat.exchange' +const MarketContract = '0x56ed5Ad8DA3ed3b46aE3e6fb28eC653EB93b9436' + +async function tvl(_, _b, _cb, { 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 + } +}; From eb9fa9f33768d8a6d778b87aa0c6f2ad7fdd6249 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:22:55 +0100 Subject: [PATCH 0390/2004] track areon swap --- projects/areon-swap/index.js | 3 +++ projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ 3 files changed, 7 insertions(+) create mode 100644 projects/areon-swap/index.js diff --git a/projects/areon-swap/index.js b/projects/areon-swap/index.js new file mode 100644 index 00000000000..8cf05fa35db --- /dev/null +++ b/projects/areon-swap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('area', '0x4df039804873717bff7d03694fb941cf0469b79e') \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index fb854ef5a46..0d94063b616 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -8,6 +8,7 @@ "arbitrum", "arbitrum_nova", "archway", + "area", "astar", "aura", "aurora", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 009049add02..12a2030ab97 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -69,6 +69,9 @@ const fixBalancesTokens = { omax: { '0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb': { coingeckoId: 'omax-token', decimals: 18 }, }, + area: { + '0x298b6a733cd34e41ca87b264d968c8ca7b0b9931': { coingeckoId: 'areon-network', decimals: 18 }, + }, kujira: { 'factory:kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t:ufuzn': { coingeckoId: 'fuzion', decimals: 6 }, }, From 78fdded53786d4d1fb59c8321d14e7658343b02c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:33:49 +0100 Subject: [PATCH 0391/2004] Remove .prettierrc configuration file --- .prettierrc | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .prettierrc diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 0967ef424bc..00000000000 --- a/.prettierrc +++ /dev/null @@ -1 +0,0 @@ -{} From 1cfc9139a028d0aee433a23909bea213edeccc4e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 15:15:54 +0100 Subject: [PATCH 0392/2004] Imon (#9076) * IMONSwap IMONSwap * Update Update * Fixes Fixes * code refactor --------- Co-authored-by: Ersan YAKIT --- projects/helper/tokenMapping.js | 3 +++ projects/imonswap/index.js | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 projects/imonswap/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 12a2030ab97..4f38b79c76b 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -38,6 +38,9 @@ const fixBalancesTokens = { ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, + chz: { + '0x721ef6871f1c4efe730dce047d40d1743b886946': { coingeckoId: 'chiliz', decimals: 18 }, + }, bitcoin: { BSSB: { coingeckoId: 'bitstable-finance', decimals: 0 }, MUBI: { coingeckoId: 'multibit', decimals: 0 }, diff --git a/projects/imonswap/index.js b/projects/imonswap/index.js new file mode 100644 index 00000000000..46308e6ece4 --- /dev/null +++ b/projects/imonswap/index.js @@ -0,0 +1,16 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + methodology: + "We count liquidity of all paris through Factory Contract and Pools (single tokens) seccions through Factory Contract.", + chz: { tvl, }, + start: 1701478462, //Dec-2-2023 3:54:26 PM +UTC +}; + +async function tvl(_, _b, _cb, { api, }) { + const factory = "0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0" + const getAllPairsAbi = "function getAllPairs() view returns ((bool valid, uint256 index, uint256 reserveBase, uint256 reserveQuote, address pair, (uint256 decimals, address token, string name, string symbol) base, (uint256 decimals, address token, string name, string symbol) quote)[])" + const allPairs = await api.call({ target: factory, abi: getAllPairsAbi }) + const ownerTokens = allPairs.map(i => [[i.base.token, i.quote.token], i.pair]) + return sumTokens2({ api, ownerTokens }) +} \ No newline at end of file From 2633362a03083e8ac0b03c01e4287597276ab833 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Mon, 26 Feb 2024 22:16:36 +0800 Subject: [PATCH 0393/2004] Add afSui/Sui LP as collateral (#9073) * feature: add cetus lp data, usdc psm, and bucketus psm * feature: add psm of usdt * add bucket borrowed data * add cetable psm * feature: add afsui-sui lp as collateral * feature: remove unused code * feature: modified calculation --- projects/bucket-protocol/index.js | 37 ++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index e6b1dbde744..a27b7103547 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -18,6 +18,11 @@ const AF_POOL_IDs = [ "0xeec6b5fb1ddbbe2eb1bdcd185a75a8e67f52a5295704dd73f3e447394775402b", ]; +const AFSUI_SUI_LP_ID = + "0x97aae7a80abb29c9feabbe7075028550230401ffe7fb745757d3c28a30437408"; +const AFSUI_SUI_LP_BUCKET_ID = + "0x1e88892e746708ec69784a56c6aba301a97e87e5b77aaef0eec16c3e472e8653"; + const KRIYA_LP_IDS = [ "0xcc39bcc2c438a79beb2656ff043714a60baf89ba37592bef2e14ee8bca0cf007", "0xae1910e5bcb13a4f5b12688f0da939b9c9d3e8a9e8d0a2e02c818f6a94e598fd", @@ -52,6 +57,12 @@ async function tvl(_, _1, _2, { api }) { const aflStakedList = aflpObjs.map((aflp) => aflp.fields.staked); const buckAfPoolData = await sui.getObjects(AF_POOL_IDs); + const afsuiSuiLpObj = await sui.getObject(AFSUI_SUI_LP_ID); + const afsuiSuiTokenNames = afsuiSuiLpObj.fields.type_names; + + const afsuiSuiLpBucket = await sui.getObject(AFSUI_SUI_LP_BUCKET_ID); + const afsuiSuiLpBucketStaked = afsuiSuiLpBucket.fields.collateral_vault; + const kriyalpObjs = await sui.getObjects(KRIYA_LP_IDS); const kriyaStakedList = kriyalpObjs.map( (kriyalp) => kriyalp.fields.staked.fields.lsp.fields.balance @@ -77,17 +88,15 @@ async function tvl(_, _1, _2, { api }) { item.type.includes("Bucket") ); - const tankList = protocolFields.filter((item) => item.type.includes("Tank")); + // 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 = bucket.type.split("<").pop()?.replace(">", "") ?? ""; api.add(coin, bucket.fields.collateral_vault); } - /* for (const tank of tankList) { - api.add(BUCK, tank.fields.reserve); - } */ - for (const [ index, { @@ -147,6 +156,24 @@ async function tvl(_, _1, _2, { api }) { const halfBucketusAmount = Math.floor(bucketusPSMAmount / 2); api.add(USDC, Math.floor(halfBucketusAmount / 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) + ); } module.exports = { From 29bf924ce8b1d70be866e23fb340b02790028077 Mon Sep 17 00:00:00 2001 From: SteakHut <101499843+0xSirloin@users.noreply.github.com> Date: Tue, 27 Feb 2024 01:02:56 +1000 Subject: [PATCH 0394/2004] Add SteakHut Liquidity V2 on Avalanche (#9067) * initial commit * Revert "initial commit" This reverts commit b6b0b95ea7fa3445f31d263f7e89565c372ca598. * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/steakHut-lb/index.js | 136 +++++++++++++++++----------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/projects/steakHut-lb/index.js b/projects/steakHut-lb/index.js index e4434a83b91..3c2c82990e8 100644 --- a/projects/steakHut-lb/index.js +++ b/projects/steakHut-lb/index.js @@ -1,87 +1,87 @@ -const sdk = require('@defillama/sdk'); 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 - ], + 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 getVaultShares(api) { - return api.multiCall({ - calls: _vaults[api.chain], - abi: abi.totalSupply, - }) -} +async function tvl(_, block, _1, { api }) { + //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 }) -async function getDepositTokens(api) { - return api.multiCall({ - calls: _vaults[api.chain], - abi: abi.want, - }) -} + //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] }) -async function tvl(_, block, _1, { api }) { - const balances = {}; + const poolInfo = await api.multiCall({ calls, abi: abi.getUnderlyingAssets, }) - //get the total shares from all vaults - const vaultShares = await getVaultShares(api); - const depositTokens = await getDepositTokens(api); + 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') { - //get the total underlying assets from all shares - const calls = [] + // hJOE tvl + const HJOE_ADDRESS = '0xe7250b05bd8dee615ecc681eda1196add5156f2b' + const JOE_ADDRESS = '0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd' - for (let i = 0; i < _vaults[api.chain].length; i++) - calls.push({ target: _vaults[api.chain][i], params: vaultShares[i] }) + api.add(JOE_ADDRESS, await api.call({ target: HJOE_ADDRESS, abi: 'erc20:totalSupply' })) - const poolInfo = await api.multiCall({ - calls, - abi: abi.getUnderlyingAssets, + // engima tvl + const enigmaFactory_AVAX = `0xD751E0940CfadC35f84e60075d0f940a2545FB8d`; + const enigmas = await api.fetchList({ lengthAbi: 'enigmaPositionNumber', itemAbi: 'enigmaAtIndex', target: enigmaFactory_AVAX }) + 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) }) - for (let i = 0; i < poolInfo.length; i++) { - for (let t = 0; t < poolInfo[i].length; t++) { - sdk.util.sumSingleBalance(balances, depositTokens[i][t], poolInfo[i][t], api.chain) - } - } + } +} +async function staking(_, block, _1, { api }) { + const XSTEAK_ADDRESS = '0x902Aa4cC3b463c84541C9C1DeDF50620C99950B9' + const STEAK_ADDRESS_AVAX = '0xb279f8dd152b99ec1d84a489d32c35bc0c7f5674' - return balances; + 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, - }, - arbitrum: { - tvl - } - + doublecounted: true, + methodology: 'Counts the value of LB tokens staked into SteakHut Liquidity.', + avax: { tvl, staking, }, + arbitrum: { tvl }, }; From bf7a2e7885e3a3991f3b4d9cccb3c62f576f26da Mon Sep 17 00:00:00 2001 From: ferrjohnpainagan <64687608+ferrjohnpainagan@users.noreply.github.com> Date: Mon, 26 Feb 2024 23:09:28 +0800 Subject: [PATCH 0395/2004] Update/add v1 pool stats (#9068) * WIP * WIP * Adds v1 stats computation * Add ignored pools list --- projects/xave-finance/index.js | 173 ++++++++++++++++++++++++--------- 1 file changed, 127 insertions(+), 46 deletions(-) diff --git a/projects/xave-finance/index.js b/projects/xave-finance/index.js index d91469fd7a2..f614b2f802f 100644 --- a/projects/xave-finance/index.js +++ b/projects/xave-finance/index.js @@ -1,82 +1,163 @@ -const { getLogs } = require('../helper/cache/getLogs') +const { ethers } = require("ethers"); +const { getLogs } = require("../helper/cache/getLogs"); async function tvl(_, _b, _cb, { api }) { - const factories = config[api.chain] + const factories = config[api.chain]; - const promises = factories.map(async ({ factory, fromBlock }) => { + const promises = factories.map(async ({ factory, fromBlock, name }) => { const logs = await getLogs({ api, target: factory, - eventAbi: 'event NewFXPool(address indexed caller, bytes32 indexed id, address indexed fxpool)', + 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, - }) - - 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)) - }) - await Promise.all(promises) - return api.getBalances() + }); + + 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 })), + }); + + // 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) => { + 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', + 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', + name: "FX Pool Factory", + factory: "0x627D759314D5c4007b461A74eBaFA7EBC5dFeD71", fromBlock: 32054794, }, { - name: 'FX Pool Deployer', - factory: '0xF169c1Ae8De24Da43a3dC5c5F05De412b4848bD3', + name: "FX Pool Deployer", + factory: "0xF169c1Ae8De24Da43a3dC5c5F05De412b4848bD3", fromBlock: 49368321, - } + }, + { + name: "CurveFactory", + factory: "0x6bfBc74eb37d44DE6E44B0B63F04CbA626009Ff5", + fromBlock: 18910303, + }, ], ethereum: [ { - name: 'FX Pool Factory', - factory: '0x81fE9e5B28dA92aE949b705DfDB225f7a7cc5134', + name: "FX Pool Factory", + factory: "0x81fE9e5B28dA92aE949b705DfDB225f7a7cc5134", fromBlock: 15981805, }, { - name: 'FX Pool Deployer', - factory: '0xfb23Bc0D2629268442CD6521CF4170698967105f', + name: "FX Pool Deployer", + factory: "0xfb23Bc0D2629268442CD6521CF4170698967105f", fromBlock: 18469425, - } + }, + { + name: "CurveFactory", + factory: "0xFA505d02269bF4Ea59355a4e37fBd882122717e5", + fromBlock: 13221583, + }, ], avax: [ { - name: 'FX Pool Factory', - factory: '0x81fE9e5B28dA92aE949b705DfDB225f7a7cc5134', + name: "FX Pool Factory", + factory: "0x81fE9e5B28dA92aE949b705DfDB225f7a7cc5134", fromBlock: 32585313, }, { - name: 'FX Pool Deployer', - factory: '0x4042dC4110Ea9500338737605A60065c3de152C6', + name: "FX Pool Deployer", + factory: "0x4042dC4110Ea9500338737605A60065c3de152C6", fromBlock: 37150792, - } - ] -} + }, + ], +}; + +const ignoredPools = { + ethereum: [ + "0x20E1d8Daf58358CF11BE5616946e1dF55F1eF8B0", + "0xc3CfdA7061b729265F58BdC07564f1cbD6C41FBc", + ], + polygon: [], + avax: [], +}; Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl } -}) + module.exports[chain] = { tvl }; +}); From 44e2ce317be3d6bcc8e08fad51c1c21aadbfd3b4 Mon Sep 17 00:00:00 2001 From: abdulrafay-contrax <122004952+abdulrafay-contrax@users.noreply.github.com> Date: Mon, 26 Feb 2024 20:12:07 +0500 Subject: [PATCH 0396/2004] chore: contrax token balance update (#9071) Co-authored-by: Saqlain Riaz --- projects/contrax-finance/index.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/projects/contrax-finance/index.js b/projects/contrax-finance/index.js index 4c86ca8c3cf..6c3906e8f32 100644 --- a/projects/contrax-finance/index.js +++ b/projects/contrax-finance/index.js @@ -27,18 +27,16 @@ async function getHopMagicData(api) { params: [], }); const balance = await api.call({ - abi: "erc20:balanceOf", - target: tokenAddress, - params: [HOP_MAGIC_VAULT], + abi: "uint256:balance", + target: HOP_MAGIC_VAULT, }); api.add(tokenAddress, balance); } async function getGMXData(api) { const balance = await api.call({ - abi: "erc20:balanceOf", - target: GMX, - params: [GMX_VAULT], + abi: "uint256:balance", + target: GMX_VAULT, }); api.add(GMX, balance); } @@ -46,18 +44,18 @@ async function getGMXData(api) { async function tvl(_, _1, _2, { api }) { let tokens = await api.multiCall({ abi: "address:token", calls: Vaults }); // Controllers - let targets = await api.multiCall({ - abi: "address:controller", + let bals = await api.multiCall({ + abi: "uint256:balance", calls: Vaults, }); - const bals = await api.multiCall({ - abi: "erc20:balanceOf", - calls: tokens.map((t, i) => ({ target: targets[i], params: [t] })), - }); + // const bals = await api.multiCall({ + // abi: "erc20:balanceOf", + // calls: tokens.map((t, i) => ({ target: targets[i], params: [t] })), + // }); await getHopMagicData(api); await getGMXData(api); - + api.addTokens(tokens, bals); return sumTokens2({ api, resolveLP: true }); } From c6b971d27ef9709261c4968ca3ba9d57d256f19d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 16:28:31 +0100 Subject: [PATCH 0397/2004] Defiverse (#9077) * add defiverse chain * feat: add defiverse adapter * fix: remove console log * code refactor --------- Co-authored-by: oromp1812 <154218438+oromp1812@users.noreply.github.com> Co-authored-by: oromp1812 --- projects/defiverse/index.js | 20 ++++++++++++++++++++ projects/helper/chains.json | 1 + projects/helper/env.js | 5 +++-- projects/helper/tokenMapping.js | 9 ++++++++- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 projects/defiverse/index.js diff --git a/projects/defiverse/index.js b/projects/defiverse/index.js new file mode 100644 index 00000000000..b4f1bdfbf49 --- /dev/null +++ b/projects/defiverse/index.js @@ -0,0 +1,20 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const VAULT_CONTRACT = "0x2FA699664752B34E90A414A42D62D7A8b2702B85"; +const TOKENS = [ + "0x7c6b91D9Be155A6Db01f749217d76fF02A7227F2", + "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea", + "0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351", +]; + +async function tvl(_, _b, _cb, { api }) { + const tokenAddesses = TOKENS.map((x) => x.address); + return sumTokens2({ api, owner: VAULT_CONTRACT, tokens: TOKENS }); +} + +module.exports = { + defiverse: { + tvl, + }, +}; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 0d94063b616..732339cb7b5 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -61,6 +61,7 @@ "darwinia", "dash", "defichain", + "defiverse", "dexit", "dfk", "doge", diff --git a/projects/helper/env.js b/projects/helper/env.js index aa369c6136e..b57d28ed2f4 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -18,7 +18,8 @@ const DEFAULTS = { ALV_RPC: "https://elves-core3.alvey.io/", OZONE_RPC: "https://node1.ozonechain.io", XDC_RPC: "https://erpc.xinfin.network", - ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545" + ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", + DEFIVERSE_RPC: "https://rpc.defi-verse.org/" } const ENV_KEYS = [ @@ -47,4 +48,4 @@ function getEnv(key) { module.exports = { ENV_KEYS, getEnv, -} \ No newline at end of file +} diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4f38b79c76b..3aa7dfbf681 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -98,13 +98,20 @@ const fixBalancesTokens = { 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt': { coingeckoId: 'tether', decimals: 8 }, 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc': { coingeckoId: 'bitcoin', decimals: 8 }, }, + defiverse: { + '0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351': { coingeckoId: 'oasys', decimals: 18 }, + '0x7c6b91D9Be155A6Db01f749217d76fF02A7227F2': { coingeckoId: 'usd-coin', decimals: 18 }, + '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea': { coingeckoId: 'ethereum', decimals: 18 }, + }, + { tomochain: { '0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce': { coingeckoId: 'tomochain', decimals: 18 }, '0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0': { coingeckoId: 'tether', decimals: 18 }, '0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127': { coingeckoId: 'usd-coin', decimals: 6 }, '0x9ede19ede2baf93d25fba4c8f58577e008b8f963': { coingeckoId: 'ethereum', decimals: 18 }, '0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2': { coingeckoId: 'saros-finance', decimals: 18 }, - } + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 80131f762ac77c3dff9b81d03578562a129cf9ed Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 16:30:19 +0100 Subject: [PATCH 0398/2004] bugfix --- projects/helper/tokenMapping.js | 35 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3aa7dfbf681..d72e5238d3a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -69,34 +69,34 @@ const fixBalancesTokens = { btn: { '0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58': { coingeckoId: 'bitnet', decimals: 18 }, }, - omax: { + omax: { '0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb': { coingeckoId: 'omax-token', decimals: 18 }, }, - area: { + area: { '0x298b6a733cd34e41ca87b264d968c8ca7b0b9931': { coingeckoId: 'areon-network', decimals: 18 }, }, kujira: { 'factory:kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t:ufuzn': { coingeckoId: 'fuzion', decimals: 6 }, }, kroma: { - '0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e': { coingeckoId: 'wemix-token', decimals: 18 }, + '0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e': { coingeckoId: 'wemix-token', decimals: 18 }, }, astar: { - '0xffffffff00000000000000010000000000000010': { coingeckoId: 'astar', decimals:18 }, + '0xffffffff00000000000000010000000000000010': { coingeckoId: 'astar', decimals: 18 }, }, moonriver: { - '0xffffffff98e37bf6a393504b5adc5b53b4d0ba11': { coingeckoId: 'moonriver', decimals: 18 }, - '0xffffffff3646a00f78cadf8883c5a2791bfcddc4': { coingeckoId: 'bifrost-native-coin', decimals: 12 }, - '0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe': { coingeckoId: 'kusama', decimals: 12 }, + '0xffffffff98e37bf6a393504b5adc5b53b4d0ba11': { coingeckoId: 'moonriver', decimals: 18 }, + '0xffffffff3646a00f78cadf8883c5a2791bfcddc4': { coingeckoId: 'bifrost-native-coin', decimals: 12 }, + '0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe': { coingeckoId: 'kusama', decimals: 12 }, }, moonbeam: { - '0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c': { coingeckoId: 'voucher-glmr', decimals: 18 }, - '0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1': { coingeckoId: 'filecoin', decimals: 18 }, + '0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c': { coingeckoId: 'voucher-glmr', decimals: 18 }, + '0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1': { coingeckoId: 'filecoin', decimals: 18 }, }, stacks: { - 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx': { coingeckoId: 'blockstack', decimals: 6 }, - 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt': { coingeckoId: 'tether', decimals: 8 }, - 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc': { coingeckoId: 'bitcoin', decimals: 8 }, + 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx': { coingeckoId: 'blockstack', decimals: 6 }, + 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt': { coingeckoId: 'tether', decimals: 8 }, + 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc': { coingeckoId: 'bitcoin', decimals: 8 }, }, defiverse: { '0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351': { coingeckoId: 'oasys', decimals: 18 }, @@ -104,13 +104,12 @@ const fixBalancesTokens = { '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea': { coingeckoId: 'ethereum', decimals: 18 }, }, - { tomochain: { - '0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce': { coingeckoId: 'tomochain', decimals: 18 }, - '0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0': { coingeckoId: 'tether', decimals: 18 }, - '0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127': { coingeckoId: 'usd-coin', decimals: 6 }, - '0x9ede19ede2baf93d25fba4c8f58577e008b8f963': { coingeckoId: 'ethereum', decimals: 18 }, - '0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2': { coingeckoId: 'saros-finance', decimals: 18 }, + '0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce': { coingeckoId: 'tomochain', decimals: 18 }, + '0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0': { coingeckoId: 'tether', decimals: 18 }, + '0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127': { coingeckoId: 'usd-coin', decimals: 6 }, + '0x9ede19ede2baf93d25fba4c8f58577e008b8f963': { coingeckoId: 'ethereum', decimals: 18 }, + '0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2': { coingeckoId: 'saros-finance', decimals: 18 }, }, } From 72254dbc86bd470a41caf5bbe237be7924a9c725 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:39:35 +0100 Subject: [PATCH 0399/2004] Mantadex (#9079) * feat: add mantadex tvl * chore: update api * feat: add MantaDEX TVL * chore: update style * chore: revert package.json * chore: revert package.json * chore: update chain name * minor refactor --------- Co-authored-by: Daniel --- projects/helper/chains.json | 1 + projects/mantadex/api.js | 110 ++++++++++++++++++++++++++++++++++++ projects/mantadex/index.js | 6 ++ 3 files changed, 117 insertions(+) create mode 100644 projects/mantadex/api.js create mode 100644 projects/mantadex/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 732339cb7b5..6a3f436cfb3 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -146,6 +146,7 @@ "lukso", "lung", "manta", + "manta_atlantic", "mantle", "map", "mayachain", diff --git a/projects/mantadex/api.js b/projects/mantadex/api.js new file mode 100644 index 00000000000..b029167669e --- /dev/null +++ b/projects/mantadex/api.js @@ -0,0 +1,110 @@ +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 new file mode 100644 index 00000000000..cb5765ee33d --- /dev/null +++ b/projects/mantadex/index.js @@ -0,0 +1,6 @@ +const { getExports } = require("../helper/heroku-api"); + +module.exports = { + timetravel: false, + ...getExports("mantadex", ["manta_atlantic"]), +}; From ded68295a8b8d4ee894f98f2221a604bfdf3c5d2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:49:40 +0100 Subject: [PATCH 0400/2004] Manta-staking (#9080) * feat: add manta atlantic staking platform * Fix variable naming convention in Manta Atlantic stake API --------- Co-authored-by: Daniel --- projects/manta-atlantic-stake/api.js | 27 ++++++++++++++++++++++++++ projects/manta-atlantic-stake/index.js | 6 ++++++ 2 files changed, 33 insertions(+) create mode 100644 projects/manta-atlantic-stake/api.js create mode 100644 projects/manta-atlantic-stake/index.js diff --git a/projects/manta-atlantic-stake/api.js b/projects/manta-atlantic-stake/api.js new file mode 100644 index 00000000000..5166f8c1c09 --- /dev/null +++ b/projects/manta-atlantic-stake/api.js @@ -0,0 +1,27 @@ +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 new file mode 100644 index 00000000000..e6471b2ff0b --- /dev/null +++ b/projects/manta-atlantic-stake/index.js @@ -0,0 +1,6 @@ +const { getExports } = require("../helper/heroku-api"); + +module.exports = { + timetravel: false, + ...getExports("manta-atlantic-stake", ["manta_atlantic"]), +}; From 7e1377fc10c209e144558fac95d17da97de2cf63 Mon Sep 17 00:00:00 2001 From: Sam Bugs <101145325+0xsambugs@users.noreply.github.com> Date: Mon, 26 Feb 2024 16:18:57 -0300 Subject: [PATCH 0401/2004] feat: add moonbeam for mean finance (#9081) --- projects/meanfinance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/meanfinance/index.js b/projects/meanfinance/index.js index 2d5263bcf1f..491b89b3e07 100644 --- a/projects/meanfinance/index.js +++ b/projects/meanfinance/index.js @@ -61,6 +61,7 @@ module.exports = { arbitrum: getV2TvlObject('arbitrum'), bsc: getV2TvlObject('bsc'), xdai: getV2TvlObject('xdai'), + moonbeam: getV2TvlObject('moonbeam'), hallmarks: [ [1650082958, "Protocol is paused due to non-critical vulnerability"], [1654057358, "Deployment on Optimism"], From af8678d2b0e35e79a9d86c6d5a61b28c63a77231 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 26 Feb 2024 19:21:12 +0000 Subject: [PATCH 0402/2004] add zkevm --- projects/aura-finance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index 3b1f8d89fbc..12ca29ebce3 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -66,6 +66,7 @@ const config = { 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' }, } module.exports = { From 701e4be331d7989cc57a8e18fd5a181a66dcbddc Mon Sep 17 00:00:00 2001 From: doomsower <12031673+doomsower@users.noreply.github.com> Date: Tue, 27 Feb 2024 00:28:38 +0300 Subject: [PATCH 0403/2004] feat: change gearbox v3 so that it uses defillama prices (#9072) --- projects/gearbox/abi.json | 39 --- projects/gearbox/events.js | 214 --------------- projects/gearbox/index.js | 518 +++++++++++++++++++++++++------------ 3 files changed, 355 insertions(+), 416 deletions(-) delete mode 100644 projects/gearbox/abi.json delete mode 100644 projects/gearbox/events.js diff --git a/projects/gearbox/abi.json b/projects/gearbox/abi.json deleted file mode 100644 index cd3520393dd..00000000000 --- a/projects/gearbox/abi.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "getContractsRegister": "address:getContractsRegister", - "getPoolsCount": "uint256:getPoolsCount", - "getPools": "address[]:getPools", - "availableLiquidity": "uint256:availableLiquidity", - "totalBorrowed": "uint256:totalBorrowed", - "underlyingToken": "address:underlyingToken", - "creditAccounts": "address[]:creditAccounts", - "getDataCompressor": "address:getDataCompressor", - "getAddressOrRevert": "function getAddressOrRevert(bytes32 key, uint256 _version) view returns (address result)", - "getCreditManagers": "address[]:getCreditManagers", - "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)[])", - "getCreditManagersV3List": "function getCreditManagersV3List() 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)[])", - "calcTotalValue": "function calcTotalValue(address creditAccount) view returns (uint256 total)", - "calcDebtAndCollateral": "function calcDebtAndCollateral(address creditAccount, uint8 task) view returns (tuple(uint256 debt, uint256 cumulativeIndexNow, uint256 cumulativeIndexLastUpdate, uint128 cumulativeQuotaInterest, uint256 accruedInterest, uint256 accruedFees, uint256 totalDebtUSD, uint256 totalValue, uint256 totalValueUSD, uint256 twvUSD, uint256 enabledTokensMask, uint256 quotedTokensMask, address[] quotedTokens, address _poolQuotaKeeper) cdd)", - "filtersV1": [ - "function creditFilter() view returns (address addr)", - "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)" - ], - "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)" - ], - "creditManagerV2": [ - "function creditFacade() view returns (address addr)", - "event NewConfigurator(address indexed newConfigurator)" - ], - "creditConfiguratorV2": [ - "event CreditFacadeUpgraded(address indexed newCreditFacade)" - ], - "version": "uint256:version" -} \ No newline at end of file diff --git a/projects/gearbox/events.js b/projects/gearbox/events.js deleted file mode 100644 index 385333bc447..00000000000 --- a/projects/gearbox/events.js +++ /dev/null @@ -1,214 +0,0 @@ -const { api2 } = require("@defillama/sdk"); -const { Contract, ethers } = require("ethers"); -const sdk = require('@defillama/sdk') -const { getLogs } = require('../helper/cache/getLogs') - -const abi = require("./abi.json"); - -function getProvider(network) { - const chainApi = new sdk.ChainApi(network) - return chainApi.provider -} - -const fromBlock = 13854983 - -const getV2CAs = async (creditManager, block, api) => { - const eventsByDate = []; - const accounts = new Set(); - - const cm = new Contract( - creditManager, - abi["creditManagerV2"], - getProvider("ethereum") - ); - const creditFacade = await cm.creditFacade(); - - const ccAddrs = (await getLogs({ - target: creditManager, - fromBlock, - api, - onlyArgs: true, - eventAbi: "event NewConfigurator(address indexed newConfigurator)" - })).map(e => e.newConfigurator) - - const cfAddrs = []; - - for (let cca of ccAddrs) { - const cfs = (await getLogs({ - target: cca, - fromBlock, - api, - onlyArgs: true, - eventAbi: "event CreditFacadeUpgraded(address indexed newCreditFacade)" - })).map(e => e.newCreditFacade) - - cfAddrs.push(...cfs); - } - - const addToEvents = (e, address, operation) => { - eventsByDate.push({ - time: e.blockNumber * 100000 + e.logIndex, - address, - operation, - ca: e.args.creditAccount ? e.args.creditAccount : null, - cf: creditFacade, - }); - }; - - const logs = []; - - for (let cfAddr of cfAddrs) { - const cf = new Contract(cfAddr, abi["filtersV2"], getProvider("ethereum")) - - const l = ( - await getLogs({ - target: cfAddr, - fromBlock, - api, - topics: abi["filtersV2"].map(i => ethers.id(i)), - }) - ).map((log) => ({ - ...cf.interface.parseLog(log), - blockNumber: log.blockNumber, - logIndex: log.logIndex, - })); - - logs.push(...l); - } - - 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 && log.args.onBehalfOf === borrower) - .args.creditAccount - ); - - const totalValue = await api.multiCall({ - abi: abi["calcTotalValue"], - target: creditFacade, - calls: openCAs, - }); - - return totalValue[0] - ? totalValue - .reduce((a, c) => a + BigInt(c), BigInt(0)) - .toString() - : "0"; -}; - -const getV1CAs = async (creditManager, block, api) => { - if (creditManager === "0x4C6309fe2085EfE7A0Cfb426C16Ef3b41198cCE3") { - return "0"; - } - const eventsByDate = []; - const accounts = new Set(); - - const addToEvents = (e, address, operation) => { - eventsByDate.push({ - time: e.blockNumber * 100000 + e.logIndex, - address, - operation, - }); - }; - - const cm = new Contract( - creditManager, - abi["filtersV1"], - getProvider("ethereum") - ); - const cf = await cm.creditFilter(); - - - const logs = ( - await getLogs({ - target: creditManager, - fromBlock, - api, - topics: abi["filtersV1"].map(i => ethers.id(i)), - }) - ).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 && log.args.onBehalfOf === borrower - ).args.creditAccount - ); - - const totalValue = await api2.abi.multiCall({ - abi: abi["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(); -}; - -module.exports = { getV1CAs, getV2CAs }; \ No newline at end of file diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js index 13425719f26..7e215ec4457 100644 --- a/projects/gearbox/index.js +++ b/projects/gearbox/index.js @@ -1,103 +1,236 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); +/** + ** + ** + ** + ** 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.1.0 + ** + ** + ** + **/ -const { getV2CAs, getV1CAs } = require("./events"); +var ethers = require("ethers"); +var getLogs = require("../helper/cache/getLogs"); -const addressProviderV3 = "0x9ea7b04da02a5373317d745c1571c84aad03321d"; -//// Gearbox TVL -/// Sum of 2 Sources: -/// 1. Pool TVL - Derived using availableLiquidity() -/// 2. Credit Account v1/v2/v3 - Derived by getting balances on all open Credit Accounts +// src/adapter/constants.ts +var ADDRESS_PROVIDER_V3 = "0x9ea7b04da02a5373317d745c1571c84aad03321d"; -const getPoolAddrs = async (block) => { - // Get contractsRegister from Gearbox addressProvider. This is backwards compatible v3->v2 - const { output: contractsRegister } = await sdk.api.abi.call({ - abi: abi["getContractsRegister"], - target: addressProviderV3, +// 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 contractsRegisterAddr = await api.call({ block, + abi: poolAbis["getAddressOrRevert"], + target: ADDRESS_PROVIDER_V3, + params: [ + // cast format-bytes32-string "CONTRACTS_REGISTER" + "0x434f4e5452414354535f52454749535445520000000000000000000000000000", + 0, + ], }); - - // Get gearbox pools from the contractsRegister, and underlyingToken for each pool - const { output: pools } = await sdk.api.abi.call({ - abi: abi["getPools"], - target: contractsRegister, + let pools = await api.call({ + abi: poolAbis["getPools"], + target: contractsRegisterAddr, block, }); - - const { output: poolsUnderlying } = await sdk.api.abi.multiCall({ - abi: abi["underlyingToken"], - calls: pools - .filter((p) => p != "0xB8cf3Ed326bB0E51454361Fb37E9E8df6DC5C286") // RM wstETH pool - .map((pool) => ({ target: pool })), + pools = pools.filter( + (p) => p !== "0xB8cf3Ed326bB0E51454361Fb37E9E8df6DC5C286" + ); + const poolUnderlyings = await api.multiCall({ + abi: poolAbis["underlyingToken"], + calls: pools.map((target) => ({ target })), block, }); - const tokensAndOwners = poolsUnderlying.map((t) => [ - t.output, - t.input.target, - ]); + return poolUnderlyings.map((u, i) => [u, pools[i]]); +} - return { tokensAndOwners }; +// 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)", }; -const getCreditManagersV1 = async (block) => { - const { output: contractsRegister } = await sdk.api.abi.call({ - abi: abi["getContractsRegister"], - target: addressProviderV3, +// 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_V3, + params: [ + // cast format-bytes32-string "CONTRACTS_REGISTER" + "0x434f4e5452414354535f52454749535445520000000000000000000000000000", + 0, + ], }); - // Modern data compressors do not return v1 managers - const { output: creditManagers } = await sdk.api.abi.call({ - abi: abi["getCreditManagers"], - target: contractsRegister, + const creditManagers = await api.call({ + abi: v1Abis["getCreditManagers"], + target: contractsRegisterAddr, block, }); - const { output: versions } = await sdk.api.abi.multiCall({ - abi: abi["version"], + 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].output; + const version = versions[i]; if (version === "1") { - v1Managers.push({ addr }); + v1Managers.push(addr); } } - const { output: underlyings } = await sdk.api.abi.multiCall({ - abi: abi["underlyingToken"], - calls: v1Managers.map(({ addr }) => ({ target: addr })), + const underlyings = await api.multiCall({ + abi: v1Abis["underlyingToken"], + calls: v1Managers.map((target) => ({ target })), block, }); - for (let i = 0; i < underlyings.length; i++) { - v1Managers[i].underlying = underlyings[i].output; + return v1Managers.map((addr, i) => ({ addr, underlying: underlyings[i] })); +} +async function getV1CAs(creditManager, block, api) { + if (creditManager === "0x4C6309fe2085EfE7A0Cfb426C16Ef3b41198cCE3") { + return "0"; } - return v1Managers; -}; + 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({ + skipCache: true, + 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(); +} -const getV1TVL = async (block, api) => { - const creditManagers = await getCreditManagersV1(block); +// 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)", + ], +}; - // Silently throw if no V2 CAs available +// src/adapter/v2/index.ts +async function getV2TVL(block, api) { + const creditManagers = await getCreditManagersV210(block, api); if (!creditManagers[0]) return []; - - // Get all CA Balances const caValues = await Promise.all( - creditManagers.map((cm) => getV1CAs(cm.addr, block, api)) + creditManagers.map((cm) => getV2CAs(cm.addr, block, api)) ); - return creditManagers.map((cm, i) => ({ addr: cm.addr, token: cm.underlying, bal: caValues[i], })); -}; - -const getCreditManagersV210 = async (block) => { - // Get DataCompressor from Gearbox addressProvider - const { output: DataCompressor210 } = await sdk.api.abi.call({ - abi: abi["getAddressOrRevert"], - target: addressProviderV3, +} +async function getCreditManagersV210(block, api) { + const dataCompressor210 = await api.call({ + abi: v2Abis["getAddressOrRevert"], + target: ADDRESS_PROVIDER_V3, params: [ // cast format-bytes32-string "DATA_COMPRESSOR" "0x444154415f434f4d50524553534f520000000000000000000000000000000000", @@ -105,128 +238,185 @@ const getCreditManagersV210 = async (block) => { ], block, }); - // Get gearbox pools from the contractsRegister, and underlyingToken for each pool - const { output: creditManagers } = await sdk.api.abi.call({ + return api.call({ // IDataCompressorV2_10__factory.createInterface().getFunction("getCreditManagersV2List").format(ethers.utils.FormatTypes.full) - abi: abi["getCreditManagersV2List"], - target: DataCompressor210, + abi: v2Abis["getCreditManagersV2List"], + target: dataCompressor210, block, }); - - return creditManagers; -}; - -const getV2TVL = async (block, api) => { - // Get Current CMs - const creditManagers = await getCreditManagersV210(block); - // Silently throw if no V2 CAs available - if (!creditManagers[0]) return []; - - // Get all CA Balances - 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], - })); -}; - -const getCreditManagersV3 = async (block) => { - try { - // Get DataCompressor V3 from Gearbox addressProvider - // Currently reverts, because DC V3 is not deployed - const { output: DataCompressor300 } = await sdk.api.abi.call({ - abi: abi["getAddressOrRevert"], - target: addressProviderV3, - params: [ - // cast format-bytes32-string "DATA_COMPRESSOR" - "0x444154415f434f4d50524553534f520000000000000000000000000000000000", - 300, - ], - 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)", }); - // Get gearbox pools from the contractsRegister, and underlyingToken for each pool - const { output: creditManagers } = await sdk.api.abi.call({ - // IDataCompressorV3_00__factory.createInterface().getFunction("getCreditManagersV3List").format(ethers.utils.FormatTypes.full) - abi: abi["getCreditManagersV3List"], - target: DataCompressor300, - block, + 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, }); - - return creditManagers; - } catch (e) { - // console.warn(e); - return []; + }; + 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); } -}; - -const getV3CAs = async (creditManager, block, api) => { - const caAddrs = await api.call({ - abi: abi["creditAccounts"], - target: creditManager, + 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; + } }); - - if (!caAddrs) return "0" - + 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({ - // ICreditManagerV3__factory.createInterface().getFunction("calcDebtAndCollateral").format(ethers.utils.FormatTypes.full) - abi: abi["calcDebtAndCollateral"], - target: creditManager, - calls: caAddrs.map((addr) => ({ - target: creditManager, - params: [addr, 3], // DEBT_COLLATERAL - })), - permitFailure: true, + abi: v2Abis["calcTotalValue"], + target: creditFacade, + calls: openCAs, }); + return totalValue[0] + ? totalValue.reduce((a, c) => a + BigInt(c), BigInt(0)).toString() + : "0"; +} - return totalValue - .reduce( - (a, c) => a + BigInt(c?.totalValue ?? '0'), - BigInt(0) - ) - .toString(); +// src/adapter/v3/abi.ts +var v3Abis = { + getAddressOrRevert: + "function getAddressOrRevert(bytes32 key, uint256 _version) view returns (address result)", + getCreditManagersV3List: + "function getCreditManagersV3List() 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)[])", + getCreditAccountsByCreditManager: + "function getCreditAccountsByCreditManager(address creditManager, (address token, bytes callData)[] priceUpdates) returns ((bool isSuccessful, address[] priceFeedsNeeded, address addr, address borrower, address creditManager, string cmName, address creditFacade, address underlying, uint256 debt, uint256 cumulativeIndexLastUpdate, uint128 cumulativeQuotaInterest, uint256 accruedInterest, uint256 accruedFees, uint256 totalDebtUSD, uint256 totalValue, uint256 totalValueUSD, uint256 twvUSD, uint256 enabledTokensMask, uint256 healthFactor, uint256 baseBorrowRate, uint256 aggregatedBorrowRate, (address token, uint256 balance, bool isForbidden, bool isEnabled, bool isQuoted, uint256 quota, uint16 quotaRate, uint256 quotaCumulativeIndexLU)[] balances, uint64 since, uint256 cfVersion, uint40 expirationDate, address[] activeBots)[])", }; -const getV3TVL = async (block, api) => { - // Get Current CMs - const creditManagers = await getCreditManagersV3(block); - // Silently throw if no CAs available +// src/adapter/v3/index.ts +async function getV3TVL(block, api) { + const dc300 = await api.call({ + abi: v3Abis["getAddressOrRevert"], + target: ADDRESS_PROVIDER_V3, + params: [ + // cast format-bytes32-string "DATA_COMPRESSOR" + "0x444154415f434f4d50524553534f520000000000000000000000000000000000", + 300, + ], + block, + }); + const creditManagers = await getCreditManagersV3(dc300, block, api); if (!creditManagers[0]) return []; - - // Get all CA Balances const caValues = await Promise.all( - creditManagers.map((cm) => getV3CAs(cm.addr, block, api)) + creditManagers.map((cm) => getV3CAs(dc300, cm.addr, block, api)) ); + return caValues.flat(); +} +async function getCreditManagersV3(dc300, block, api) { + return api.call({ + // IDataCompressorV3_00__factory.createInterface().getFunction("getCreditManagersV3List").format(ethers.utils.FormatTypes.full) + abi: v3Abis["getCreditManagersV3List"], + target: dc300, + block, + }); +} +async function getV3CAs(dc300, creditManager, block, api) { + const accs = await api.call({ + // IDataCompressorV3_00__factory.createInterface().getFunction("getCreditAccountsByCreditManager").format(ethers.utils.FormatTypes.full) + target: dc300, + abi: v3Abis["getCreditAccountsByCreditManager"], + params: [creditManager, []], + block, + }); + const result = []; + for (const acc of accs) { + for (const { balance, token } of acc.balances) { + if (balance !== "0" && balance !== "1") { + result.push({ + addr: acc.addr, + bal: balance, + token, + }); + } + } + } + return result; +} - return creditManagers.map((cm, i) => ({ - addr: cm.addr, - token: cm.underlying, - bal: caValues[i], - })); -}; - -const tvl = async (timestamp, block, _, { api }) => { - // Pool TVL (Current token balances) - const { tokensAndOwners } = await getPoolAddrs(block); - - // CreditAccounts TVL +// src/adapter/index.ts +async function tvl(timestamp, block, _, { api }) { + const tokensAndOwners = await getPools(block, api); const v1Balances = await getV1TVL(block, api); const v2Balances = await getV2TVL(block, api); const v3Balances = await getV3TVL(block, api); - - // Merge all balances for each token - [v1Balances, v2Balances, v3Balances].flat().forEach((i) => { + [...v1Balances, ...v2Balances, ...v3Balances].forEach((i) => { api.add(i.token, i.bal); - tokensAndOwners.push([i.token, i.addr]); }); - - return api.sumTokens({ tokensAndOwners }); -}; - -module.exports = { + await api.sumTokens({ tokensAndOwners }); +} +var adapter_default = { hallmarks: [[1666569600, "LM begins"]], ethereum: { tvl, @@ -234,3 +424,5 @@ module.exports = { methodology: `Retrieves the tokens in each Gearbox pool (WETH/DAI/WBTC/USDC/wstETH) & value of all Credit Accounts (V1/V2/V3) denominated in the underlying token.`, misrepresentedTokens: true, }; + +module.exports = adapter_default; From e5606930f52d44d6a84e151d88bbdf91f1e3eb5b Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:22:14 +0000 Subject: [PATCH 0404/2004] disable polygon chain on bunny (#9083) --- projects/bunny/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/bunny/index.js b/projects/bunny/index.js index 2e3f262678c..54f2f1a1a8e 100644 --- a/projects/bunny/index.js +++ b/projects/bunny/index.js @@ -181,9 +181,11 @@ module.exports = { bsc:{ tvl: bsc }, + /* polygon:{ tvl:polygon }, + */ hallmarks: [ [1621395248, 'Flash Loan Attack'], ], From cdc98c895694382cb8b2511bd6267703069e530e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 26 Feb 2024 23:34:28 +0100 Subject: [PATCH 0405/2004] fix bunny --- projects/bunny/index.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/projects/bunny/index.js b/projects/bunny/index.js index 54f2f1a1a8e..15f82e56ebd 100644 --- a/projects/bunny/index.js +++ b/projects/bunny/index.js @@ -93,13 +93,13 @@ const poolsPolygon = [ // polyBUNNY '0x10C8CFCa4953Bc554e71ddE3Fa19c335e163D7Ac', '0x7a526d4679cDe16641411cA813eAf7B33422501D', - '0x6b86aB330F18E8FcC4FB214C91b1080577df3513', + // '0x6b86aB330F18E8FcC4FB214C91b1080577df3513', '0xe167Cf12a60f606C4C83bc34F09C4f9D9453690e', // qPool '0x4beB900C3a642c054CA57EfCA7090464082e904F', '0x54E1feE2182d0d96D0D8e592CbFd4debC8EEf7Df', '0x3cba7b58b4430794fa7a37F042bd54E3C2A351A8', - '0x4964e4d8E17B86e15A2f0a4D8a43D8E4AbeC3E78', + // '0x4964e4d8E17B86e15A2f0a4D8a43D8E4AbeC3E78', '0xf066208Fb16Dc1A06e31e104bEDb187468206a92', '0xB0621a46aFd14C0D1a1F8d3E1021C4aBCcd02F5b', '0x95aF402e9751f665617c3F9037f00f91ec00F7b6', @@ -107,8 +107,8 @@ const poolsPolygon = [ '0xE94096Fb06f60C7FC0d122A352154842384F80bd', '0x58918F94C14dD657f0745f8a5599190f5baDFa05', '0x4ee929E9b25d00E6C7FCAa513C01311Da40462F2', - '0x560F866fE4e1E6EA20701B9dCc9555486E1B84c2', - '0x470Be517cBd063265c1A519aE186ae82d10dD360', + // '0x560F866fE4e1E6EA20701B9dCc9555486E1B84c2', + // '0x470Be517cBd063265c1A519aE186ae82d10dD360', // sPool '0x87c743C1418864c9799FdE4C8612D1Ba64188ECe', @@ -158,7 +158,7 @@ async function bsc(timestamp, ethBlock, chainBlock) { } } -async function polygon(timestamp, ethBlock, chainBlock) { +async function polygon(timestamp, ethBlock, chainBlock, { api }) { const block = chainBlock.polygon const total = (await sdk.api.abi.multiCall({ calls: poolsPolygon.map( address => ({ @@ -181,11 +181,9 @@ module.exports = { bsc:{ tvl: bsc }, - /* polygon:{ tvl:polygon }, - */ hallmarks: [ [1621395248, 'Flash Loan Attack'], ], From b0a685e0a958cd20f1cb116c658c633a4b27015d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Feb 2024 00:25:43 +0100 Subject: [PATCH 0406/2004] fix broken adapters --- projects/hunnyfinance/index.js | 2 +- projects/marswap/index.js | 2 +- projects/optimus/index.js | 5 ++- projects/optiondance/index.js | 1 + projects/phoenix/abi.json | 3 -- projects/phoenix/index.js | 73 ++++---------------------------- projects/ramp/index.js | 5 ++- projects/singularityDAO/index.js | 12 ++---- 8 files changed, 20 insertions(+), 83 deletions(-) delete mode 100644 projects/phoenix/abi.json diff --git a/projects/hunnyfinance/index.js b/projects/hunnyfinance/index.js index 2819a2dbc94..36478664967 100644 --- a/projects/hunnyfinance/index.js +++ b/projects/hunnyfinance/index.js @@ -47,7 +47,7 @@ const farmContracts = [ async function tvl(timestamp, block, chainBlocks, { api }) { const tokens = await api.multiCall({ abi: abi.stakingToken, calls: farmContracts }) - const bals = await api.multiCall({ abi: abi.balance, 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, }) diff --git a/projects/marswap/index.js b/projects/marswap/index.js index 9a8944ff395..65d8cedb173 100644 --- a/projects/marswap/index.js +++ b/projects/marswap/index.js @@ -1,3 +1,3 @@ const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('shibarium', '0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7', { fetchBalances: true, }) \ No newline at end of file +module.exports = uniTvlExport('shibarium', '0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7') \ No newline at end of file diff --git a/projects/optimus/index.js b/projects/optimus/index.js index fa62cc872c0..221d92a1fd8 100644 --- a/projects/optimus/index.js +++ b/projects/optimus/index.js @@ -37,6 +37,7 @@ async function getTotalSupplyLP() { } async function getTotalSupplyBorrower() { + return new BigNumber(0) return call(BORROWER_LEGACY_STRATEGY_CONTRACT, 'getLoanInfo') .then(value => { return value ? toHex(value.collateral) : new BigNumber(0); @@ -84,12 +85,12 @@ async function fetch() { getOmmAutoStakingStatus(), ]); - const values = await Promise.all([ + const values = [ totalSupply.times(ICXPrice), loanInfo.times(ICXPrice), fTokenPool.times(fTokenRate).times(ommRatesIcx).times(ICXPrice), ommPool.times(ommRate).times(ommPrice), - ]); + ] const tvl = values.reduce((pre, cur) => { return pre.plus(cur || new BigNumber(0)); diff --git a/projects/optiondance/index.js b/projects/optiondance/index.js index c5e5bdb58ee..846b5f1c5f0 100644 --- a/projects/optiondance/index.js +++ b/projects/optiondance/index.js @@ -5,6 +5,7 @@ const APIs = { }; async function fetch() { + return 0 const resp = await get(APIs.optiondance); const tvl = resp.data.total_value; return parseFloat(tvl).toFixed(2); diff --git a/projects/phoenix/abi.json b/projects/phoenix/abi.json deleted file mode 100644 index 7f571b79cdf..00000000000 --- a/projects/phoenix/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalSupply": "uint256:getTvl" -} \ No newline at end of file diff --git a/projects/phoenix/index.js b/projects/phoenix/index.js index 91cc6159594..91d4012115a 100644 --- a/projects/phoenix/index.js +++ b/projects/phoenix/index.js @@ -1,69 +1,12 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const BigNumber = require('bignumber.js'); - -const abi = require('./abi'); - -const ploypool = '0x7751ff8c091b60cd51219ea244f9760d21fda041'; -const bscpool = '0xBB8dA4ed33388A0eAc442eD1f28474413FC9d7a7'; -const wanpool = '0xBB8dA4ed33388A0eAc442eD1f28474413FC9d7a7'; - -//const wanOptionFactorySc = new wanWeb3.eth.Contract(optionFactoryAbi,wanOptionFactory); -let usd = ADDRESSES.ethereum.USDC; - -async function polygon(timestamp, _, {polygon: block }) { - let totalSupply = (await sdk.api.abi.call({ - block, - target: ploypool, - abi: abi['totalSupply'], - chain:'polygon' - })).output; - - totalSupply = parseFloat(new BigNumber(totalSupply).times(Math.pow(10, 4))); - - let tk= usd; - return{[tk]:totalSupply}; - -} - -async function bsc(timestamp, _, {bsc: block }) { - let totalSupply = (await sdk.api.abi.call({ - block, - target: bscpool, - abi: abi['totalSupply'], - chain:'bsc' - })).output; - - totalSupply = parseFloat(new BigNumber(totalSupply).times(Math.pow(10, 4))); - - let tk= usd; - return{[tk]:totalSupply}; - -} - -async function wan(timestamp, _, {wan: block }) { - let totalSupply = (await sdk.api.abi.call({ - block, - target: wanpool, - abi: abi['totalSupply'], - chain:'wan' - })).output; - - totalSupply = parseFloat(new BigNumber(totalSupply).times(Math.pow(10, 4))); - - let tk= usd; - return{[tk]:totalSupply}; -} +const tvl = () => ({}) module.exports = { start: 1631376000, // beijing time 2021-9-11 0:0: - polygon:{ - tvl: polygon, - }, - bsc:{ - tvl: bsc - }, - wan:{ - tvl: wan - }, + // deadFrom: '2022-09-15', + hallmarks: [ + [Math.floor(new Date('2022-09-15')/1e3), 'Project is dead: https://twitter.com/Phoenix__PHX/status/1570389804734640129'], + ], + polygon:{ tvl, }, + bsc:{ tvl, }, + wan:{ tvl, }, }; diff --git a/projects/ramp/index.js b/projects/ramp/index.js index dcef8a87e57..d78c1ed46c1 100644 --- a/projects/ramp/index.js +++ b/projects/ramp/index.js @@ -1,5 +1,6 @@ const abi = require('./abi.json'); const { getConfig } = require('../helper/cache') +const { sumTokens2 } = require('../helper/unwrapLPs') function getChainTVL(chain) { return async (timestamp, ethBlock, _, { api }) => { @@ -18,9 +19,9 @@ function getChainTVL(chain) { calls.push({ target: token.strategy.address, params: tokenAddress }) } - const res = await api.multiCall({ abi: abi.getPoolAmount, calls, }) + const res = (await api.multiCall({ abi: abi.getPoolAmount, calls, permitFailure: true})).map(i => i ?? 0) api.addTokens(iTokens, res) - return api.getBalances() + return sumTokens2({ api, resolveLP: true, }) } } diff --git a/projects/singularityDAO/index.js b/projects/singularityDAO/index.js index 0708e6f4e79..b21c6013684 100644 --- a/projects/singularityDAO/index.js +++ b/projects/singularityDAO/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); -const http = require("../helper/http"); +const { cachedGraphQuery } = require('../helper/cache') const sdk = require("@defillama/sdk"); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -24,13 +24,8 @@ const LP_TOKEN_SDAO_USDT = "0x3a925503970d40d36d2329e3846e09fcfc9b6acb"; const getDynasetQuery = "{ dynaset { address } }"; const graphEndpoint = - "https://dev-onchain-server.singularitydao.ai/dynaset-server/api/graphql"; + "https://singularitydao.ai/api/dynaset-server/api/graphql"; -///////////////////////////////////////////////// -///// ETHEREUM ///////////////////////////////// -/////////////////////////////////////////////// - -// TVL async function tvl(_, block) { const blacklistedTokens = [ @@ -40,9 +35,8 @@ async function tvl(_, block) { AGIX_TOKEN, NUNET_TOKEN, ]; - // DYNASETS - const response = await http.graphQuery(graphEndpoint, getDynasetQuery); + const response = await cachedGraphQuery('singularity-dao', graphEndpoint, getDynasetQuery); const dynasets = response.dynaset.map((d) => d.address).flat(); const { output: tokens } = await sdk.api.abi.multiCall({ calls: dynasets.map((addr) => ({ target: addr })), From 3ea6a1699864de584e4f674136ff3053c3fb50c0 Mon Sep 17 00:00:00 2001 From: "BT.Wood(Tang Bo Hao)" Date: Tue, 27 Feb 2024 17:00:55 +0800 Subject: [PATCH 0407/2004] feat: add Fixes Inscription Protocol on Flow (#9058) * feat: add Fixes Inscription Protocol on Flow * feat: update TVL Methodology for staking --- projects/fixes-frc20-staking/index.js | 94 +++++++++++++++++++++++++++ projects/fixes-frc20/index.js | 52 +++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 projects/fixes-frc20-staking/index.js create mode 100644 projects/fixes-frc20/index.js diff --git a/projects/fixes-frc20-staking/index.js b/projects/fixes-frc20-staking/index.js new file mode 100644 index 00000000000..da5d742b810 --- /dev/null +++ b/projects/fixes-frc20-staking/index.js @@ -0,0 +1,94 @@ +// Fixes Inscription Protocol - Staking Pool: https://fixes.world/ +const { post } = require("../helper/http"); + +let queryTVLCode = ` +import FRC20Staking from 0xd2abb5dbf5e08666 +import FRC20AccountsPool from 0xd2abb5dbf5e08666 +import FRC20Marketplace from 0xd2abb5dbf5e08666 +import FRC20Storefront from 0xd2abb5dbf5e08666 +import FRC20Indexer from 0xd2abb5dbf5e08666 + +access(all) +fun main(): UFix64 { + let acctsPool = FRC20AccountsPool.borrowAccountsPool() + let stakingTokens = acctsPool.getFRC20Addresses(type: FRC20AccountsPool.ChildAccountType.Staking) + + var totalTVL = 0.0 + let ticks = stakingTokens.keys + + for tick in ticks { + let stakingAddr = stakingTokens[tick]! + let stakingPool = FRC20Staking.borrowPool(stakingAddr) + if stakingPool == nil { + continue + } + + let indexer = FRC20Indexer.getIndexer() + // calculate floor price + let benchmarkPrice = indexer.getBenchmarkValue(tick: tick) + var floorPrice = benchmarkPrice + + if let marketAddr = acctsPool.getFRC20MarketAddress(tick: tick) { + if let market = FRC20Marketplace.borrowMarket(marketAddr) { + let buyPriceRanks = market.getPriceRanks(type: FRC20Storefront.ListingType.FixedPriceBuyNow) + if buyPriceRanks.length > 0 { + var i = 0 + let floorPriceRank = buyPriceRanks[i] + let listIds = market.getListedIds(type: FRC20Storefront.ListingType.FixedPriceBuyNow, rank: floorPriceRank) + if listIds.length > 0 { + if let listing = market.getListedItem( + type: FRC20Storefront.ListingType.FixedPriceBuyNow, + rank: floorPriceRank, + id: listIds[0] + ) { + if let details = listing.getDetails() { + floorPrice = details.pricePerToken() + } + } + } + } + } + } // end if + + var details = stakingPool!.getDetails() + let validStaked = details.totalStaked - details.totalUnstakingLocked + + totalTVL = totalTVL + (validStaked * (floorPrice - benchmarkPrice)) + } + return totalTVL +} +`; + +const queryCodeBase64 = Buffer.from(queryTVLCode, "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; + 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 fixes 𝔉rc20 treasury pool", + error + ); + } +} + +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 new file mode 100644 index 00000000000..b276cf70f80 --- /dev/null +++ b/projects/fixes-frc20/index.js @@ -0,0 +1,52 @@ +// Fixes Inscription Protocol - 𝔉rc20 Treasury Pool: https://fixes.world/ +const { post } = require("../helper/http"); + +let queryTVLCode = ` +import FRC20Indexer from 0xd2abb5dbf5e08666 + +access(all) +fun main(): UFix64 { + let indexer = FRC20Indexer.getIndexer() + let tokens = indexer.getTokens() + var totalBalance = 0.0 + for tick in tokens { + let balance = indexer.getPoolBalance(tick: tick) + totalBalance = totalBalance + balance + } + return totalBalance +} +`; + +const queryCodeBase64 = Buffer.from(queryTVLCode, "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; + 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 fixes 𝔉rc20 treasury pool", + error + ); + } +} + +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, + }, +}; From 05ae5dd8ee294035b09305ec264645f2d74f6995 Mon Sep 17 00:00:00 2001 From: JoscelynFarr <130961775+JoscelynFarr@users.noreply.github.com> Date: Tue, 27 Feb 2024 17:17:55 +0800 Subject: [PATCH 0408/2004] add jojo tvl (#9085) * add jojo tvl * add jojo tvl --- projects/jojo/index.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/projects/jojo/index.js b/projects/jojo/index.js index ca266d0c788..1a2511940ce 100644 --- a/projects/jojo/index.js +++ b/projects/jojo/index.js @@ -4,9 +4,14 @@ const { sumTokensExport } = require('../helper/unwrapLPs') 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, ADDRESSES.arbitrum.WETH, ADDRESSES.arbitrum.WBTC, - ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.GMX, ADDRESSES.arbitrum.WSTETH, '0x539bde0d7dbd336b79148aa742883198bbf60342'], - owners: ['0xcDf9eED57Fe8dFaaCeCf40699E5861517143bcC7','0x747282eadcd331e3a8725DcD9e358514D723b3a3']} - ) }, + 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'] + } + ) + }, }; + From fa3aa056d1ad7aa0e67c8e93951b1e739759caef Mon Sep 17 00:00:00 2001 From: Chia-Hui Chou Date: Tue, 27 Feb 2024 17:25:33 +0800 Subject: [PATCH 0409/2004] feat: add furucombo treasury (#9087) --- projects/treasury/furucombo.js | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 projects/treasury/furucombo.js diff --git a/projects/treasury/furucombo.js b/projects/treasury/furucombo.js new file mode 100644 index 00000000000..836869efa01 --- /dev/null +++ b/projects/treasury/furucombo.js @@ -0,0 +1,56 @@ +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], + }, +}); From c5ca183078e6175fe16f12f5ecaee4c55bfd59c4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:54:33 +0100 Subject: [PATCH 0410/2004] Fix commented out code in index.js --- projects/optimus/index.js | 4 ++-- projects/optiondance/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/optimus/index.js b/projects/optimus/index.js index 221d92a1fd8..596b26a1400 100644 --- a/projects/optimus/index.js +++ b/projects/optimus/index.js @@ -38,10 +38,10 @@ async function getTotalSupplyLP() { async function getTotalSupplyBorrower() { return new BigNumber(0) - return call(BORROWER_LEGACY_STRATEGY_CONTRACT, 'getLoanInfo') + /* return call(BORROWER_LEGACY_STRATEGY_CONTRACT, 'getLoanInfo') .then(value => { return value ? toHex(value.collateral) : new BigNumber(0); - }); + }); */ } async function getOMMLendingStatus() { diff --git a/projects/optiondance/index.js b/projects/optiondance/index.js index 846b5f1c5f0..a26f9e739d0 100644 --- a/projects/optiondance/index.js +++ b/projects/optiondance/index.js @@ -6,9 +6,9 @@ const APIs = { async function fetch() { return 0 - const resp = await get(APIs.optiondance); + /* const resp = await get(APIs.optiondance); const tvl = resp.data.total_value; - return parseFloat(tvl).toFixed(2); + return parseFloat(tvl).toFixed(2); */ } module.exports = { From 85158db179c68bd16b274a76e3cf7e0f607abfa6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Feb 2024 11:00:36 +0100 Subject: [PATCH 0411/2004] fix sicx --- projects/scientixfinance/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/scientixfinance/index.js b/projects/scientixfinance/index.js index d00784655d9..78aaf1f7876 100644 --- a/projects/scientixfinance/index.js +++ b/projects/scientixfinance/index.js @@ -27,10 +27,10 @@ async function tvl(_, _b, _cb, { 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}) + // const transmuteValue = await api.call({ abi: 'address:totalValue', target: TransmuteAdapter}) api.add(token, totalDeposited) api.add(token, scSupply) - api.add(token, transmuteValue) + // api.add(token, transmuteValue) await api.sumTokens({ owner: Transmute, token}) } From ea907a0c779ca42892dc0f14beb0f5c7019aa3ff Mon Sep 17 00:00:00 2001 From: Scopuly <39069225+Scopuly@users.noreply.github.com> Date: Tue, 27 Feb 2024 13:21:39 +0300 Subject: [PATCH 0412/2004] Add Scopuly (#9086) * Create index.js | Scopuly * Scopuly TVL * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/scopuly/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/scopuly/index.js diff --git a/projects/scopuly/index.js b/projects/scopuly/index.js new file mode 100644 index 00000000000..aa2a20e61a8 --- /dev/null +++ b/projects/scopuly/index.js @@ -0,0 +1,12 @@ +const { get } = require('../helper/http'); + +async function tvl() { + var totalTvl = await get('https://api.scopuly.com/api/liquidity_pools_tvl'); + return { tether: totalTvl.reduce((a, i) => a + Number(i.tvl), 0)} +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + stellar: { tvl }, +} From 8c63871b80338a3f25d71970f29d41a95851c1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9lder=20Vasconcelos?= Date: Tue, 27 Feb 2024 12:11:49 +0000 Subject: [PATCH 0413/2004] Adding BakerFi to DefiLlama (#9078) * BakerFi TVL counted * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bakerfi/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/bakerfi/index.js diff --git a/projects/bakerfi/index.js b/projects/bakerfi/index.js new file mode 100644 index 00000000000..809145849e6 --- /dev/null +++ b/projects/bakerfi/index.js @@ -0,0 +1,21 @@ +const config = { + "arbitrum": { + vaults: ["0x5c1b2312FaE6c0d61B6A15A8093842E9fE5b1e44"] + }, +} + +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 (_, _1, _2, { api }) => await getVaultTVL(api, vaults), + } +}) From e25378c73d11d8e5dcf58dd324155a4310fd3ada Mon Sep 17 00:00:00 2001 From: Pizzaxxx <160599028+Pizzaxxx@users.noreply.github.com> Date: Tue, 27 Feb 2024 20:26:24 +0500 Subject: [PATCH 0414/2004] feat: implement for pizzax TVL (#9090) --- projects/pizzax/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/pizzax/index.js diff --git a/projects/pizzax/index.js b/projects/pizzax/index.js new file mode 100644 index 00000000000..13dcd1e1120 --- /dev/null +++ b/projects/pizzax/index.js @@ -0,0 +1,19 @@ +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)", + start: 35011373, + 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 From 0399addbb6944e7fc193206876d4011457f42548 Mon Sep 17 00:00:00 2001 From: Tushar Tapadia <53835566+TusharTapadia@users.noreply.github.com> Date: Tue, 27 Feb 2024 20:56:47 +0530 Subject: [PATCH 0415/2004] Added arbitrum tvl for velvet-capital (#9089) --- projects/velvet-capital-v2/index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/projects/velvet-capital-v2/index.js b/projects/velvet-capital-v2/index.js index b43636d805e..907f1538553 100644 --- a/projects/velvet-capital-v2/index.js +++ b/projects/velvet-capital-v2/index.js @@ -3,9 +3,6 @@ const { getConfig, } = require('../helper/cache') const { getLogs } = require('../helper/cache/getLogs') async function tvl(_, _b, _cb, { api, }) { - // const response = await getConfig('velvet-capital/v2', 'https://defivas.org/api/v2/portfolio/all'); - // const data = response.data.data; - // const indexes = data.map(items=> items.indexSwap); const indexes = await api.fetchList({ lengthAbi: 'uint256:indexId', itemAbi: 'function getIndexList(uint256) view returns (address)', target: '0xE61472Ce45e559830ECF12F6a215Cd732F4D798B' }) const [tokens, vaults] = await Promise.all([ api.multiCall({ abi: 'address[]:getTokens', calls: indexes }), @@ -16,7 +13,23 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, ownerTokens, resolveLP: true }); } +async function tvl2(_, _b, _cb, { api, }) { + const indexes = await api.fetchList({ lengthAbi: 'uint256:indexId', itemAbi: 'function getIndexList(uint256) view returns (address)', target: '0xc4209197ebC3165863d62c4c340C113620414d97' }) + 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', - bsc: { tvl } + bsc: { + tvl:tvl + }, + arbitrum: { + tvl:tvl2 + } } From 609ae5bb09edfadfcd1276f55bd9c99fd1114f87 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Feb 2024 16:28:31 +0100 Subject: [PATCH 0416/2004] code refactor --- projects/velvet-capital-v2/index.js | 32 ++++++++++------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/projects/velvet-capital-v2/index.js b/projects/velvet-capital-v2/index.js index 907f1538553..923e036d509 100644 --- a/projects/velvet-capital-v2/index.js +++ b/projects/velvet-capital-v2/index.js @@ -1,20 +1,7 @@ -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') -const { getConfig, } = require('../helper/cache') -const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2, } = require('../helper/unwrapLPs') async function tvl(_, _b, _cb, { api, }) { - const indexes = await api.fetchList({ lengthAbi: 'uint256:indexId', itemAbi: 'function getIndexList(uint256) view returns (address)', target: '0xE61472Ce45e559830ECF12F6a215Cd732F4D798B' }) - 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 }); -} - -async function tvl2(_, _b, _cb, { api, }) { - const indexes = await api.fetchList({ lengthAbi: 'uint256:indexId', itemAbi: 'function getIndexList(uint256) view returns (address)', target: '0xc4209197ebC3165863d62c4c340C113620414d97' }) + 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 }), @@ -26,10 +13,13 @@ async function tvl2(_, _b, _cb, { api, }) { module.exports = { methodology: 'calculates overall value deposited across different protocol portfolios', - bsc: { - tvl:tvl - }, - arbitrum: { - tvl:tvl2 - } } + +const config = { + arbitrum: '0xc4209197ebC3165863d62c4c340C113620414d97', + bsc: '0xE61472Ce45e559830ECF12F6a215Cd732F4D798B', +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 4b31461372051cd0c246b4ae24e1233cfc47f3e9 Mon Sep 17 00:00:00 2001 From: parketh Date: Tue, 27 Feb 2024 21:35:52 +0000 Subject: [PATCH 0417/2004] feat: add Haiko adapter (#9092) * feat: add Haiko adapter * update STRK token address --- projects/haiko/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/haiko/index.js diff --git a/projects/haiko/index.js b/projects/haiko/index.js new file mode 100644 index 00000000000..0f4c93fd3e6 --- /dev/null +++ b/projects/haiko/index.js @@ -0,0 +1,27 @@ +const { getConfig } = require("../helper/cache"); +const { sumTokens } = require("../helper/chain/starknet"); + +const MarketManager = + "0x38925b0bcf4dce081042ca26a96300d9e181b910328db54a6c89e5451503f5"; +const ReplicatingStrategy = + "0x2ffce9d48390d497f7dfafa9dfd22025d9c285135bcc26c955aea8741f081d2"; + +async function tvl(_, _1, _2, { 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, + }, +}; From 5564869e90c7fed3966a3e2de7c67afdb6e5e115 Mon Sep 17 00:00:00 2001 From: northern05 <42889528+northern05@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:42:57 +0200 Subject: [PATCH 0418/2004] iLend V2 (#9091) * add ilend * code refactor * add ilend v2 --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ilend_v2/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/ilend_v2/index.js diff --git a/projects/ilend_v2/index.js b/projects/ilend_v2/index.js new file mode 100644 index 00000000000..3c33ab7227b --- /dev/null +++ b/projects/ilend_v2/index.js @@ -0,0 +1,34 @@ +const { queryContract } = require('../helper/chain/cosmos') +const ILendPoolContractAddress = "inj1j8pkx3dwsmtgg76shj9jaezxu6v0vj7lpl3dx0"; + +async function tvl(_, _b, _cb, { 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(_, _b, _cb, { 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, + } +}; From e7536b502295b9de7bf205baefe48b5f960201f7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:33:59 +0100 Subject: [PATCH 0419/2004] fix ferro --- projects/ferro/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/ferro/index.js b/projects/ferro/index.js index e34a9adb036..03b40dd2657 100644 --- a/projects/ferro/index.js +++ b/projects/ferro/index.js @@ -4,7 +4,6 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const SWAP_3FER_ADDR = '0xe8d13664a42B338F009812Fa5A75199A865dA5cD'; const SWAP_2FER_ADDR = '0xa34C0fE36541fB085677c36B4ff0CCF5fa2B32d6'; const SWAP_LCRO_WCRO_ADDRESSES = '0x1578C5CF4f8f6064deb167d1eeAD15dF43185afa'; -const chain = 'cronos' const tokens = { // DAI @@ -29,16 +28,17 @@ const tokens = { "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23": [ SWAP_LCRO_WCRO_ADDRESSES, ], + // LATOM-ATOM + '0xb888d8dd1733d72681b30c00ee76bde93ae7aa93': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], + '0xac974ee7fc5d083112c809ccb3fce4a4f385750d': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], }; -async function tvl(timestamp, ethBlock, {cronos: block}) { +async function tvl(timestamp, ethBlock, _, { api }) { const tokensAndOwners = Object.entries(tokens).map(([token, owners]) => owners.map(owner => [token, owner])).flat() - return sumTokens2({ chain, block, tokensAndOwners }) + return sumTokens2({ api, tokensAndOwners }) } module.exports = { - timetravel: true, - misrepresentedTokens: false, methodology: 'sum of ferro stablecoin pool contracts balance', start: 1651218360, cronos: { From 0660a1a05338f1dce98341915be24734ee3863b8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:51:38 +0100 Subject: [PATCH 0420/2004] track https://standardweb3.com --- projects/standard-mode/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/standard-mode/index.js diff --git a/projects/standard-mode/index.js b/projects/standard-mode/index.js new file mode 100644 index 00000000000..7e4b16dbaa0 --- /dev/null +++ b/projects/standard-mode/index.js @@ -0,0 +1,15 @@ +const { getLogs } = require('../helper/cache/getLogs') +const config = { + mode: { factory: '0x4D1b18A7BDB8D0a02f692398337aBde8DeB8FB09', fromBlock: 4381503, }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + 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]) + return api.sumTokens({ ownerTokens}) + } + } +}) \ No newline at end of file From 0d6f18559e974879a3a89658a2fe5c03c34473b1 Mon Sep 17 00:00:00 2001 From: Tomwhh <30361751+Tomwhh@users.noreply.github.com> Date: Tue, 27 Feb 2024 23:07:24 +0000 Subject: [PATCH 0421/2004] 21.co Tokens (#9022) * Create 21co_tokens.js * Update 21co_tokens.js * minor fix * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * disabel doge & bitcoin cash --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/21-co/index.js | 52 +++++++++++++++++++++++++++++++++++++++++ projects/helper/cex.js | 1 + 2 files changed, 53 insertions(+) create mode 100644 projects/21-co/index.js diff --git a/projects/21-co/index.js b/projects/21-co/index.js new file mode 100644 index 00000000000..602313dd083 --- /dev/null +++ b/projects/21-co/index.js @@ -0,0 +1,52 @@ +const { cexExports } = require('../helper/cex') + +const config = { + bitcoin: { + owners: [ + '1HTGi4tfXSEtcXD4pk6S3vBs3s64hWY1pW' + ], + }, + 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/helper/cex.js b/projects/helper/cex.js index ec384d6919a..426b904e12d 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -239,6 +239,7 @@ function cexExports(config) { 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({ chain: 'bep2', ...config.bep2 }) From b41a10552a85cc805ea6d1da80877b8a69b0ed04 Mon Sep 17 00:00:00 2001 From: Mayank Mittal <74496738+MayankMittal1@users.noreply.github.com> Date: Wed, 28 Feb 2024 10:21:35 +0530 Subject: [PATCH 0422/2004] Add Voltage integration of UniswapV3 on Fuse (#9098) --- projects/fusefi-v3/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/fusefi-v3/index.js diff --git a/projects/fusefi-v3/index.js b/projects/fusefi-v3/index.js new file mode 100644 index 00000000000..e1819c64ce5 --- /dev/null +++ b/projects/fusefi-v3/index.js @@ -0,0 +1,6 @@ +const { uniV3Export } = require('../helper/uniswapV3') +const factory = '0xaD079548b3501C5F218c638A02aB18187F62b207' + +module.exports = uniV3Export({ + fuse: { factory, fromBlock: 27175571 } +}) From 477e9245cb6a32b0c0a5bf20f5c82607d40e81a3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Feb 2024 10:25:36 +0100 Subject: [PATCH 0423/2004] track https://dex.kaleidocube.xyz --- package-lock.json | 6 +++--- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 4 ++++ projects/kaleidoswap/index.js | 38 +++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 projects/kaleidoswap/index.js diff --git a/package-lock.json b/package-lock.json index 0a3b12c2fa2..717320edc56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.31", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.31.tgz", - "integrity": "sha512-KEIWahIF5FOLDp5+ZfCj+sZmjqyDgkYYpVuscZc5bis7fPSAy8LmOGysFpaBuPfaUL1DMK2QKPEy0WnGL4BMKQ==", + "version": "5.0.32", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.32.tgz", + "integrity": "sha512-hY1OjiM+iIM30UMyLTrYm98vKfE+jDqHZ3Rn55V8gbKGtacYMGsIrkAn3M1rBj9bUZ4UdGuGvka09cy7QzQOOg==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 6a3f436cfb3..8d9f1cc3f94 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -269,6 +269,7 @@ "waves", "wax", "wemix", + "xai", "xdai", "xdc", "xpla", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d72e5238d3a..fb788784c7f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -111,6 +111,10 @@ const fixBalancesTokens = { '0x9ede19ede2baf93d25fba4c8f58577e008b8f963': { coingeckoId: 'ethereum', decimals: 18 }, '0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2': { coingeckoId: 'saros-finance', decimals: 18 }, }, + xai: { + '0x36be1fd6ff2a6beb34b500a04f89103a524516d8': { coingeckoId: 'xai-blockchain', decimals: 18 }, + '0x300a7b57dc85b6a9776e249614abf0fe5c9905fb': { coingeckoId: 'usd-coin', decimals: 6 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/kaleidoswap/index.js b/projects/kaleidoswap/index.js new file mode 100644 index 00000000000..9363eb34142 --- /dev/null +++ b/projects/kaleidoswap/index.js @@ -0,0 +1,38 @@ +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(_, _b, _cb, { 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 From 9679cc2aec1adb5af9dbb2a11a9c38ae4bec9733 Mon Sep 17 00:00:00 2001 From: Dimas Date: Wed, 28 Feb 2024 16:46:51 +0700 Subject: [PATCH 0424/2004] fix(factor-leverage-vault): wrong subgraph usage (#9095) --- projects/factor-leverage-vault/index.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/projects/factor-leverage-vault/index.js b/projects/factor-leverage-vault/index.js index bab720decad..0ee91ce4361 100644 --- a/projects/factor-leverage-vault/index.js +++ b/projects/factor-leverage-vault/index.js @@ -1,8 +1,12 @@ const { blockQuery } = require('../helper/http') -const queryBlock = `query data($block: Int){ - leverageVaultPoolTokenStates(where: { balanceRaw_gt: 0} block: { number: $block }) { - id type underlyingAssetAddress balanceRaw +const queryBlock = `query data($block: Int){ + leverageVaultPairStates(block: { number: $block }) { + id + assetBalanceRaw + assetTokenAddress + debtBalanceRaw + debtTokenAddress } }` @@ -10,12 +14,13 @@ const SUBGRAPH_URL = "https://api.thegraph.com/subgraphs/name/dimasriat/factor-leverage-vault"; async function tvl(timestamp, ethBlock, chainBlocks, { api }) { - const { leverageVaultPoolTokenStates } = await blockQuery(SUBGRAPH_URL, queryBlock, { api }) + const { leverageVaultPairStates } = await blockQuery(SUBGRAPH_URL, queryBlock, { api }) - for (let poolTokenState of leverageVaultPoolTokenStates) { - let { underlyingAssetAddress, balanceRaw } = poolTokenState; - if (poolTokenState.type === 'debt') balanceRaw *= -1 - api.add(underlyingAssetAddress, balanceRaw) + 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() From c97778c2ac00be62c78e442e7eaa5ce744818aaf Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Wed, 28 Feb 2024 17:49:49 +0800 Subject: [PATCH 0425/2004] Add fxUSD tvl (#9097) Co-authored-by: Andrew --- projects/fx-Protocol/index.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/projects/fx-Protocol/index.js b/projects/fx-Protocol/index.js index ed10b8a1ba7..7ec8f2e8474 100644 --- a/projects/fx-Protocol/index.js +++ b/projects/fx-Protocol/index.js @@ -1,9 +1,13 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const sdk = require("@defillama/sdk"); const { default: BigNumber } = require("bignumber.js"); const stETHTreasury = "0x0e5CAA5c889Bdf053c9A76395f62267E653AFbb0"; const stETH = ADDRESSES.ethereum.STETH; +const fxUSD_wstETHTreasury = "0xED803540037B0ae069c93420F89Cd653B6e3Df1f"; +const fxUSD_sfrxETHTreasury = "0xcfEEfF214b256063110d3236ea12Db49d2dF2359"; +const wstETH = ADDRESSES.ethereum.WSTETH; +const sfrxETH = ADDRESSES.ethereum.sfrxETH; async function tvl(timestamp, block, _, { api }) { let balances = {}; @@ -16,7 +20,25 @@ async function tvl(timestamp, block, _, { api }) { params: stETHTreasury, }) ).output; + const fxUSDWstETHtotalSupply = ( + await sdk.api.abi.call({ + target: fxUSD_wstETHTreasury, + block, + abi: "uint256:totalBaseToken", + chain: "ethereum", + }) + ).output; + const fxUSDSfrxETHtotalSupply = ( + await sdk.api.abi.call({ + target: fxUSD_sfrxETHTreasury, + block, + abi: "uint256:totalBaseToken", + chain: "ethereum", + }) + ).output; sdk.util.sumSingleBalance(balances, stETH, totalSupply); + sdk.util.sumSingleBalance(balances, wstETH, fxUSDWstETHtotalSupply); + sdk.util.sumSingleBalance(balances, sfrxETH, fxUSDSfrxETHtotalSupply); return balances; } From f3f1eafd99292f9a3c0397c4e371a558db915f84 Mon Sep 17 00:00:00 2001 From: webmass Date: Wed, 28 Feb 2024 13:50:49 +0400 Subject: [PATCH 0426/2004] update inverse treasury (#9101) --- projects/treasury/inverse.js | 59 ++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 4150a7c5fbe..53253fec66a 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -6,8 +6,14 @@ const anchorTreasury = "0x926df14a23be491164dcf93f4c468a50ef659d5b"; const multisig = "0x9D5Df30F475CEA915b1ed4C0CCa59255C897b61B"; const opmultisig = "0xa283139017a2f5bade8d8e25412c600055d318f8"; const bnbmultisig = "0xf7da4bc9b7a6bb3653221ae333a9d2a2c2d5bda7"; -const treasury1 = "0x4b6c63e6a94ef26e2df60b89372db2d8e211f1b7" -const treasury2 = "0x943dbdc995add25a1728a482322f9b3c575b16fb" +const basemultisig = "0x586CF50c2874f3e3997660c0FD0996B090FB9764"; +const arbmultisig = "0x233Ca46D4882609C53fcbD2FCFaAe92D2eA89538"; +const arbmultisig2 = "0x23dEDab98D7828AFBD2B7Ab8C71089f2C517774a"; +const polmultisig = "0x5D18b089e838DFFbb417A87874435175F3A9B000"; +const avaxmultisig = "0x1A927B237a57421C414EB511a33C4B82C2718677"; +const pcmultisig = "0x4b6c63e6a94ef26e2df60b89372db2d8e211f1b7" +const treasurymultisig = "0x943dbdc995add25a1728a482322f9b3c575b16fb" +const fedchair = "0x8f97cca30dbe80e7a8b462f1dd1a51c32accdfc8" module.exports = treasuryExports({ ethereum: { @@ -36,7 +42,7 @@ module.exports = treasuryExports({ "0x0a6B1d9F920019BAbc4De3F10c94ECB822106104", "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", ], - owners: [anchorTreasury, multisig, treasury1, treasury2], + owners: [anchorTreasury, multisig, pcmultisig, treasurymultisig, fedchair], ownTokens: [ inv, "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", // Uniswap INV/ETH LP @@ -53,36 +59,65 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.optimism.USDC, + ADDRESSES.optimism.USDC_CIRCLE, "0x8aE125E8653821E851F12A49F7765db9a9ce7384", // DOLA - ], + "0xFAf8FD17D9840595845582fCB047DF13f006787d", // veVELO + ], owners: [opmultisig], ownTokens: [], }, + base: { + tokens: [ + nullAddress, + ADDRESSES.base.USDC, + ADDRESSES.base.USDbC, + "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", // DOLA + "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4", // veAERO + "0x940181a94A35A4569E4529A3CDfB74e38FD98631", // AERO + ], + owners: [basemultisig], + ownTokens: [], + }, bsc: { tokens: [ nullAddress, ADDRESSES.bsc.WBNB, "0x2F29Bc0FFAF9bff337b31CBe6CB5Fb3bf12e5840", // DOLA - // "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D", // veTHE - ], + "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D", // veTHE + "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", // THENA + ], owners: [bnbmultisig], ownTokens: [], }, + avax: { + tokens: [ + nullAddress, + ADDRESSES.avax.USDC, + '0x221743dc9E954bE4f86844649Bf19B43D6F8366d', // DOLA + '0xeeee99b35Eb6aF5E7d76dd846DbE4bcc0c60cA1d', // SNEK + '0xeeee3Bf0E550505C0C17a8432065F2f6b9D06350', // veSNEK + ], + owners: [avaxmultisig], + ownTokens: [], + }, arbitrum: { tokens: [ nullAddress, ADDRESSES.arbitrum.DAI, - "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418" - ], - owners: ["0x23dedab98d7828afbd2b7ab8c71089f2c517774a"], - ownTokens: ["0x6A7661795C374c0bFC635934efAddFf3A7Ee23b6"], + ADDRESSES.arbitrum.ARB, + ADDRESSES.arbitrum.WETH, + "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", // RAM + "0xAAA343032aA79eE9a6897Dab03bef967c3289a06", // veRAM + ], + owners: [arbmultisig2, arbmultisig], + ownTokens: [], }, polygon: { tokens: [ nullAddress, ADDRESSES.polygon.USDC, - + '0xbC2b48BC930Ddc4E5cFb2e87a45c379Aab3aac5C', // DOLA ], - owners: ["0x5d18b089e838dffbb417a87874435175f3a9b000"], + owners: [polmultisig], }, }); From 9a693b098a5d5289efeb2df0b7085ab75f399ee8 Mon Sep 17 00:00:00 2001 From: fextr <34183870+fextr@users.noreply.github.com> Date: Wed, 28 Feb 2024 13:56:20 +0400 Subject: [PATCH 0427/2004] add zunUSD & zunUSDAps contracts to zunami (#9099) --- projects/zunami/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/zunami/index.js b/projects/zunami/index.js index 12811e2f8f6..1e31912dfe1 100644 --- a/projects/zunami/index.js +++ b/projects/zunami/index.js @@ -1,12 +1,12 @@ const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); -const zunamiContract = "0x2ffCC661011beC72e1A9524E12060983E74D14ce"; -const zethOmnipoolContract = "0x9dE83985047ab3582668320A784F6b9736c6EEa7"; +const zunUSD = "0x8C0D76C9B18779665475F3E212D9Ca1Ed6A1A0e6"; +const zunUSDAps = "0x28e487bbF6b64867C29e61DccbCD17aB64082889"; async function ethTvl(timestamp, block, _, { api }) { - api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunamiContract, })) - api.add(ADDRESSES.null, await api.call({ abi: abi.totalHoldings, target: zethOmnipoolContract, })) + api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunUSD, })) + api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunUSDAps, })) } module.exports = { From 62dd9bf56de9e1bfbe5d5f5966f8956699ba0f69 Mon Sep 17 00:00:00 2001 From: webmass Date: Wed, 28 Feb 2024 15:46:52 +0400 Subject: [PATCH 0428/2004] Update inverse hallmarks & fix a double count (#9103) * fix inverse firm tvl inv market double count * Add FiRM hallmarks to inverse and inverse firm --- projects/inverse-finance-firm/index.js | 9 +++++++-- projects/inverse/index.js | 5 ++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/inverse-finance-firm/index.js b/projects/inverse-finance-firm/index.js index a6bad2bfe7c..902157cb249 100644 --- a/projects/inverse-finance-firm/index.js +++ b/projects/inverse-finance-firm/index.js @@ -17,7 +17,9 @@ async function tvl(timestamp, block, _, { api }) { eventAbi: abi.AddMarket, }) - const markets = logs.map(i => i.args.market); + // 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({ @@ -42,7 +44,10 @@ async function tvl(timestamp, block, _, { api }) { module.exports = { methodology: "Get collateral balances from users personal escrows", - hallmarks: [], + hallmarks: [ + [1696204800, "Borrow against INV on FiRM"], + [1707177600, "Launch of sDOLA"], + ], start: 1670701200, // Dec 10 2022 ethereum: { tvl } }; diff --git a/projects/inverse/index.js b/projects/inverse/index.js index 65aeaeb5824..51eb1d2e106 100644 --- a/projects/inverse/index.js +++ b/projects/inverse/index.js @@ -206,7 +206,10 @@ module.exports = { methodology: "DOLA curve metapool replaced by DOLA", hallmarks: [ [1648771200, "INV price hack"], - [1655380800, "Inverse Frontier Deprecated",] + [1655380800, "Inverse Frontier Deprecated"], + [1670701200, "Launch of FiRM"], + [1696204800, "Borrow against INV on FiRM"], + [1707177600, "Launch of sDOLA"], ], start: 1607731200, // Dec 12 2020 00:00:00 GMT+0000 ethereum: { tvl } From 32c992901436cf3d9b1e8bcd000d553057dd41ea Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Feb 2024 13:05:44 +0100 Subject: [PATCH 0429/2004] Rmm-v3 (#9104) * feat: add RealToken RMM V3 * code refactor --------- Co-authored-by: NGUYEN Quang Chuc --- projects/realtoken-rmm-v3/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/realtoken-rmm-v3/index.js diff --git a/projects/realtoken-rmm-v3/index.js b/projects/realtoken-rmm-v3/index.js new file mode 100644 index 00000000000..c5563d5c764 --- /dev/null +++ b/projects/realtoken-rmm-v3/index.js @@ -0,0 +1,6 @@ +const { aaveExports } = require("../helper/aave"); + +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`, + xdai: aaveExports('xdai', '0x11B45acC19656c6C52f93d8034912083AC7Dd756', undefined, ["0x11B45acC19656c6C52f93d8034912083AC7Dd756"],), +}; From c7d6139af8588d096853a4720578029903ac491b Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 28 Feb 2024 12:40:51 +0000 Subject: [PATCH 0430/2004] add merlin chain (#9105) --- projects/helper/chains.json | 1 + projects/helper/env.js | 3 ++- projects/helper/tokenMapping.js | 5 ++++- projects/merlinswap/index.js | 8 ++++++++ 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 projects/merlinswap/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 8d9f1cc3f94..ba8e62c254e 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -151,6 +151,7 @@ "map", "mayachain", "meer", + "merlin", "meta", "meter", "metis", diff --git a/projects/helper/env.js b/projects/helper/env.js index b57d28ed2f4..6efaee934a1 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -19,7 +19,8 @@ const DEFAULTS = { OZONE_RPC: "https://node1.ozonechain.io", XDC_RPC: "https://erpc.xinfin.network", ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", - DEFIVERSE_RPC: "https://rpc.defi-verse.org/" + DEFIVERSE_RPC: "https://rpc.defi-verse.org/", + MERLIN_RPC: "https://rpc.merlinchain.io" } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index fb788784c7f..b6fa72e1a07 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -114,7 +114,10 @@ const fixBalancesTokens = { xai: { '0x36be1fd6ff2a6beb34b500a04f89103a524516d8': { coingeckoId: 'xai-blockchain', decimals: 18 }, '0x300a7b57dc85b6a9776e249614abf0fe5c9905fb': { coingeckoId: 'usd-coin', decimals: 6 }, - } + }, + merlin: { + '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/merlinswap/index.js b/projects/merlinswap/index.js new file mode 100644 index 00000000000..3b0881f088e --- /dev/null +++ b/projects/merlinswap/index.js @@ -0,0 +1,8 @@ + + +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + merlin: { factory: "0xE29a6620DAc789B8a76e9b9eC8fE9B7cf2B663D5", fromBlock: 26, }, +}); + From 929e46baa475976621cc5a41474eebcc938bf6bb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:15:43 +0100 Subject: [PATCH 0431/2004] update sdk version --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 717320edc56..b0cd8b39798 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.32", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.32.tgz", - "integrity": "sha512-hY1OjiM+iIM30UMyLTrYm98vKfE+jDqHZ3Rn55V8gbKGtacYMGsIrkAn3M1rBj9bUZ4UdGuGvka09cy7QzQOOg==", + "version": "5.0.35", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.35.tgz", + "integrity": "sha512-+180AooJyM7VlVpFyp/9fYXjcumKHIRuxEOQ4DOSNhqv3SdkpQrlzCnSfI6DrQ36turqNWPBl6AQxrqskns55A==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", From 8f98fd10f2ea3f9983ac491cf55edc99c620f110 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:11:44 +0000 Subject: [PATCH 0432/2004] add native tokens merlin (#9108) --- projects/helper/tokenMapping.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index b6fa72e1a07..9c534b520f3 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -116,7 +116,8 @@ const fixBalancesTokens = { '0x300a7b57dc85b6a9776e249614abf0fe5c9905fb': { coingeckoId: 'usd-coin', decimals: 6 }, }, merlin: { - '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'merlin-chain-bridged-wrapped-btc-merlin', decimals: 18 }, + '0x480e158395cc5b41e5584347c495584ca2caf78d': { coingeckoId: 'merlin-chain-bridged-voya-merlin', decimals: 18 }, }, } From 757882ced711d488eeccb12b04d918e4bc7c2776 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 28 Feb 2024 17:11:44 +0100 Subject: [PATCH 0433/2004] fix merlin --- projects/helper/env.js | 3 +- projects/merlinswap/index.js | 63 +++++++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/projects/helper/env.js b/projects/helper/env.js index 6efaee934a1..f168d9124a1 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -20,7 +20,8 @@ const DEFAULTS = { XDC_RPC: "https://erpc.xinfin.network", ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", - MERLIN_RPC: "https://rpc.merlinchain.io" + MERLIN_RPC: "https://rpc.merlinchain.io", + MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', } const ENV_KEYS = [ diff --git a/projects/merlinswap/index.js b/projects/merlinswap/index.js index 3b0881f088e..cb8a09596f4 100644 --- a/projects/merlinswap/index.js +++ b/projects/merlinswap/index.js @@ -1,8 +1,63 @@ +const ADDRESSES = require('../helper/coreAssets.json') +let abi = require('../izumi-iziswap/abi') +const { sumTokens2, } = require('../helper/unwrapLPs') -const { uniV3Export } = require("../helper/uniswapV3"); +const nullAddress = ADDRESSES.null +const poolHelpers = { + 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], +} // iziswap liquidityManager contracts -module.exports = uniV3Export({ - merlin: { factory: "0xE29a6620DAc789B8a76e9b9eC8fE9B7cf2B663D5", fromBlock: 26, }, -}); +const blacklistedTokens = [ +] +const tvl = async (_, _1, _2, { api }) => { + const chain = api.chain + const toa = [] + const chunkSize = 10 + const bTokens = [...blacklistedTokens] + const allPools = [] + const allPoolMetas = [] + + for(const manager of poolHelpers[chain]) { + let i = 1 + let foundLastPool = false + const poolMetaData = [] + 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 === nullAddress && 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) + } + + allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) + // if (chain === 'era') bTokens.push(ADDRESSES.arbitrum.WETH) + return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, permitFailure: true}) +} + +Object.keys(poolHelpers).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 499528f799eb9ae1d2158d1c43cc535edf98d510 Mon Sep 17 00:00:00 2001 From: Marc Puig Date: Wed, 28 Feb 2024 20:46:05 +0100 Subject: [PATCH 0434/2004] update pstake tvl (#9106) --- projects/pstake/index.js | 56 ++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/projects/pstake/index.js b/projects/pstake/index.js index c138f4be667..f1807fb27b3 100644 --- a/projects/pstake/index.js +++ b/projects/pstake/index.js @@ -1,5 +1,6 @@ const { nullAddress } = require('../helper/tokenMapping'); const { get } = require('../helper/http') +const sdk = require("@defillama/sdk"); async function bsctvl(timestamp, block, chainBlocks, { api }) { @@ -10,17 +11,50 @@ async function bsctvl(timestamp, block, chainBlocks, { api }) { }; } -module.exports = { - methodology: `We get the totalSupply of the constituent token contracts (like stkATOM, pATOM, stkXPRT, pXPRT, stkBNB etc.) and then we multiply it with the USD market value of the constituent token`, - bsc: { - tvl: bsctvl +const baseEndpoint = 'https://api.persistence.one/pstake' + +const chainInfos = { + cosmos: { + id: "cosmoshub-4", + name: "cosmos", + denom: "uatom", + decimals: 1e6, + endpoint: "/stkatom/atom_tvu" + }, + osmosis: { + id: "osmosis-1", + name: "osmosis", + denom: "uosmo", + decimals: 1e6, + endpoint: "/stkosmo/osmo_tvu" }, - persistence: { - tvl: async () => { - const api = 'https://api.persistence.one/pstake/stkatom/atom_tvu' - return { - 'cosmos:uatom': (await get(api)).amount.amount - } - } + dydx: { + id: "dydx-mainnet-1", + name: "dydx-chain", + denom: "adydx", + decimals: 1e18, + endpoint: "/stkdydx/dydx_tvu" + } +} + +function cosmostvl(chainInfo) { + return async () => { + const api = baseEndpoint + chainInfo.endpoint + + const amount = await get(api) + + const result = {}; + sdk.util.sumSingleBalance(result, chainInfo.name, amount.amount.amount / chainInfo.decimals); + + return result } +} + +module.exports = { + methodology: `Total amount of liquid staked tokens on pStake.`, + bsc: { tvl: bsctvl }, + persistence: { tvl: async () => ({}) }, + cosmos: {tvl: cosmostvl(chainInfos["cosmos"])}, + osmosis: {tvl: cosmostvl(chainInfos["osmosis"])}, + dydx: {tvl: cosmostvl(chainInfos["dydx"])}, }; From e5f7212d60b75055039cb2d78ebeeefd358c7f0b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 28 Feb 2024 20:51:48 +0000 Subject: [PATCH 0435/2004] coins not coins2 --- test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.js b/test.js index 60bcac91c59..f83f5ce5895 100644 --- a/test.js +++ b/test.js @@ -373,7 +373,7 @@ async function computeTVL(balances, timestamp) { const { errors } = await PromisePool.withConcurrency(5) .for(sliceIntoChunks(readKeys, 100)) .process(async (keys) => { - tokenData.push((await axios.get(`https://coins2.llama.fi/prices/current/${keys.join(',')}`)).data.coins) + tokenData.push((await axios.get(`https://coins.llama.fi/prices/current/${keys.join(',')}`)).data.coins) }) if (errors && errors.length) From 3bf58f6929cffccea0be65f48e4fec5a7f2141ff Mon Sep 17 00:00:00 2001 From: HS Date: Thu, 29 Feb 2024 11:12:36 +0700 Subject: [PATCH 0436/2004] add cellana aptos tvl --- projects/cellana/index.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 projects/cellana/index.js diff --git a/projects/cellana/index.js b/projects/cellana/index.js new file mode 100644 index 00000000000..975a229858f --- /dev/null +++ b/projects/cellana/index.js @@ -0,0 +1,38 @@ +const sdk = require("@defillama/sdk"); +const { default: BigNumber } = require("bignumber.js"); +const { getResources, getTableData, } = require("../helper/chain/aptos"); +const { transformBalances } = require("../helper/portedTokens"); +const toHex = (str) => Buffer.from(str, 'utf-8').toString('hex'); + +let resourcesCache + +async function _getResources() { + if (!resourcesCache) resourcesCache = getResources("0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426") + return resourcesCache +} +const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); +const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") + +module.exports = { + timetravel: false, + methodology: + "Counts the lamports in each coin container in the Aries contract account.", + aptos: { + tvl: async () => { + const balances = {}; + const data = await _getResources() + const coinContainers = data.filter(reserveContrainerFilter) + .map((i) => ({ + lamports: i.data.coin.value, + tokenAddress: extractCoinAddress(i.type), + })); + + coinContainers.forEach(({ lamports, tokenAddress }) => { + sdk.util.sumSingleBalance(balances, tokenAddress, lamports); + }); + + return transformBalances("aptos", balances); + }, + + }, +}; From 6df8018eb6b935016e8ebf46c7fd96f58645c5fb Mon Sep 17 00:00:00 2001 From: Do Quang Huy <62065172+huydo2105@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:46:16 +0700 Subject: [PATCH 0437/2004] update crunchy tvl with farmV2, wtz contracts (#9114) * update crunchy tvl with farmV2, wtz contracts * Add WTZ TVL as new listing --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/crunchynetwork-wtz/index.js | 36 ++++++++++++++++++++++++++++ projects/crunchynetwork/index.js | 11 ++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 projects/crunchynetwork-wtz/index.js diff --git a/projects/crunchynetwork-wtz/index.js b/projects/crunchynetwork-wtz/index.js new file mode 100644 index 00000000000..2d02f2ced04 --- /dev/null +++ b/projects/crunchynetwork-wtz/index.js @@ -0,0 +1,36 @@ +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 index 1f60ebab7c7..8ed5a830261 100644 --- a/projects/crunchynetwork/index.js +++ b/projects/crunchynetwork/index.js @@ -10,6 +10,14 @@ async function fetchFarmsTvl() { 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() { @@ -48,9 +56,10 @@ async function lpToTez(lpTokenAddress, lpTokens) { async function tvl() { const farmsTvl = await fetchFarmsTvl(); + const farmsV2Tvl = await fetchFarmsV2Tvl(); const deepFreezersTvl = await fetchDeepFreezersTvl(); return { - tezos: (farmsTvl + deepFreezersTvl ) / 1e6 + tezos: (farmsTvl + farmsV2Tvl + deepFreezersTvl ) / 1e6 }; } From 779a6c4a9b60e0ba986a5b2aa0dd197fdc08405d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 11:00:57 +0100 Subject: [PATCH 0438/2004] minor fix --- projects/cellana/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 975a229858f..1de1562fcbb 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -1,8 +1,6 @@ const sdk = require("@defillama/sdk"); -const { default: BigNumber } = require("bignumber.js"); -const { getResources, getTableData, } = require("../helper/chain/aptos"); +const { getResources, } = require("../helper/chain/aptos"); const { transformBalances } = require("../helper/portedTokens"); -const toHex = (str) => Buffer.from(str, 'utf-8').toString('hex'); let resourcesCache @@ -15,6 +13,7 @@ const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") module.exports = { timetravel: false, + misrepresentedTokens: true, methodology: "Counts the lamports in each coin container in the Aries contract account.", aptos: { From 022f6df526cdbac94dffccbf08b294bd7c06bbf1 Mon Sep 17 00:00:00 2001 From: Akshay CM Date: Thu, 29 Feb 2024 13:02:15 +0300 Subject: [PATCH 0439/2004] refactor: polynetwork tvl code refactor * refactor: polynetwork tvl code refactor --- projects/polynetwork/index.js | 320 +++++++--------------------------- 1 file changed, 60 insertions(+), 260 deletions(-) diff --git a/projects/polynetwork/index.js b/projects/polynetwork/index.js index a439984b09b..17c1ddff420 100644 --- a/projects/polynetwork/index.js +++ b/projects/polynetwork/index.js @@ -1,265 +1,65 @@ +// Import the required utility module const utils = require('../helper/utils'); -async function eth() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLEthereum') - return Number(tvl.data); -} - -async function ontology() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLOntology') - return Number(tvl.data); -} - -async function neo() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLNeo') - return Number(tvl.data); -} - -async function carbon() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLCarbon') - return Number(tvl.data); -} - -async function bsc() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLBNBChain') - return Number(tvl.data); -} - -async function heco() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLHeco') - return Number(tvl.data); -} - -async function okc() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLOKC') - return Number(tvl.data); -} - -async function neo3() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLNeo3') - return Number(tvl.data); -} - -async function polygon() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLPolygon') - return Number(tvl.data); -} - -async function palette() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLPalette') - return Number(tvl.data); -} - -async function arbitrum() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLArbitrum') - return Number(tvl.data); -} - -async function gnosisChain() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLGnosisChain') - return Number(tvl.data); -} - -async function zilliqa() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLZilliqa') - return Number(tvl.data); -} - -async function avax() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLAvalanche') - return Number(tvl.data); -} - -async function fantom() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLFantom') - return Number(tvl.data); -} - -async function optimism() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLOptimistic') - return Number(tvl.data); -} - -async function andromeda() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLAndromeda') - return Number(tvl.data); -} - -async function boba() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLBoba') - return Number(tvl.data); -} - -async function oasis() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLOasis') - return Number(tvl.data); -} - -async function harmony() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLHarmony') - return Number(tvl.data); -} - -async function hsc() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLHSC') - return Number(tvl.data); -} - -async function bytomSideChain() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLBytomSidechain') - return Number(tvl.data); -} - -async function kcc() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLKCC') - return Number(tvl.data); -} - -async function kava() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLKava') - return Number(tvl.data); -} - -async function starcoin() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLStarcoin') - return Number(tvl.data); -} - -async function celo() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLCelo') - return Number(tvl.data); -} - -async function clv() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLClover') - return Number(tvl.data); -} -async function conflux() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/GetTVLConflux') - return Number(tvl.data); -} -async function astar() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/GetTVLAstar') - return Number(tvl.data); -} -async function aptos() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/GetTVLAptos') - return Number(tvl.data); -} -async function bitgert() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/GetTVLBitgert') - return Number(tvl.data); -} -async function dexit() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/GetTVLDexit') - return Number(tvl.data); -} - -async function fetch() { - const tvl = await utils.fetchURL('https://explorer.poly.network/api/v1/getTVLTotal') - return Number(tvl.data); -} - - +// Define a base URL for the API +const baseURL = 'https://explorer.poly.network/api/v1/'; + +async function fetchTVL(path) { + const url = `${baseURL}${path}`; // Construct the full URL + const response = await utils.fetchURL(url); // Use the utility function to fetch data from the URL + return Number(response.data); // Convert the response data to a number and return it +} + +// Define a mapping of blockchain names to their API endpoints +const blockchainEndpoints = { + ethereum: 'getTVLEthereum', + ontology: 'getTVLOntology', + neo: 'getTVLNeo', + carbon: 'getTVLCarbon', + bsc: 'getTVLBNBChain', + heco: 'getTVLHeco', + okexchain: 'getTVLOKC', + neo3: 'getTVLNeo3', + polygon: 'getTVLPolygon', + palette: 'getTVLPalette', + arbitrum: 'getTVLArbitrum', + xdai: 'getTVLGnosisChain', + zilliqa: 'getTVLZilliqa', + avax: 'getTVLAvalanche', + fantom: 'getTVLFantom', + optimism: 'getTVLOptimistic', + metis: 'getTVLAndromeda', + boba: 'getTVLBoba', + oasis: 'getTVLOasis', + harmony: 'getTVLHarmony', + hoo: async () => 0, // Made async to match other functions + bytomsidechain: 'getTVLBytomSidechain', + kcc: 'getTVLKCC', + kava: 'getTVLKava', + starcoin: 'getTVLStarcoin', + celo: 'getTVLCelo', + clv: async () => 0, // Made async to match other functions + conflux: 'GetTVLConflux', + astar: 'GetTVLAstar', + aptos: 'GetTVLAptos', + bitgert: 'GetTVLBitgert', + dexit: 'GetTVLDexit', +}; + +// Programmatically generate the fetch functions for each blockchain, ensuring they are async +const fetchFunctions = Object.entries(blockchainEndpoints).reduce((acc, [key, value]) => { + acc[key] = typeof value === 'function' ? value : async () => await fetchTVL(value); + return acc; +}, {}); + +// Export the functions as part of the module's public interface module.exports = { timetravel: false, misrepresentedTokens: true, - ethereum: { - fetch: eth - }, - ontology: { - fetch: ontology - }, - neo: { - fetch: neo - }, - carbon: { - fetch: carbon - }, - bsc: { - fetch: bsc - }, - heco: { - fetch: heco - }, - okexchain: { - fetch: okc - }, - neo3: { - fetch: neo3 - }, - polygon: { - fetch: polygon - }, - palette: { - fetch: palette - }, - arbitrum: { - fetch: arbitrum - }, - xdai: { - fetch: gnosisChain - }, - zilliqa: { - fetch: zilliqa - }, - avax: { - fetch: avax - }, - fantom: { - fetch: fantom - }, - optimism: { - fetch: optimism - }, - metis: { - fetch: andromeda - }, - boba: { - fetch: boba - }, - oasis: { - fetch: oasis - }, - harmony: { - fetch: harmony - }, - hoo: { - fetch: () => 0, - }, - bytomsidechain: { - fetch: bytomSideChain - }, - kcc: { - fetch: kcc - }, - kava: { - fetch: kava - }, - starcoin: { - fetch: starcoin - }, - celo: { - fetch: celo - }, - clv: { - fetch: () => 0, - // fetch: clv - }, - conflux: { - fetch: conflux - }, - astar: { - fetch: astar - }, - aptos: { - fetch: aptos - }, - bitgert: { - fetch: bitgert - }, - dexit: { - fetch: dexit - }, - fetch -} \ No newline at end of file + ...Object.keys(fetchFunctions).reduce((acc, key) => { + acc[key] = { fetch: fetchFunctions[key] }; + return acc; + }, {}), + // Special case for fetching total TVL + fetch: async () => await fetchTVL('getTVLTotal'), +}; From 0328a28b433152410a77391ecc6e79152339c9ef Mon Sep 17 00:00:00 2001 From: Centure2222 <161669395+Centure2222@users.noreply.github.com> Date: Thu, 29 Feb 2024 17:02:37 +0700 Subject: [PATCH 0440/2004] add CellanaFinance * add cellana aptos tvl * minor fix --- projects/cellana/index.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/cellana/index.js diff --git a/projects/cellana/index.js b/projects/cellana/index.js new file mode 100644 index 00000000000..1de1562fcbb --- /dev/null +++ b/projects/cellana/index.js @@ -0,0 +1,37 @@ +const sdk = require("@defillama/sdk"); +const { getResources, } = require("../helper/chain/aptos"); +const { transformBalances } = require("../helper/portedTokens"); + +let resourcesCache + +async function _getResources() { + if (!resourcesCache) resourcesCache = getResources("0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426") + return resourcesCache +} +const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); +const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + methodology: + "Counts the lamports in each coin container in the Aries contract account.", + aptos: { + tvl: async () => { + const balances = {}; + const data = await _getResources() + const coinContainers = data.filter(reserveContrainerFilter) + .map((i) => ({ + lamports: i.data.coin.value, + tokenAddress: extractCoinAddress(i.type), + })); + + coinContainers.forEach(({ lamports, tokenAddress }) => { + sdk.util.sumSingleBalance(balances, tokenAddress, lamports); + }); + + return transformBalances("aptos", balances); + }, + + }, +}; From 626d3ff514f76fec2331ab8f2156776443a65bb5 Mon Sep 17 00:00:00 2001 From: Ronan <73086339+clooneyr@users.noreply.github.com> Date: Thu, 29 Feb 2024 21:03:31 +1100 Subject: [PATCH 0441/2004] Add Compx Adapter (#9004) * feat: add compx tvl * feat: Update calc to be more transparent --- projects/compx/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/compx/index.js diff --git a/projects/compx/index.js b/projects/compx/index.js new file mode 100644 index 00000000000..b36986987ba --- /dev/null +++ b/projects/compx/index.js @@ -0,0 +1,20 @@ +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, + }, +}; From 5dd9f305ace3d14dcf7a4e0f2a8d2e25f31bc73d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 11:59:03 +0100 Subject: [PATCH 0442/2004] Dinari (#9116) * feat: add dinari project * update dinari project * update dinari project * fix lint * Update META Symbol * update to return balances * fix lint * remove oracles * code refactor --------- Co-authored-by: jaketimothy Co-authored-by: joshualyguessennd Co-authored-by: joshualyguessennd <75019812+joshualyguessennd@users.noreply.github.com> --- projects/dinari/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/dinari/index.js diff --git a/projects/dinari/index.js b/projects/dinari/index.js new file mode 100644 index 00000000000..8c9cc90278d --- /dev/null +++ b/projects/dinari/index.js @@ -0,0 +1,27 @@ +const config = { + arbitrum: { + "AAPL.d": { oracle: "0x8d0CC5f38f9E802475f2CFf4F9fc7000C2E1557c", token: '0xCe38e140fC3982a6bCEbc37b040913EF2Cd6C5a7' }, + "AAPL.d1": { oracle: "0x8d0CC5f38f9E802475f2CFf4F9fc7000C2E1557c", token: '0x2414faE77CF726cC2287B81cf174d9828adc6636' }, + "AMZN.d": { oracle: "0xd6a77691f071E98Df7217BED98f38ae6d2313EBA", token: '0x5a8A18673aDAA0Cd1101Eb4738C05cc6967b860f' }, + "AMZN.d1": { oracle: "0xd6a77691f071E98Df7217BED98f38ae6d2313EBA", token: '0x8240aFFe697CdE618AD05c3c8963f5Bfe152650b' }, + "GOOGL.d": { oracle: "0x1D1a83331e9D255EB1Aaf75026B60dFD00A252ba", token: '0x9bd7A08cD17d10E02F596Aa760dfE397C57668b4' }, + "GOOGL.d1": { oracle: "0x1D1a83331e9D255EB1Aaf75026B60dFD00A252ba", token: '0x8E50D11a54CFF859b202b7Fe5225353bE0646410' }, + "Meta.d": { oracle: "0xcd1bd86fDc33080DCF1b5715B6FCe04eC6F85845", token: '0xa40c0975607BDbF7B868755E352570454b5B2e48' }, + "Meta.d1": { oracle: "0xcd1bd86fDc33080DCF1b5715B6FCe04eC6F85845", token: '0x519062155B0591627C8A0C0958110A8C5639DcA6' }, + "MSFT.d": { oracle: "0xDde33fb9F21739602806580bdd73BAd831DcA867", token: '0x20f11c1aBca831E235B15A4714b544Bb968f8CDF' }, + "MSFT.d1": { oracle: "0xDde33fb9F21739602806580bdd73BAd831DcA867", token: '0x77308F8B63A99b24b262D930E0218ED2f49F8475' }, + "TSLA.d": { oracle: "0x3609baAa0a9b1f0FE4d6CC01884585d0e191C3E3", token: '0x2888c0aC959484e53bBC6CdaBf2b8b39486225C6' }, + "TSLA.d1": { oracle: "0x3609baAa0a9b1f0FE4d6CC01884585d0e191C3E3", token: '0x36d37B6cbCA364Cf1D843efF8C2f6824491bcF81' }, + // "COIN.d": { oracle: "", token: '0x46b979440AC257151EE5a5bC9597B76386907FA1' }, + } +} + +Object.keys(config).forEach(chain => { + const tokens = Object.values(config[chain]).map(v => v.token) + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) + api.add(tokens, bals) + } + } +}) \ No newline at end of file From 1e96a7332549cefe8bcfcded47e8fe05846b0039 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:32:29 +0100 Subject: [PATCH 0443/2004] Secured-fi (#9118) * add SecuredFinance * Refactor TVL calculation for multiple chains --------- Co-authored-by: Arpit Singh --- projects/SecuredFinance/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/SecuredFinance/index.js diff --git a/projects/SecuredFinance/index.js b/projects/SecuredFinance/index.js new file mode 100644 index 00000000000..e7895b04f4e --- /dev/null +++ b/projects/SecuredFinance/index.js @@ -0,0 +1,18 @@ +const config = { + ethereum: { FIL: '0x6a7b717ae5ed65f85ba25403d5063d368239828e'}, + arbitrum: {}, + avax: { FIL: '0xf3bcb00146d1123dd19974de758f83d01e26d3f1'}, + polygon_zkevm: { vault: '0x0896AC8B9e2DC3545392ff65061E5a8a3eD68824' }, +} + +Object.keys(config).forEach(chain => { + const { vault = '0xB74749b2213916b1dA3b869E41c7c57f1db69393', FIL } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const bytes = await api.call({ abi: 'function getCollateralCurrencies() view returns (bytes32[])', target: vault }) + const tokens = await api.multiCall({ abi: 'function getTokenAddress(bytes32) view returns (address)', calls: bytes, target: vault }) + if (FIL) tokens.push(FIL) + return api.sumTokens({ owner: vault, tokens, }) + } + } +}) From 3defd5e9f6d23e7b8767418fdc8424cc978f5b12 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:34:55 +0100 Subject: [PATCH 0444/2004] Asymmetry (#9117) * adds afeth in asym adapter * ccode refactor * lint fix --------- Co-authored-by: Kilter --- projects/asymmetry-fi/index.js | 45 ++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js index 8d669b28e39..517e8469529 100644 --- a/projects/asymmetry-fi/index.js +++ b/projects/asymmetry-fi/index.js @@ -1,14 +1,39 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') 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 = '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b' +const VOTIUM = '0x00000069aBbB0B1Ad6975bcF753eEe15D318A0BF' + +async function tvl(_, _b, _cb, { 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], + ] + + const votiumAvailableCVX = await api.call({ abi: 'uint256:availableCvx', target: VOTIUM, }) + api.add(CVX, votiumAvailableCVX) + return api.sumTokens({ tokensAndOwners }) +} + module.exports = { + methodology: 'counts tvl on both afETH and safETH', ethereum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.ethereum.WSTETH, '0x972a53e3a9114f61b98921fb5b86c517e8f23fad'], - [ADDRESSES.ethereum.RETH, '0x7b6633c0cd81dc338688a528c0a3f346561f5ca3'], - [ADDRESSES.ethereum.sfrxETH, '0x36ce17a5c81e74dc111547f5dffbf40b8bf6b20a'], - ] - }) - } -} \ No newline at end of file + tvl, + }, +} From 2c0b83202059776e57c1e64a33793de2b4964bc2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 13:19:49 +0100 Subject: [PATCH 0445/2004] Swapsic-staking (#9119) * Added Volume * Updated Telos subgrpah endpoint * Added staking to swapsicle v2 * minor fix --------- Co-authored-by: Himanshu Pandey Co-authored-by: rozzaswap --- projects/swapsicle-v2/iceCreamVanABI.json | 3 + projects/swapsicle-v2/index.js | 157 ++++++++++++++++++++++ projects/swapsicle-v2/zombieVanABI.json | 3 + 3 files changed, 163 insertions(+) create mode 100644 projects/swapsicle-v2/iceCreamVanABI.json create mode 100644 projects/swapsicle-v2/zombieVanABI.json diff --git a/projects/swapsicle-v2/iceCreamVanABI.json b/projects/swapsicle-v2/iceCreamVanABI.json new file mode 100644 index 00000000000..570d0d1f790 --- /dev/null +++ b/projects/swapsicle-v2/iceCreamVanABI.json @@ -0,0 +1,3 @@ +{ + "totalShares": "uint256:totalShares" +} \ No newline at end of file diff --git a/projects/swapsicle-v2/index.js b/projects/swapsicle-v2/index.js index 2310fdcf851..cdac04cecf7 100644 --- a/projects/swapsicle-v2/index.js +++ b/projects/swapsicle-v2/index.js @@ -1,4 +1,9 @@ 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: { @@ -12,3 +17,155 @@ module.exports = uniV3Export({ 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", + }, +}; + +const config = { + mantle: { + endpoint: + "https://subgraph-api.mantle.xyz/subgraphs/name/cryptoalgebra/analytics", + }, + telos: { + endpoint: + "https://telos.subgraph.swapsicle.io/subgraphs/name/cryptoalgebra/analytics", + }, +}; + +const query = `{ + pools { + id + token0 { id } + token1 { id } + } +}`; + +const slushPriceQuery = `{ + token(id: "TOKENID") { + derivedMatic + } +}`; + +const WTLOS = ADDRESSES.telos.WTLOS; +const WMNT = ADDRESSES.mantle.WMNT; + +function getTLOSAddress(address) { + return `telos:${address}`; +} + +function getMantleAddress(address) { + return `mantle:${address}`; +} + +async function slushToEthConvert(slushAmount, chain) { + const slushETH = await cachedGraphQuery( + "swapsicle-slush-eth-price/" + chain, + chain == "telos" ? config.telos.endpoint : config.mantle.endpoint, + slushPriceQuery.replace( + "TOKENID", + chain == "telos" ? contracts.telos.slush : contracts.mantle.slush + ) + ); + + const slushStaked = slushAmount / 10 ** 18; + return slushStaked * slushETH.token.derivedMatic; +} + +async function iceCreamVanStake({ chain, telos: block }) { + const tokenBalance = + chain == "telos" + ? await sdk.api.abi.call({ + target: contracts.telos.stakingContract_iceCreamVan, + abi: iceCreamVanABI.totalShares, + chain: "telos", + block, + }) + : await sdk.api.abi.call({ + target: contracts.mantle.stakingContract_iceCreamVan, + abi: iceCreamVanABI.totalShares, + chain: "mantle", + block, + }); + + const ETHBalance = await slushToEthConvert(tokenBalance.output, chain); + + const balances = {}; + balances[chain == "telos" ? getTLOSAddress(WTLOS) : getMantleAddress(WMNT)] = + ETHBalance * 10 ** 18; + + return balances; +} + +async function ZombieVanStake({ chain, telos: block }) { + const tokenBalance = + chain == "telos" + ? await sdk.api.abi.call({ + target: contracts.telos.stakingContract_zombieVan, + abi: zombieVanABI.totalStaked, + chain: "telos", + block, + }) + : await sdk.api.abi.call({ + target: contracts.mantle.stakingContract_zombieVan, + abi: zombieVanABI.totalStaked, + chain: "mantle", + block, + }); + + const ETHBalance = await slushToEthConvert(tokenBalance.output, chain); + + const balances = {}; + balances[chain == "telos" ? getTLOSAddress(WTLOS) : getMantleAddress(WMNT)] = + ETHBalance * 10 ** 18; + + return balances; +} + +async function ICZStake({ chain, telos: block }) { + const tokenBalance = + chain == "telos" + ? await sdk.api.erc20.balanceOf({ + target: contracts.telos.slush, + owner: contracts.telos.stakingContract_iceCreamZombies, + chain: "telos", + block, + }) + : await sdk.api.erc20.balanceOf({ + target: contracts.mantle.slush, + owner: contracts.mantle.stakingContract_iceCreamZombies, + chain: "mantle", + block, + }); + + const ETHBalance = await slushToEthConvert(tokenBalance.output, chain); + + const balances = {}; + balances[chain == "telos" ? getTLOSAddress(WTLOS) : getMantleAddress(WMNT)] = + ETHBalance * 10 ** 18; + + return balances; +} + +Object.keys(config).forEach((chain) => { + const { endpoint } = config[chain]; + module.exports[chain].staking = sdk.util.sumChainTvls([ + () => iceCreamVanStake({ chain }), + () => ZombieVanStake({ chain }), + // NFT's + () => ICZStake({ chain }), + ]) +}); diff --git a/projects/swapsicle-v2/zombieVanABI.json b/projects/swapsicle-v2/zombieVanABI.json new file mode 100644 index 00000000000..f907c4913bf --- /dev/null +++ b/projects/swapsicle-v2/zombieVanABI.json @@ -0,0 +1,3 @@ +{ + "totalStaked": "uint256:totalStaked" +} \ No newline at end of file From a5d598fba8cb1be8066547927a623b3cde3dbdd0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 13:35:32 +0100 Subject: [PATCH 0446/2004] minor update --- projects/treasury/beefy.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/treasury/beefy.js b/projects/treasury/beefy.js index 0a305c8853f..3cc6abd443c 100644 --- a/projects/treasury/beefy.js +++ b/projects/treasury/beefy.js @@ -47,8 +47,12 @@ chains.forEach(chain => { const uniV3Owners = [] const ownerTokens = Object.entries(data) .filter(i => { - if (!i[0] || !i[0].includes('validator')) return true - if (i[1].balances[i[0]]) api.add(nullAddress, i[1].balances[i[0]].balance) + 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]) From eeb95a6f937ad902f03cba7b0a5e49e7707cd195 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 13:35:45 +0100 Subject: [PATCH 0447/2004] minor update --- projects/treasury/beefy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/treasury/beefy.js b/projects/treasury/beefy.js index 3cc6abd443c..b792b5239a9 100644 --- a/projects/treasury/beefy.js +++ b/projects/treasury/beefy.js @@ -50,8 +50,8 @@ chains.forEach(chain => { 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) + api.add(nullAddress, info.balance) + else api.log('unknown balance', info) }) }) .map(([owner, { balances }]) => { From fedd320632123110c6b420a5ad60c1379532c693 Mon Sep 17 00:00:00 2001 From: Arpit Singh Date: Thu, 29 Feb 2024 20:08:13 +0530 Subject: [PATCH 0448/2004] get available tokens in protocol from currencyController contract (#9120) --- projects/SecuredFinance/index.js | 42 ++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/projects/SecuredFinance/index.js b/projects/SecuredFinance/index.js index e7895b04f4e..1daa4296a04 100644 --- a/projects/SecuredFinance/index.js +++ b/projects/SecuredFinance/index.js @@ -1,18 +1,30 @@ const config = { - ethereum: { FIL: '0x6a7b717ae5ed65f85ba25403d5063d368239828e'}, - arbitrum: {}, - avax: { FIL: '0xf3bcb00146d1123dd19974de758f83d01e26d3f1'}, - polygon_zkevm: { vault: '0x0896AC8B9e2DC3545392ff65061E5a8a3eD68824' }, -} + ethereum: {}, + arbitrum: {}, + avax: {}, + polygon_zkevm: { + tokenVault: '0x0896AC8B9e2DC3545392ff65061E5a8a3eD68824', + currencyController: '0x9E1254292195F241FA2DF1aA51af23796627A74B', + }, +}; Object.keys(config).forEach(chain => { - const { vault = '0xB74749b2213916b1dA3b869E41c7c57f1db69393', FIL } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { - const bytes = await api.call({ abi: 'function getCollateralCurrencies() view returns (bytes32[])', target: vault }) - const tokens = await api.multiCall({ abi: 'function getTokenAddress(bytes32) view returns (address)', calls: bytes, target: vault }) - if (FIL) tokens.push(FIL) - return api.sumTokens({ owner: vault, tokens, }) - } - } -}) + const { + tokenVault = '0xB74749b2213916b1dA3b869E41c7c57f1db69393', + currencyController = '0x7dca6b6BF30cd28ADe83e86e21e82e3F852bF2DC', + } = config[chain]; + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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 }); + }, + }; +}); From ba92bec55de58c6449f43c3080ee8515328b6b8b Mon Sep 17 00:00:00 2001 From: sepezho <47150504+sepezho@users.noreply.github.com> Date: Thu, 29 Feb 2024 15:41:21 +0100 Subject: [PATCH 0449/2004] EVAA adapter (#9115) --- projects/evaa/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/evaa/index.js diff --git a/projects/evaa/index.js b/projects/evaa/index.js new file mode 100644 index 00000000000..1913a9c2142 --- /dev/null +++ b/projects/evaa/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require("../helper/chain/ton"); +const ADDRESSES = require("../helper/coreAssets.json"); + +const evaaScAddr = "EQC8rUZqR_pWV1BylWUlPNBzyiTYVoBEmQkMIQDZXICfnuRr" + +module.exports = { + methodology: 'Counts EVAA smartcontract balance as TVL.', + ton: { + tvl: sumTokensExport({ owner: evaaScAddr, tokens: [ADDRESSES.null]}), + } +} From c1062a709a1e0bb82640016c8c476428c2469589 Mon Sep 17 00:00:00 2001 From: ItsMeTazz <104685150+ItsMeTazz@users.noreply.github.com> Date: Thu, 29 Feb 2024 08:58:34 -0700 Subject: [PATCH 0450/2004] Update to Newthrone: switching from WETH to THRO (#9093) * Adding NewThrone * minor fix * minor fix * Update index.js * Update index.js * Update index.js * Update index.js --------- Co-authored-by: llama Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/newthrone/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/newthrone/index.js b/projects/newthrone/index.js index 0e5f03ddd64..5953033fd37 100644 --- a/projects/newthrone/index.js +++ b/projects/newthrone/index.js @@ -1,11 +1,11 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES= require("../helper/coreAssets.json"); +const { sumTokensExport } = require("../helper/unknownTokens"); const GAME_CONTRACT = '0x61C3A357bc3ca51b80eCD36CB1Ae37e5465C6701' module.exports = { - methodology: 'WETH tokens in the Game contract, which represents the current balance of the game (total spent - total claimed).', + methodology: 'THRO tokens in the Game contract, which represents the current balance of the game (total spent - total claimed).', base: { - tvl: sumTokensExport({ owner: GAME_CONTRACT, tokens: [ADDRESSES.base.WETH]}), + tvl: () => ({}), + staking: sumTokensExport({ owner: GAME_CONTRACT, tokens: ['0x0f929C29dcE303F96b1d4104505F2e60eE795caC'], lps: ['0x3267afBDFA739D4039D03172A4a80e4bb91370b6'], useDefaultCoreAssets: true,}), } -}; \ No newline at end of file +} From 3646ea7b31af6cda6543dd4e68cbe8f6ac5e399e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 22:20:24 +0100 Subject: [PATCH 0451/2004] Add blast RPC endpoint to chains.json and env.js --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + 2 files changed, 2 insertions(+) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index ba8e62c254e..258776ed1b0 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -24,6 +24,7 @@ "bitgert", "bitindi", "bittorrent", + "blast", "boba", "boba_avax", "boba_bnb", diff --git a/projects/helper/env.js b/projects/helper/env.js index f168d9124a1..20e02a438d5 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -21,6 +21,7 @@ const DEFAULTS = { ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", MERLIN_RPC: "https://rpc.merlinchain.io", + BLAST_RPC: "https://blast.blockpi.network/v1/rpc/public", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', } From f271928c0cd1457328d0d2a64eff12c60970f8ed Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 22:21:58 +0100 Subject: [PATCH 0452/2004] Update BLAST_RPC URL --- projects/helper/env.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/env.js b/projects/helper/env.js index 20e02a438d5..d052a328e98 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -21,7 +21,7 @@ const DEFAULTS = { ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", MERLIN_RPC: "https://rpc.merlinchain.io", - BLAST_RPC: "https://blast.blockpi.network/v1/rpc/public", + BLAST_RPC: "https://blast.blockpi.network/v1/rpc/public,https://rpc.ankr.com/blast", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', } From 5260188efb89f80bba4aafe77fb364665fed2476 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 22:25:29 +0100 Subject: [PATCH 0453/2004] Add BLAST_RPC_MULTICALL endpoint --- projects/helper/env.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/env.js b/projects/helper/env.js index d052a328e98..c315bb6f316 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -23,6 +23,7 @@ const DEFAULTS = { MERLIN_RPC: "https://rpc.merlinchain.io", BLAST_RPC: "https://blast.blockpi.network/v1/rpc/public,https://rpc.ankr.com/blast", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', + BLAST_RPC_MULTICALL: '0x6e1A85E0Ee2893C005eDB99c8Ca4c03d9a309Ed4', } const ENV_KEYS = [ From 5dc3320fdc567b08b8c12a73ff237c2b11be51e3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 22:30:58 +0100 Subject: [PATCH 0454/2004] dyorswap: track blast --- projects/dyorswap/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/dyorswap/index.js b/projects/dyorswap/index.js index ff6aa3f61e8..a3caf5ce965 100644 --- a/projects/dyorswap/index.js +++ b/projects/dyorswap/index.js @@ -4,4 +4,13 @@ module.exports = { mode: { tvl: getUniTVL({ factory: "0xE470699f6D0384E3eA68F1144E41d22C6c8fdEEf", useDefaultCoreAssets: true, }), }, + blast: { + tvl: getUniTVL({ factory: "0xA1da7a7eB5A858da410dE8FBC5092c2079B58413", useDefaultCoreAssets: true, }), + }, + merlin: { + tvl: getUniTVL({ factory: "0xA1da7a7eB5A858da410dE8FBC5092c2079B58413", useDefaultCoreAssets: true, }), + }, + zeta: { + tvl: getUniTVL({ factory: "0xA1da7a7eB5A858da410dE8FBC5092c2079B58413", useDefaultCoreAssets: true, }), + }, }; From 9a253fb7ae6b34b80b61e591d005ca78a1b67345 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 22:39:41 +0100 Subject: [PATCH 0455/2004] ambient: track blast --- projects/ambient-finance/index.js | 4 +++- projects/helper/tokenMapping.js | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/ambient-finance/index.js b/projects/ambient-finance/index.js index 485811dfb80..e2cd418141e 100644 --- a/projects/ambient-finance/index.js +++ b/projects/ambient-finance/index.js @@ -4,19 +4,21 @@ const { cachedGraphQuery, getConfig } = require("../helper/cache"); // https://docs.ambient.finance/developers/deployed-contracts const vault = { scroll: "0xaaaaAAAACB71BF2C8CaE522EA5fa455571A74106", + blast: "0xaAaaaAAAFfe404EE9433EEf0094b6382D81fb958", ethereum: "0xAaAaAAAaA24eEeb8d57D431224f73832bC34f688", canto: "0x9290c893ce949fe13ef3355660d07de0fb793618" } const subgraphs = { scroll: 'https://ambindexer.net/scroll-gcgo/pool_list?chainId=0x82750', + blast: 'https://ambindexer.net/blast-gcgo/pool_list?chainId=0x13e31', canto: "https://canto-subgraph.plexnode.wtf/subgraphs/name/ambient-graph", ethereum: `https://api.thegraph.com/subgraphs/name/crocswap/croc-mainnet` } async function tvl(_, _b, _cb, { api, }) { let pools - if (api.chain === "scroll") { + if (subgraphs[api.chain].includes("gcgo")) { const data = await getConfig(`ambient-finance/${api.chain}`, subgraphs[api.chain]) pools = data.data } else { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 9c534b520f3..cb087590f49 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -119,6 +119,9 @@ const fixBalancesTokens = { '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'merlin-chain-bridged-wrapped-btc-merlin', decimals: 18 }, '0x480e158395cc5b41e5584347c495584ca2caf78d': { coingeckoId: 'merlin-chain-bridged-voya-merlin', decimals: 18 }, }, + blast: { + '0x4300000000000000000000000000000000000003': { coingeckoId: 'dai', decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From dcfbb0834db71398e52a629a499d4d5793f02c19 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 22:43:07 +0100 Subject: [PATCH 0456/2004] minor fix --- projects/helper/tokenMapping.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index cb087590f49..a26be148afa 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -121,6 +121,7 @@ const fixBalancesTokens = { }, blast: { '0x4300000000000000000000000000000000000003': { coingeckoId: 'dai', decimals: 18 }, + '0x4300000000000000000000000000000000000004': { coingeckoId: 'ethereum', decimals: 18 }, } } From 3c31c9ceb6a637aba8550b6efda4c5044255da4b Mon Sep 17 00:00:00 2001 From: Deadshot Ryker <151393124+deadshotryker@users.noreply.github.com> Date: Fri, 1 Mar 2024 03:51:48 +0530 Subject: [PATCH 0457/2004] Added ZeroLend to blast (#9124) * Added manta network for ZeroLend * added zerolend to blast --- projects/zerolend/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/zerolend/index.js b/projects/zerolend/index.js index b3d0762f87d..aebd87b1538 100644 --- a/projects/zerolend/index.js +++ b/projects/zerolend/index.js @@ -7,4 +7,7 @@ module.exports = { manta: aaveExports("manta", undefined, undefined, [ "0x67f93d36792c49a4493652B91ad4bD59f428AD15", ]), + blast: aaveExports("blast", undefined, undefined, [ + "0xc6DF4ddDBFaCb866e78Dcc01b813A41C15A08C10", + ]), }; From cb2c997ad9c2469b6cbf248975d40428791bdb18 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 29 Feb 2024 23:59:16 +0100 Subject: [PATCH 0458/2004] track Thruster-Fi project --- package-lock.json | 6 +++--- projects/helper/env.js | 2 -- projects/thruster-fi/index.js | 5 +++++ 3 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 projects/thruster-fi/index.js diff --git a/package-lock.json b/package-lock.json index b0cd8b39798..03a0a22c758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.35", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.35.tgz", - "integrity": "sha512-+180AooJyM7VlVpFyp/9fYXjcumKHIRuxEOQ4DOSNhqv3SdkpQrlzCnSfI6DrQ36turqNWPBl6AQxrqskns55A==", + "version": "5.0.36", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.36.tgz", + "integrity": "sha512-xBcwbQEvhlBXw8YY6UfbZE+XqrWuIbamwWQs9oa8gRJnYsJGCh3Mv93z+WVcwWsVp2cgrrHykhHT/axLsih3rg==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/env.js b/projects/helper/env.js index c315bb6f316..f168d9124a1 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -21,9 +21,7 @@ const DEFAULTS = { ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", MERLIN_RPC: "https://rpc.merlinchain.io", - BLAST_RPC: "https://blast.blockpi.network/v1/rpc/public,https://rpc.ankr.com/blast", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', - BLAST_RPC_MULTICALL: '0x6e1A85E0Ee2893C005eDB99c8Ca4c03d9a309Ed4', } const ENV_KEYS = [ diff --git a/projects/thruster-fi/index.js b/projects/thruster-fi/index.js new file mode 100644 index 00000000000..28a4d1de035 --- /dev/null +++ b/projects/thruster-fi/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + blast: { factory: "0x71b08f13B3c3aF35aAdEb3949AFEb1ded1016127", fromBlock: 10, }, +}); \ No newline at end of file From 1ffba1774ce0c60f2a947bbc1608b798bdb2830a Mon Sep 17 00:00:00 2001 From: cameronclifton <17259821+cameronclifton@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:20:26 -0700 Subject: [PATCH 0459/2004] add sui total supply support for USDY. (#9125) --- projects/ondofinance/index.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js index 354e7275ef6..c6bfd525716 100644 --- a/projects/ondofinance/index.js +++ b/projects/ondofinance/index.js @@ -1,7 +1,8 @@ const { getTokenSupply } = require('../helper/solana'); +const sui = require("../helper/chain/sui"); module.exports = { - methodology: "Sums Ondo's fund supplies.", + methodology: "Sums the total supplies of Ondo's issued tokens.", }; const config = { @@ -19,9 +20,18 @@ const config = { }, mantle: { USDY: "0x5bE26527e817998A7206475496fDE1E68957c5A6", + }, + sui: { + USDY: "0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY" } } +async function getUSDYTotalSupplySUI() { + const USDY_TREASURY_CAP_OBJECT_ID = '0x9dca9f57a78fa7f132f95a0cf5c4d1b796836145ead7337da6b94012db62267a'; + 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); @@ -37,6 +47,9 @@ Object.keys(config).forEach((chain) => { const scaledSupplies = supplies.map(supply => supply * 1_000_000); api.addTokens(fundAddresses, scaledSupplies); + } else if (chain === "sui") { + usdySupply = await getUSDYTotalSupplySUI(); + api.addTokens(fundAddresses, [usdySupply]); } else { supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: fundAddresses }); api.addTokens(fundAddresses, supplies); From 86784093f4a6d6d7fe57751c323a84d1bd925426 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 1 Mar 2024 01:52:56 +0000 Subject: [PATCH 0460/2004] minor update --- projects/scopuly/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/scopuly/index.js b/projects/scopuly/index.js index aa2a20e61a8..8d33075be8e 100644 --- a/projects/scopuly/index.js +++ b/projects/scopuly/index.js @@ -1,8 +1,11 @@ const { get } = require('../helper/http'); async function tvl() { - var totalTvl = await get('https://api.scopuly.com/api/liquidity_pools_tvl'); - return { tether: totalTvl.reduce((a, i) => a + Number(i.tvl), 0)} + 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 = { @@ -10,3 +13,4 @@ module.exports = { misrepresentedTokens: true, stellar: { tvl }, } + From 6ada6ee90967ab7c92a04845ac0b34fa93642330 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 1 Mar 2024 04:35:19 +0000 Subject: [PATCH 0461/2004] addd pond0x --- projects/pond0x/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/pond0x/index.js diff --git a/projects/pond0x/index.js b/projects/pond0x/index.js new file mode 100644 index 00000000000..2db1a415bf5 --- /dev/null +++ b/projects/pond0x/index.js @@ -0,0 +1,8 @@ +const {staking} = require("../helper/staking") + +module.exports={ + ethereum:{ + tvl:()=>({}), + staking: staking("0xed96E69d54609D9f2cFf8AaCD66CCF83c8A1B470", "0x423f4e6138e475d85cf7ea071ac92097ed631eea") + } +} \ No newline at end of file From 64015aaf52737ac2a3024f57037325dc4db9d2f8 Mon Sep 17 00:00:00 2001 From: BlastDexXYZ <161792060+BlastDexXYZ@users.noreply.github.com> Date: Fri, 1 Mar 2024 12:12:04 +0700 Subject: [PATCH 0462/2004] BlastDex (#9129) --- projects/blastdex/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/blastdex/index.js diff --git a/projects/blastdex/index.js b/projects/blastdex/index.js new file mode 100644 index 00000000000..05df68c74c7 --- /dev/null +++ b/projects/blastdex/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + + blast: { + tvl: getUniTVL({ + factory: "0x66346aac17d0e61156AC5F2A934ccF2a9BDe4c65", + useDefaultCoreAssets: true, + }), + }, +}; From 4ad2f7ff93c3d3a34fed0682aaafe7dfde6dc4ab Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:12:14 +0100 Subject: [PATCH 0463/2004] Cyberblast (#9126) * Cyberblast * code refactor --------- Co-authored-by: Axel Storm --- projects/cyberblast-v2/index.js | 12 ++++++++++++ projects/cyberblast-v3/index.js | 6 ++++++ 2 files changed, 18 insertions(+) create mode 100644 projects/cyberblast-v2/index.js create mode 100644 projects/cyberblast-v3/index.js diff --git a/projects/cyberblast-v2/index.js b/projects/cyberblast-v2/index.js new file mode 100644 index 00000000000..4981fbf840d --- /dev/null +++ b/projects/cyberblast-v2/index.js @@ -0,0 +1,12 @@ +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, fetchBalances: true }), + } +}; \ No newline at end of file diff --git a/projects/cyberblast-v3/index.js b/projects/cyberblast-v3/index.js new file mode 100644 index 00000000000..03403c42fd0 --- /dev/null +++ b/projects/cyberblast-v3/index.js @@ -0,0 +1,6 @@ +const { uniV3Export } = require('../helper/uniswapV3') +const factory = '0x57eF21959CF9536483bA6ddB10Ad73E2a06b85ff' + +module.exports = uniV3Export({ + blast: { factory, fromBlock: 207530 }, +}) \ No newline at end of file From b1d2551791429bfa657fda88e6a64ce442d70399 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:13:46 +0100 Subject: [PATCH 0464/2004] minor fix --- projects/cyberblast-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/cyberblast-v3/index.js b/projects/cyberblast-v3/index.js index 03403c42fd0..827479dc40b 100644 --- a/projects/cyberblast-v3/index.js +++ b/projects/cyberblast-v3/index.js @@ -2,5 +2,5 @@ const { uniV3Export } = require('../helper/uniswapV3') const factory = '0x57eF21959CF9536483bA6ddB10Ad73E2a06b85ff' module.exports = uniV3Export({ - blast: { factory, fromBlock: 207530 }, + blast: { factory, fromBlock: 207530, permitFailure: true, }, }) \ No newline at end of file From 9ffd9733bfca2bf16e3d75903d95d69b45c42497 Mon Sep 17 00:00:00 2001 From: Bitrock Blockchain <138885902+BitrockChain@users.noreply.github.com> Date: Fri, 1 Mar 2024 15:18:52 +0700 Subject: [PATCH 0465/2004] Add Rockswap | Bitrock Chain (#9127) * Add Rockswap - Bitrock Blockchain * Update index.js --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 4 ++++ projects/rockswap/index.js | 7 +++++++ 4 files changed, 13 insertions(+) create mode 100644 projects/rockswap/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 258776ed1b0..63cca3c070f 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -23,6 +23,7 @@ "bitcoincash", "bitgert", "bitindi", + "bitrock", "bittorrent", "blast", "boba", diff --git a/projects/helper/env.js b/projects/helper/env.js index f168d9124a1..2b96673d1fa 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -22,6 +22,7 @@ const DEFAULTS = { DEFIVERSE_RPC: "https://rpc.defi-verse.org/", MERLIN_RPC: "https://rpc.merlinchain.io", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', + BITROCK_RPC_MULTICALL: '0x40DD0342A46Ab0893251211F6626E82c09A75345', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index a26be148afa..f4029485bc8 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -122,6 +122,10 @@ const fixBalancesTokens = { blast: { '0x4300000000000000000000000000000000000003': { coingeckoId: 'dai', decimals: 18 }, '0x4300000000000000000000000000000000000004': { coingeckoId: 'ethereum', decimals: 18 }, + }, + bitrock: { + '0x413f0e3a440aba7a15137f4278121450416882d5': { coingeckoId: 'wrapped-bitrock', decimals: 18 }, + '0xde67d97b8770dc98c746a3fc0093c538666eb493': { coingeckoId: 'bitrock', decimals: 9 }, } } diff --git a/projects/rockswap/index.js b/projects/rockswap/index.js new file mode 100644 index 00000000000..07a9daa14e2 --- /dev/null +++ b/projects/rockswap/index.js @@ -0,0 +1,7 @@ +const { getUniTVL } = require('../helper/unknownTokens'); + +module.exports = { + bitrock: { + tvl: getUniTVL({ factory: '0x02c73ecb9B82e545E32665eDc42Ae903F8AA86a9', useDefaultCoreAssets: true, fetchBalances: true }), + } +} From e2b118b4884fded6f08bfb534135ab62e899694f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:20:07 +0100 Subject: [PATCH 0466/2004] lint fix --- projects/ondofinance/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js index c6bfd525716..e6e6cd08a9f 100644 --- a/projects/ondofinance/index.js +++ b/projects/ondofinance/index.js @@ -28,7 +28,7 @@ const config = { async function getUSDYTotalSupplySUI() { const USDY_TREASURY_CAP_OBJECT_ID = '0x9dca9f57a78fa7f132f95a0cf5c4d1b796836145ead7337da6b94012db62267a'; - treasuryCapInfo = await sui.getObject(USDY_TREASURY_CAP_OBJECT_ID); + let treasuryCapInfo = await sui.getObject(USDY_TREASURY_CAP_OBJECT_ID); return treasuryCapInfo.fields.total_supply.fields.value; } @@ -48,7 +48,7 @@ Object.keys(config).forEach((chain) => { const scaledSupplies = supplies.map(supply => supply * 1_000_000); api.addTokens(fundAddresses, scaledSupplies); } else if (chain === "sui") { - usdySupply = await getUSDYTotalSupplySUI(); + let usdySupply = await getUSDYTotalSupplySUI(); api.addTokens(fundAddresses, [usdySupply]); } else { supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: fundAddresses }); From 62e990411d6a883f3f41ef399e9658a601fbb67f Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Fri, 1 Mar 2024 00:27:00 -0800 Subject: [PATCH 0467/2004] Add Cleo (#9132) --- projects/visor/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index 5628be004e8..7035fc01bad 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -63,6 +63,7 @@ const HYPE_REGISTRY = { ], mantle: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 1000], // FusionX + ["0xa5E9006C17740Cb9e4898657721c4dFE103d8456", 58580400], // Celo ], rollux: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 1435083], // PegaSys From 12f5b46b18cc54ce51cfc63f70b8975389f4c366 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 09:38:50 +0100 Subject: [PATCH 0468/2004] Cygnus (#9137) * Cygnus Finance: add tvl * Refactor TVL calculation in Cygnus Finance index.js --------- Co-authored-by: greatpie --- projects/cygnus-finance/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/cygnus-finance/index.js diff --git a/projects/cygnus-finance/index.js b/projects/cygnus-finance/index.js new file mode 100644 index 00000000000..4f0da0efb16 --- /dev/null +++ b/projects/cygnus-finance/index.js @@ -0,0 +1,14 @@ +const CGUSD_CONTRACT = "0xCa72827a3D211CfD8F6b00Ac98824872b72CAb49"; +const START_TIME = 1708351200; + +async function tvl(timestamp, block, _, { api }) { + await api.erc4626Sum({ calls: [CGUSD_CONTRACT], balanceAbi: 'getTotalPooledAssets', tokenAbi: "asset" }); +} + +module.exports = { + methodology: "Calculates the total cgUSD Supply", + start: START_TIME, + base: { + tvl, + }, +}; From 1edc156f371821c22c8070c22209d29d03f1b839 Mon Sep 17 00:00:00 2001 From: Marc Puig Date: Fri, 1 Mar 2024 11:22:58 +0100 Subject: [PATCH 0469/2004] update persistence TVL (#9134) --- projects/pstake/index.js | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/projects/pstake/index.js b/projects/pstake/index.js index f1807fb27b3..34a4e5b6ced 100644 --- a/projects/pstake/index.js +++ b/projects/pstake/index.js @@ -15,46 +15,43 @@ const baseEndpoint = 'https://api.persistence.one/pstake' const chainInfos = { cosmos: { - id: "cosmoshub-4", name: "cosmos", - denom: "uatom", decimals: 1e6, endpoint: "/stkatom/atom_tvu" }, osmosis: { - id: "osmosis-1", name: "osmosis", - denom: "uosmo", decimals: 1e6, endpoint: "/stkosmo/osmo_tvu" }, dydx: { - id: "dydx-mainnet-1", name: "dydx-chain", - denom: "adydx", decimals: 1e18, endpoint: "/stkdydx/dydx_tvu" } } -function cosmostvl(chainInfo) { +function cosmostvl() { return async () => { - const api = baseEndpoint + chainInfo.endpoint - const amount = await get(api) + let tvl = {} + for (const chain of Object.values(chainInfos)) { + const api = baseEndpoint + chain.endpoint - const result = {}; - sdk.util.sumSingleBalance(result, chainInfo.name, amount.amount.amount / chainInfo.decimals); + const amount = await get(api) - return result + 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 pStake.`, + methodology: `Total amount of liquid staked tokens on Persistence.`, bsc: { tvl: bsctvl }, - persistence: { tvl: async () => ({}) }, - cosmos: {tvl: cosmostvl(chainInfos["cosmos"])}, - osmosis: {tvl: cosmostvl(chainInfos["osmosis"])}, - dydx: {tvl: cosmostvl(chainInfos["dydx"])}, + persistence: { tvl: cosmostvl() }, }; From 4a40d81197ebd41db0f941af74e96dafcb653514 Mon Sep 17 00:00:00 2001 From: "Bladeswap.xyz" <160004157+Bladeswap@users.noreply.github.com> Date: Fri, 1 Mar 2024 19:25:36 +0900 Subject: [PATCH 0470/2004] add BladeSwap (#9133) Co-authored-by: bladeswap --- projects/bladeswap/index.js | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 projects/bladeswap/index.js diff --git a/projects/bladeswap/index.js b/projects/bladeswap/index.js new file mode 100644 index 00000000000..7fa3ee5ee3d --- /dev/null +++ b/projects/bladeswap/index.js @@ -0,0 +1,45 @@ +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 (_, _b, _cb, { 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, }) + } + } +}) From d47a2093f0e87d38ce0ae69c38cc9743c4d1c992 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:26:41 +0100 Subject: [PATCH 0471/2004] track thruster fi v2 --- projects/helper/tokenMapping.js | 4 ---- projects/thruster-fi-v2/index.js | 7 +++++++ projects/thruster-fi/index.js | 7 ++++--- 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 projects/thruster-fi-v2/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f4029485bc8..5602f2e2cc6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -119,10 +119,6 @@ const fixBalancesTokens = { '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'merlin-chain-bridged-wrapped-btc-merlin', decimals: 18 }, '0x480e158395cc5b41e5584347c495584ca2caf78d': { coingeckoId: 'merlin-chain-bridged-voya-merlin', decimals: 18 }, }, - blast: { - '0x4300000000000000000000000000000000000003': { coingeckoId: 'dai', decimals: 18 }, - '0x4300000000000000000000000000000000000004': { coingeckoId: 'ethereum', decimals: 18 }, - }, bitrock: { '0x413f0e3a440aba7a15137f4278121450416882d5': { coingeckoId: 'wrapped-bitrock', decimals: 18 }, '0xde67d97b8770dc98c746a3fc0093c538666eb493': { coingeckoId: 'bitrock', decimals: 9 }, diff --git a/projects/thruster-fi-v2/index.js b/projects/thruster-fi-v2/index.js new file mode 100644 index 00000000000..c61f62ac1a2 --- /dev/null +++ b/projects/thruster-fi-v2/index.js @@ -0,0 +1,7 @@ +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 index 28a4d1de035..3db10311a8a 100644 --- a/projects/thruster-fi/index.js +++ b/projects/thruster-fi/index.js @@ -1,5 +1,6 @@ const { uniV3Export } = require("../helper/uniswapV3"); +const { mergeExports } = require('../helper/utils') -module.exports = uniV3Export({ - blast: { factory: "0x71b08f13B3c3aF35aAdEb3949AFEb1ded1016127", fromBlock: 10, }, -}); \ No newline at end of file +module.exports = mergeExports([ + uniV3Export({ blast: { factory: "0x71b08f13B3c3aF35aAdEb3949AFEb1ded1016127", fromBlock: 157106, }, }), +]) \ No newline at end of file From 10fa43d9eca4a34c66c1da28ef425b5d6466c548 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:28:16 +0100 Subject: [PATCH 0472/2004] Add new assets to coreAssets.json --- projects/helper/coreAssets.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index d0c3c5b7ff6..3b42a23c002 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1574,5 +1574,9 @@ }, "zeta": { "WZETA": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf" + }, + "blast": { + "USDB": "0x4300000000000000000000000000000000000003", + "WETH": "0x4300000000000000000000000000000000000004" } } From 1966e1bc8591b4ccd905ceb83dcd9deefde77652 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:43:15 +0100 Subject: [PATCH 0473/2004] track juice --- projects/juice-finance/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/juice-finance/index.js diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js new file mode 100644 index 00000000000..96dff86f381 --- /dev/null +++ b/projects/juice-finance/index.js @@ -0,0 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const LENDING_POOL = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a" +const COLLATERAL_VAULT = "0x6301795aa55B90427CF74C18C8636E0443F2100b" + +async function tvl(timestamp, _, _1, { api }) { + return api.sumTokens({ tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL], [ADDRESSES.blast.WETH, COLLATERAL_VAULT]] }) +} + +module.exports = { + misrepresentedTokens: false, + blast: { + tvl + } +} \ No newline at end of file From 1f3f1205bf90a59d456f75fd193cfc658456306b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:59:33 +0100 Subject: [PATCH 0474/2004] Add Blast chain to IceCreamSwap and include Monoswap v2 and v3 implementations --- projects/icecreamswap/index.js | 2 +- projects/monoswap-v2/index.js | 3 +++ projects/monoswap-v3/index.js | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 projects/monoswap-v2/index.js create mode 100644 projects/monoswap-v3/index.js diff --git a/projects/icecreamswap/index.js b/projects/icecreamswap/index.js index d184f035ec4..10b1d621bb1 100644 --- a/projects/icecreamswap/index.js +++ b/projects/icecreamswap/index.js @@ -4,7 +4,7 @@ const config = { shimmer_evm: '0x24cb308a4e2F3a4352F513681Bd0c31a0bd3BA31', } -const chains = [...Object.keys(config), 'base', 'telos', 'core', 'dogechain', 'fuse', 'xdc', 'bitgert', 'scroll', 'neon_evm' ] +const chains = [...Object.keys(config), 'base', 'telos', 'core', 'dogechain', 'fuse', 'xdc', 'bitgert', 'scroll', 'neon_evm', 'blast' ] chains.forEach(chain => { const factory = config[chain] diff --git a/projects/monoswap-v2/index.js b/projects/monoswap-v2/index.js new file mode 100644 index 00000000000..6fd811732a5 --- /dev/null +++ b/projects/monoswap-v2/index.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000000..10e814eb5ce --- /dev/null +++ b/projects/monoswap-v3/index.js @@ -0,0 +1,3 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ blast: { factory: "0x48d0F09710794313f33619c95147F34458BF7C3b", fromBlock: 172327, }, }) \ No newline at end of file From a7cd3147ffb121d792d17c8b4f93ae6ea7549fa9 Mon Sep 17 00:00:00 2001 From: Koyomi Araragi Date: Fri, 1 Mar 2024 13:57:53 -0300 Subject: [PATCH 0475/2004] Support blast chain on FlokiFi Locker (#9140) --- projects/flokifi-locker/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/flokifi-locker/index.js b/projects/flokifi-locker/index.js index cecc1371f57..58feef0ecee 100644 --- a/projects/flokifi-locker/index.js +++ b/projects/flokifi-locker/index.js @@ -18,6 +18,7 @@ const chains = { 'op_bnb': 204, 'base': 8453, 'dogechain': 2000, + 'blast': 81457, } async function fetch(chainId) { @@ -56,4 +57,4 @@ Object.keys(chains).forEach(chain => { module.exports[chain] = { tvl } }) -module.exports.misrepresentedTokens = true \ No newline at end of file +module.exports.misrepresentedTokens = true From 0bf52ff00bad39d81e9335836798266c109221b2 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Fri, 1 Mar 2024 16:59:55 +0000 Subject: [PATCH 0476/2004] symbiosis adds Blst chain support (#9143) --- projects/symbiosis-finance/config.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 9401926055a..155c5f30351 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -267,5 +267,14 @@ module.exports = { '0x5aa5f7f84ed0e5db0a4a85c3947ea16b53352fd4', // portal v2 ] }, + { + name: 'blast', + tokens: [ + ADDRESSES.blast.WETH, + ], + holders: [ + '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 + ] + }, ] } \ No newline at end of file From 68bc847c7c47a76f15b7bd52a8773a65bb01d02a Mon Sep 17 00:00:00 2001 From: shutsuwei <111286536+shutsuwei@users.noreply.github.com> Date: Fri, 1 Mar 2024 10:12:02 -0700 Subject: [PATCH 0477/2004] Add HMX on Blast (#9141) * feat: add HMX on Blast * chore: clean comment * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/perp88/index.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/projects/perp88/index.js b/projects/perp88/index.js index 471da9e7689..f5607b256fe 100644 --- a/projects/perp88/index.js +++ b/projects/perp88/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require('../helper/unwrapLPs') +const { sumTokensExport } = require('../helper/unwrapLPs'); const tokens = { "WMATIC": ADDRESSES.polygon.WMATIC_2, "WETH": ADDRESSES.polygon.WETH_1, @@ -10,14 +10,19 @@ const tokens = { } const POOL_DIAMOND_CONTRACT = '0xE7D96684A56e60ffBAAe0fC0683879da48daB383'; +async function blastTvl(_, _1, _2, { api }) { + const vaultStorageAddress = '0x97e94BdA44a2Df784Ab6535aaE2D62EFC6D2e303' + const hlpUnderlyings = [ + "0x2EAd9c6C7cAB1DD3442714A8A8533078C402135A", + "0x620aa22aA45F59Af91CaFBAd0ab58181FcDBfB08", + ] + return api.sumTokens({ owner: vaultStorageAddress, tokens: hlpUnderlyings, }) +} + module.exports = { start: 1668684025, polygon: { - tvl: sumTokensExport({ - owner: POOL_DIAMOND_CONTRACT, - tokens: Object.values(tokens), - chain: 'polygon', - }), + tvl: sumTokensExport({ owner: POOL_DIAMOND_CONTRACT, tokens: Object.values(tokens), }), }, arbitrum: { tvl: sumTokensExport({ @@ -28,5 +33,8 @@ module.exports = { ], fetchCoValentTokens: true, }) + }, + blast: { + tvl: blastTvl } } From bfc7ef2a12c1fd47ecc747942343180292026893 Mon Sep 17 00:00:00 2001 From: Johnny <37203137+MineJay@users.noreply.github.com> Date: Sat, 2 Mar 2024 01:21:11 +0800 Subject: [PATCH 0478/2004] Add Pac Finance on Blast L2 (#9130) * Add pac finance * Add support for RING-V2 LP token in blast chain --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/aave.js | 9 +++++---- projects/helper/utils.js | 1 + projects/pac-finance/index.js | 8 ++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 projects/pac-finance/index.js diff --git a/projects/helper/aave.js b/projects/helper/aave.js index 744a360af3a..23d2329ba26 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -103,7 +103,7 @@ async function getBorrowed(balances, block, chain, v2ReserveTokens, dataHelper, }) } -function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dataHelperAddresses, borrowed, v3 = false, { abis = {}, oracle, blacklistedTokens = [], } = {}) { +function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dataHelperAddresses, borrowed, v3 = false, { abis = {}, oracle, blacklistedTokens = [], hasV2LPs = false, } = {}) { return async (timestamp, ethBlock, { [chain]: block }) => { const balances = {} const { transformAddress, fixBalances, v2Atokens, v2ReserveTokens, dataHelper, updateBalances } = await getData({ oracle, chain, block, addressesProviderRegistry, dataHelperAddresses, transformAddressRaw, abis, }) @@ -120,13 +120,14 @@ function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dat 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 = [] } = {}) { +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, }), - borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, }) + tvl: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, false, v3, { oracle, abis, blacklistedTokens, hasV2LPs, }), + borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, hasV2LPs, }) } } diff --git a/projects/helper/utils.js b/projects/helper/utils.js index e043f052906..d6dbc318c94 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -81,6 +81,7 @@ function isLP(symbol, token, chain) { 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 === '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 diff --git a/projects/pac-finance/index.js b/projects/pac-finance/index.js new file mode 100644 index 00000000000..4c271b754ae --- /dev/null +++ b/projects/pac-finance/index.js @@ -0,0 +1,8 @@ +const { aaveExports } = require("../helper/aave"); + +// https://docs.pac.finance/developer/mainnet-addresses +module.exports = { + blast: aaveExports("blast", undefined, undefined, [ + "0x742316f430002D067dC273469236D0F3670bE446", + ]), +}; From 927b59e52d2f61a5c9452e5b3f840796d15f8548 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 18:52:44 +0100 Subject: [PATCH 0479/2004] track https://app.particle.trade --- projects/helper/unwrapLPs.js | 5 ++++- projects/particle-trade/index.js | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 projects/particle-trade/index.js diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index bb920b53e6b..b8443068ab6 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -203,6 +203,7 @@ async function unwrapUniswapV3NFTs({ balances = {}, nftsAndOwners = [], block, c case 'evmos': nftAddress = '0x5fe5daaa011673289847da4f76d63246ddb2965d'; break; case 'celo': nftAddress = '0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A'; break; case 'base': nftAddress = '0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1'; break; + case 'blast': nftAddress = '0x434575eaea081b735c985fa9bf63cd7b87e227f9'; break; default: throw new Error('missing default uniswap nft address chain: ' + chain) } @@ -231,7 +232,9 @@ async function unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain = const nftPositions = (await sdk.api.erc20.balanceOf({ target: nftIdFetcher, owner, block, chain })).output const factoryKey = getFactoryKey(chain, nftAddress) if (!factories[factoryKey]) factories[factoryKey] = sdk.api.abi.call({ target: nftAddress, abi: wildCreditABI.factory, block, chain }) - const factory = (await factories[factoryKey]).output + 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' const positionIds = (await sdk.api.abi.multiCall({ block, chain, abi: wildCreditABI.tokenOfOwnerByIndex, target: nftIdFetcher, diff --git a/projects/particle-trade/index.js b/projects/particle-trade/index.js new file mode 100644 index 00000000000..264c421fde5 --- /dev/null +++ b/projects/particle-trade/index.js @@ -0,0 +1,12 @@ +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 From 2d52e68b822277dacedad74115de8eb5c66b11ae Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 19:00:01 +0100 Subject: [PATCH 0480/2004] track https://app.orbitlending.io --- projects/helper/aave.js | 2 +- projects/orbitlending-io/index.js | 9 +++++++++ projects/pac-finance/index.js | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 projects/orbitlending-io/index.js diff --git a/projects/helper/aave.js b/projects/helper/aave.js index 23d2329ba26..d1e60fd5772 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -127,7 +127,7 @@ function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dat 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, }) + borrowed: aaveChainTvl(chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, hasV2LPs, blacklistedTokens, }) } } diff --git a/projects/orbitlending-io/index.js b/projects/orbitlending-io/index.js new file mode 100644 index 00000000000..fa887efde69 --- /dev/null +++ b/projects/orbitlending-io/index.js @@ -0,0 +1,9 @@ +const { compoundExports2 } = require('../helper/compound'); + +module.exports = { + blast: compoundExports2({ + comptroller: '0x1E18C3cb491D908241D0db14b081B51be7B6e652', + cether: '0xF9B3B455f5d900f62bC1792A6Ca6e1d47B989389', + blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec'] + }), +}; diff --git a/projects/pac-finance/index.js b/projects/pac-finance/index.js index 4c271b754ae..6a2c3bacb5c 100644 --- a/projects/pac-finance/index.js +++ b/projects/pac-finance/index.js @@ -4,5 +4,5 @@ const { aaveExports } = require("../helper/aave"); module.exports = { blast: aaveExports("blast", undefined, undefined, [ "0x742316f430002D067dC273469236D0F3670bE446", - ]), + ], { blacklistedTokens: ['0x9be8a40c9cf00fe33fd84eaedaa5c4fe3f04cbc3']}), }; From bb9e1ef14ffb88ec50a043ef6687ebe7afa71a34 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 19:32:05 +0100 Subject: [PATCH 0481/2004] track https://app.blitz.exchange --- projects/blitz-exchange/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/blitz-exchange/index.js diff --git a/projects/blitz-exchange/index.js b/projects/blitz-exchange/index.js new file mode 100644 index 00000000000..5ef4164096f --- /dev/null +++ b/projects/blitz-exchange/index.js @@ -0,0 +1,8 @@ +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 From 87248752a6f26896e68c782f06e1183acbcd2283 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 20:06:48 +0100 Subject: [PATCH 0482/2004] track synfutures v3 --- projects/synfutures-v3/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/synfutures-v3/index.js diff --git a/projects/synfutures-v3/index.js b/projects/synfutures-v3/index.js new file mode 100644 index 00000000000..e8aa5cf722b --- /dev/null +++ b/projects/synfutures-v3/index.js @@ -0,0 +1,15 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') +const config = { + blast: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH] }, + arbitrum: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH] }, + linea: { gate: '0xddEb8BAf1CA8199B127B446fB85E6E93F66A3372', tokens: [] }, + scroll: { gate: '0xB85738DC2f898737d7D9d0346D59BB0ae82af981', tokens: [] }, +} + +Object.keys(config).forEach(chain => { + const { gate: owner, tokens } = config[chain] + module.exports[chain] = { + tvl: sumTokensExport({ owner, tokens }), + } +}) \ No newline at end of file From 0e52d89156aa214ec2c29e2686dbad85a4bb4c7a Mon Sep 17 00:00:00 2001 From: 0xmDreamy <124707942+0xmDreamy@users.noreply.github.com> Date: Fri, 1 Mar 2024 21:27:53 +0100 Subject: [PATCH 0483/2004] feat(abracadabra): Add support for Blast (#9144) --- projects/abracadabra/index.js | 4 +++- projects/abracadabra/market.json | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js index 2c1b34d9465..5eeff34bc2f 100644 --- a/projects/abracadabra/index.js +++ b/projects/abracadabra/index.js @@ -9,6 +9,7 @@ const abi = require('./abi.json'); const bentoBoxAddresses = { "arbitrum": ["0x74c764D41B77DBbb4fe771daB1939B00b146894A", "0x7c8fef8ea9b1fe46a7689bfb8149341c90431d38"], "avax": ["0xf4F46382C2bE1603Dc817551Ff9A7b333Ed1D18f", "0x1fC83f75499b7620d53757f0b01E2ae626aAE530"], + "blast": ["0xC8f5Eb8A632f9600D1c7BC91e97dAD5f8B1e3748"], "bsc": ["0x090185f2135308BaD17527004364eBcC2D37e5F6"], "ethereum": ["0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", "0xd96f48665a1410C0cd669A88898ecA36B9Fc2cce"], "fantom": ["0xF5BCE5077908a1b7370B9ae04AdC565EBd643966", "0x74A0BcA2eeEdf8883cb91E37e9ff49430f20a616"], @@ -21,6 +22,7 @@ const underlyingTokens = { "0x3477Df28ce70Cecf61fFfa7a95be4BEC3B3c7e75": "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf", }, avax: {}, + blast: {}, bsc: {}, ethereum: { "0x5958A8DB7dfE0CC49382209069b00F54e17929C2": "0x903C9974aAA431A765e60bC07aF45f0A1B3b61fb", @@ -52,7 +54,7 @@ async function tvl(_, _1, _2, { api }) { return api.getBalances() } -const chains = ['arbitrum', 'avax', 'bsc', 'ethereum', 'fantom', 'kava', 'optimism']; +const chains = ['arbitrum', 'avax', 'blast', 'bsc', 'ethereum', 'fantom', 'kava', 'optimism']; chains.forEach(chain => module.exports[chain] = { tvl }), module.exports.hallmarks = [ [1651881600, "UST depeg"], diff --git a/projects/abracadabra/market.json b/projects/abracadabra/market.json index 4617a244c3a..8fa6cb75053 100644 --- a/projects/abracadabra/market.json +++ b/projects/abracadabra/market.json @@ -21,6 +21,9 @@ "0x2450Bf8e625e98e14884355205af6F97E3E68d07": "0x781655d802670bbA3c89aeBaaEa59D3182fD755D", "0x56984F04d2d04B2F63403f0EbeDD3487716bA49d": "0x0da67235dD5787D67955420C84ca1cEcd4E5Bb3b" }, + "blast": { + "0x79e8CAd80E2aA49A246B789584C45aAB1CFe402e": "0x4300000000000000000000000000000000000004" + }, "bsc": { "0x692CF15F80415D83E8c0e139cAbcDA67fcc12C90": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", "0xF8049467F3A9D50176f4816b20cDdd9bB8a93319": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82" From bd743074eb314645a5e73dd40ce45f5a8a6f5a9d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 1 Mar 2024 23:57:46 +0100 Subject: [PATCH 0484/2004] track https://swapblast.finance/#/swap --- package-lock.json | 6 +++--- projects/swapblast/index.js | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 projects/swapblast/index.js diff --git a/package-lock.json b/package-lock.json index 03a0a22c758..33ecfd2a767 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.36", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.36.tgz", - "integrity": "sha512-xBcwbQEvhlBXw8YY6UfbZE+XqrWuIbamwWQs9oa8gRJnYsJGCh3Mv93z+WVcwWsVp2cgrrHykhHT/axLsih3rg==", + "version": "5.0.37", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.37.tgz", + "integrity": "sha512-V+3bpkkU5fiHVDwcerk+aqozxYrPJ9aunNb4KbXO4CSB9YmCA23QJn+3EEP9e5iikjVmnlFCeIOVViMB86LkYQ==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/swapblast/index.js b/projects/swapblast/index.js new file mode 100644 index 00000000000..4d91985c31f --- /dev/null +++ b/projects/swapblast/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + blast: { tvl: getUniTVL({ factory: '0x04C9f118d21e8B767D2e50C946f0cC9F6C367300', useDefaultCoreAssets: true, }), }, +} \ No newline at end of file From 5c848de36756cd67eb7199e60b871104dd1d7f3b Mon Sep 17 00:00:00 2001 From: Eric Fan Date: Sat, 2 Mar 2024 18:03:39 +0800 Subject: [PATCH 0485/2004] correct synfutures v3 tvl data (#9150) * correct synfutures v3 tvl data * tokensAndOwners --- projects/synfutures-v3/index.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/projects/synfutures-v3/index.js b/projects/synfutures-v3/index.js index e8aa5cf722b..a37c6fb239a 100644 --- a/projects/synfutures-v3/index.js +++ b/projects/synfutures-v3/index.js @@ -1,15 +1,32 @@ const { sumTokensExport } = require('../helper/unwrapLPs') const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getLogs, getAddress } = require('../helper/cache/getLogs'); +const { ethers } = require('ethers'); + + const config = { - blast: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH] }, - arbitrum: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH] }, - linea: { gate: '0xddEb8BAf1CA8199B127B446fB85E6E93F66A3372', tokens: [] }, - scroll: { gate: '0xB85738DC2f898737d7D9d0346D59BB0ae82af981', tokens: [] }, + blast: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], fromBlock: 193856 }, + arbitrum: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH], fromBlock: 167216325 }, + // linea: { gate: '0xddEb8BAf1CA8199B127B446fB85E6E93F66A3372', tokens: [], fromBlock: 0 }, + // scroll: { gate: '0xB85738DC2f898737d7D9d0346D59BB0ae82af981', tokens: [], fromBlock: 0 }, } Object.keys(config).forEach(chain => { - const { gate: owner, tokens } = config[chain] + const { gate, tokens, fromBlock } = config[chain] module.exports[chain] = { - tvl: sumTokensExport({ owner, tokens }), + tvl: async (_, _b, _cb, { api, }) => { + // calculate the balance of all instruments + const logs = await getLogs({ + api, + target: gate, + topics: ['0x2f642d4751a7e76430c4c9b3abe8ab9fd9ed0daa08cae14b5594765049008e02'], + fromBlock, + eventAbi: 'event NewInstrument(bytes32 index, address instrument, address base, address quote, string symbol, uint total)', + }) + const tokensAndOwners = logs.map(i => ([i.args.quote, i.args.instrument])) + tokens.forEach(token => tokensAndOwners.push([token, gate])) + return sumTokens2({ api, tokensAndOwners: tokensAndOwners }) + } } -}) \ No newline at end of file +}) From 015472935eca2de52967d8f836d881ef9c729c82 Mon Sep 17 00:00:00 2001 From: wandbuild <138229969+wandbuild@users.noreply.github.com> Date: Sat, 2 Mar 2024 18:27:22 +0800 Subject: [PATCH 0486/2004] Update tvl and treasury of wand protocol (#9152) --- projects/treasury/wand.js | 14 ++++++++++++++ projects/wand/index.js | 14 ++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 projects/treasury/wand.js create mode 100644 projects/wand/index.js diff --git a/projects/treasury/wand.js b/projects/treasury/wand.js new file mode 100644 index 00000000000..248e40edefe --- /dev/null +++ b/projects/treasury/wand.js @@ -0,0 +1,14 @@ +const { treasuryExports } = require("../helper/treasury") + +const config = { + blast: { + owners: [ + "0x462bd2d3c020f6986c98160bc4e189954f49634b", // treasury + ], + tokens: [ + '0x0000000000000000000000000000000000000000' // $ETH + ], + }, +} + +module.exports = treasuryExports(config) \ No newline at end of file diff --git a/projects/wand/index.js b/projects/wand/index.js new file mode 100644 index 00000000000..f558f4cf253 --- /dev/null +++ b/projects/wand/index.js @@ -0,0 +1,14 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +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 + ], + tokens: [ '0x0000000000000000000000000000000000000000'], // $ETH + }), + } +}; \ No newline at end of file From d60009d902299038d56a8aae84bad9d4c5716071 Mon Sep 17 00:00:00 2001 From: aguillon Date: Sat, 2 Mar 2024 11:32:52 +0100 Subject: [PATCH 0487/2004] Fix Yupana contract address (#9151) * Fix Yupana contract address * retain old config for tvl --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/yupana/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/yupana/index.js b/projects/yupana/index.js index 0ee11631b3b..c29518751af 100644 --- a/projects/yupana/index.js +++ b/projects/yupana/index.js @@ -4,14 +4,19 @@ const { 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], includeTezos: true, }) + 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) { @@ -26,6 +31,7 @@ async function borrowed() { token_address = `${token.mainToken.fA12}`; sdk.util.sumSingleBalance(balances, token_address, token_borrows, 'tezos'); } + } return balances } From 8b2b716ca4ff3d1ca1c8d994363fc8e466ee0c36 Mon Sep 17 00:00:00 2001 From: linchuan Date: Sat, 2 Mar 2024 18:50:11 +0800 Subject: [PATCH 0488/2004] add roguex (#9149) * add roguex * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/roguex/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/roguex/index.js diff --git a/projects/roguex/index.js b/projects/roguex/index.js new file mode 100644 index 00000000000..508c56baf48 --- /dev/null +++ b/projects/roguex/index.js @@ -0,0 +1,18 @@ +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, }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = await getLogs({ api, target: factory, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, address tradePool)', onlyArgs: true, fromBlock, }) + const ownerTokens = logs.map(i => [[[i.token0, i.token1], i.pool], [[i.token0, i.token1], i.tradePool]]).flat() + return api.sumTokens({ ownerTokens }) + } + } +}) From d1d67cd795d16d77d8aad78265048f0134eb0e70 Mon Sep 17 00:00:00 2001 From: 0xmDreamy <124707942+0xmDreamy@users.noreply.github.com> Date: Sat, 2 Mar 2024 11:51:06 +0100 Subject: [PATCH 0489/2004] feat(abracadabra): Add support for Liquidity Launch Event on Blast (#9147) * feat(abracadabra): Add support for Liquidity Launch Event on Blast * excludeown token from tvl: MiM --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/abracadabra/index.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js index 5eeff34bc2f..a7a64ea976b 100644 --- a/projects/abracadabra/index.js +++ b/projects/abracadabra/index.js @@ -34,6 +34,16 @@ const underlyingTokens = { optimism: {}, }; +const liquidityLaunchEvents = { + blast: { + contractAddress: "0xa64B73699Cc7334810E382A4C09CAEc53636Ab96", + supportedTokens: [ + "0x4300000000000000000000000000000000000003", // USDb + // "0x76DA31D7C9CbEAE102aff34D3398bC450c8374c1", // MIM + ] + }, +}; + async function tvl(_, _1, _2, { api }) { const { chain } = api const marketsArray = []; @@ -51,13 +61,20 @@ async function tvl(_, _1, _2, { api }) { ).flat() const bals = await api.multiCall({ calls, abi: abi.balanceOf, }) api.addTokens(tokens, bals) + + const liquidityLaunchEvent = liquidityLaunchEvents[chain]; + if (liquidityLaunchEvent) + await api.sumTokens({ owner: liquidityLaunchEvent.contractAddress, tokens: liquidityLaunchEvent.supportedTokens }) + + + return api.getBalances() } 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"], -] + module.exports.hallmarks = [ + [1651881600, "UST depeg"], + [1643245200, "0xSifu revealed as QuadrigaCX founder"], + [1667826000, "FTX collapse, Alameda repays FTT loans"], + ] From 6c52a6a47b58dc2e645695e211f1a9a1eeb075f3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 2 Mar 2024 15:29:00 +0100 Subject: [PATCH 0490/2004] Update coreAssets.json and index.js --- projects/helper/coreAssets.json | 2 ++ projects/pac-finance/index.js | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 3b42a23c002..83ab3af030c 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1577,6 +1577,8 @@ }, "blast": { "USDB": "0x4300000000000000000000000000000000000003", + "fwWETH": "0x66714db8f3397c767d0a602458b5b4e3c0fe7dd1", + "fwUSDB": "0x866f2c06b83df2ed7ca9c2d044940e7cd55a06d6", "WETH": "0x4300000000000000000000000000000000000004" } } diff --git a/projects/pac-finance/index.js b/projects/pac-finance/index.js index 6a2c3bacb5c..231eb54e08d 100644 --- a/projects/pac-finance/index.js +++ b/projects/pac-finance/index.js @@ -2,7 +2,5 @@ const { aaveExports } = require("../helper/aave"); // https://docs.pac.finance/developer/mainnet-addresses module.exports = { - blast: aaveExports("blast", undefined, undefined, [ - "0x742316f430002D067dC273469236D0F3670bE446", - ], { blacklistedTokens: ['0x9be8a40c9cf00fe33fd84eaedaa5c4fe3f04cbc3']}), + blast: aaveExports("blast", undefined, undefined, ["0x742316f430002D067dC273469236D0F3670bE446",], { hasV2LPs: true }), }; From 1a3772b226c2ad69583ed5854bdc154b9d993d43 Mon Sep 17 00:00:00 2001 From: ZeroTwoDAO Date: Sat, 2 Mar 2024 15:29:59 +0100 Subject: [PATCH 0491/2004] Add gasswap dex (#9153) --- projects/gassswap/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/gassswap/index.js diff --git a/projects/gassswap/index.js b/projects/gassswap/index.js new file mode 100644 index 00000000000..b8d22486e86 --- /dev/null +++ b/projects/gassswap/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + + blast: { + tvl: getUniTVL({ + factory: "0x9637ac15c3830d9b32378593693f968cc33eecb1", + useDefaultCoreAssets: true, + }), + }, +}; From a6e311542c62b4d9114462e53cb35b8816613df4 Mon Sep 17 00:00:00 2001 From: Sinan BALCIN Date: Sat, 2 Mar 2024 14:42:50 +0000 Subject: [PATCH 0492/2004] blastfutures TVL (#9146) * blastfutures volume adapter impl * chain update * chain update as base * chain update as base * Update TVL as on chain --- projects/blastfutures/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/blastfutures/index.js diff --git a/projects/blastfutures/index.js b/projects/blastfutures/index.js new file mode 100644 index 00000000000..d90ee126fa0 --- /dev/null +++ b/projects/blastfutures/index.js @@ -0,0 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + blast: { + tvl: sumTokensExport({ owner: '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), + }, +} From 6fe058741540653889995a82afe0fc9870e33fde Mon Sep 17 00:00:00 2001 From: webmass Date: Sat, 2 Mar 2024 18:43:16 +0400 Subject: [PATCH 0493/2004] Add support for solidly veNfts (#9138) * add support to unwrap solidly veNfts * update inverse treasury with veNFTs * refacto tangible with unwrapSolidlyVeNft util --- projects/helper/abis/solidlyVeNft.json | 7 +++ projects/helper/unwrapLPs.js | 27 ++++++++++- projects/tangible/insurance-fund-base.js | 8 +-- projects/tangible/insurance-fund-optimism.js | 8 +-- projects/treasury/inverse.js | 51 +++++++++++++------- 5 files changed, 70 insertions(+), 31 deletions(-) create mode 100644 projects/helper/abis/solidlyVeNft.json diff --git a/projects/helper/abis/solidlyVeNft.json b/projects/helper/abis/solidlyVeNft.json new file mode 100644 index 00000000000..37ff7ddd0dc --- /dev/null +++ b/projects/helper/abis/solidlyVeNft.json @@ -0,0 +1,7 @@ +{ + "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/unwrapLPs.js b/projects/helper/unwrapLPs.js index b8443068ab6..b8cc71c84f1 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -8,10 +8,11 @@ const { requery } = require('./requery') const { getChainTransform, getFixBalances } = require('./portedTokens') const { getUniqueAddresses, normalizeAddress } = require('./tokenMapping') const creamAbi = require('./abis/cream.json') -const { isLP, log, sliceIntoChunks, isICHIVaultToken, } = require('./utils') +const { isLP, log, sliceIntoChunks, isICHIVaultToken, createIncrementArray } = require('./utils') const { sumArtBlocks, whitelistedNFTs, } = require('./nft') const wildCreditABI = require('../wildcredit/abi.json'); const { covalentGetTokens, } = require("./token"); +const SOLIDLY_VE_NFT_ABI = require('./abis/solidlyVeNft.json'); const lpReservesAbi = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' const lpSuppliesAbi = "uint256:totalSupply" @@ -697,6 +698,7 @@ async function sumTokens2({ sumChunkSize = undefined, uniV3ExtraConfig = {}, resolveICHIVault = false, + solidlyVeNfts = [], }) { if (api) { chain = api.chain ?? chain @@ -733,6 +735,14 @@ async function sumTokens2({ nftTokens.forEach((tokens, i) => ownerTokens.push([[tokens, coreNftTokens].flat(), owners[i]])) } + if(solidlyVeNfts.length) { + await Promise.all( + owners.map( + owner => solidlyVeNfts.map(veNftDetails => unwrapSolidlyVeNft({ api, owner, ...veNftDetails })) + ) + .flat() + ) + } if (ownerTokens.length) { ownerTokens.map(([tokens, owner]) => { @@ -901,6 +911,20 @@ async function unwrapConvexRewardPools({ api, tokensAndOwners }) { return api.getBalances() } +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, @@ -925,4 +949,5 @@ module.exports = { unwrapMakerPositions, unwrap4626Tokens, unwrapConvexRewardPools, + unwrapSolidlyVeNft, } diff --git a/projects/tangible/insurance-fund-base.js b/projects/tangible/insurance-fund-base.js index ecda71f34ad..cc7225876df 100644 --- a/projects/tangible/insurance-fund-base.js +++ b/projects/tangible/insurance-fund-base.js @@ -1,5 +1,4 @@ -const VE_VELO_ABI = require('./abi/VeVeloNFT.json'); -const { createIncrementArray } = require('../helper/utils'); +const { unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); const insuranceTokensBase = { AERO: '0x940181a94A35A4569E4529A3CDfB74e38FD98631', @@ -8,10 +7,7 @@ const insuranceTokensBase = { const VE_AERO_NFT = "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4"; async function getInsuranceFundValueBase(api, INSURANCE_FUND) { - const count = await api.call({ abi: 'erc20:balanceOf', target: VE_AERO_NFT, params: INSURANCE_FUND }) - const tokenIds = await api.multiCall({ abi: VE_VELO_ABI.ownerToNFTokenIdList, calls: createIncrementArray(count).map(i => ({ params: [INSURANCE_FUND, i] })), target: VE_AERO_NFT }) - const bals = await api.multiCall({ abi: VE_VELO_ABI.locked, calls: tokenIds, target: VE_AERO_NFT }) - bals.forEach(i => api.add(insuranceTokensBase.AERO, i.amount)) + await unwrapSolidlyVeNft({ api, baseToken: insuranceTokensBase.AERO, veNft: VE_AERO_NFT, owner: INSURANCE_FUND }) } module.exports = { diff --git a/projects/tangible/insurance-fund-optimism.js b/projects/tangible/insurance-fund-optimism.js index b71366c3bf4..46f3c9117eb 100644 --- a/projects/tangible/insurance-fund-optimism.js +++ b/projects/tangible/insurance-fund-optimism.js @@ -1,5 +1,4 @@ -const VE_VELO_ABI = require('./abi/VeVeloNFT.json'); -const { createIncrementArray } = require('../helper/utils'); +const { unwrapSolidlyVeNft } = require('../helper/unwrapLPs'); const insuranceTokensOp = { VELO: '0x9560e827af36c94d2ac33a39bce1fe78631088db', @@ -8,10 +7,7 @@ const insuranceTokensOp = { const VE_VELO_NFT = "0xFAf8FD17D9840595845582fCB047DF13f006787d"; async function getInsuranceFundValueOp(api, INSURANCE_FUND) { - const count = await api.call({ abi: 'erc20:balanceOf', target: VE_VELO_NFT, params: INSURANCE_FUND }) - const tokenIds = await api.multiCall({ abi: VE_VELO_ABI.ownerToNFTokenIdList, calls: createIncrementArray(count).map(i => ({ params: [INSURANCE_FUND, i]})), target: VE_VELO_NFT }) - const bals = await api.multiCall({ abi: VE_VELO_ABI.locked, calls: tokenIds, target: VE_VELO_NFT }) - bals.forEach(i => api.add(insuranceTokensOp.VELO, i.amount)) + await unwrapSolidlyVeNft({ api, baseToken: insuranceTokensOp.VELO, veNft: VE_VELO_NFT, owner: INSURANCE_FUND }) } module.exports = { diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 53253fec66a..fdad759c766 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -3,7 +3,7 @@ const { treasuryExports, nullAddress } = require("../helper/treasury"); const inv = "0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68"; const anchorTreasury = "0x926df14a23be491164dcf93f4c468a50ef659d5b"; -const multisig = "0x9D5Df30F475CEA915b1ed4C0CCa59255C897b61B"; +const treasurymultisig = "0x9D5Df30F475CEA915b1ed4C0CCa59255C897b61B"; const opmultisig = "0xa283139017a2f5bade8d8e25412c600055d318f8"; const bnbmultisig = "0xf7da4bc9b7a6bb3653221ae333a9d2a2c2d5bda7"; const basemultisig = "0x586CF50c2874f3e3997660c0FD0996B090FB9764"; @@ -12,7 +12,7 @@ const arbmultisig2 = "0x23dEDab98D7828AFBD2B7Ab8C71089f2C517774a"; const polmultisig = "0x5D18b089e838DFFbb417A87874435175F3A9B000"; const avaxmultisig = "0x1A927B237a57421C414EB511a33C4B82C2718677"; const pcmultisig = "0x4b6c63e6a94ef26e2df60b89372db2d8e211f1b7" -const treasurymultisig = "0x943dbdc995add25a1728a482322f9b3c575b16fb" +const bugbountymultisig = "0x943dbdc995add25a1728a482322f9b3c575b16fb" const fedchair = "0x8f97cca30dbe80e7a8b462f1dd1a51c32accdfc8" module.exports = treasuryExports({ @@ -35,6 +35,7 @@ module.exports = treasuryExports({ 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 @@ -42,7 +43,7 @@ module.exports = treasuryExports({ "0x0a6B1d9F920019BAbc4De3F10c94ECB822106104", "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", ], - owners: [anchorTreasury, multisig, pcmultisig, treasurymultisig, fedchair], + owners: [anchorTreasury, treasurymultisig, pcmultisig, bugbountymultisig, fedchair], ownTokens: [ inv, "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", // Uniswap INV/ETH LP @@ -60,9 +61,12 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDC_CIRCLE, - "0x8aE125E8653821E851F12A49F7765db9a9ce7384", // DOLA - "0xFAf8FD17D9840595845582fCB047DF13f006787d", // veVELO - ], + "0x8aE125E8653821E851F12A49F7765db9a9ce7384", // DOLA + "0x9560e827af36c94d2ac33a39bce1fe78631088db", // VELO + ], + solidlyVeNfts: [ + { baseToken: "0x9560e827af36c94d2ac33a39bce1fe78631088db", veNft: "0xFAf8FD17D9840595845582fCB047DF13f006787d" },// veVelo + ], owners: [opmultisig], ownTokens: [], }, @@ -71,10 +75,12 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.base.USDC, ADDRESSES.base.USDbC, - "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", // DOLA - "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4", // veAERO + "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", // DOLA "0x940181a94A35A4569E4529A3CDfB74e38FD98631", // AERO - ], + ], + solidlyVeNfts: [ + { baseToken: "0x940181a94A35A4569E4529A3CDfB74e38FD98631", veNft: "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4" },// veVelo + ], owners: [basemultisig], ownTokens: [], }, @@ -82,10 +88,12 @@ module.exports = treasuryExports({ tokens: [ nullAddress, ADDRESSES.bsc.WBNB, - "0x2F29Bc0FFAF9bff337b31CBe6CB5Fb3bf12e5840", // DOLA - "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D", // veTHE + "0x2F29Bc0FFAF9bff337b31CBe6CB5Fb3bf12e5840", // DOLA "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", // THENA - ], + ], + solidlyVeNfts: [ + { isAltAbi: true, baseToken: "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11", veNft: "0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D" },// veTHENA + ], owners: [bnbmultisig], ownTokens: [], }, @@ -94,9 +102,11 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.avax.USDC, '0x221743dc9E954bE4f86844649Bf19B43D6F8366d', // DOLA - '0xeeee99b35Eb6aF5E7d76dd846DbE4bcc0c60cA1d', // SNEK - '0xeeee3Bf0E550505C0C17a8432065F2f6b9D06350', // veSNEK - ], + '0xeeee99b35Eb6aF5E7d76dd846DbE4bcc0c60cA1d', // SNEK + ], + solidlyVeNfts: [ + { isAltAbi: true, baseToken: "0xeeee99b35Eb6aF5E7d76dd846DbE4bcc0c60cA1d", veNft: "0xeeee3Bf0E550505C0C17a8432065F2f6b9D06350" },// veSNEK + ], owners: [avaxmultisig], ownTokens: [], }, @@ -106,9 +116,14 @@ module.exports = treasuryExports({ ADDRESSES.arbitrum.DAI, ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.WETH, - "0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418", // RAM - "0xAAA343032aA79eE9a6897Dab03bef967c3289a06", // veRAM + "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: [], }, @@ -117,7 +132,7 @@ module.exports = treasuryExports({ nullAddress, ADDRESSES.polygon.USDC, '0xbC2b48BC930Ddc4E5cFb2e87a45c379Aab3aac5C', // DOLA - ], + ], owners: [polmultisig], }, }); From 14130ab04b5cb63d57a8a468467cbfa46f0d0ca3 Mon Sep 17 00:00:00 2001 From: WarlockDeFi <142273979+WarlockDeFi@users.noreply.github.com> Date: Sat, 2 Mar 2024 15:15:59 +0000 Subject: [PATCH 0494/2004] feat: add BlastNYAN adapter (#9136) * Create index.js * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/BlastNYAN/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/BlastNYAN/index.js diff --git a/projects/BlastNYAN/index.js b/projects/BlastNYAN/index.js new file mode 100644 index 00000000000..734a45c1c9a --- /dev/null +++ b/projects/BlastNYAN/index.js @@ -0,0 +1,21 @@ +const { sumTokensExport } = require('../helper/unknownTokens') +const WETH = '0x4300000000000000000000000000000000000004' +const BLNYAN = '0x9aAC39ca368D27bf03887CCe32f28b44F466072F' +const BLNYAN_WETH_SLP = '0x0E9309f32881899F6D4aC2711c6E21367A84CA26' + +const stakingBLNYANContract = '0xA76D6dc805d0EbEcb3787c781ce3A18feEF020cb' +const feeDistro = '0xBC8a7a845cC7A8246EB34856Afe6f1a3d62BD9C6' +const stakeLpEarnWeth = '0x0a3A757BE3049C2d9444d025E98D37b2a81a0a32' +const button = '0x00066Ed6c2F7d6CC6e66c678BaEE2C8683B632e6' +const opts = { useDefaultCoreAssets: true, lps: [BLNYAN_WETH_SLP] } + +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: sumTokensExport({ owners: [feeDistro, button], tokens: [WETH], ...opts, }), + pool2: sumTokensExport({ ...opts, owners: [stakeLpEarnWeth], tokens: [BLNYAN_WETH_SLP], }), + staking: sumTokensExport({ owners: [stakingBLNYANContract], tokens: [BLNYAN], ...opts, }), + }, + methodology: + 'Counts as TVL the ETH, blNYAN and LP assets deposited through-out the protocol', +} From d003e75f7a4f5532a8a0219dba477a1a2bc5acca Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 2 Mar 2024 19:57:41 +0100 Subject: [PATCH 0495/2004] track ring --- projects/ring-dex/index.js | 3 +++ projects/ring-few/index.js | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 projects/ring-dex/index.js create mode 100644 projects/ring-few/index.js diff --git a/projects/ring-dex/index.js b/projects/ring-dex/index.js new file mode 100644 index 00000000000..5242abef435 --- /dev/null +++ b/projects/ring-dex/index.js @@ -0,0 +1,3 @@ + const { uniTvlExport } = require('../helper/unknownTokens') + + module.exports = uniTvlExport('blast', '0x24F5Ac9A706De0cF795A8193F6AB3966B14ECfE6') \ No newline at end of file diff --git a/projects/ring-few/index.js b/projects/ring-few/index.js new file mode 100644 index 00000000000..ed0662a3177 --- /dev/null +++ b/projects/ring-few/index.js @@ -0,0 +1,20 @@ + +const config = { + blast: { factory: '0x455b20131D59f01d082df1225154fDA813E8CeE9' }, +} + +module.exports = { + doublecounted: true, +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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') )) + return api.sumTokens({ tokensAndOwners2: [tokens, fewTokens], blacklistedTokens, }) + } + } +}) \ No newline at end of file From 27514e61b25c1b40cf7601e863b8c39d9d52cf17 Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Sun, 3 Mar 2024 02:02:04 +0700 Subject: [PATCH 0496/2004] Add Blast chain (#9155) * update staking dackie * update arbitrum * update blast --------- Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 7 +++++++ projects/dackieswap/index.js | 1 + 2 files changed, 8 insertions(+) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index 1181d219bc0..33477e74615 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -31,5 +31,12 @@ module.exports = { useDefaultCoreAssets: true, fetchBalances: true }) + }, + blast: { + tvl: getUniTVL({ + factory: "0x757cD583004400ee67e5cC3c7A60C6a62E3F6d30", + useDefaultCoreAssets: true, + fetchBalances: true + }) } }; \ No newline at end of file diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index 3f6bd78aadc..d4038adba0e 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -4,4 +4,5 @@ module.exports = uniV3Export({ base: { factory: "0x3D237AC6D2f425D2E890Cc99198818cc1FA48870", fromBlock: 2031627 }, optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 }, arbitrum: { factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", fromBlock: 180722131 }, + blast: { factory: "0xB9010964301326160173da694c0697a2FcE82F39", fromBlock: 286237 }, }); \ No newline at end of file From 82654639b21ccca954dd735ad49626ea7f6b8dbb Mon Sep 17 00:00:00 2001 From: WarlockDeFi <142273979+WarlockDeFi@users.noreply.github.com> Date: Sat, 2 Mar 2024 19:13:09 +0000 Subject: [PATCH 0497/2004] Update to PR#9136: BlastNYAN to account for WETH earning yield in the background (#9154) * Update BlastNYAN to account for WETH earning yield in the background * Update index.js --- projects/BlastNYAN/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/BlastNYAN/index.js b/projects/BlastNYAN/index.js index 734a45c1c9a..f2091ad9f3e 100644 --- a/projects/BlastNYAN/index.js +++ b/projects/BlastNYAN/index.js @@ -12,10 +12,10 @@ const opts = { useDefaultCoreAssets: true, lps: [BLNYAN_WETH_SLP] } module.exports = { misrepresentedTokens: true, blast: { - tvl: sumTokensExport({ owners: [feeDistro, button], tokens: [WETH], ...opts, }), + tvl: sumTokensExport({ owners: [stakeLpEarnWeth, feeDistro, button], tokens: [WETH], ...opts, }), pool2: sumTokensExport({ ...opts, owners: [stakeLpEarnWeth], tokens: [BLNYAN_WETH_SLP], }), staking: sumTokensExport({ owners: [stakingBLNYANContract], tokens: [BLNYAN], ...opts, }), }, methodology: - 'Counts as TVL the ETH, blNYAN and LP assets deposited through-out the protocol', + 'Counts as TVL the ETH only. blNYAN and LP assets deposited are counted as Pool2 and staking Respectively', } From ee2ec1a2856674ef5488987bea8c2c5aafc00c20 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 2 Mar 2024 21:26:31 +0100 Subject: [PATCH 0498/2004] Strater (#9156) * feature: add strater project * feature: set the package-lock.json to the same version of original repo * feature: replace decimal.js to bignumber.js * code refactor --------- Co-authored-by: Dan Hsu --- projects/helper/coreAssets.json | 1 + projects/helper/unwrapLPs.js | 25 +++++++++++++++ projects/strater/index.js | 55 +++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 projects/strater/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 83ab3af030c..8696bcaa063 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1328,6 +1328,7 @@ "USDC_SOL": "0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN", "USDC_ARB": "0xe32d3ebafa42e6011b87ef1087bbc6053b499bf6f095807b9013aff5a6ecd7bb::coin::COIN", "USDC_BNB": "0x909cba62ce96d54de25bec9502de5ca7b4f28901747bbf96b76c2e63ec5f1cba::coin::COIN", + "BUCK": "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK", "SUI": "0x2::sui::SUI" }, "grove": { diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index b8cc71c84f1..0daad0fb660 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -911,6 +911,30 @@ async function unwrapConvexRewardPools({ api, tokensAndOwners }) { return api.getBalances() } +function addUniV3LikePosition({ api, token0, token1, liquidity, tickLower, tickUpper, tick}) { + const tickToPrice = (tick) => 1.0001 ** 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) @@ -949,5 +973,6 @@ module.exports = { unwrapMakerPositions, unwrap4626Tokens, unwrapConvexRewardPools, + addUniV3LikePosition, unwrapSolidlyVeNft, } diff --git a/projects/strater/index.js b/projects/strater/index.js new file mode 100644 index 00000000000..b849082024b --- /dev/null +++ b/projects/strater/index.js @@ -0,0 +1,55 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const sui = require("../helper/chain/sui"); +const { addUniV3LikePosition } = require("../helper/unwrapLPs"); + +const BUCKETUS_VAULT_ID = "0x1a0b93fd2965ce3ceb4039c90b232ddee7b0e79015cab0ca10528bb5f4285188"; +const BUCK_USDC_POOL_ID = "0x6ecf6d01120f5f055f9a605b56fd661412a81ec7c8b035255e333c664a0c12e7"; + +const CETABLE_VAULT_ID = "0xeed4e7948f88f1f044b653717a7855eef6fe188e9cbbb103d5169f9bc3edd257"; +const USDC_USDT_POOL_ID = "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20"; + +function asIntN(int, bits = 32) { + return Number(BigInt.asIntN(bits, BigInt(int))); +} + +async function tvl(_, _1, _2, { api }) { + const bucketusVaultObjs = await sui.getObject(BUCKETUS_VAULT_ID); + const bucketusPoolObjs = await sui.getObject(BUCK_USDC_POOL_ID); + + const bucketusPool = bucketusPoolObjs.fields; + const bucketusPosition = bucketusVaultObjs.fields.position.fields; + + addUniV3LikePosition({ + api, + tickLower: asIntN(bucketusPosition.tick_lower_index.fields.bits), + tickUpper: asIntN(bucketusPosition.tick_upper_index.fields.bits), + tick: asIntN(bucketusPool.current_tick_index.fields.bits), + liquidity: bucketusPosition.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, + }) +} + +module.exports = { + timetravel: false, + sui: { + tvl, + }, +}; From f181764a9491054f94b7863cc98d926efa465bf4 Mon Sep 17 00:00:00 2001 From: Avolendfi <156771119+Avolendfi@users.noreply.github.com> Date: Sun, 3 Mar 2024 18:34:42 +0800 Subject: [PATCH 0499/2004] Create index.js (#9159) --- projects/AvoLend/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/AvoLend/index.js diff --git a/projects/AvoLend/index.js b/projects/AvoLend/index.js new file mode 100644 index 00000000000..c7e8011c964 --- /dev/null +++ b/projects/AvoLend/index.js @@ -0,0 +1,8 @@ +const { compoundExports2 } = require('../helper/compound'); + +module.exports = { + blast: compoundExports2({ + comptroller: '0xe20cE0Db739e4B6Afa9989c87bE7C8C25cbeB5Ea', + cether: '0x29e15766d6b203C35c2D51AAEc4Cf964129Af088', + }), +}; From bde4a86c268dd66105ee040225f6f187934ff83e Mon Sep 17 00:00:00 2001 From: Meowstrong <158394320+Meowstrong@users.noreply.github.com> Date: Sun, 3 Mar 2024 11:47:46 +0100 Subject: [PATCH 0500/2004] added LemonBlast listing (#9157) --- projects/LemonBlast/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/LemonBlast/index.js diff --git a/projects/LemonBlast/index.js b/projects/LemonBlast/index.js new file mode 100644 index 00000000000..018a1e7110e --- /dev/null +++ b/projects/LemonBlast/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + blast: { tvl: getUniTVL({ factory: '0x31329BcDC90faD4d65764ccf91f833ec1d5fB5A4', useDefaultCoreAssets: true, fetchBalances: true, }), }, +} From 3058c47b391712d9199ef7e95f253e9689ed2cef Mon Sep 17 00:00:00 2001 From: Dzung Pham <45301835+ljttl3q04t@users.noreply.github.com> Date: Mon, 4 Mar 2024 16:45:11 +0700 Subject: [PATCH 0501/2004] update treasury: minswap (#9170) --- projects/treasury/minswap.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/treasury/minswap.js diff --git a/projects/treasury/minswap.js b/projects/treasury/minswap.js new file mode 100644 index 00000000000..ee314246df9 --- /dev/null +++ b/projects/treasury/minswap.js @@ -0,0 +1,13 @@ +const { get } = require('../helper/http'); + +module.exports = { + cardano: { + tvl: () => ({}), + ownTokens: async () => { + const pol = await get("https://api-mainnet-prod.minswap.org/landing-page/pol-details"); + return { + "coingecko:cardano": parseInt(pol[0]["totalPOL"]["totalAdaWorth"]), + } + } + }, +}; From 276cba1075c9388c5eb8b767f20ca55369243e76 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 4 Mar 2024 11:05:39 +0100 Subject: [PATCH 0502/2004] Spacebar (#9171) * feat: add Spacebar adapter * use event logs instead --------- Co-authored-by: pluto --- projects/spacebar/index.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/spacebar/index.js diff --git a/projects/spacebar/index.js b/projects/spacebar/index.js new file mode 100644 index 00000000000..93c4eaff1f6 --- /dev/null +++ b/projects/spacebar/index.js @@ -0,0 +1,37 @@ +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:0x0000000000000000000000000000000000000000": +// tvlAmount.toString(), +// } +// } + +async function tvl(_, _b, _cb, { 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, + }, +} From 5ce1cff9d2a442774a02db40a5a46d736262ec25 Mon Sep 17 00:00:00 2001 From: AkitaKen Finance <157900487+Akitaswapfi@users.noreply.github.com> Date: Mon, 4 Mar 2024 15:36:16 +0530 Subject: [PATCH 0503/2004] Add akitaswap (#9168) --- projects/Akitaswap/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/Akitaswap/index.js diff --git a/projects/Akitaswap/index.js b/projects/Akitaswap/index.js new file mode 100644 index 00000000000..1620a4a5e2e --- /dev/null +++ b/projects/Akitaswap/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + + blast: { + tvl: getUniTVL({ + factory: "0x27C429dfF0e6d3B43B2C404C35f58C2b36cef916", + useDefaultCoreAssets: true, + }), + }, +}; \ No newline at end of file From ab16cf06d3a05f904b3e8db1d710c177e07891eb Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 4 Mar 2024 03:51:35 -0700 Subject: [PATCH 0504/2004] Alongside: Change doublecounted to false (#9166) * doublecounted -> false * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/alongside/index.js | 5 ++--- projects/helper/tokenMapping.js | 8 ++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/alongside/index.js b/projects/alongside/index.js index d83daf385e4..260ce31848a 100644 --- a/projects/alongside/index.js +++ b/projects/alongside/index.js @@ -1,4 +1,5 @@ const sdk = require("@defillama/sdk"); +const { sumTokensExport } = require("../helper/unwrapLPs"); const INDEX = "0xF17A3fE536F8F7847F1385ec1bC967b2Ca9caE8D"; @@ -10,11 +11,9 @@ async function tvl(_, block, _cb) { } module.exports = { - doublecounted: true, - misrepresentedTokens: true, methodology: "Data is retrieved from calculation of market price and total supply", ethereum: { - tvl, + tvl: sumTokensExport({ owner: '0xf3bCeDaB2998933c6AAD1cB31430D8bAb329dD8C', fetchCoValentTokens: true }), }, }; diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 5602f2e2cc6..5aecd1a50dd 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -122,6 +122,14 @@ const fixBalancesTokens = { bitrock: { '0x413f0e3a440aba7a15137f4278121450416882d5': { coingeckoId: 'wrapped-bitrock', decimals: 18 }, '0xde67d97b8770dc98c746a3fc0093c538666eb493': { coingeckoId: 'bitrock', decimals: 9 }, + }, + ethereum: { + '0x0d3bd40758df4f79aad316707fcb809cd4815ffe': { coingeckoId: 'ripple', decimals: 6 }, + '0x9c05d54645306d4c4ead6f75846000e1554c0360': { coingeckoId: 'cardano', decimals: 6 }, + '0xd2aee1ce2b4459de326971de036e82f1318270af': { coingeckoId: 'dogecoin', decimals: 8 }, + '0xf4accd20bfed4dffe06d4c85a7f9924b1d5da819': { coingeckoId: 'polkadot', decimals: 10 }, + '0xff4927e04c6a01868284f5c3fb9cba7f7ca4aec0': { coingeckoId: 'bitcoin-cash', decimals: 8 }, + '0x9f2825333aa7bc2c98c061924871b6c016e385f3': { coingeckoId: 'litecoin', decimals: 8 }, } } From beaf0da4f7edb27f026c08b6e8a4d12591605a0a Mon Sep 17 00:00:00 2001 From: GhostEx <146074880+GhostExIo@users.noreply.github.com> Date: Mon, 4 Mar 2024 17:51:45 +0700 Subject: [PATCH 0505/2004] add GhostEx on blast (#9165) --- projects/ghost-ex/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/ghost-ex/index.js diff --git a/projects/ghost-ex/index.js b/projects/ghost-ex/index.js new file mode 100644 index 00000000000..6185e9a65bf --- /dev/null +++ b/projects/ghost-ex/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: getUniTVL({ + factory: "0xbf246e99a848d9bf592c216118973204162d9650", + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, +} From 8b96c9ea3793e20c11491ca942a32699f03322cd Mon Sep 17 00:00:00 2001 From: kappayield-range <131840920+kappayield-range@users.noreply.github.com> Date: Mon, 4 Mar 2024 18:52:03 +0800 Subject: [PATCH 0506/2004] [RANGE Protocol] Add Blast Thruster Factory (#9167) * Add ethereum-uniswap factory vault * Add zeta chain factory for izumi * Add Scroll Factory * code refactor * Add zkfair factory * Add Thruster factory on Blast * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/range/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/range/index.js b/projects/range/index.js index 1a1c7b2f235..5303ce5b629 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -41,6 +41,9 @@ const config ={ ], zkfair: [ { factory: '0x873fD467A2A7e4E0A71aD3c45966A84797e55B5B', fromBlock: 6740958, factoryType: 'izumi' } // izumi + ], + blast: [ + { factory: '0x72Add08DE88121007b48F964aFCf77A5AE1Da0a2', fromBlock: 228630 } // Thruster ] } @@ -104,6 +107,7 @@ Object.keys(config).forEach(chain => { ghoBals.forEach((amount, i) => { api.add(ghoToken1s[i], amount); }) + return api.getBalances() } } }) \ No newline at end of file From c9a343e173af8ad8e0dfa25561be96fae153c8f2 Mon Sep 17 00:00:00 2001 From: ZeroTwoDAO Date: Mon, 4 Mar 2024 11:52:29 +0100 Subject: [PATCH 0507/2004] Add Gas404Swap (#9164) --- projects/Gas404Swap/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/Gas404Swap/index.js diff --git a/projects/Gas404Swap/index.js b/projects/Gas404Swap/index.js new file mode 100644 index 00000000000..13b52fdfa62 --- /dev/null +++ b/projects/Gas404Swap/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + + bsc: { + tvl: getUniTVL({ + factory: "0xb6aC3914b53Cd3b39F11Fc9B380c3E605E994E20", + useDefaultCoreAssets: true, + }), + }, +}; From 940c31b9e823bb675b84d59a49f2b981807033a4 Mon Sep 17 00:00:00 2001 From: NovationFi <162035279+NovationFi@users.noreply.github.com> Date: Mon, 4 Mar 2024 18:52:56 +0800 Subject: [PATCH 0508/2004] Add novation tvl (#9163) Novation finance provides peer-to-peer lending solutions that are fully decentralized, transparent and non-custodial. offers competitive interest rates through a decentralized market that eliminates intermediaries. --- projects/novation/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/novation/index.js diff --git a/projects/novation/index.js b/projects/novation/index.js new file mode 100644 index 00000000000..aeb46c52392 --- /dev/null +++ b/projects/novation/index.js @@ -0,0 +1,14 @@ +const { compoundExports2 } = require("../helper/compound"); +const config = { + blast: '0x3090Cd174218BB451C7865bDC621d47E1Bd6831C', +} + +Object.keys(config).forEach(chain => { + const comptroller = config[chain] + module.exports[chain] = compoundExports2({ + comptroller, fetchBalances: true, abis: { + getAllMarkets: "address[]:allMarkets", + totalBorrows: "uint256:totalBorrow", + }, + }) +}) \ No newline at end of file From 60ff4f1e2a304ad269b0c8f8b92205b7f0b1e6a3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 4 Mar 2024 12:27:03 +0100 Subject: [PATCH 0509/2004] Add Rawr on Blast and refactor iziswapExport (#9172) * Add Rawr on Blast * Remove unused code and refactor iziswapExport --------- Co-authored-by: Joe Zhu --- projects/helper/iziswap.js | 60 +++++++++++++++++++++++++++++++++ projects/izumi-iziswap/abi.js | 6 ---- projects/izumi-iziswap/index.js | 53 ++--------------------------- projects/merlinswap/index.js | 57 ++----------------------------- projects/rawr/index.js | 9 +++++ 5 files changed, 73 insertions(+), 112 deletions(-) create mode 100644 projects/helper/iziswap.js delete mode 100644 projects/izumi-iziswap/abi.js create mode 100644 projects/rawr/index.js diff --git a/projects/helper/iziswap.js b/projects/helper/iziswap.js new file mode 100644 index 00000000000..37ac43dea4b --- /dev/null +++ b/projects/helper/iziswap.js @@ -0,0 +1,60 @@ +const { sumTokens2 } = require("./unwrapLPs") +const ADDRESSES = require('../helper/coreAssets.json') + +function iziswapExport({ poolHelpers, blacklistedTokens = []}) { + return async (_, _1, _2, { api }) => { + const toa = [] + const chunkSize = 10 + const allPools = [] + const allPoolMetas = [] + + for(const manager of poolHelpers) { + let i = 1 + let foundLastPool = false + const poolMetaData = [] + 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) + } + + allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) + return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, permitFailure: true}) + + } +} + +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/izumi-iziswap/abi.js b/projects/izumi-iziswap/abi.js deleted file mode 100644 index 85b7159ba48..00000000000 --- a/projects/izumi-iziswap/abi.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - 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)", -} \ No newline at end of file diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 9249da1e34a..ec31ff7e2fc 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -1,7 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') - -let abi = require('./abi') -const { sumTokens2, } = require('../helper/unwrapLPs') +const { iziswapExport } = require('../helper/iziswap') const nullAddress = ADDRESSES.null const poolHelpers = { @@ -38,53 +36,6 @@ const blacklistedTokens = [ '0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD ] -const tvl = async (_, _1, _2, { api }) => { - const chain = api.chain - const toa = [] - const chunkSize = 10 - const bTokens = [...blacklistedTokens] - const allPools = [] - const allPoolMetas = [] - - for(const manager of poolHelpers[chain]) { - let i = 1 - let foundLastPool = false - const poolMetaData = [] - 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 === nullAddress && 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) - } - - allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) - // if (chain === 'era') bTokens.push(ADDRESSES.arbitrum.WETH) - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, permitFailure: true}) -} - Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl } + module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], blacklistedTokens }), } }) \ No newline at end of file diff --git a/projects/merlinswap/index.js b/projects/merlinswap/index.js index cb8a09596f4..00298ce19db 100644 --- a/projects/merlinswap/index.js +++ b/projects/merlinswap/index.js @@ -1,63 +1,10 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const { iziswapExport } = require('../helper/iziswap') -let abi = require('../izumi-iziswap/abi') -const { sumTokens2, } = require('../helper/unwrapLPs') - -const nullAddress = ADDRESSES.null const poolHelpers = { 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], } // iziswap liquidityManager contracts -const blacklistedTokens = [ -] - -const tvl = async (_, _1, _2, { api }) => { - const chain = api.chain - const toa = [] - const chunkSize = 10 - const bTokens = [...blacklistedTokens] - const allPools = [] - const allPoolMetas = [] - - for(const manager of poolHelpers[chain]) { - let i = 1 - let foundLastPool = false - const poolMetaData = [] - 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 === nullAddress && 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) - } - - allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) - // if (chain === 'era') bTokens.push(ADDRESSES.arbitrum.WETH) - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens: bTokens, permitFailure: true}) -} Object.keys(poolHelpers).forEach(chain => { - module.exports[chain] = { tvl } + module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], }), } }) \ No newline at end of file diff --git a/projects/rawr/index.js b/projects/rawr/index.js new file mode 100644 index 00000000000..4d5d1a604af --- /dev/null +++ b/projects/rawr/index.js @@ -0,0 +1,9 @@ +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 From bae69661bf4324fc7aefd7340157a18bbc657519 Mon Sep 17 00:00:00 2001 From: brightiron <95196612+brightiron@users.noreply.github.com> Date: Mon, 4 Mar 2024 05:28:08 -0600 Subject: [PATCH 0510/2004] Baseline Protocol Adapter (#9158) * baseline adapter * only include baseline managed LP position * cleanup. add doublecounted flag. remove bAsset * add borrowed reserves * cleanup unused calls * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/baseline/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/baseline/index.js diff --git a/projects/baseline/index.js b/projects/baseline/index.js new file mode 100644 index 00000000000..2cde2fd7c39 --- /dev/null +++ b/projects/baseline/index.js @@ -0,0 +1,34 @@ +const BASELINE_CONTRACT = "0x14eB8d9b6e19842B5930030B18c50B0391561f27"; + +async function tvl(_, _1, _2, { 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)) +} + +async function borrowed(_, _1, _2, { api }) { + const lentReserves = await api.call({ abi: abi.totalLentReserves, target: BASELINE_CONTRACT, }); + api.addGasToken(lentReserves) +} + +module.exports = { + doublecounted: true, + blast: { + tvl, + borrowed, + }, +}; + +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)", +}; From 345532da24d96553a5d65780052e56ded54ac853 Mon Sep 17 00:00:00 2001 From: Lim Yee Han Date: Mon, 4 Mar 2024 20:32:27 +0900 Subject: [PATCH 0511/2004] v2 update (#9100) * Resolve merge conflicts * fix library issues * pass tests * Remove API server * remove redundant variable --- projects/repl/abi.json | 5 +- projects/repl/index.js | 101 +++++++++-------------------------------- 2 files changed, 25 insertions(+), 81 deletions(-) diff --git a/projects/repl/abi.json b/projects/repl/abi.json index da6881a626a..fb2a47eee72 100644 --- a/projects/repl/abi.json +++ b/projects/repl/abi.json @@ -1,6 +1,7 @@ { - "getAllAgents": "function getAllAgents() view returns ((address agent, address owner, uint64 originOwnerID, uint64 curOwnerID, uint64 actorID, uint64 agentID, uint256 targetPledge, uint256 safePledge, uint256 lastSafePledgeUpdateTime, uint256 recoveredPledge, uint8 status, (bytes val, bool neg) availableBalance)[])", + "getAllActiveAgents": "function getAllActiveAgents() 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)[])", + "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" -} \ No newline at end of file +} diff --git a/projects/repl/index.js b/projects/repl/index.js index f00e7593efc..f6969c62244 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -1,89 +1,32 @@ -const { nullAddress } = require("../helper/tokenMapping"); -const { get } = require("../helper/http"); -const abi = require("./abi.json"); - -// const REPL_CONTRACT = "0xD51Cb0FA9A91f156a80188a18f039140704b8df7"; -// const REPL_HELPER_CONTRACT = "0x07047192D4492d32eE117a9588576896e50975E3"; -const AGENT_HELPER_CONTRACT = "0xdB49Cc86F799804F4a966dc0c7707c2AFF6a2F28"; -const WFIL_WPFIL_POOL_ADDRESS = "0x443A6243A36Ef0ae1C46523d563c15abD787F4E9"; -const PFIL_CONTRACT = "0xAaa93ac72bECfbBc9149f293466bbdAa4b5Ef68C"; -const WPFIL_CONTRACT = "0x57E3BB9F790185Cfe70Cc2C15Ed5d6B84dCf4aDb"; -const WFIL_CONTRACT = "0x60E1773636CF5E4A227d9AC24F20fEca034ee25A"; - -// Obtain information of miners delegated to the protocol -const getAllDelegatedMiners = (agents) => { - // If originOwner !== 0, it means the miner is delegated - const delegatedMiners = agents - .filter((agent) => agent.originOwner !== 0) - .map((agent) => { - return { - actorID: agent.actorID, - agentAddress: agent.agent, - }; - }); - - return delegatedMiners; -}; - -// Make an API call to get actual miner info -const getActualMinerInfo = async (agentAddress, minerId) => { - const url = `https://pfil-server.repl.fi/terminate_line?agent_address=${agentAddress}&miner_id=${minerId}`; - const resp = await get(url); - return resp; -}; - -// Total Eligible Asset Value of all miners delegated to the protocol -const getTotalEligibleAssets = async (agents) => { - const delegatedMiners = getAllDelegatedMiners(agents); - let minerInfos = []; - // Iterate on miners - for (let i = 0; i < delegatedMiners.length; i++) { - const miner = delegatedMiners[i]; - try { - const actualMinerInfo = await getActualMinerInfo(miner.agentAddress, miner.actorID); - if (actualMinerInfo.error !== "") - continue; - - minerInfos.push(actualMinerInfo); - } catch (e) { - console.log(`Error fetching miner info for ${miner.agentAddress}: ${e}`); - } - } - - return minerInfos.reduce((sum, minerInfo) => sum + +minerInfo.eligible_asset, 0); -}; - -// Calculate total PFIL supply value in terms of FIL -const calculateTotalPFILSupply = (totalPFILSupply, wpFILprice, PFILByWPFIL) => { - const totalSupplyValue = totalPFILSupply * wpFILprice * PFILByWPFIL - return totalSupplyValue; -}; - -// Convert sqrt96price to pool price -const SqrtToPrice = (sqrt96) => { - const price = Number(sqrt96) ** 2 / 2 ** 192; - return price +const { nullAddress } = require('../helper/tokenMapping'); +const { get } = require('../helper/http'); +const abi = require('./abi.json'); +const { json } = require('starknet'); +const { ethers } = require('ethers'); +const http = require('../helper/http'); + +const WFIL_WPFIL_POOL_ADDRESS = '0x443A6243A36Ef0ae1C46523d563c15abD787F4E9'; +const PFIL_CONTRACT = '0xAaa93ac72bECfbBc9149f293466bbdAa4b5Ef68C'; +const WPFIL_CONTRACT = '0x57E3BB9F790185Cfe70Cc2C15Ed5d6B84dCf4aDb'; +const WFIL_CONTRACT = '0x60E1773636CF5E4A227d9AC24F20fEca034ee25A'; +const REPL_HELPER_CONTRACT = '0x52d41C90ce592229F9fC0dA6Ef7b7cc26472B4E9'; + +// 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 (_, _1, _2, { api }) => { - const [agents, slot0, totalPFILSupply, PFILperToken, poolWFILBal,] = await Promise.all([ - api.call({ abi: abi.getAllAgents, target: AGENT_HELPER_CONTRACT }), - api.call({ abi: abi.slot0, target: WFIL_WPFIL_POOL_ADDRESS }), - api.call({ abi: abi.totalSupply, target: PFIL_CONTRACT }), - api.call({ abi: abi.PFILPerToken, target: WPFIL_CONTRACT }), - api.call({ abi: "erc20:balanceOf", target: WFIL_CONTRACT, params: WFIL_WPFIL_POOL_ADDRESS, }), + const [tvlComponents, activeAgents] = await Promise.all([ + api.call({ abi: abi.getTVLComponents, target: REPL_HELPER_CONTRACT }), + api.call({ abi: abi.getAllActiveAgents, target: REPL_HELPER_CONTRACT }), ]); - const wpFILprice = SqrtToPrice(slot0.sqrtPriceX96); - - const totalEligibleAssetsValue = await getTotalEligibleAssets(agents); - // const totalSupplyValue = calculateTotalPFILSupply(totalPFILSupply, wpFILprice, PFILperToken / 1e18); - - api.add(nullAddress, totalEligibleAssetsValue); - api.add(nullAddress, poolWFILBal); - // api.add(nullAddress, totalSupplyValue); + const minerAssets = getMinerAssets(activeAgents); + api.add(nullAddress, minerAssets); + api.add(nullAddress, tvlComponents); }, }, }; From 1e154ce4959adc84e38df8aad8c0fbb0ec9ef771 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 4 Mar 2024 13:04:56 +0100 Subject: [PATCH 0512/2004] update syncus --- projects/helper/aave.js | 4 ++-- projects/syncus/index.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/helper/aave.js b/projects/helper/aave.js index d1e60fd5772..04d96b1c281 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -189,13 +189,13 @@ const oracleAbis = { getAssetsPrices: "function getAssetsPrices(address[] assets) view returns (uint256[])", } -function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}, fromBlock, } = {}) { +function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}, fromBlock, blacklistedTokens = [] } = {}) { async function tvl(_, _b, _c, { api }) { const data = await getReservesData(api) const tokensAndOwners = data.map(i => ([i.underlying, i.aTokenAddress])) if (!useOracle) - return sumTokens2({ tokensAndOwners, api }) + 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) => { diff --git a/projects/syncus/index.js b/projects/syncus/index.js index 6f2f4a84bc3..9314a662d5d 100644 --- a/projects/syncus/index.js +++ b/projects/syncus/index.js @@ -1,4 +1,5 @@ const { staking } = require('../helper/staking') +const { aaveV2Export } = require('../helper/aave') const stakingAddress = "0xc738CDb5140d6b7F688ba05a25c8a51568622D96"; const syncAddress = "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0"; @@ -6,5 +7,6 @@ module.exports = { ethereum: { tvl: () => ({}), staking: staking(stakingAddress, syncAddress), - } + }, + era: aaveV2Export('0xaa71728Aa548658FAbBd37C72C0e2a6234c193F1', { blacklistedTokens: ['0x2d20b8891f2f9ed0ebf1b179b2279f936dec9282']}) }; From 35fcbc5d87895b3f34fd5ea43a273134b1e952d0 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 4 Mar 2024 12:47:10 +0000 Subject: [PATCH 0513/2004] add hallamrk whitewhale (#9174) --- projects/whitewhale-dex/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/whitewhale-dex/index.js b/projects/whitewhale-dex/index.js index a2e840d8a9d..3089d9a942c 100644 --- a/projects/whitewhale-dex/index.js +++ b/projects/whitewhale-dex/index.js @@ -17,6 +17,7 @@ module.exports = { methodology: "Liquidity on the DEX", hallmarks: [ [1651881600, "UST depeg"], + [1676300400,"Migaloo Chain Launch"] ] } From 6a672f40a4ce1d12f27d35f61f3c2874cb03f0d7 Mon Sep 17 00:00:00 2001 From: Milan Kotykov Date: Mon, 4 Mar 2024 11:18:06 -0300 Subject: [PATCH 0514/2004] add `base` token to Allbridge Core (#9173) --- projects/allbridge-core/contracts.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/allbridge-core/contracts.json b/projects/allbridge-core/contracts.json index 692721a15b5..e1118a1d209 100644 --- a/projects/allbridge-core/contracts.json +++ b/projects/allbridge-core/contracts.json @@ -91,6 +91,15 @@ } ], "bridgeAddress": "BrdgN2RPzEMWF96ZbnnJaUtQDQx7VRXYaHHbYCBvceWB" + }, + "base": { + "tokens": [ + { + "poolAddress": "0xDA6bb1ec3BaBA68B26bEa0508d6f81c9ec5e96d5", + "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" + } + ], + "bridgeAddress": "0x001E3f136c2f804854581Da55Ad7660a2b35DEf7" } } From 9f16d22276e0ebfb5b40c4bb0e95719d6ccaa17c Mon Sep 17 00:00:00 2001 From: wandbuild <138229969+wandbuild@users.noreply.github.com> Date: Mon, 4 Mar 2024 22:18:35 +0800 Subject: [PATCH 0515/2004] Add TVL and Treasury of Wand Protocol's new $USDB Stable Vault (#9176) * Update tvl and treasury of wand protocol * Add $USDB stable value tvl and treasury of wand protocol --- projects/treasury/wand.js | 3 ++- projects/wand/index.js | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/treasury/wand.js b/projects/treasury/wand.js index 248e40edefe..9cee1189aac 100644 --- a/projects/treasury/wand.js +++ b/projects/treasury/wand.js @@ -6,7 +6,8 @@ const config = { "0x462bd2d3c020f6986c98160bc4e189954f49634b", // treasury ], tokens: [ - '0x0000000000000000000000000000000000000000' // $ETH + '0x0000000000000000000000000000000000000000', // $ETH + '0x4300000000000000000000000000000000000003' // $USDB ], }, } diff --git a/projects/wand/index.js b/projects/wand/index.js index f558f4cf253..f414e6c1056 100644 --- a/projects/wand/index.js +++ b/projects/wand/index.js @@ -6,9 +6,13 @@ module.exports = { owners: [ '0xDC3985196D263E5259AB946a4b52CEDCBaDC1390', // $ETH vault's token pot '0xfD7D3d51b081FBeA178891839a9FEd5ca7896bDA', // $ETH vault's pty pool buy low - '0x2F5007df87c043552f3c6b6e5487B2bDc92F0232' // $ETH vault's pty pool sell high + '0x2F5007df87c043552f3c6b6e5487B2bDc92F0232', // $ETH vault's pty pool sell high + '0x05c061126A82DC1AfF891b9184c1bC42D380a2ff' // $USDB vault's token pot + ], + tokens: [ + '0x0000000000000000000000000000000000000000', // $ETH + '0x4300000000000000000000000000000000000003' // $USDB ], - tokens: [ '0x0000000000000000000000000000000000000000'], // $ETH }), } }; \ No newline at end of file From 3a1bafa44d4cf94676dd65c318fcc41fb1dd7b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Vodr=C3=A1=C5=BEka?= <36418132+DaveVodrazka@users.noreply.github.com> Date: Mon, 4 Mar 2024 16:25:53 +0100 Subject: [PATCH 0516/2004] feat: update carmine options (#9175) --- projects/carmine-options/api.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/carmine-options/api.js b/projects/carmine-options/api.js index 01a598808f4..82e5977750e 100644 --- a/projects/carmine-options/api.js +++ b/projects/carmine-options/api.js @@ -1,13 +1,19 @@ const { call, multiCall, number, sumTokens, } = require("../helper/chain/starknet"); const abi = require("./abi"); -const amm = "0x076dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa"; +const legacyAmm = "0x076dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa"; +const amm = "0x047472e6755afc57ada9550b6a3ac93129cc4b5f98f51c73e0644d129fd208d9"; async function tvl(_, _1, _2, { api }) { - let lpTokens = await call({ abi: abi.get_all_lptoken_addresses, target: amm, }) - lpTokens = number.bigNumberishArrayToHexadecimalStringArray(lpTokens.array.toString().split(',')) - let underlyings = await multiCall({ abi: abi.get_underlying_token_address, target: amm, calls: lpTokens, }); - return sumTokens({ owner: amm, tokens: underlyings, 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 = { From bd2f7a615a439feb6de31c5333736cfae1753b72 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 4 Mar 2024 17:08:14 +0100 Subject: [PATCH 0517/2004] track filecoin tvl --- projects/uniswap/index.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 814e57d0830..4792640c83b 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -42,6 +42,24 @@ function v3TvlPaged(chain) { } } +async function filecoinTvl(_, _b, _cb, { api, }) { + const { result: { pools } } = await configPost('oku-trade/filecoin', 'https://cush.apiary.software/filecoin', { + "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]) + return api.sumTokens({ ownerTokens }) +} + + module.exports = { methodology: `Counts the tokens locked on AMM pools, pulling the data from the 'ianlapham/uniswapv2' subgraph`, timetravel: false, @@ -60,9 +78,10 @@ module.exports = { moonbeam: { factory: '0x28f1158795a3585caaa3cd6469cd65382b89bb70', fromBlock: 4313505 }, era: { factory: '0x8FdA5a7a8dCA67BBcDd10F02Fa0649A937215422', fromBlock: 12637080 }, boba: { factory: "0xFFCd7Aed9C627E82A765c3247d562239507f6f1B", fromBlock: 969351, }, - rsk: { factory: "0xAf37Ec98A00fD63689cF3060Bf3b6784e00CaD82", fromBlock: 5829207, }, + rsk: { factory: "0xAf37Ec98A00fD63689cF3060Bf3b6784e00CaD82", fromBlock: 5829207, }, scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, - }) + }), + filecoin: { tvl: filecoinTvl }, } const chains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'bsc', 'avax', 'base'] From a370c062565743df04a8288e5c9b95363b3a773f Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Mon, 4 Mar 2024 17:03:38 +0000 Subject: [PATCH 0518/2004] blast bridge --- projects/blast-bridge/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/blast-bridge/index.js diff --git a/projects/blast-bridge/index.js b/projects/blast-bridge/index.js new file mode 100644 index 00000000000..097b8fcc950 --- /dev/null +++ b/projects/blast-bridge/index.js @@ -0,0 +1,15 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0xa230285d5683C74935aD14c446e137c8c8828438", + "0x98078db053902644191f93988341E31289E1C8FE", + ], + fetchCoValentTokens: true, + }), + }, +}; From 9bdf4aef9991ae4e04348ee3b7b522aec306dc4e Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Mon, 4 Mar 2024 17:05:43 +0000 Subject: [PATCH 0519/2004] mode --- projects/mode/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/mode/index.js diff --git a/projects/mode/index.js b/projects/mode/index.js new file mode 100644 index 00000000000..fdf01d91751 --- /dev/null +++ b/projects/mode/index.js @@ -0,0 +1,15 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07", + "0x735aDBbE72226BD52e818E7181953f42E3b0FF21", + ], + fetchCoValentTokens: true, + }), + }, +}; From bfc41b81b861647b857c573291c9364689d98605 Mon Sep 17 00:00:00 2001 From: Rodrigo Gaona <43006704+Gaonuk@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:31:10 -0300 Subject: [PATCH 0520/2004] =?UTF-8?q?=E2=9C=A8=20Update=20Arch=20Adapter:?= =?UTF-8?q?=20Add=20ABDY=20token=20(#9184)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/arch-ethereum-web-3/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/projects/arch-ethereum-web-3/index.js b/projects/arch-ethereum-web-3/index.js index beca92984d8..4d0308ef9f3 100644 --- a/projects/arch-ethereum-web-3/index.js +++ b/projects/arch-ethereum-web-3/index.js @@ -12,6 +12,10 @@ const chambers = [ '0x89c53B02558E4D1c24b9Bf3beD1279871187EF0B' ] +const polygonChambers = [ + '0xde2925d582fc8711a0e93271c12615bdd043ed1c', +] + const setAbi = 'address[]:getComponents' const chamberAbi = 'address[]:getConstituentsAddresses' @@ -26,9 +30,20 @@ async function tvl(timestamp, block, _, { api }) { return balances } +async function polygonTvl(timestamp, block, _, { 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 From 5cb8d45e7eee161aae927c221783a0103aecc475 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:45:31 +0100 Subject: [PATCH 0521/2004] synapse: track blast --- projects/synapse/config.js | 28 ++++++++++++++++++++++++++++ test.js | 5 ++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/projects/synapse/config.js b/projects/synapse/config.js index e16d4ef4dac..e8e1fe143c6 100644 --- a/projects/synapse/config.js +++ b/projects/synapse/config.js @@ -435,4 +435,32 @@ module.exports = { ] } }, + blast: { + tvl: { + bridge: { + address: '0x55769baf6ec39b3bf4aae948eb890ea33307ef3c', + tokens: [ + // '0xce971282faac9fabcf121944956da7142cccc855', //nETH + // '0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0', // nUSD + // '0x9592f08387134e218327E6E8423400eb845EdE0E' // SYN + ] + }, + pools: [ + { + pool: '0xa4bd1AAD7cF04567c10f38FC4355E91bba32aC9c', // Stableswap + tokens: [ + '0x4300000000000000000000000000000000000003', // USDB + // '0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0', // nUSD + ] + }, + { + pool: '0x999fcd13C54B26E02a6Ccd185f71550b3a4641c0', // ETH pool + tokens: [ + '0x4300000000000000000000000000000000000004', // WETH + // '0xce971282fAAc9faBcF121944956da7142cccC855', // nETH + ] + }, + ] + } + }, } diff --git a/test.js b/test.js index f83f5ce5895..bc0018f9871 100644 --- a/test.js +++ b/test.js @@ -1,5 +1,9 @@ #!/usr/bin/env node +const handleError = require('./utils/handleError') +process.on('unhandledRejection', handleError) +process.on('uncaughtException', handleError) + const { ENV_KEYS } = require("./projects/helper/env"); const path = require("path"); require("dotenv").config(); @@ -11,7 +15,6 @@ const { util } = require("@defillama/sdk"); const sdk = require("@defillama/sdk"); const whitelistedExportKeys = require('./projects/helper/whitelistedExportKeys.json') const chainList = require('./projects/helper/chains.json') -const handleError = require('./utils/handleError') const { log, diplayUnknownTable, sliceIntoChunks } = require('./projects/helper/utils') const { normalizeAddress } = require('./projects/helper/tokenMapping') const { PromisePool } = require('@supercharge/promise-pool') From ae615fd1db897ad8e8b19a005231afe664a0e4e0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:48:20 +0100 Subject: [PATCH 0522/2004] bugfix --- projects/uniswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 4792640c83b..121b2070f7d 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require('../helper/uniswapV3') -const { cachedGraphQuery } = require('../helper/cache') +const { cachedGraphQuery, configPost } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') const graphs = { From 44ca2fed31e32a316d3986170c9f749c8596252a Mon Sep 17 00:00:00 2001 From: Kacper Bak Date: Mon, 4 Mar 2024 15:49:02 -0700 Subject: [PATCH 0523/2004] Added Zircuit Staking TVL (#9185) --- projects/zircuit/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/zircuit/index.js diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js new file mode 100644 index 00000000000..5d5398fbd12 --- /dev/null +++ b/projects/zircuit/index.js @@ -0,0 +1,26 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const ZIRCUIT_STAKING_CONTRACT = '0xf047ab4c75cebf0eb9ed34ae2c186f3611aeafa6'; + +const TOKEN_CONTRACTS = [ + '0xa1290d69c65a6fe4df752f95823fae25cb99e5a7', // rsETH + '0xbf5495Efe5DB9ce00f80364C8B423567e58d2110', // ezETH + '0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549', // lsETH + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // ETH + '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', // rswETH + '0x49446A0874197839D15395B908328a74ccc96Bc0', // mstETH + '0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10', // mwBETH + '0x32bd822d615A3658A68b6fDD30c2fcb2C996D678', // mswETH + '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', // wstETH + '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', // weETH + '0xf951E335afb289353dc249e82926178EaC7DEd78' // swETH +]; + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owner: ZIRCUIT_STAKING_CONTRACT, + tokens: TOKEN_CONTRACTS, + }), + } +}; \ No newline at end of file From 4ec10eed7281f2f6555893bd85ae39da7f717d2a Mon Sep 17 00:00:00 2001 From: ezoia-com <53337996+ezoia-com@users.noreply.github.com> Date: Tue, 5 Mar 2024 05:51:34 +0700 Subject: [PATCH 0524/2004] Update index.js (#9177) --- projects/thetanuts/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index d8a06913b51..90d3f49e9fc 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -32,6 +32,11 @@ const indexETH_BiWeekly_B = "0x71F5d6fa67c2C9D2b76246569093390d02F80678" 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' + // Avalanche Vaults const avaxCallVault = '0xd06Bd68d58eD40CC2031238A3993b99172ea37cA' const avaxPutVault = '0xa84aA41B6287aFE467ccE688f3796A2205198F07' @@ -78,7 +83,7 @@ const bobaPutVault = '0xff5fe7909fc4d0d6643f1e8be8cba72610d0b485' const arbCallVault = '0x0833EC3262Dcc417D88f85Ed5E1EBAf768080f41' const arbPutVault = '0xf94ea5B18401821BE07FBfF535B8211B061A7F70' const ethCallVaultArb = '0x1D1CD4abe0F2AF9d79b5e3149BF4A503f97C1EAd' -const ethPutVaulArb = '0xA8459eC6DF0D9a61058C43a308dD8A2CEc9d550E' +const ethPutVaultArb = '0xA8459eC6DF0D9a61058C43a308dD8A2CEc9d550E' // Assets locked in Aave V2 fork const aArb = '0x116a7f52556a57F807CEACe228242C3c91D2C7E5' const aUsdc = '0xBEe683e6e5CE1e7Ea07c6f11DF240AcD92c33632' @@ -184,6 +189,9 @@ const config = { [ausdc, indexUSDC_MATIC_2wk_a,], [ausdc, indexUSDC_BNB_2wk_b,], [ausdc, ethPutVault,], + + [PTeETH_27JUN24, aPTeETH_27JUN24,], + [weth, aWETH,], ] }, avax: { @@ -197,7 +205,7 @@ const config = { [arb, arbCallVault,], [usdc_arb, arbPutVault,], [arb, ethCallVaultArb,], - [usdc_arb, ethPutVaulArb,], + [usdc_arb, ethPutVaultArb,], [arb, aArb,], [usdc_arb, aUsdc,], ], From 1a6629a1ca52717c5ed5bcfcdb4f268c28caa8d9 Mon Sep 17 00:00:00 2001 From: peroxy Date: Mon, 4 Mar 2024 23:53:20 +0100 Subject: [PATCH 0525/2004] Add JLP market to kamino lending * Add JLP market to kamino lending --- projects/kamino-lending/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/kamino-lending/index.js b/projects/kamino-lending/index.js index bbe0077ee62..a96980b9424 100644 --- a/projects/kamino-lending/index.js +++ b/projects/kamino-lending/index.js @@ -7,7 +7,7 @@ const { MintLayout } = require("../helper/utils/solana/layouts/mixed-layout"); async function tvl() { const connection = getConnection(); const programId = new PublicKey('KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD'); - const markets = ['7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF']; + const markets = ['7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF', 'DxXdAyU3kCjnyggvHmY5nAwg5cRbbmdyX3npfDMjjMek']; const lendingMarketAuthSeed = 'lma'; const tokensAndOwners = []; const ktokens = {}; From 8a5653fcccef45285c68559bd600aef07760fb33 Mon Sep 17 00:00:00 2001 From: Brandon Date: Mon, 4 Mar 2024 14:55:06 -0800 Subject: [PATCH 0526/2004] Update/add chains staking (#9180) * feat: :sparkles: Initial TVL integration Will support first 1000 vaults on polygon, using steerprotocol subgraph * feat: :sparkles: Include Arbitrum Includes Arbitrum vault addresses to scrape for token amounts * Add chains + staking pools --- projects/steer/index.js | 44 +++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/projects/steer/index.js b/projects/steer/index.js index ec4d9c65604..5db90bd9320 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -1,5 +1,6 @@ const { cachedGraphQuery } = require('../helper/cache') -const { staking, stakings } = require("../helper/staking"); +const { stakings } = require("../helper/staking"); + const supportedChains = [ { @@ -74,18 +75,36 @@ const supportedChains = [ chainId: 169, identifier: 'manta' }, - // { - // name: 'PolygonZKEVM', - // subgraphEndpoint: 'https://subgraph.steer.finance/zkevm/subgraphs/name/steerprotocol/steer-zkevm', - // chainId: 1101, - // identifier: 'polyzkevm' - // }, + { + name: 'PolygonZKEVM', + subgraphEndpoint: 'https://subgraph.steer.finance/zkevm/subgraphs/name/steerprotocol/steer-zkevm', + chainId: 1101, + identifier: 'polygon_zkevm' + }, { name: 'Scroll', subgraphEndpoint: 'https://subgraph.steer.finance/scroll/subgraphs/name/steerprotocol/steer-scroll', 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://subgraph.steer.finance/astar/subgraphs/name/steerprotocol/steer-astar', + chainId: 4369, + identifier: 'astar' + }, + { + name: 'Fantom', + subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/steer-protocol-fantom-test', + chainId: 250, + identifier: 'fantom' + }, // { // name: 'Celo', // subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/steer-test-celo', @@ -118,4 +137,13 @@ supportedChains.forEach(chain => { } }) -module.exports.arbitrum.staking = stakings(["0xB10aB1a1C0E3E9697928F05dA842a292310b37f1", "0x0b619438d1E8b8c205656502de59Af2Af71C43e0", "0x25Ef108B328Cf752F0E0b0169D499Db164173763"], "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", "arbitrum") +module.exports.arbitrum.staking = stakings( + [ + "0xB10aB1a1C0E3E9697928F05dA842a292310b37f1", + "0x25Ef108B328Cf752F0E0b0169D499Db164173763", + "0x0b619438d1E8b8c205656502de59Af2Af71C43e0", + "0xaCdC6fC8F84fbA26f065489a7bf5837D7CDf546F", + ], + "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", + "arbitrum" +) From 8b29c5a0de01802a48ae6512d5ca25c1b9d616d1 Mon Sep 17 00:00:00 2001 From: local dev Date: Tue, 5 Mar 2024 09:34:32 +0700 Subject: [PATCH 0527/2004] Fix err text and add CELL token balance --- projects/cellana/index.js | 65 ++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 1de1562fcbb..0cdd66cc667 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -1,25 +1,72 @@ const sdk = require("@defillama/sdk"); +const http = require('../helper/http') +const BigNumber = require("bignumber.js"); const { getResources, } = require("../helper/chain/aptos"); const { transformBalances } = require("../helper/portedTokens"); - +const { aQuery } = require('../helper/chain/aptos') +const coinGecKoApi = 'https://api.coingecko.com/api/v3/simple/price?ids=aptos%2Captos&vs_currencies=usd'; +async function query(api) { + return http.get(`${api}`) +} +const util = require("util") let resourcesCache - -async function _getResources() { - if (!resourcesCache) resourcesCache = getResources("0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426") +const CELL_fungible_asset_address = '0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12' +const APT_fungible_asset_address = '0xedc2704f2cef417a06d1756a04a16a9fa6faaed13af469be9cdfcac5a21a8e2e' +async function _getResources(address) { + if (!resourcesCache) resourcesCache = getResources(address) return resourcesCache } const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") +async function _getCELLbalances() { + const balances = {} + const data = await getResources('0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1') + const { aptos } = await query(coinGecKoApi); + const aptosPrice = aptos.usd; + const poolsAddresses = data.find(i => i.type.includes('::liquidity_pool::LiquidityPoolConfigs'))?.data.all_pools?.inline_vec + for (const pool of poolsAddresses) { + const fungibleAssetPoolStore = (await getResources(pool.inner)).find(i => i.type.includes('liquidity_pool::LiquidityPool'))?.data + const fungibleAssetAddressToken1 = fungibleAssetPoolStore?.token_store_1?.inner + const fungibleAssetAddressToken2 = fungibleAssetPoolStore?.token_store_2?.inner + + const fungibleAssetTokenStore_1 = (await getResources(fungibleAssetAddressToken1)).find(i => i.type.includes('fungible_asset::FungibleStore'))?.data + const fungibleAssetTokenStore_2 = (await getResources(fungibleAssetAddressToken2)).find(i => i.type.includes('fungible_asset::FungibleStore'))?.data + const token_1_address = fungibleAssetTokenStore_1?.metadata?.inner + const token_2_address = fungibleAssetTokenStore_2?.metadata?.inner + // sdk.util.sumSingleBalance(balances, fungibleAssetTokenStore_1?.metadata?.inner, fungibleAssetTokenStore_1?.balance||0); + // sdk.util.sumSingleBalance(balances, fungibleAssetTokenStore_2?.metadata?.inner, fungibleAssetTokenStore_2?.balance||0); + if (token_1_address == CELL_fungible_asset_address) { + const cell_balance = fungibleAssetTokenStore_1?.balance; + sdk.util.sumSingleBalance(balances, token_1_address, cell_balance || 0); + + // //caculator CELL price + // if (token_2_address == APT_fungible_asset_address) { + // const apt_balance = fungibleAssetTokenStore_2?.balance; + // const cell_price = (new BigNumber(apt_balance)).div(new BigNumber(cell_balance)).toNumber() * aptosPrice + // } + + } else if (token_2_address == CELL_fungible_asset_address) { + const cell_balance = fungibleAssetTokenStore_2?.balance; + sdk.util.sumSingleBalance(balances, token_2_address, cell_balance || 0); + + } + + return balances; + + } + + +} module.exports = { timetravel: false, misrepresentedTokens: true, methodology: - "Counts the lamports in each coin container in the Aries contract account.", + "Counts the lamports in each coin container in the Cellena contract account.", aptos: { tvl: async () => { const balances = {}; - const data = await _getResources() + const data = await _getResources('0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426') const coinContainers = data.filter(reserveContrainerFilter) .map((i) => ({ lamports: i.data.coin.value, @@ -29,8 +76,10 @@ module.exports = { coinContainers.forEach(({ lamports, tokenAddress }) => { sdk.util.sumSingleBalance(balances, tokenAddress, lamports); }); - - return transformBalances("aptos", balances); + let cellBlanaces = await _getCELLbalances(); + sdk.util.mergeBalances(balances, cellBlanaces) + const response = await transformBalances("aptos", balances); + return response; }, }, From ff7d346cd9f687f084d4644d5e40a1b4e0fbd5ef Mon Sep 17 00:00:00 2001 From: William X <24722014+mergd@users.noreply.github.com> Date: Tue, 5 Mar 2024 01:18:43 -0800 Subject: [PATCH 0528/2004] Create blume-fm.js (#9189) * Create blume-fm.js * move to folder * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blume-fm/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/blume-fm/index.js diff --git a/projects/blume-fm/index.js b/projects/blume-fm/index.js new file mode 100644 index 00000000000..8738c3efcf0 --- /dev/null +++ b/projects/blume-fm/index.js @@ -0,0 +1,7 @@ +const { compoundExports2 } = require("../helper/compound"); + +module.exports = { + blast: compoundExports2({ + comptroller: "0x4EdF556c5664b4f86Ec50dB0F58B58B26210DC31", + }), +}; From ded42d6ee2f0a3103989478eb7f2e8924c7a089a Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Tue, 5 Mar 2024 04:33:20 -0500 Subject: [PATCH 0529/2004] Add Base, Celo, and Evmos to tvl calcs (#9191) * Add opBNB vaults * Add Fantom Equalizer vaults to tvl * Add Base, Celo, and Evmos to tvl calcs --------- Co-authored-by: Tatyana Stemkovski --- projects/ichifarm/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index cba1fa1681b..b94060f2258 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -53,6 +53,16 @@ const config = { { factory: '0x065356d9f628cDd1bb9F2384E2972CdAC50f51b7', fromBlock: 34595133, isAlgebra: false, }, // Uni v3 ], }, + base: { + vaultConfigs: [ + { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 10607512, isAlgebra: false, }, // Equalizer + ] + }, + celo: { + vaultConfigs: [ + { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 24256269, isAlgebra: false, }, // Uniswap v3 + ] + }, eon: { vaultConfigs: [ { factory: '0x242cd12579467983dc521D8aC46EB13936ab65De', fromBlock: 638510, isAlgebra: false, }, // Ascent @@ -63,11 +73,21 @@ const config = { { factory: '0x8a76c26E0089111989C14EF56b9733aa38B94148', fromBlock: 20999423, isAlgebra: false, }, // zkSync Era ] }, + evmos: { + vaultConfigs: [ + { factory: '0x7c6389714719c68caac8ae06bae6e878b3605f6d', fromBlock: 19029984, isAlgebra: false, }, // Forge + ] + }, fantom: { vaultConfigs: [ { factory: '0x932E1908461De58b0891E5022431dc995Cb95C5E', fromBlock: 74304207, isAlgebra: false, }, // Equalizer ] }, + // hedera: { + // vaultConfigs: [ + // { factory: '0xb62399d23d1c81f08ea445a42d7f15cc12090a71', fromBlock: 59010832, isAlgebra: false, }, // Saucerswap + // ] + // }, linea: { vaultConfigs: [ { factory: '0x0248b992ac2a75294b05286E9DD3A2bD3C9CFE4B', fromBlock: 1599561, isAlgebra: true, }, // Lynex From 981fdb80134eeba9b71788a4ba0a6437818bf06f Mon Sep 17 00:00:00 2001 From: Ilya Raykker <44369865+iKapitonau@users.noreply.github.com> Date: Tue, 5 Mar 2024 13:25:32 +0300 Subject: [PATCH 0530/2004] Add Arbitrum chain for VirtuSwap project (#9192) * Add Arbitrum chain for VirtuSwap project * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/virtuswap/index.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/projects/virtuswap/index.js b/projects/virtuswap/index.js index 98826038e95..920e2db3967 100644 --- a/projects/virtuswap/index.js +++ b/projects/virtuswap/index.js @@ -1,11 +1,22 @@ const { staking } = require('../helper/staking'); -const FACTORY_CONTRACT = '0xd4E3668A9C39ebB603f02A6987fC915dBC906B43'; -const STAKER = '0x9C58a2B79cd054442D5970b925637B9E88E7ecc2'; -const VRSW_TOKEN_POLYGON = '0x57999936fC9A9EC0751a8D146CcE11901Be8beD0'; +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(_, _1, _2, { api }) { - const pools = await api.fetchList({ lengthAbi: 'allPairsLength', itemAbi: 'allPairs', target: FACTORY_CONTRACT }) + 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 = [] @@ -24,13 +35,4 @@ async function tvl(_, _1, _2, { api }) { }) return api.sumTokens({ ownerTokens, }); -} - -module.exports = { - methodology: 'Sum of all pools liquidity plus staked VRSW tokens', - polygon: { - tvl, - staking: staking(STAKER, VRSW_TOKEN_POLYGON), - }, -}; - +} \ No newline at end of file From a0cdc32fbcc7875020bf596f09efc78fae650d4d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 5 Mar 2024 13:52:35 +0100 Subject: [PATCH 0531/2004] move token mapping to server --- projects/helper/coreAssets.json | 7 +++++++ projects/helper/tokenMapping.js | 23 ----------------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 8696bcaa063..8208ddbb965 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1581,5 +1581,12 @@ "fwWETH": "0x66714db8f3397c767d0a602458b5b4e3c0fe7dd1", "fwUSDB": "0x866f2c06b83df2ed7ca9c2d044940e7cd55a06d6", "WETH": "0x4300000000000000000000000000000000000004" + }, + "chz": { + "WCHZ": "0x721ef6871f1c4efe730dce047d40d1743b886946" + }, + "bitrock": { + "WBR": "0x413f0e3a440aba7a15137f4278121450416882d5", + "BR": "0xde67d97b8770dc98c746a3fc0093c538666eb493" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 5aecd1a50dd..6df16c1c64e 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -38,17 +38,6 @@ const fixBalancesTokens = { ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, - chz: { - '0x721ef6871f1c4efe730dce047d40d1743b886946': { coingeckoId: 'chiliz', decimals: 18 }, - }, - bitcoin: { - BSSB: { coingeckoId: 'bitstable-finance', decimals: 0 }, - MUBI: { coingeckoId: 'multibit', decimals: 0 }, - rats: { coingeckoId: 'rats', decimals: 0 }, - BTCs: { coingeckoId: 'btcs', decimals: 0 }, - MMSS: { coingeckoId: 'mmss', decimals: 0 }, - AINN: { coingeckoId: 'artificial-neural-network-ordinals', decimals: 0 }, - }, map: { // https://docs.rolluper.xyz/how-does-roup-work/deployed-contracts // https://app.rolluper.xyz/ @@ -118,18 +107,6 @@ const fixBalancesTokens = { merlin: { '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'merlin-chain-bridged-wrapped-btc-merlin', decimals: 18 }, '0x480e158395cc5b41e5584347c495584ca2caf78d': { coingeckoId: 'merlin-chain-bridged-voya-merlin', decimals: 18 }, - }, - bitrock: { - '0x413f0e3a440aba7a15137f4278121450416882d5': { coingeckoId: 'wrapped-bitrock', decimals: 18 }, - '0xde67d97b8770dc98c746a3fc0093c538666eb493': { coingeckoId: 'bitrock', decimals: 9 }, - }, - ethereum: { - '0x0d3bd40758df4f79aad316707fcb809cd4815ffe': { coingeckoId: 'ripple', decimals: 6 }, - '0x9c05d54645306d4c4ead6f75846000e1554c0360': { coingeckoId: 'cardano', decimals: 6 }, - '0xd2aee1ce2b4459de326971de036e82f1318270af': { coingeckoId: 'dogecoin', decimals: 8 }, - '0xf4accd20bfed4dffe06d4c85a7f9924b1d5da819': { coingeckoId: 'polkadot', decimals: 10 }, - '0xff4927e04c6a01868284f5c3fb9cba7f7ca4aec0': { coingeckoId: 'bitcoin-cash', decimals: 8 }, - '0x9f2825333aa7bc2c98c061924871b6c016e385f3': { coingeckoId: 'litecoin', decimals: 8 }, } } From 269e93e19664a583ee86bd465fa0359cd1b7f804 Mon Sep 17 00:00:00 2001 From: Jake Date: Tue, 5 Mar 2024 05:05:35 -0800 Subject: [PATCH 0532/2004] feat: remove deprecated tokens, add spy oracle (#9188) --- projects/dinari/index.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/projects/dinari/index.js b/projects/dinari/index.js index 8c9cc90278d..c865b105406 100644 --- a/projects/dinari/index.js +++ b/projects/dinari/index.js @@ -1,17 +1,12 @@ const config = { arbitrum: { "AAPL.d": { oracle: "0x8d0CC5f38f9E802475f2CFf4F9fc7000C2E1557c", token: '0xCe38e140fC3982a6bCEbc37b040913EF2Cd6C5a7' }, - "AAPL.d1": { oracle: "0x8d0CC5f38f9E802475f2CFf4F9fc7000C2E1557c", token: '0x2414faE77CF726cC2287B81cf174d9828adc6636' }, "AMZN.d": { oracle: "0xd6a77691f071E98Df7217BED98f38ae6d2313EBA", token: '0x5a8A18673aDAA0Cd1101Eb4738C05cc6967b860f' }, - "AMZN.d1": { oracle: "0xd6a77691f071E98Df7217BED98f38ae6d2313EBA", token: '0x8240aFFe697CdE618AD05c3c8963f5Bfe152650b' }, "GOOGL.d": { oracle: "0x1D1a83331e9D255EB1Aaf75026B60dFD00A252ba", token: '0x9bd7A08cD17d10E02F596Aa760dfE397C57668b4' }, - "GOOGL.d1": { oracle: "0x1D1a83331e9D255EB1Aaf75026B60dFD00A252ba", token: '0x8E50D11a54CFF859b202b7Fe5225353bE0646410' }, - "Meta.d": { oracle: "0xcd1bd86fDc33080DCF1b5715B6FCe04eC6F85845", token: '0xa40c0975607BDbF7B868755E352570454b5B2e48' }, - "Meta.d1": { oracle: "0xcd1bd86fDc33080DCF1b5715B6FCe04eC6F85845", token: '0x519062155B0591627C8A0C0958110A8C5639DcA6' }, + "META.d": { oracle: "0xcd1bd86fDc33080DCF1b5715B6FCe04eC6F85845", token: '0xa40c0975607BDbF7B868755E352570454b5B2e48' }, "MSFT.d": { oracle: "0xDde33fb9F21739602806580bdd73BAd831DcA867", token: '0x20f11c1aBca831E235B15A4714b544Bb968f8CDF' }, - "MSFT.d1": { oracle: "0xDde33fb9F21739602806580bdd73BAd831DcA867", token: '0x77308F8B63A99b24b262D930E0218ED2f49F8475' }, "TSLA.d": { oracle: "0x3609baAa0a9b1f0FE4d6CC01884585d0e191C3E3", token: '0x2888c0aC959484e53bBC6CdaBf2b8b39486225C6' }, - "TSLA.d1": { oracle: "0x3609baAa0a9b1f0FE4d6CC01884585d0e191C3E3", token: '0x36d37B6cbCA364Cf1D843efF8C2f6824491bcF81' }, + "SPY.d": { oracle: "0x46306F3795342117721D8DEd50fbcF6DF2b3cc10", token: '0xF4BD09B048248876E39Fcf2e0CDF1aee1240a9D2' }, // "COIN.d": { oracle: "", token: '0x46b979440AC257151EE5a5bC9597B76386907FA1' }, } } From f4950c832fdd49c61e20ae641732a02ab15b2b7d Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 5 Mar 2024 13:18:39 +0000 Subject: [PATCH 0533/2004] add new wallet mantle treasury (#9198) --- projects/treasury/bitdao.js | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 067a86d3f51..9e68b055bf7 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -1,11 +1,27 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); -const bitdaoTreasury1 = "0x78605Df79524164911C144801f41e9811B7DB73D"; +//eth wallets +const mTreasuryL1 = "0x78605Df79524164911C144801f41e9811B7DB73D"; +const mTreasuryL1SC = "0xCa264A4Adf80d3c390233de135468A914f99B6a5" +const mTreasuryL1O1 = "0xf0e91a74cb053d79b39837E1cfba947D0c98dd93" +const mTreasuryL1E1 = "0x1a743BD810dde05fa897Ec41FE4D42068F7fD6b2" +const mTreasuryL1RB1 = "0x164Cf077D3004bC1f26E7A46Ad8fA54df4449E3F" +const mTreasuryL1LPE1 = "0xA5b79541548ef2D48921F63ca72e4954e50a4a74" + +//mantle wallets + +const mTreasuryL2 = "0x94FEC56BBEcEaCC71c9e61623ACE9F8e1B1cf473" +const mTreasuryL2RB2 = "0x87C62C3F9BDFc09200bCF1cbb36F233A65CeF3e6" +const mTreasuryL2LPM1 = "0x992b65556d330219e7e75C43273535847fEee262" +const mTreasuryL2FF1 = "0xcD9Dab9Fa5B55EE4569EdC402d3206123B1285F4" const BIT = "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5"; const MNT = "0x3c3a81e81dc49a522a592e7622a7e711c06bf354" +const MNTMantle = "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000" +const wrappedmantleonmantle = "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8" + module.exports = treasuryExports({ ethereum: { tokens: [ @@ -18,9 +34,23 @@ module.exports = treasuryExports({ '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272',//xSUSHI "0x52A8845DF664D76C69d2EEa607CD793565aF42B8", ], - owners: [bitdaoTreasury1], + owners: [mTreasuryL1, mTreasuryL1SC,mTreasuryL1O1,mTreasuryL1E1, mTreasuryL1RB1, mTreasuryL1LPE1 ], ownTokens: [BIT, MNT], resolveLP: true, resolveUniV3: true, }, + mantle: { + tokens: [ + nullAddress, + "0x5bE26527e817998A7206475496fDE1E68957c5A6", //ondo usd + "0xcda86a272531e8640cd7f1a92c01839911b90bb0", //mantle staked eth + "0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", //eth + "0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9", //usdc + "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE", //tether + "0xf52b354ffdb323e0667e87a0136040e3e4d9df33", //lp meth + ], + owners: [mTreasuryL2, mTreasuryL2RB2, mTreasuryL2LPM1, mTreasuryL2FF1], + ownTokens: [MNTMantle, wrappedmantleonmantle], + resolveLP: true, + }, }) \ No newline at end of file From 17b080147e10807243bd483b412cbe2d4da27504 Mon Sep 17 00:00:00 2001 From: Saber Coder <45599139+SaberDoTcodeR@users.noreply.github.com> Date: Tue, 5 Mar 2024 13:29:09 +0000 Subject: [PATCH 0534/2004] Add TONNEL Network (#9183) * Add TONNEL Network * code refactor, count staked tonnel under staking * fix address format add sleep between tvl and staking to avoid rate limit * fix staking * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/ton.js | 15 ++++++++++++--- projects/tonnel/config.js | 32 ++++++++++++++++++++++++++++++++ projects/tonnel/index.js | 25 +++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 projects/tonnel/config.js create mode 100644 projects/tonnel/index.js diff --git a/projects/helper/chain/ton.js b/projects/helper/chain/ton.js index c33ad73477f..898c3ccce02 100644 --- a/projects/helper/chain/ton.js +++ b/projects/helper/chain/ton.js @@ -1,18 +1,23 @@ const { get, post, } = require('../http') const ADDRESSES = require('../coreAssets.json') -const { getUniqueAddresses } = require('../utils') +const plimit = require('p-limit') +const _rateLimited = plimit(1) +const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) + +const { getUniqueAddresses, sleep } = require('../utils') async function getTonBalance(addr) { const res = await get(`https://tonapi.io/v2/accounts/${addr}`) return res.balance } -async function sumTokensAccount({ api, addr, tokens = [], onlyWhitelistedTokens = false }) { +async function _sumTokensAccount({ api, addr, tokens = [], onlyWhitelistedTokens = false }) { if (tokens.includes(ADDRESSES.null)) { const balance = await getTonBalance(addr) api.add(ADDRESSES.null, balance) } const { balances } = await get(`https://tonapi.io/v2/accounts/${addr}/jettons?currencies=usd`) + await sleep(1000 * (10 * Math.random() + 3)) balances.forEach(({ balance, price, jetton }) => { if (onlyWhitelistedTokens && !tokens.includes(jetton.address)) return; const decimals = jetton.decimals @@ -23,12 +28,16 @@ async function sumTokensAccount({ api, addr, tokens = [], onlyWhitelistedTokens }) } +const sumTokensAccount = rateLimited(_sumTokensAccount) + async function sumTokens({ api, tokens, owners = [], owner, onlyWhitelistedTokens = false }) { if (!api) throw new Error('api is required') if (owner) owners.push(owner) owners = getUniqueAddresses(owners, api.chain) - await Promise.all(owners.map(i => sumTokensAccount({ api, addr: i, tokens, onlyWhitelistedTokens }))) + for (const addr of owners) { + await sumTokensAccount({ api, addr, tokens, onlyWhitelistedTokens }) + } return api.getBalances() } diff --git a/projects/tonnel/config.js b/projects/tonnel/config.js new file mode 100644 index 00000000000..5303ead06b5 --- /dev/null +++ b/projects/tonnel/config.js @@ -0,0 +1,32 @@ +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 new file mode 100644 index 00000000000..960b2259497 --- /dev/null +++ b/projects/tonnel/index.js @@ -0,0 +1,25 @@ +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 From 07ddd2d15c74f03d9d17ed62d7a2161fe76d5b34 Mon Sep 17 00:00:00 2001 From: 0xVolcan <162298458+0xVolcan@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:06:58 +0200 Subject: [PATCH 0535/2004] Add an adapter for Lava (#9194) * Add the Lava adapter * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lava/index.js | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 projects/lava/index.js diff --git a/projects/lava/index.js b/projects/lava/index.js new file mode 100644 index 00000000000..4b1974e0ce9 --- /dev/null +++ b/projects/lava/index.js @@ -0,0 +1,92 @@ +const DATA_PROVIDER_ADDRESS = { + arbitrum: "0x8CfA3a5105e87e6e5568b80F64d05eD5fc53F0a9", + 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 (_, _1, _2, { api, chain }) { + 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: + "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn lending interest. Tokens also include various wrapped liquidity positions, the tokens comprising these positions are counted as well. Borrowed tokens are not counted towards the TVL, so only the tokens actually locked in the contracts are counted. The main reason for this is to avoid inflating the TVL through cycled lending.", + arbitrum: getMetrics(), + base: getMetrics(), +}; From 237d7594940e928a315214aac093c8a3f320edf9 Mon Sep 17 00:00:00 2001 From: CronosLabsDev <106642922+CronosLabsDev@users.noreply.github.com> Date: Tue, 5 Mar 2024 15:07:47 +0100 Subject: [PATCH 0536/2004] add Ethereum staking to venofinance TVL (#9195) * add Ethereum staking to venofinance TVL * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/venofinance/index.js | 63 ++++++++++++++++------------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/projects/venofinance/index.js b/projects/venofinance/index.js index af33e240d25..b6649171a76 100644 --- a/projects/venofinance/index.js +++ b/projects/venofinance/index.js @@ -1,44 +1,39 @@ -const sdk = require('@defillama/sdk') const { staking } = require("../helper/staking.js"); -const fountain_contract_address = "0xb4be51216f4926ab09ddf4e64bc20f499fd6ca95" -const reservoir_contract_address = "0x21179329c1dcfd36ffe0862cca2c7e85538cca07" -const vno_contract_address = "0xdb7d0a1ec37de1de924f8e8adac6ed338d4404e9" +const fountain_contract_address = "0xb4be51216f4926ab09ddf4e64bc20f499fd6ca95"; +const reservoir_contract_address = "0x21179329c1dcfd36ffe0862cca2c7e85538cca07"; +const vno_contract_address = "0xdb7d0a1ec37de1de924f8e8adac6ed338d4404e9"; -async function tvl(timestamp, ethBlock, chainBlocks, {api}) { +async function tvlCronos(timestamp, ethBlock, chainBlocks, { 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, }) - const lcro_contract_address = '0x9Fae23A2700FEeCd5b93e43fDBc03c76AA7C08A6'; - const latom_contract_address = '0xac974ee7fc5d083112c809ccb3fce4a4f385750d'; - - const block = chainBlocks.cronos - - const cro_pooled = await sdk.api.abi.call({ - abi: "uint256:getTotalPooledCro", - target: lcro_contract_address, - block: block, - chain: 'cronos' - }) + api.addGasToken(cro_pooled) + api.addCGToken('cosmos', atom_pooled / 1e6) + return api.getBalances() +} - const atom_pooled = await sdk.api.abi.call({ - abi: "uint256:getTotalPooledToken", - target: latom_contract_address, - block: block, - chain: 'cronos' - }) +async function tvlEra(timestamp, ethBlock, chainBlocks, { api }) { + const leth_contract_address = "0xE7895ed01a1a6AAcF1c2E955aF14E7cf612E7F9d"; - return { - 'crypto-com-chain': Number(cro_pooled.output) / 1e18, - "cosmos": Number(atom_pooled.output) / 1e6 - }; + const eth_pooled = await api.call({ abi: "uint256:getTotalPooledToken", target: leth_contract_address, }) + api.addGasToken(eth_pooled) + return api.getBalances() } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'TVL counts CRO staked by the protocol.', - cronos: { - tvl , - staking: staking([fountain_contract_address, reservoir_contract_address], vno_contract_address) - } -} \ No newline at end of file + 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, + }, +}; From 94c71a72ee4ce8ebd696a25863674095826d0039 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 5 Mar 2024 19:35:26 +0000 Subject: [PATCH 0537/2004] separate fusefi lending --- projects/fusefi-lending/index.js | 24 ++++++++++++++++++++++++ projects/fusefi/index.js | 9 ++------- projects/fusefi/olalending.js | 10 ---------- 3 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 projects/fusefi-lending/index.js delete mode 100644 projects/fusefi/olalending.js diff --git a/projects/fusefi-lending/index.js b/projects/fusefi-lending/index.js new file mode 100644 index 00000000000..79b5685fc12 --- /dev/null +++ b/projects/fusefi-lending/index.js @@ -0,0 +1,24 @@ +const { usdCompoundExports } = require('../helper/compound'); + +const unitroller_fuse = "0x26a562B713648d7F3D1E1031DCc0860A4F3Fa340" + +const abis = { + oracle: "address:getRegistry", + underlyingPrice: "function getPriceForUnderling(address cToken) view returns (uint256)", +} + +const olalending = usdCompoundExports(unitroller_fuse, "fuse", "0x025B0ff0920298e087308F3b2de0CF6399685909", abis) +module.exports = { + fuse:{ + tvl: olalending.tvl, + borrowed: async function(timestamp, ...otherParams){ + if(timestamp >= 1648684800){ + return {} + } + return olalending.borrowed(timestamp, ...otherParams) + } + }, + hallmarks: [ + [1648684800, "Ola Finance exploit"] + ] +} \ No newline at end of file diff --git a/projects/fusefi/index.js b/projects/fusefi/index.js index 92b203e1f87..e80a3e353fc 100644 --- a/projects/fusefi/index.js +++ b/projects/fusefi/index.js @@ -1,6 +1,4 @@ -const sdk = require("@defillama/sdk"); const swap = require("./swap"); -const olalending = require("./olalending"); const { stakings } = require("../helper/staking"); const VOLT_TOKEN = "0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4".toLowerCase(); @@ -10,10 +8,7 @@ const VOLT_VOTE_ESCROW = "0xB0a05314Bd77808269e2E1E3D280Bff57Ba85672".toLowerCas module.exports = { misrepresentedTokens: true, fuse: { - tvl: sdk.util.sumChainTvls([swap.tvl, olalending.tvl]), + tvl: swap.tvl, staking: stakings([VOLT_BAR, VOLT_VOTE_ESCROW], VOLT_TOKEN), - }, - hallmarks: [ - [1648684800, "Ola Finance exploit"] - ] + } }; diff --git a/projects/fusefi/olalending.js b/projects/fusefi/olalending.js deleted file mode 100644 index 8949841c7be..00000000000 --- a/projects/fusefi/olalending.js +++ /dev/null @@ -1,10 +0,0 @@ -const { usdCompoundExports } = require('../helper/compound'); - -const unitroller_fuse = "0x26a562B713648d7F3D1E1031DCc0860A4F3Fa340" - -const abis = { - oracle: "address:getRegistry", - underlyingPrice: "function getPriceForUnderling(address cToken) view returns (uint256)", -} - -module.exports = usdCompoundExports(unitroller_fuse, "fuse", "0x025B0ff0920298e087308F3b2de0CF6399685909", abis) \ No newline at end of file From 8d06142324a1f8942381d6475d76af0335730183 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 5 Mar 2024 21:27:36 +0000 Subject: [PATCH 0538/2004] add missing treasury --- projects/treasury/bitdao.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 9e68b055bf7..710251125a5 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -1,5 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); +const sdk = require("@defillama/sdk"); //eth wallets const mTreasuryL1 = "0x78605Df79524164911C144801f41e9811B7DB73D"; @@ -22,7 +23,7 @@ const MNT = "0x3c3a81e81dc49a522a592e7622a7e711c06bf354" const MNTMantle = "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000" const wrappedmantleonmantle = "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8" -module.exports = treasuryExports({ +const tokenTreasuries = treasuryExports({ ethereum: { tokens: [ nullAddress, @@ -33,6 +34,7 @@ module.exports = treasuryExports({ '0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9',//FTT '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272',//xSUSHI "0x52A8845DF664D76C69d2EEa607CD793565aF42B8", + "0x9d39a5de30e57443bff2a8307a4256c8797a3497", //sUSDe ], owners: [mTreasuryL1, mTreasuryL1SC,mTreasuryL1O1,mTreasuryL1E1, mTreasuryL1RB1, mTreasuryL1LPE1 ], ownTokens: [BIT, MNT], @@ -53,4 +55,19 @@ module.exports = treasuryExports({ ownTokens: [MNTMantle, wrappedmantleonmantle], resolveLP: true, }, -}) \ No newline at end of file +}) + +async function otherTvl(_timestamp, _block, _chainBlocks, {api}){ + const shares = await api.call({ abi: 'function shares(address user) public view returns (uint256)', target: "0x298afb19a105d59e74658c4c334ff360bade6dd2", params:["0xca264a4adf80d3c390233de135468a914f99b6a5"]}) + const balances = { + "ethereum:0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa": shares + } + return balances +} + +module.exports={ + ethereum:{ + tvl: sdk.util.sumChainTvls([tokenTreasuries.ethereum.tvl, otherTvl]), + }, + mantle: tokenTreasuries.mantle +} \ No newline at end of file From fa7271b27f7e9733f94c418a681c389d7340dee7 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 5 Mar 2024 21:30:28 +0000 Subject: [PATCH 0539/2004] first batch tokenMapping move to coreAssets (#9199) * first batch tokenMapping move to coreAssets * second batch (wip/merge server first) --- projects/helper/coreAssets.json | 67 ++++++++++++++++++++++++++----- projects/helper/tokenMapping.js | 70 --------------------------------- 2 files changed, 58 insertions(+), 79 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 8208ddbb965..e2afac19e3a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -218,7 +218,11 @@ "USDC": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", "ETH": "0x639a647fbe20b6c8ac19e48e2de44ea792c62c5c", "ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c", - "BEPRO": "0xcb4a593ce512d78162c58384f0b2fd6e802c2c47" + "BEPRO": "0xcb4a593ce512d78162c58384f0b2fd6e802c2c47", + "MOVR": "0xffffffff98e37bf6a393504b5adc5b53b4d0ba11", + "BNC": "0xffffffff3646a00f78cadf8883c5a2791bfcddc4", + "KSM": "0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe" + }, "moonbeam": { "WGLMR": "0x5f6c5c2fb289db2228d159c69621215e354218d7", @@ -234,7 +238,9 @@ "MOVR": "0x1d4c2a246311bb9f827f4c768e277ff5787b7d7e", "xcUSDT": "0xffffffffea09fb06d082fd1275cd48b191cbcd1d", "BEPRO": "0x4edf8e0778967012d46968ceadb75436d0426f88", - "stDOT": "0xfa36fe1da08c89ec72ea1f0143a35bfd5daea108" + "stDOT": "0xfa36fe1da08c89ec72ea1f0143a35bfd5daea108", + "VGLMR": "0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c", + "FIL": "0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1" }, "arbitrum": { "WETH": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", @@ -556,7 +562,8 @@ "ATID": "0x5271d85ce4241b310c0b34b7c2f1f036686a6d7c", "JPYC": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb", "aUSD": "0xffffffff00000000000000010000000000000001", - "vDOT": "0xFfFfFfff00000000000000010000000000000008" + "vDOT": "0xFfFfFfff00000000000000010000000000000008", + "ASTR": "0xffffffff00000000000000010000000000000010" }, "cardano": { "ADA": "ADA" @@ -638,7 +645,8 @@ }, "kujira": { "KUJI": "ukuji", - "USK": "factory/kujira1qk00h5atutpsv900x202pxx42npjr9thg58dnqpa72f2p7m2luase444a7/uusk" + "USK": "factory/kujira1qk00h5atutpsv900x202pxx42npjr9thg58dnqpa72f2p7m2luase444a7/uusk", + "FUZION": "factory/kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t/ufuzn" }, "injective": { "INJ": "inj", @@ -661,7 +669,12 @@ "USDC": "0xea1199d50ee09fa8062fd9da3d55c6f90c1babd2" }, "tomochain": { - "WTOMO": "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc" + "WTOMO": "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc", + "TOMO": "0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce", + "USDT": "0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0", + "USDC": "0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127", + "ETH": "0x9ede19ede2baf93d25fba4c8f58577e008b8f963", + "SAROS": "0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2" }, "ethereumclassic": { "WETC": "0x82A618305706B14e7bcf2592D4B9324A366b6dAd" @@ -1129,7 +1142,8 @@ "AVAX": "0x4200000000000000000000000000000000000023" }, "omax": { - "WOMAX": "0xfebabc6a9b2ec46d6357879b8bf39b593f11a5b9" + "WOMAX": "0xfebabc6a9b2ec46d6357879b8bf39b593f11a5b9", + "OMAX": "0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb" }, "wemix": { "WWEMIX": "0x7d72b22a74a216af4a002a1095c8c707d6ec1c5f", @@ -1282,7 +1296,18 @@ "BUSD": "0x35bf4004c3fc9f509259d4942da6bae3669e1db1", "WMAPO": "0x13cb04d4a5dfb6398fc5ab005a6c84337256ee23", "USDC": "0x9f722b2cb30093f766221fd0d37964949ed66918", - "ETH": "0x05ab928d446d8ce6761e368c8e7be03c3168a9ec" + "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" @@ -1366,7 +1391,10 @@ }, "stacks": { "WSTX": "SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.wstx-token-v4a", - "WBTC": "SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin::wrapped-bitcoin" + "WBTC": "SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin::wrapped-bitcoin", + "stSTX": "SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx", + "USDT": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt", + "aBTC": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc" }, "neon_evm": { "WNEON": "0xb14760c064a1b9eaf9ec5a8a421971e40a51b59c" @@ -1461,7 +1489,8 @@ "kroma": { "WETH": "0x4200000000000000000000000000000000000001", "USDC": "0x49A5010110a358d9069282873F3e7eCf6B41DC10", - "USDT": "0x0Cf7c2A584988871b654Bd79f96899e4cd6C41C0" + "USDT": "0x0Cf7c2A584988871b654Bd79f96899e4cd6C41C0", + "WEMIX": "0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e" }, "radixdlt": { "XRD": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd", @@ -1588,5 +1617,25 @@ "bitrock": { "WBR": "0x413f0e3a440aba7a15137f4278121450416882d5", "BR": "0xde67d97b8770dc98c746a3fc0093c538666eb493" + }, + "btn": { + "BTN": "0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58" + }, + "area": { + "AREA": "0x298b6a733cd34e41ca87b264d968c8ca7b0b9931" + }, + "defiverse": { + "OAS": "0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351", + "USDC": "0x7c6b91D9Be155A6Db01f749217d76fF02A7227F2", + "WBTC": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "ETH": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea" + }, + "xai": { + "XAI": "0x36be1fd6ff2a6beb34b500a04f89103a524516d8", + "USDC": "0x300a7b57dc85b6a9776e249614abf0fe5c9905fb" + }, + "merlin": { + "WBTC": "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA", + "VOYA": "0x480e158395cc5b41e5584347c495584ca2caf78d" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6df16c1c64e..3cd91936b5a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -37,76 +37,6 @@ const fixBalancesTokens = { // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain - }, - map: { - // https://docs.rolluper.xyz/how-does-roup-work/deployed-contracts - // https://app.rolluper.xyz/ - '0x3e76deF74d4187B5a01aBE4E011Bd94d9f057d94': { coingeckoId: 'roup', decimals: 18 }, - '0x5a1c3f3aaE616146C7b9bf9763E0ABA9bAFc5eaE': { coingeckoId: 'roup', decimals: 18 }, - // '0x3b7fC78434B00586a2ad7c3DAd821e1b02fcA66f': { coingeckoId: '', decimals: 18 }, // mapo - // '0xb84e5EF60f73ed0da684bC3C5d7962f3839ae619': { coingeckoId: '', decimals: 18 }, // STST - '0xB719e46B6eB5b23E2759526CdE24589d87097733': { coingeckoId: 'ordinals', decimals: 18 }, - '0x9CA528368964cFb92cfFdd51dCcED25E27ACCef9': { coingeckoId: 'ordinals', decimals: 18 }, - '0xcAF17cDdb80F72484e5A279921b98a0a9A2391ee': { coingeckoId: 'rats', decimals: 18 }, - '0x6369414F2b0e973c7E85A362141aA1430bc30056': { coingeckoId: 'rats', decimals: 18 }, - '0x640a4C0AaA4870BaDE2F646B7Da87b3D53819C4f': { coingeckoId: 'comsats', decimals: 18 }, - '0x141b30Dd30FAFb87ec10312d52e5dbD86122FE14': { coingeckoId: 'comsats', decimals: 18 }, - '0x0e2cA3e003f3c73C8cC18ec244d46DB9d4c4DCEB': { coingeckoId: 'btcs', decimals: 18 }, - '0xBE81B9390D894fEBf5e5D4Ea1486a003C1e8dc63': { coingeckoId: 'btcs', decimals: 18 }, - '0x0fBb3B3Fb1e928f75B3Ed8b506bAb4503373fdca': { coingeckoId: 'mmss', decimals: 18 }, - }, - btn: { - '0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58': { coingeckoId: 'bitnet', decimals: 18 }, - }, - omax: { - '0x373e4b4E4D328927bc398A9B50e0082C6f91B7bb': { coingeckoId: 'omax-token', decimals: 18 }, - }, - area: { - '0x298b6a733cd34e41ca87b264d968c8ca7b0b9931': { coingeckoId: 'areon-network', decimals: 18 }, - }, - kujira: { - 'factory:kujira1sc6a0347cc5q3k890jj0pf3ylx2s38rh4sza4t:ufuzn': { coingeckoId: 'fuzion', decimals: 6 }, - }, - kroma: { - '0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e': { coingeckoId: 'wemix-token', decimals: 18 }, - }, - astar: { - '0xffffffff00000000000000010000000000000010': { coingeckoId: 'astar', decimals: 18 }, - }, - moonriver: { - '0xffffffff98e37bf6a393504b5adc5b53b4d0ba11': { coingeckoId: 'moonriver', decimals: 18 }, - '0xffffffff3646a00f78cadf8883c5a2791bfcddc4': { coingeckoId: 'bifrost-native-coin', decimals: 12 }, - '0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe': { coingeckoId: 'kusama', decimals: 12 }, - }, - moonbeam: { - '0xffffffff99dabe1a8de0ea22baa6fd48fde96f6c': { coingeckoId: 'voucher-glmr', decimals: 18 }, - '0xffffffffcd0ad0ea6576b7b285295c85e94cf4c1': { coingeckoId: 'filecoin', decimals: 18 }, - }, - stacks: { - 'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token::ststx': { coingeckoId: 'blockstack', decimals: 6 }, - 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-susdt::bridged-usdt': { coingeckoId: 'tether', decimals: 8 }, - 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc::bridged-btc': { coingeckoId: 'bitcoin', decimals: 8 }, - }, - defiverse: { - '0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351': { coingeckoId: 'oasys', decimals: 18 }, - '0x7c6b91D9Be155A6Db01f749217d76fF02A7227F2': { coingeckoId: 'usd-coin', decimals: 18 }, - '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, - '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea': { coingeckoId: 'ethereum', decimals: 18 }, - }, - tomochain: { - '0xc054751bdbd24ae713ba3dc9bd9434abe2abc1ce': { coingeckoId: 'tomochain', decimals: 18 }, - '0xbbbfab9dcc27771d21d027f37f36b67cc4a25db0': { coingeckoId: 'tether', decimals: 18 }, - '0x20cc4574f263c54eb7ad630c9ac6d4d9068cf127': { coingeckoId: 'usd-coin', decimals: 6 }, - '0x9ede19ede2baf93d25fba4c8f58577e008b8f963': { coingeckoId: 'ethereum', decimals: 18 }, - '0xb786d9c8120d311b948cf1e5aa48d8fbacf477e2': { coingeckoId: 'saros-finance', decimals: 18 }, - }, - xai: { - '0x36be1fd6ff2a6beb34b500a04f89103a524516d8': { coingeckoId: 'xai-blockchain', decimals: 18 }, - '0x300a7b57dc85b6a9776e249614abf0fe5c9905fb': { coingeckoId: 'usd-coin', decimals: 6 }, - }, - merlin: { - '0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA': { coingeckoId: 'merlin-chain-bridged-wrapped-btc-merlin', decimals: 18 }, - '0x480e158395cc5b41e5584347c495584ca2caf78d': { coingeckoId: 'merlin-chain-bridged-voya-merlin', decimals: 18 }, } } From 52e0db01ed43077f88f377216c3c8ebafa616728 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 5 Mar 2024 22:39:11 +0100 Subject: [PATCH 0540/2004] Alta (#9187) * Ready for PR * Refactor * Refactor * Refactor * code refactor * Update index.js --------- Co-authored-by: Jeremy Crane --- projects/alta-finance/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/alta-finance/index.js diff --git a/projects/alta-finance/index.js b/projects/alta-finance/index.js new file mode 100644 index 00000000000..f927d9da39a --- /dev/null +++ b/projects/alta-finance/index.js @@ -0,0 +1,25 @@ +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: ['0xE92F580C930dd24aACB38Ab0EA18F6c1dEf31369'], token: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' }, +} + +Object.keys(config).forEach(chain => { + const { investments, debts, token } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + return api.sumTokens({ owners: investments.concat(debts), tokens: [token] }) + }, + borrowed: async (_, _b, _cb, { 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() + }, + } +}) From 39c5741753b585b9c89cd7888575723b3d1d5409 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 5 Mar 2024 21:52:00 +0000 Subject: [PATCH 0541/2004] add extra wallets --- projects/treasury/bitdao.js | 44 ++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 710251125a5..4881039bf7b 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -23,6 +23,44 @@ const MNT = "0x3c3a81e81dc49a522a592e7622a7e711c06bf354" const MNTMantle = "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000" const wrappedmantleonmantle = "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8" +const ecspWallets = [ +'0x87c185bEFFfb36a42b741d10601A007e997a63bA', +'0x8AA6a67e96850e070B0c8E94E3a35C5f9f01809C', +'0x50f6e426fdefb3f994d3fe9fa4e1ee715f85de7f', +'0x7427b4Fd78974Ba1C3B5d69e2F1B8ACF654fEB44', +'0x7fe2bAffD481a8776A9eaD15a8eD17Fe37107903', +'0x15Bb5D31048381c84a157526cEF9513531b8BE1e', +'0xdD1c2483056fF46153249bd903401ae7bF6360D1', +'0x565F603D583F9199487923775114ae8c0D17D044', +'0x650aD9e7EfCD34B7d050c22a6A8dFFAFe3B4A22E', +'0x607105cE5bf13e70B49E949a3DdFaD694d19374F', +'0x131C7f3461A6696317ddfEdfed3BCdc10A2062B2', +'0xa1F7D91Bf121f4940d96c5C52Bc577011B95B51b', +'0x911169AA285f5D18fC3567d150616d4B0869d3a5', +'0x3f946F00A00eB2A66A4BD1AeAF137E05dB6CAEc6', +'0x9fe09b3ed1A407162876fEB1995048A620552fD0', +'0xd4338fC8Dc9d2FDcb99604d3cFc80019EBE01058', +'0x71Fb53Afc7E36C3f11BC1bdBBAB7B6FC3E552eb6', +'0x92A9e359d72F934a5d7c1251201f9855A381B23c', +'0xb118d4B94B0D4ce38F0D15d88f1dC09580a60b7A', +'0xaA42736947d1fdcc5d93F459A6D1dC0d7b9a92a4', +'0xF366eC9FA2DCE0ee7A6bdae4Aaa5c076E8391AFC', +'0x5DA939F5e2bC3C7159ac16f98BbFb23759000cd5', +'0x60F6ce1965D99EEffDF63B5303664f25fCb0347F', +'0xC784F3aEA5ce3daBA6907ee5d6Ce321a204Eb3A8', +'0xDCA65E2DFEe70991374eD47EfB4aD6B4FCD0c612', +'0x4ea7b4D10a01c93509BaA0CBb128c89344A1F578', +'0x4dF3d780Af7cbD51d9c76f236477edF417c7B554', +'0xA38e519b12D9CE133396a3E4EB92aac0934AB351', +'0x6d9755211D627fe0EA02D94C23C6110af16a8882', +'0x43c0f24E84e6d45b021d18C982beAbFA969577c8', +'0xB82C91bB7e8696a4A057192ED61aFcD1F9121722', +'0x15FFBf5730FA9eF271B2E9b4a1a6c90F2288155B', +'0xCef70f66e50CF016BB932De6425AA6f7286A3886', +'0x50165383783124232B9e4367D59815947012Ac27', +'0x97D50c7d14E68bEBC0f81B4FdCed89a1122330A6' +] + const tokenTreasuries = treasuryExports({ ethereum: { tokens: [ @@ -36,10 +74,10 @@ const tokenTreasuries = treasuryExports({ "0x52A8845DF664D76C69d2EEa607CD793565aF42B8", "0x9d39a5de30e57443bff2a8307a4256c8797a3497", //sUSDe ], - owners: [mTreasuryL1, mTreasuryL1SC,mTreasuryL1O1,mTreasuryL1E1, mTreasuryL1RB1, mTreasuryL1LPE1 ], + owners: [mTreasuryL1, mTreasuryL1SC,mTreasuryL1O1,mTreasuryL1E1, mTreasuryL1RB1, mTreasuryL1LPE1, ...ecspWallets ], ownTokens: [BIT, MNT], resolveLP: true, - resolveUniV3: true, + resolveUniV3: true }, mantle: { tokens: [ @@ -51,7 +89,7 @@ const tokenTreasuries = treasuryExports({ "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE", //tether "0xf52b354ffdb323e0667e87a0136040e3e4d9df33", //lp meth ], - owners: [mTreasuryL2, mTreasuryL2RB2, mTreasuryL2LPM1, mTreasuryL2FF1], + owners: [mTreasuryL2, mTreasuryL2RB2, mTreasuryL2LPM1, mTreasuryL2FF1, ...ecspWallets], ownTokens: [MNTMantle, wrappedmantleonmantle], resolveLP: true, }, From ee83c6da96a9604f9c7d27c830b134058ca347f9 Mon Sep 17 00:00:00 2001 From: suNrisEinMyeYes <40171291+suNrisEinMyeYes@users.noreply.github.com> Date: Wed, 6 Mar 2024 06:08:00 +0800 Subject: [PATCH 0542/2004] xUsdVaultRedeployed (#9197) * xUsdVaultRedeployed * code fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/locus/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/projects/locus/index.js b/projects/locus/index.js index 6bf17256a23..990bc10cb5a 100644 --- a/projects/locus/index.js +++ b/projects/locus/index.js @@ -1,3 +1,4 @@ +const sdk = require('@defillama/sdk') const { sumERC4626VaultsExport } = require('../helper/erc4626') const { staking } = require('../helper/staking') @@ -21,15 +22,20 @@ const config = { arbitrum: { lvTokens: { xARB: "0xF8F045583580C4Ba954CD911a8b161FafD89A9EF", - xUSD: "0x2a889E9ef10c7Bd607473Aadc8c806c4511EB26f", + }, + lvTokens2: { + xUSD: "0x6318938F825F57d439B3a9E25C38F04EF97987D8", }, } } Object.keys(config).forEach(chain => { - const { lvTokens } = config[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: sumERC4626VaultsExport({ vaults: Object.values(lvTokens), tokenAbi: 'token', balanceAbi: 'totalAssets' }) + tvl } }) From dd23942fa2e891cf3c8d99416d38693aa83992b0 Mon Sep 17 00:00:00 2001 From: SpoolFi <90168835+SpoolFi@users.noreply.github.com> Date: Tue, 5 Mar 2024 23:08:14 +0100 Subject: [PATCH 0543/2004] Add Project: StakingRewards (srETH) (#9196) * Add Project: StakingRewards (srETH) * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/staking-rewards/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/staking-rewards/index.js diff --git a/projects/staking-rewards/index.js b/projects/staking-rewards/index.js new file mode 100644 index 00000000000..07ad0e56115 --- /dev/null +++ b/projects/staking-rewards/index.js @@ -0,0 +1,25 @@ +const abi = { + "getSmartVaultAssetBalances": "function getSmartVaultAssetBalances(address, bool) external returns (uint256[] memory)" +} + +const ethContract = "0x5d6ac99835b0dd42ed9ffc606170e59f75a88fde"; +const spoolLens = '0x8aa6174333F75421903b2B5c70DdF8DA5D84f74F'; + +async function eth(timestamp, ethBlock, chainBlocks, { 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 + } +} From 762f06b269c1cee1fc6e25380622b42e91d7b1a2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 5 Mar 2024 23:09:30 +0100 Subject: [PATCH 0544/2004] Add spool-fi-sreth project with TVL calculation for Ethereum --- projects/{staking-rewards => spool-fi-sreth}/index.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename projects/{staking-rewards => spool-fi-sreth}/index.js (100%) diff --git a/projects/staking-rewards/index.js b/projects/spool-fi-sreth/index.js similarity index 100% rename from projects/staking-rewards/index.js rename to projects/spool-fi-sreth/index.js From 0011f9cae351b7b7b2f02b9a735912849875d631 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 00:11:28 +0100 Subject: [PATCH 0545/2004] minor refactor --- projects/cellana/index.js | 45 +++++++++++---------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 9e2e3ca31ad..9da5f3efd55 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -1,12 +1,5 @@ -const sdk = require("@defillama/sdk"); -const http = require('../helper/http') const { getResources, } = require("../helper/chain/aptos"); -const { transformBalances } = require("../helper/portedTokens"); -const coinGecKoApi = 'https://api.coingecko.com/api/v3/simple/price?ids=aptos%2Captos&vs_currencies=usd'; -async function query(api) { - return http.get(`${api}`) -} -const util = require("util") +const ADDRESSES = require('../helper/coreAssets.json') const CELL_fungible_asset_address = '0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12' const APT_fungible_asset_address = '0xedc2704f2cef417a06d1756a04a16a9fa6faaed13af469be9cdfcac5a21a8e2e' @@ -15,14 +8,12 @@ async function _getResources() { if (!resourcesCache) resourcesCache = getResources("0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426") return resourcesCache } + const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") -async function _getCELLbalances() { - const balances = {} +async function _getCELLbalances(api) { const data = await getResources('0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1') - const { aptos } = await query(coinGecKoApi); - const aptosPrice = aptos.usd; const poolsAddresses = data.find(i => i.type.includes('::liquidity_pool::LiquidityPoolConfigs'))?.data.all_pools?.inline_vec for (const pool of poolsAddresses) { const fungibleAssetPoolStore = (await getResources(pool.inner)).find(i => i.type.includes('liquidity_pool::LiquidityPool'))?.data @@ -33,25 +24,16 @@ async function _getCELLbalances() { const fungibleAssetTokenStore_2 = (await getResources(fungibleAssetAddressToken2)).find(i => i.type.includes('fungible_asset::FungibleStore'))?.data const token_1_address = fungibleAssetTokenStore_1?.metadata?.inner const token_2_address = fungibleAssetTokenStore_2?.metadata?.inner - // sdk.util.sumSingleBalance(balances, fungibleAssetTokenStore_1?.metadata?.inner, fungibleAssetTokenStore_1?.balance||0); - // sdk.util.sumSingleBalance(balances, fungibleAssetTokenStore_2?.metadata?.inner, fungibleAssetTokenStore_2?.balance||0); if (token_1_address == CELL_fungible_asset_address) { - const cell_balance = fungibleAssetTokenStore_1?.balance; - sdk.util.sumSingleBalance(balances, token_1_address, cell_balance || 0); - // //caculator CELL price - // if (token_2_address == APT_fungible_asset_address) { - // const apt_balance = fungibleAssetTokenStore_2?.balance; - // const cell_price = (new BigNumber(apt_balance)).div(new BigNumber(cell_balance)).toNumber() * aptosPrice - // } - + addBalance(token_2_address, fungibleAssetTokenStore_2?.balance || 0); } else if (token_2_address == CELL_fungible_asset_address) { - const cell_balance = fungibleAssetTokenStore_2?.balance; - sdk.util.sumSingleBalance(balances, token_2_address, cell_balance || 0); - + addBalance(token_1_address, fungibleAssetTokenStore_1?.balance || 0); } - return balances; - + async function addBalance(token, balance) { + if (token === APT_fungible_asset_address) + api.add(ADDRESSES.aptos.APT, balance) + } } @@ -62,8 +44,7 @@ module.exports = { methodology: "Counts the lamports in each coin container in the Cellena contract account.", aptos: { - tvl: async () => { - const balances = {}; + tvl: async (_, _1, _2, { api }) => { const data = await _getResources() const coinContainers = data.filter(reserveContrainerFilter) .map((i) => ({ @@ -72,11 +53,9 @@ module.exports = { })); coinContainers.forEach(({ lamports, tokenAddress }) => { - sdk.util.sumSingleBalance(balances, tokenAddress, lamports); + api.add(tokenAddress, lamports); }); - let cellBlanaces = await _getCELLbalances(); - sdk.util.mergeBalances(balances, cellBlanaces) - return transformBalances("aptos", balances); + await _getCELLbalances(api) } } } \ No newline at end of file From adf3a3c712226592334e6831d1a5df269a43f08c Mon Sep 17 00:00:00 2001 From: Shushant <114708157+WardenJakx@users.noreply.github.com> Date: Tue, 5 Mar 2024 18:12:20 -0500 Subject: [PATCH 0546/2004] [FEAT]: Add definitive.fi (#9200) * definitive adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/definitive/index.js | 90 ++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 projects/definitive/index.js diff --git a/projects/definitive/index.js b/projects/definitive/index.js new file mode 100644 index 00000000000..cfd4e73daca --- /dev/null +++ b/projects/definitive/index.js @@ -0,0 +1,90 @@ +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(_, _1, _2, { 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 From 1ed70f46c7683a49fc86e8882e3a5670e625aa03 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 00:13:24 +0100 Subject: [PATCH 0547/2004] lint fix --- projects/cellana/index.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 9da5f3efd55..5d2acc955e9 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -29,15 +29,14 @@ async function _getCELLbalances(api) { } else if (token_2_address == CELL_fungible_asset_address) { addBalance(token_1_address, fungibleAssetTokenStore_1?.balance || 0); } - - async function addBalance(token, balance) { - if (token === APT_fungible_asset_address) - api.add(ADDRESSES.aptos.APT, balance) - } } - + async function addBalance(token, balance) { + if (token === APT_fungible_asset_address) + api.add(ADDRESSES.aptos.APT, balance) + } } + module.exports = { timetravel: false, misrepresentedTokens: true, From 2f1c15038faf72442f6eca594e19d6085989db2f Mon Sep 17 00:00:00 2001 From: Centure2222 <161669395+Centure2222@users.noreply.github.com> Date: Wed, 6 Mar 2024 06:14:22 +0700 Subject: [PATCH 0548/2004] Update Cellana finance - Fix err text and add CELL token balances (#9190) * add cellana aptos tvl * minor fix * Fix err text and add CELL token balance * minor refactor * lint fix --------- Co-authored-by: HS Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cellana/index.js | 51 ++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 1de1562fcbb..5d2acc955e9 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -1,24 +1,49 @@ -const sdk = require("@defillama/sdk"); const { getResources, } = require("../helper/chain/aptos"); -const { transformBalances } = require("../helper/portedTokens"); - -let resourcesCache +const ADDRESSES = require('../helper/coreAssets.json') +const CELL_fungible_asset_address = '0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12' +const APT_fungible_asset_address = '0xedc2704f2cef417a06d1756a04a16a9fa6faaed13af469be9cdfcac5a21a8e2e' async function _getResources() { + let resourcesCache; if (!resourcesCache) resourcesCache = getResources("0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426") return resourcesCache } + const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") +async function _getCELLbalances(api) { + const data = await getResources('0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1') + const poolsAddresses = data.find(i => i.type.includes('::liquidity_pool::LiquidityPoolConfigs'))?.data.all_pools?.inline_vec + for (const pool of poolsAddresses) { + const fungibleAssetPoolStore = (await getResources(pool.inner)).find(i => i.type.includes('liquidity_pool::LiquidityPool'))?.data + const fungibleAssetAddressToken1 = fungibleAssetPoolStore?.token_store_1?.inner + const fungibleAssetAddressToken2 = fungibleAssetPoolStore?.token_store_2?.inner + + const fungibleAssetTokenStore_1 = (await getResources(fungibleAssetAddressToken1)).find(i => i.type.includes('fungible_asset::FungibleStore'))?.data + const fungibleAssetTokenStore_2 = (await getResources(fungibleAssetAddressToken2)).find(i => i.type.includes('fungible_asset::FungibleStore'))?.data + const token_1_address = fungibleAssetTokenStore_1?.metadata?.inner + const token_2_address = fungibleAssetTokenStore_2?.metadata?.inner + if (token_1_address == CELL_fungible_asset_address) { + addBalance(token_2_address, fungibleAssetTokenStore_2?.balance || 0); + } else if (token_2_address == CELL_fungible_asset_address) { + addBalance(token_1_address, fungibleAssetTokenStore_1?.balance || 0); + } + } + + async function addBalance(token, balance) { + if (token === APT_fungible_asset_address) + api.add(ADDRESSES.aptos.APT, balance) + } +} + module.exports = { timetravel: false, misrepresentedTokens: true, methodology: - "Counts the lamports in each coin container in the Aries contract account.", + "Counts the lamports in each coin container in the Cellena contract account.", aptos: { - tvl: async () => { - const balances = {}; + tvl: async (_, _1, _2, { api }) => { const data = await _getResources() const coinContainers = data.filter(reserveContrainerFilter) .map((i) => ({ @@ -27,11 +52,9 @@ module.exports = { })); coinContainers.forEach(({ lamports, tokenAddress }) => { - sdk.util.sumSingleBalance(balances, tokenAddress, lamports); + api.add(tokenAddress, lamports); }); - - return transformBalances("aptos", balances); - }, - - }, -}; + await _getCELLbalances(api) + } + } +} \ No newline at end of file From 66825827d3baad9e57bfba9dd9c67b0e827410bb Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Wed, 6 Mar 2024 00:31:29 +0000 Subject: [PATCH 0549/2004] doublecount lrt --- projects/ether-fi/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js index 8c9ec590184..1b67838b4c1 100644 --- a/projects/ether-fi/index.js +++ b/projects/ether-fi/index.js @@ -2,6 +2,7 @@ const { nullAddress } = require("../helper/unwrapLPs"); const sdk = require('@defillama/sdk') module.exports = { + doublecounted: true, ethereum: { tvl: async (timestamp) => { const api = new sdk.ChainApi({ timestamp, chain: 'optimism' }) From f2b7671470ad945ac87a0a445a92b9ccf75d297f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 6 Mar 2024 00:36:48 +0000 Subject: [PATCH 0550/2004] add doublecounted to lrts --- projects/claystack/index.js | 1 + projects/genesis-lrt/index.js | 1 + projects/inception-lrt/index.js | 1 + projects/kelp-dao/index.js | 1 + projects/prime-staked/index.js | 1 + projects/renzo/index.js | 1 + projects/restake-finance/index.js | 1 + projects/swell-restaking/index.js | 1 + projects/unieth/index.js | 1 + 9 files changed, 9 insertions(+) diff --git a/projects/claystack/index.js b/projects/claystack/index.js index 51dbb99a3c0..f77c1f98800 100644 --- a/projects/claystack/index.js +++ b/projects/claystack/index.js @@ -12,6 +12,7 @@ async function getTvlOnEthereum(_, block, _1, { api }) { } module.exports = { + doublecounted: true, hallmarks: [ [1707315338,"Split Adapter"] ], diff --git a/projects/genesis-lrt/index.js b/projects/genesis-lrt/index.js index 246ea24f21a..a2c89e2f614 100644 --- a/projects/genesis-lrt/index.js +++ b/projects/genesis-lrt/index.js @@ -6,5 +6,6 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { + doublecounted: true, ethereum: { tvl, }, } \ No newline at end of file diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js index 2b4d0394a02..073e22208d9 100644 --- a/projects/inception-lrt/index.js +++ b/projects/inception-lrt/index.js @@ -9,5 +9,6 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { + doublecounted: true, ethereum: { tvl, }, } \ No newline at end of file diff --git a/projects/kelp-dao/index.js b/projects/kelp-dao/index.js index 620478d7f20..43d9c72958f 100644 --- a/projects/kelp-dao/index.js +++ b/projects/kelp-dao/index.js @@ -9,6 +9,7 @@ async function tvl(_, _1, _2, { api }) { } module.exports = { + doublecounted: true, methodology: "deposited LSTs in deposit pool, node delegator contracts and from them into eigenlayer strategy contracts", ethereum: { diff --git a/projects/prime-staked/index.js b/projects/prime-staked/index.js index d8bd3c3a705..9e8ad0149e8 100644 --- a/projects/prime-staked/index.js +++ b/projects/prime-staked/index.js @@ -9,6 +9,7 @@ async function tvl(_, _1, _2, { api }) { } module.exports = { + doublecounted: true, methodology: "Returns the total assets owned by primeETH", start: 19128047, diff --git a/projects/renzo/index.js b/projects/renzo/index.js index 74385d2e3d3..8f8fea5f03d 100644 --- a/projects/renzo/index.js +++ b/projects/renzo/index.js @@ -11,6 +11,7 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { + doublecounted: true, ethereum: { tvl, }, diff --git a/projects/restake-finance/index.js b/projects/restake-finance/index.js index 826e38e2eac..2506b62d9f9 100644 --- a/projects/restake-finance/index.js +++ b/projects/restake-finance/index.js @@ -14,6 +14,7 @@ async function tvl(_1, _2, _3, { api }) { } module.exports = { + doublecounted: true, ethereum: { tvl, } diff --git a/projects/swell-restaking/index.js b/projects/swell-restaking/index.js index 5651cd5f3d7..050426760ee 100644 --- a/projects/swell-restaking/index.js +++ b/projects/swell-restaking/index.js @@ -11,6 +11,7 @@ async function tvl(_, _b, _cb, { api, }) { } module.exports = { + doublecounted: true, ethereum: { tvl, }, diff --git a/projects/unieth/index.js b/projects/unieth/index.js index fefa981271c..70551ef29f6 100644 --- a/projects/unieth/index.js +++ b/projects/unieth/index.js @@ -18,6 +18,7 @@ async function tvl(_, _1, _2, { api }) { } module.exports = { + doublecounted: true, methodology: 'Counts the total ethers staked with RockX Staking Contract.', ethereum: { tvl, From 3aa9691d801cd453c94ab6929b5c06cd9a804992 Mon Sep 17 00:00:00 2001 From: Andy <92434329+IvanMacaron@users.noreply.github.com> Date: Wed, 6 Mar 2024 17:18:44 +0800 Subject: [PATCH 0551/2004] add Lessgas (#8893) * add fetch * Change calculation method * add log * change tvl method * add * code refactor --------- Co-authored-by: evan Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lessgas/abi.json | 4 ++++ projects/lessgas/index.js | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 projects/lessgas/abi.json create mode 100644 projects/lessgas/index.js diff --git a/projects/lessgas/abi.json b/projects/lessgas/abi.json new file mode 100644 index 00000000000..8099a753055 --- /dev/null +++ b/projects/lessgas/abi.json @@ -0,0 +1,4 @@ +{ + "balanceOf": "function balanceOf(address account) view returns (uint256)", + "totalSupply": "uint256:totalSupply" +} diff --git a/projects/lessgas/index.js b/projects/lessgas/index.js new file mode 100644 index 00000000000..56e7c8f7d47 --- /dev/null +++ b/projects/lessgas/index.js @@ -0,0 +1,16 @@ +const { getConfig } = require('../helper/cache') +const HOST = 'https://api2.lessgas.xyz' + +const staking = async (a, b, c, { 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, + } +}; From b8d94834ec831df9ccd2dd11e3120cee710a1af8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 10:25:56 +0100 Subject: [PATCH 0552/2004] Add Blastoff TVL (#9204) * Add Blastoff TVL * Merge branch 'DefiLlama:main' into main * code refactor --- projects/blastoff/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/blastoff/index.js diff --git a/projects/blastoff/index.js b/projects/blastoff/index.js new file mode 100644 index 00000000000..82fc8af05e5 --- /dev/null +++ b/projects/blastoff/index.js @@ -0,0 +1,12 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +const LOCKED_STAKING = "0xd95773e5b1eedc7ff302a70acd0eb370927397d2"; +const NONLOCK_STAKING = "0xd9747a98624f0B64B4412632C420672E16432334"; + +module.exports = { + blast: { + tvl: sumTokensExport({ owners: [LOCKED_STAKING, NONLOCK_STAKING], tokens: [ADDRESSES.null, ADDRESSES.blast.USDB] }), + }, + methodology: "counts the amount of USDB and ETH locked in 2 staking contracts", +}; From fa2f3bf4017c0ab11328f83e1d0f5b0c7737b2f1 Mon Sep 17 00:00:00 2001 From: mandriuska <124680830+mandriuska@users.noreply.github.com> Date: Wed, 6 Mar 2024 11:27:18 +0200 Subject: [PATCH 0553/2004] adding Lenfi(Aada) V2 measuring (#9202) --- projects/aada/index.js | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/projects/aada/index.js b/projects/aada/index.js index 49115ff554d..73780c8420d 100644 --- a/projects/aada/index.js +++ b/projects/aada/index.js @@ -1,20 +1,30 @@ -const { sumTokensExport, } = require("../helper/chain/cardano"); +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 + "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: 'Counts amount of AADA staked; by a price of ADA sitting in the orderbook.', + 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, }) - } + staking: sumTokensExport({ + owner: "addr1wyvej5rmcrhfpcwrwmnqsjtwvf8gv3dn64vwy3xzekp95wqqhdkwa", + tokens: [ + "8fef2d34078659493ce161a6c7fba4b56afefa8535296a5743f6958741414441", + ], + }), + tvl: sumTokensExport({ scripts: scriptAdresses }), + }, + hallmarks: [[1708560053, "V2 Launch"]], }; From 5686d3ce21e9f7c335b0694d2cac8dd0d10b88f8 Mon Sep 17 00:00:00 2001 From: hoomp3 Date: Wed, 6 Mar 2024 04:31:50 -0500 Subject: [PATCH 0554/2004] Update Juice Finance (#9201) * feat: add new collateral vault and strategy vault * Add sumTokens2 function and update tvl calculation --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/juice-finance/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index 96dff86f381..c10b3869243 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -1,9 +1,17 @@ const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2 } = require('../helper/unwrapLPs') const LENDING_POOL = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a" const COLLATERAL_VAULT = "0x6301795aa55B90427CF74C18C8636E0443F2100b" +const COLLATERAL_VAULT_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0" + +const vaults = [ + // This vault holds a Thruster LP token, but it is not being priced. + ["0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df", "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], + [ADDRESSES.blast.WETH, "0x4A355D57fc1A5eEB33C0a19539744A2144220027"] +] async function tvl(timestamp, _, _1, { api }) { - return api.sumTokens({ tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL], [ADDRESSES.blast.WETH, COLLATERAL_VAULT]] }) + return sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL], [ADDRESSES.blast.WETH, COLLATERAL_VAULT], [ADDRESSES.blast.WETH, COLLATERAL_VAULT_V2], ...vaults] }) } module.exports = { From 44b5fb49109feb1e38838f3232a81913809e55f0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 10:53:43 +0100 Subject: [PATCH 0555/2004] unwrap aSTETH --- projects/alongside/index.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/projects/alongside/index.js b/projects/alongside/index.js index 260ce31848a..6ef3b93a8b2 100644 --- a/projects/alongside/index.js +++ b/projects/alongside/index.js @@ -1,19 +1,21 @@ -const sdk = require("@defillama/sdk"); -const { sumTokensExport } = require("../helper/unwrapLPs"); +const { sumTokens2 } = require("../helper/unwrapLPs") +const ADDRESSES = require('../helper/coreAssets.json') -const INDEX = "0xF17A3fE536F8F7847F1385ec1bC967b2Ca9caE8D"; +async function tvl(_, block, _cb, { 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) -async function tvl(_, block, _cb) { - const balances = {} - const supply = await sdk.api2.abi.call({ abi: 'uint256:totalSupply', target: INDEX, block }) - sdk.util.sumSingleBalance(balances, INDEX, supply, 'ethereum') - return balances + 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: sumTokensExport({ owner: '0xf3bCeDaB2998933c6AAD1cB31430D8bAb329dD8C', fetchCoValentTokens: true }), + tvl, }, }; From a1d1cee669a20edd8fb60a0145020810b8780d89 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 6 Mar 2024 11:20:55 +0000 Subject: [PATCH 0556/2004] add binance btc wallet (#9206) --- projects/binance/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index 5a3ddbdc078..31ffc805951 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -76,6 +76,7 @@ const assetList = [ ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], + ['BTC', 'BTC', '3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2'], // added on 06/03/2024 ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['BTC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['BTC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], From 7bf9a91e66fb83a92b640a67e4d94648fee9390a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:07:53 +0100 Subject: [PATCH 0557/2004] fix broken adapters --- package-lock.json | 6 +-- projects/ambient-finance/index.js | 2 +- projects/elektrik/index.js | 2 +- projects/helper/chain/cosmos.js | 2 +- projects/helper/env.js | 2 + projects/orbitbridge/index.js | 87 ++++++++++++------------------- 6 files changed, 41 insertions(+), 60 deletions(-) diff --git a/package-lock.json b/package-lock.json index 33ecfd2a767..496134da871 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.37", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.37.tgz", - "integrity": "sha512-V+3bpkkU5fiHVDwcerk+aqozxYrPJ9aunNb4KbXO4CSB9YmCA23QJn+3EEP9e5iikjVmnlFCeIOVViMB86LkYQ==", + "version": "5.0.38", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.38.tgz", + "integrity": "sha512-XhcqNwaKvbnXwcHO+oIUx5vcdP/PpkdtNHAPR7sdZ5vjnAvSQgSMCgSqH0qu0gvqiJgblULdqJ5rf77QSIAHgg==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/ambient-finance/index.js b/projects/ambient-finance/index.js index e2cd418141e..351eace028d 100644 --- a/projects/ambient-finance/index.js +++ b/projects/ambient-finance/index.js @@ -12,7 +12,7 @@ const vault = { const subgraphs = { scroll: 'https://ambindexer.net/scroll-gcgo/pool_list?chainId=0x82750', blast: 'https://ambindexer.net/blast-gcgo/pool_list?chainId=0x13e31', - canto: "https://canto-subgraph.plexnode.wtf/subgraphs/name/ambient-graph", + canto: "https://ambient-graphcache.fly.dev/gcgo/pool_list?chainId=0x1e14", ethereum: `https://api.thegraph.com/subgraphs/name/crocswap/croc-mainnet` } diff --git a/projects/elektrik/index.js b/projects/elektrik/index.js index 3a92a6946f3..5e2a28a80ab 100644 --- a/projects/elektrik/index.js +++ b/projects/elektrik/index.js @@ -10,7 +10,7 @@ const query = `{ }` async function tvl(_, _b, _cb, { api, }) { - const { pools } = await cachedGraphQuery('elektrik', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH', query) + const { pools } = await cachedGraphQuery('elektrik-1', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH', query) const ownerTokens = pools.map(i => [[i.token0.id, i.token1.id], i.id]) return sumTokens2({ api, ownerTokens, }) } diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 30312372cff..b63b7e145e7 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -25,7 +25,7 @@ const endPoints = { stargaze: "https://rest.stargaze-apis.com", quicksilver: "https://rest.cosmos.directory/quicksilver", persistence: "https://rest.cosmos.directory/persistence", - secret: "https://lcd.secret.express", + secret: "https://rpc.ankr.com/http/scrt_cosmos", // chihuahua: "https://api.chihuahua.wtf", injective: "https://sentry.lcd.injective.network:443", migaloo: "https://migaloo-api.polkachu.com", diff --git a/projects/helper/env.js b/projects/helper/env.js index 2b96673d1fa..b41730d16d5 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -23,6 +23,8 @@ const DEFAULTS = { MERLIN_RPC: "https://rpc.merlinchain.io", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', BITROCK_RPC_MULTICALL: '0x40DD0342A46Ab0893251211F6626E82c09A75345', + RONIN_RPC: 'https://api.roninchain.com/rpc', + ETHF_RPC: 'https://rpc.dischain.xyz/', } const ENV_KEYS = [ diff --git a/projects/orbitbridge/index.js b/projects/orbitbridge/index.js index 87badce66c3..343d87768d1 100644 --- a/projects/orbitbridge/index.js +++ b/projects/orbitbridge/index.js @@ -1,5 +1,4 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') const { getConfig } = require('../helper/cache') const { sumTokensExport } = require('../helper/sumTokens') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -40,72 +39,52 @@ const farms = { let tokenData -function chainTvls(chain) { - return async (timestamp, ethBlock, {[chain]: block}) => { - const vault = vaults[chain] - let targetChain = chain - if (chain === 'ethereum') targetChain = 'eth' - if (chain === 'polygon') targetChain = 'matic' +async function tvl(timestamp, ethBlock, _1, { api }) { + const chain = api.chain - const tokenListURL = 'https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList' - tokenData = tokenData || getConfig('orbit-bridge', tokenListURL) - const data = await tokenData + if (chain === 'meta') return {} // rpc issues with meta - let tokenList = data.origins.filter(x => x.chain === targetChain && !x.is_nft).map(x => x.address) - tokenList.push(nullAddress) - const balances = await sumTokens2({ owner: vault, tokens: tokenList, chain, block, blacklistedTokens: [ + const vault = vaults[chain] + let targetChain = chain + if (chain === 'ethereum') targetChain = 'eth' + if (chain === 'polygon') targetChain = 'matic' + + 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].map(i => ({ params: i })) - const { output: farmData } = await sdk.api.abi.multiCall({ - target: vault, - abi: ABI.farms, - calls, chain, block, - }) - const { output: farmBalance } = await sdk.api.abi.multiCall({ - abi: ABI.wantLockedTotal, - calls: farmData.map(i => ({ target: i.output})), - chain, block, - }) - farmBalance.forEach((data, i) => sdk.util.sumSingleBalance(balances, chain + ':' + farms[chain][i], data.output)) - } - return balances + 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) } } module.exports = { methodology: 'Tokens locked in Orbit Bridge contract are counted as TVL', timetravel: false, - bsc: { - tvl: chainTvls('bsc') - }, - celo: { - tvl: chainTvls('celo') - }, - heco: { - tvl: chainTvls('heco') - }, - ethereum: { - tvl: chainTvls('ethereum') - }, - klaytn: { - tvl: chainTvls('klaytn') - }, - polygon: { - tvl: chainTvls('polygon') - }, - meta: { - tvl: chainTvls('meta') - }, - wemix: { - tvl: chainTvls('wemix') - }, + bsc: { tvl }, + celo: { tvl }, + heco: { tvl }, + ethereum: { tvl }, + klaytn: { tvl }, + polygon: { tvl }, + meta: { tvl }, + wemix: { tvl }, ripple: { - tvl: sumTokensExport({ chain: 'ripple', owner: 'rLcxBUrZESqHnruY4fX7GQthRjDCDSAWia'}) + tvl: sumTokensExport({ chain: 'ripple', owner: 'rLcxBUrZESqHnruY4fX7GQthRjDCDSAWia' }) }, ton: { tvl: tonExport({ owner: "EQAtkbV8ysI75e7faO8Ihu0mFtmsg-osj7gmrTg_mljVRccy", tokens: [ADDRESSES.null], onlyWhitelistedTokens: true }), From 1f4aee72152cd58f50a8b8dd456d2c1d98d86c9b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:35:36 +0100 Subject: [PATCH 0558/2004] track velodrome slipstream --- projects/velodrome-CL/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/velodrome-CL/index.js diff --git a/projects/velodrome-CL/index.js b/projects/velodrome-CL/index.js new file mode 100644 index 00000000000..f2b1fc3dc23 --- /dev/null +++ b/projects/velodrome-CL/index.js @@ -0,0 +1,15 @@ + +const {getUniTVL} = require('../helper/unknownTokens.js') +const config = { + optimism: { factory: '0x548118C7E0B865C2CfA94D15EC86B666468ac758'}, +} + +Object.keys(config).forEach(chain => { + const { factory } = config[chain] + module.exports[chain] = { + tvl: getUniTVL({ factory, fetchBalances: true, abis: { + allPairsLength: 'uint256:allPoolsLength', + allPairs: "function allPools(uint) view returns (address)", + } }) + } +}) From cd412eb657f9898aabd712677efbc7b0ec55f241 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Wed, 6 Mar 2024 12:57:33 +0000 Subject: [PATCH 0559/2004] panther --- projects/panther-protocol/index.js | 38 +++++++++++------------------- 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/projects/panther-protocol/index.js b/projects/panther-protocol/index.js index aac98b33373..35d1b44d354 100644 --- a/projects/panther-protocol/index.js +++ b/projects/panther-protocol/index.js @@ -1,32 +1,22 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs') - +const { stakings } = require("../helper/staking"); const contracts = { polygon: { - core: '0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC', + core: "0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC", + staking: [ + "0x4cec451f63dbe47d9da2debe2b734e4cb4000eac", + "0x5e7fda6d9f5024c4ad1c780839987ab8c76486c9", + ], }, ethereum: { - core: '0x909E34d3f6124C324ac83DccA84b74398a6fa173', - staking: '0xf4d06d72dacdd8393fa4ea72fdcc10049711f899' - } + core: "0x909E34d3f6124C324ac83DccA84b74398a6fa173", + staking: ["0xf4d06d72dacdd8393fa4ea72fdcc10049711f899"], + }, }; -const blacklistedTokens = []; - -function getTVLFunc(contractAddress, chain) { - return async function (timestamp, _, { [chain]: block }, { api }) { - return sumTokens2({ owner: contractAddress, fetchCoValentTokens: true, blacklistedTokens, api }) - } -} - -function getChainTVL(chain) { - return { - staking: contracts[chain].staking ? staking(contracts[chain].staking, contracts[chain].core) : undefined, - tvl: getTVLFunc(contracts[chain].proxy, chain), +Object.keys(contracts).forEach((chain) => { + module.exports[chain] = { + tvl: () => ({}), + staking: stakings(contracts[chain].staking, contracts[chain].core), }; -} - -Object.keys(contracts).forEach(chain => { - module.exports[chain] = getChainTVL(chain) -}) +}); From 09abeae51d25d2b474fa7058078ad04f217ce2dd Mon Sep 17 00:00:00 2001 From: Ken Date: Wed, 6 Mar 2024 21:32:53 +0800 Subject: [PATCH 0560/2004] Add lazyotter adapter (#9205) * add lazyotter project * modify methodology * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lazyotter/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/lazyotter/index.js diff --git a/projects/lazyotter/index.js b/projects/lazyotter/index.js new file mode 100644 index 00000000000..ecefd557415 --- /dev/null +++ b/projects/lazyotter/index.js @@ -0,0 +1,18 @@ +const aaveVaults = [ + '0x7100409baaeda121ab92f663e3ddb898f11ff745', + '0x844Ccc93888CAeBbAd91332FCa1045e6926a084d', +] + +async function tvl(_, _1, _2, { api }) { + const tokens = await api.multiCall({ abi: 'address:asset', calls: aaveVaults}) + const aTokens = await api.multiCall({ abi: 'address:aToken', calls: aaveVaults}) + const tokensAndOwners2 = [tokens.concat(aTokens), aaveVaults.concat(aaveVaults)] + return api.sumTokens({ tokensAndOwners2 }) +} + +module.exports = { + methodology: "TVL: Returns the total assets owned by the LazyOtter Vault on Scroll.", + scroll: { + tvl, + }, +}; From 5a47ac0ab733cfc2c40d47017f4312e49065f8e7 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Wed, 6 Mar 2024 13:33:35 +0000 Subject: [PATCH 0561/2004] panther (#9208) --- projects/panther-protocol/index.js | 38 +++++++++++------------------- 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/projects/panther-protocol/index.js b/projects/panther-protocol/index.js index aac98b33373..35d1b44d354 100644 --- a/projects/panther-protocol/index.js +++ b/projects/panther-protocol/index.js @@ -1,32 +1,22 @@ -const { staking } = require("../helper/staking"); -const { sumTokens2 } = require('../helper/unwrapLPs') - +const { stakings } = require("../helper/staking"); const contracts = { polygon: { - core: '0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC', + core: "0x9A06Db14D639796B25A6ceC6A1bf614fd98815EC", + staking: [ + "0x4cec451f63dbe47d9da2debe2b734e4cb4000eac", + "0x5e7fda6d9f5024c4ad1c780839987ab8c76486c9", + ], }, ethereum: { - core: '0x909E34d3f6124C324ac83DccA84b74398a6fa173', - staking: '0xf4d06d72dacdd8393fa4ea72fdcc10049711f899' - } + core: "0x909E34d3f6124C324ac83DccA84b74398a6fa173", + staking: ["0xf4d06d72dacdd8393fa4ea72fdcc10049711f899"], + }, }; -const blacklistedTokens = []; - -function getTVLFunc(contractAddress, chain) { - return async function (timestamp, _, { [chain]: block }, { api }) { - return sumTokens2({ owner: contractAddress, fetchCoValentTokens: true, blacklistedTokens, api }) - } -} - -function getChainTVL(chain) { - return { - staking: contracts[chain].staking ? staking(contracts[chain].staking, contracts[chain].core) : undefined, - tvl: getTVLFunc(contracts[chain].proxy, chain), +Object.keys(contracts).forEach((chain) => { + module.exports[chain] = { + tvl: () => ({}), + staking: stakings(contracts[chain].staking, contracts[chain].core), }; -} - -Object.keys(contracts).forEach(chain => { - module.exports[chain] = getChainTVL(chain) -}) +}); From 9a8efb5abb416c39705f1122e50412c327db0654 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:54:09 +0100 Subject: [PATCH 0562/2004] Update kamino lending markets (#9211) * Fetch kamino lend markets dynamically * kamino: cache api response --------- Co-authored-by: peroxy --- projects/kamino-lending/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/kamino-lending/index.js b/projects/kamino-lending/index.js index a96980b9424..d753a48fd7d 100644 --- a/projects/kamino-lending/index.js +++ b/projects/kamino-lending/index.js @@ -3,11 +3,12 @@ const { getConnection, sumTokens } = 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 = ['7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF', 'DxXdAyU3kCjnyggvHmY5nAwg5cRbbmdyX3npfDMjjMek']; + const markets = (await getConfig('kamino-lending', 'https://api.kamino.finance/v2/kamino-market')).map(x => x.lendingMarket); const lendingMarketAuthSeed = 'lma'; const tokensAndOwners = []; const ktokens = {}; From e6bef7d9e5740b5cf049d980f896e4ddae47c370 Mon Sep 17 00:00:00 2001 From: Brdd Mnk Date: Wed, 6 Mar 2024 15:56:53 +0200 Subject: [PATCH 0563/2004] new project Kaisen (#9209) * new LP contract address * code refactor * new CALM contract * new project kaisen * Remove unused import statement --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/kaisen/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/kaisen/index.js diff --git a/projects/kaisen/index.js b/projects/kaisen/index.js new file mode 100644 index 00000000000..0be9976071e --- /dev/null +++ b/projects/kaisen/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + methodology: "TVL comes from the Vaults", + blast: { + tvl: sumTokensExport({ + owner: "0xd97cbc833643dc458849d5b96dea100f13b08402", + resolveUniV3: true, + }), + }, +}; From dd28cacd4fae0ae7dd4d5050f2e41c6278d7258e Mon Sep 17 00:00:00 2001 From: Dozer <71271486+dev-dozer@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:09:12 +0200 Subject: [PATCH 0564/2004] added manta chain (#9212) --- projects/interport-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index 47d2358e198..6590b756223 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -15,7 +15,7 @@ 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'].forEach(chain => { +['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'polygon_zkevm', 'base', 'era', 'optimism', 'linea', 'eon', 'op_bnb', 'scroll', 'manta'].forEach(chain => { module.exports[chain] = { tvl: async (_, _1, _2, { api }) => { const vaults = config[chain]?.vaults || defaultVaults From a0c90ae35bd2f659dc156afb62dd32a1132d544b Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:25:32 +0000 Subject: [PATCH 0565/2004] Poly (#9213) * add binance btc wallet * new api endpoint polynomial trade --- projects/polynomial-trade/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/polynomial-trade/index.js b/projects/polynomial-trade/index.js index 60777d2987b..31dfb2e3a12 100644 --- a/projects/polynomial-trade/index.js +++ b/projects/polynomial-trade/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { get } = require('../helper/http'); // api -const BASE_URL = "https://perps-api-experimental.polynomial.fi/snx-perps/tvl"; +const BASE_URL = "https://perps-v2-mainnet.polynomial.fi/snx-perps/tvl"; async function tvl (timestamp, ethBlock) { const perpApi = await get(BASE_URL); From ed7003abb8d53b3e434af0c137b1155c05886254 Mon Sep 17 00:00:00 2001 From: WarlockDeFi <142273979+WarlockDeFi@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:04:06 +0000 Subject: [PATCH 0566/2004] Update BlastNYAN contracts (#9215) --- projects/BlastNYAN/index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/projects/BlastNYAN/index.js b/projects/BlastNYAN/index.js index f2091ad9f3e..7ee4c57fe1a 100644 --- a/projects/BlastNYAN/index.js +++ b/projects/BlastNYAN/index.js @@ -5,16 +5,29 @@ const BLNYAN_WETH_SLP = '0x0E9309f32881899F6D4aC2711c6E21367A84CA26' const stakingBLNYANContract = '0xA76D6dc805d0EbEcb3787c781ce3A18feEF020cb' const feeDistro = '0xBC8a7a845cC7A8246EB34856Afe6f1a3d62BD9C6' -const stakeLpEarnWeth = '0x0a3A757BE3049C2d9444d025E98D37b2a81a0a32' +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: [stakeLpEarnWeth, feeDistro, button], tokens: [WETH], ...opts, }), - pool2: sumTokensExport({ ...opts, owners: [stakeLpEarnWeth], tokens: [BLNYAN_WETH_SLP], }), - staking: sumTokensExport({ owners: [stakingBLNYANContract], tokens: [BLNYAN], ...opts, }), + 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', From d672695bfbbdbe9f7620d3303defb29ad6af2012 Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:04:32 +0700 Subject: [PATCH 0567/2004] DackieSwap Update Blast chain Factory Address (#9216) * update staking dackie * update arbitrum * update blast * update blast factory --------- Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 2 +- projects/dackieswap/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index 33477e74615..e7043afc964 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -34,7 +34,7 @@ module.exports = { }, blast: { tvl: getUniTVL({ - factory: "0x757cD583004400ee67e5cC3c7A60C6a62E3F6d30", + factory: "0xF5190E64dB4cbf7ee5E72B55cC5b2297e20264c2", useDefaultCoreAssets: true, fetchBalances: true }) diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index d4038adba0e..f1960c087f7 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -4,5 +4,5 @@ module.exports = uniV3Export({ base: { factory: "0x3D237AC6D2f425D2E890Cc99198818cc1FA48870", fromBlock: 2031627 }, optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 }, arbitrum: { factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", fromBlock: 180722131 }, - blast: { factory: "0xB9010964301326160173da694c0697a2FcE82F39", fromBlock: 286237 }, + blast: { factory: "0xd1575B2e0C82fba9Eddc3de9c9AAF923AFA670cC", fromBlock: 286237 }, }); \ No newline at end of file From b9b6e8d9df6a8f768635ff527f8bb1d254b95222 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 21:46:36 +0100 Subject: [PATCH 0568/2004] venus: track ethereum --- projects/venus-isolated-pools/index.js | 14 ++++++++++---- projects/venus.js | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/projects/venus-isolated-pools/index.js b/projects/venus-isolated-pools/index.js index 7b51fbceb9f..a2201f8a065 100644 --- a/projects/venus-isolated-pools/index.js +++ b/projects/venus-isolated-pools/index.js @@ -4,6 +4,11 @@ const { compoundExports2 } = require('../helper/compound') const config = { bsc: { endpoint: 'https://api.thegraph.com/subgraphs/name/venusprotocol/venus-isolated-pools', + corePools: ['0xfd36e2c2a6789db23113685031d7f16329158384'], + }, + ethereum: { + endpoint: 'https://api.thegraph.com/subgraphs/name/venusprotocol/venus-isolated-pools-ethereum', + corePools: ['0x67aA3eCc5831a65A5Ba7be76BED3B5dc7DB60796'], } } @@ -12,9 +17,10 @@ Object.keys(config).forEach(chain => { }) async function getPools(api) { - const { endpoint } = config[api.chain] - const { pools } = await cachedGraphQuery('venus-v4', endpoint, `{ pools { id }}`) - return pools.map(i => i.id) + 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) { @@ -29,4 +35,4 @@ async function borrowed(...args) { const pools = await getPools(api) const tvls = pools.map(i => compoundExports2({ comptroller: i, fetchBalances: true, })) return sdk.util.sumChainTvls(tvls.map(i => i.borrowed))(...args) -} \ No newline at end of file +} diff --git a/projects/venus.js b/projects/venus.js index 29dfd3d48de..687adb0e367 100644 --- a/projects/venus.js +++ b/projects/venus.js @@ -1,5 +1,5 @@ const ADDRESSES = require('./helper/coreAssets.json') -const {fullCoumpoundExports} = require('./helper/compound'); +const {fullCoumpoundExports, compoundExports2} = require('./helper/compound'); const replace = { [ADDRESSES.bsc.BETH]: ADDRESSES.ethereum.WETH, // beth->weth @@ -9,3 +9,5 @@ const replace = { module.exports = fullCoumpoundExports("0xfd36e2c2a6789db23113685031d7f16329158384", "bsc", "0xA07c5b74C9B40447a954e1466938b865b6BBea36", ADDRESSES.bsc.WBNB, addr=>{ return replace[addr.toLowerCase()] || `bsc:${addr}` }) + +module.exports.ethereum = compoundExports2({ comptroller: '0x67aA3eCc5831a65A5Ba7be76BED3B5dc7DB60796'}) \ No newline at end of file From fa294f6d3c2d45e729c7e00ede0a2d734fd533a1 Mon Sep 17 00:00:00 2001 From: 0xFantomMenace <93462858+0xFantomMenace@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:55:41 -0600 Subject: [PATCH 0569/2004] adds Ironclad (#9221) * adds Ironclad * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ironclad/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/ironclad/index.js diff --git a/projects/ironclad/index.js b/projects/ironclad/index.js new file mode 100644 index 00000000000..bec88f197b6 --- /dev/null +++ b/projects/ironclad/index.js @@ -0,0 +1,5 @@ +const { aaveExports } = require('../helper/aave') + +module.exports = { + mode: aaveExports("mode", "0x5C93B799D31d3d6a7C977f75FDB88d069565A55b"), +} From 65068eab6a317607aaa846e1380683126e01e6ca Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 6 Mar 2024 22:00:09 +0100 Subject: [PATCH 0570/2004] minor fix (#9222) * Added MANTA chain to QuickSwap * Added astar zkevm * Revert "Added astar zkevm" This reverts commit 5a0877643a0feeb50a82beae60d8e4bc9771e09c. * Merge pull request #1 from DefiLlama/main Taking commits from base repo * Added astar zkevm * minor fix --- projects/helper/chains.json | 1 + projects/quickswap-v3/index.js | 1 + 2 files changed, 2 insertions(+) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 63cca3c070f..6d2ad0b4ebf 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -10,6 +10,7 @@ "archway", "area", "astar", + "astrzk", "aura", "aurora", "avax", diff --git a/projects/quickswap-v3/index.js b/projects/quickswap-v3/index.js index 1adf75e416d..dffac32d488 100644 --- a/projects/quickswap-v3/index.js +++ b/projects/quickswap-v3/index.js @@ -5,6 +5,7 @@ module.exports = uniV3Export({ 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, }, }) async function tvl(_, _b, _cb, { api, }) { From 4f6c721ed53446d416ead5408864ced3aaa7f837 Mon Sep 17 00:00:00 2001 From: Ken Date: Thu, 7 Mar 2024 05:01:29 +0800 Subject: [PATCH 0571/2004] update tvl methodology (#9218) --- projects/lazyotter/index.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/projects/lazyotter/index.js b/projects/lazyotter/index.js index ecefd557415..a547924edf5 100644 --- a/projects/lazyotter/index.js +++ b/projects/lazyotter/index.js @@ -1,17 +1,14 @@ -const aaveVaults = [ - '0x7100409baaeda121ab92f663e3ddb898f11ff745', - '0x844Ccc93888CAeBbAd91332FCa1045e6926a084d', -] +const aaveVaults = ["0x7100409baaeda121ab92f663e3ddb898f11ff745", "0x844Ccc93888CAeBbAd91332FCa1045e6926a084d"]; async function tvl(_, _1, _2, { api }) { - const tokens = await api.multiCall({ abi: 'address:asset', calls: aaveVaults}) - const aTokens = await api.multiCall({ abi: 'address:aToken', calls: aaveVaults}) - const tokensAndOwners2 = [tokens.concat(aTokens), aaveVaults.concat(aaveVaults)] - return api.sumTokens({ tokensAndOwners2 }) + const tokens = await api.multiCall({ abi: "address:asset", calls: aaveVaults }); + const aTokens = await api.multiCall({ abi: "address:aToken", calls: aaveVaults }); + const tokensAndOwners2 = [tokens.concat(aTokens), aaveVaults.concat(aaveVaults)]; + return api.sumTokens({ tokensAndOwners2 }); } module.exports = { - methodology: "TVL: Returns the total assets owned by the LazyOtter Vault on Scroll.", + methodology: "Returns the total assets owned by the LazyOtter Vault on Scroll.", scroll: { tvl, }, From 1ac03ec8685106b7afe586261aaa66e17f05585e Mon Sep 17 00:00:00 2001 From: helloworld <1641346965@qq.com> Date: Thu, 7 Mar 2024 05:02:37 +0800 Subject: [PATCH 0572/2004] Feature/mufex (#9217) * Add eth and tron owners to mufex * Add tron owners to mufex * add bsc contract address * add bsc contract address --------- Co-authored-by: felix --- projects/mufex/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/mufex/index.js b/projects/mufex/index.js index 54eb4431c03..8ca57725dbb 100644 --- a/projects/mufex/index.js +++ b/projects/mufex/index.js @@ -4,6 +4,7 @@ const { sumTokensExport } = require('../helper/unwrapLPs') const owners = [ '0x763ecd00eEA0CDAECBDF97d88c3e0fd5457eE5A0', '0x16BEDB2Ab2aEf9023ff2cbF0C78135cA120c03C6', + '0x60b4B5e9FAc430698faE838D83bb7941d0fce5A2', ] module.exports = { From 17b3117fc748d37b66b1331c4088b0ab4b342a5c Mon Sep 17 00:00:00 2001 From: t0rbik <90512605+t0rbik@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:10:44 +0100 Subject: [PATCH 0573/2004] add graphene on base fantom and mantle (#9223) --- projects/graphene/index.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/graphene/index.js diff --git a/projects/graphene/index.js b/projects/graphene/index.js new file mode 100644 index 00000000000..40134689483 --- /dev/null +++ b/projects/graphene/index.js @@ -0,0 +1,37 @@ +const { getLogs } = require("../helper/cache/getLogs"); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const config = { + base: { + fromBlock: 5314581, + controller: "0xfbF069Dbbf453C1ab23042083CFa980B3a672BbA", + }, + fantom: { + fromBlock: 69969086, + controller: "0xf37102e11E06276ac9D393277BD7b63b3393b361", + }, + mantle: { + fromBlock: 18438182, + controller: "0x7900f766F06e361FDDB4FdeBac5b138c4EEd8d4A", + }, +}; + +Object.keys(config).forEach((chain) => { + const { controller, fromBlock } = config[chain]; + module.exports[chain] = { + tvl: async (_, _b, _cb, { api }) => { + const logs = await getLogs({ + api, + target: controller, + topic: "PairCreated(uint128,address,address)", + eventAbi: + "event PairCreated(uint128 indexed pairId, address indexed token0, address indexed token1)", + onlyArgs: true, + fromBlock, + }); + const tokens = logs.map((i) => [i.token0, i.token1]).flat(); + + return sumTokens2({ api, owner: controller, tokens }); + }, + }; +}); From d2fe61a85a0e614e2ed0cb08f1b37a9805c90f02 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 7 Mar 2024 02:53:40 +0000 Subject: [PATCH 0574/2004] nova treasury --- projects/treasury/arbitrum-dao.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/treasury/arbitrum-dao.js b/projects/treasury/arbitrum-dao.js index 6df34d8b96c..21244835499 100644 --- a/projects/treasury/arbitrum-dao.js +++ b/projects/treasury/arbitrum-dao.js @@ -17,4 +17,10 @@ module.exports = treasuryExports({ owners: [treasury, l1_surplus_fees, l2_surplus_fees, l2_base_fees, l2_treasury_timelock], ownTokens: [ARB], }, + arbitrum_nova: { + tokens: [ + nullAddress, + ], + owners: ["0x509386DbF5C0BE6fd68Df97A05fdB375136c32De", "0x3B68a689c929327224dBfCe31C1bf72Ffd2559Ce", "0x9fCB6F75D99029f28F6F4a1d277bae49c5CAC79f"], + }, }) From f3cef99a13dd35b3c34a336f72808b15faa64467 Mon Sep 17 00:00:00 2001 From: Rodrigo Eduardo Date: Thu, 7 Mar 2024 06:17:10 -0300 Subject: [PATCH 0575/2004] feat: add aeUSDC-sUSDT pair (#9224) --- projects/bitflow/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/bitflow/index.js b/projects/bitflow/index.js index ffd2235fb2f..374ed12d9ca 100644 --- a/projects/bitflow/index.js +++ b/projects/bitflow/index.js @@ -7,7 +7,8 @@ const PAIRS = [ `${BITFLOW_ADDRESS}.stableswap-stx-ststx-v-1-2`, `${BITFLOW_ADDRESS}.stableswap-usda-susdt-v-1-2`, `${BITFLOW_ADDRESS}.stableswap-abtc-xbtc-v-1-2`, -] + `${BITFLOW_ADDRESS}.stableswap-aeusdc-susdt-v-1-2`, +]; module.exports = { stacks: { From ece2e483d7c719eeb131abdcab0ca63859b0f885 Mon Sep 17 00:00:00 2001 From: SpaceFi <82010251+SpaceFinance@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:18:21 +0800 Subject: [PATCH 0576/2004] Add blaspace (#9229) --- projects/blaspace/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/blaspace/index.js diff --git a/projects/blaspace/index.js b/projects/blaspace/index.js new file mode 100644 index 00000000000..0e20eac4850 --- /dev/null +++ b/projects/blaspace/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: getUniTVL({ + factory: '0xCAb98fEd113d403EbD9E294D80Bf92E3f19ddD57', + useDefaultCoreAssets: true, + }) + }, +}; From 35c7a61caca060a08b172a79407e84185cabd346 Mon Sep 17 00:00:00 2001 From: Gyffindo Slymewl Date: Thu, 7 Mar 2024 16:22:54 +0700 Subject: [PATCH 0577/2004] Update csix staking v3 (#9225) * add csix project with tvl and staking * add hallmarks * code refactor * add csix staking v3 --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/csix/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/csix/index.js b/projects/csix/index.js index c2889d89a1c..8794252628a 100644 --- a/projects/csix/index.js +++ b/projects/csix/index.js @@ -1,17 +1,22 @@ const CSIX_TOKEN = "0x04756126F044634C9a0f0E985e60c88a51ACC206"; const STAKING_CONTRACT_V1 = "0xadc743298F6339Cd8ebC0Dc58D4E19C2065D6b4f"; const STAKING_CONTRACT_V2 = "0xA4f55D251b8fa8e0C291CC539F020c5Cbe4a9FA8"; +const STAKING_CONTRACT_V3 = "0x7c7C76e4D47872A7B73FA15306A9Ebb673796dDc"; async function staking(_, _1, _2, { api }) { - const staked = await api.multiCall({ abi: "uint256:totalStaked", calls: [STAKING_CONTRACT_V1, STAKING_CONTRACT_V2,] }) - staked.forEach(i => api.add(CSIX_TOKEN, i)) - return api.getBalances() + 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: () => ({}), From 272ad37ce9561b7c0a64994941b90c7a20506e7a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 7 Mar 2024 10:25:14 +0100 Subject: [PATCH 0578/2004] code refactor (#9230) * Add Alien Finance Adapter * code refactor --- projects/alien-finance/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/alien-finance/index.js diff --git a/projects/alien-finance/index.js b/projects/alien-finance/index.js new file mode 100644 index 00000000000..2ccc980a925 --- /dev/null +++ b/projects/alien-finance/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require("../helper/unwrapLPs") +const ADDRESSES = require('../helper/coreAssets.json') + +const owner = "0x50454acC07bf8fC78100619a1b68e9E8d28cE022" + +module.exports = { + blast: { + tvl: sumTokensExport({ owner, tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), + }, + start: 1709630412, +}; From 1f0b314c3d4d237d51ad2078335c9423bf7f8019 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 7 Mar 2024 10:38:56 +0100 Subject: [PATCH 0579/2004] Add chromatic protocol, change TVL, and refactor code (#9232) * add chromatic protocol * change tvl * code refactor --------- Co-authored-by: kayden-fi --- projects/chromatic-protocol/index.js | 51 ++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 projects/chromatic-protocol/index.js diff --git a/projects/chromatic-protocol/index.js b/projects/chromatic-protocol/index.js new file mode 100644 index 00000000000..56a44a83938 --- /dev/null +++ b/projects/chromatic-protocol/index.js @@ -0,0 +1,51 @@ +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 (_, _b, _cb, { 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 From 587171e3977574a21edefb555c4f507f557ba5a7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 7 Mar 2024 10:48:29 +0100 Subject: [PATCH 0580/2004] Add Monroe Protocol TVL calculation (#9233) * feat: monroeprotocol * code refactor --- projects/monroeprotocol/index.js | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 projects/monroeprotocol/index.js diff --git a/projects/monroeprotocol/index.js b/projects/monroeprotocol/index.js new file mode 100644 index 00000000000..8d34dd53653 --- /dev/null +++ b/projects/monroeprotocol/index.js @@ -0,0 +1,45 @@ +const { createIncrementArray } = require("../helper/utils"); +const { getLogs } = require('../helper/cache/getLogs') + +// Controllers[chain] +const CONTROLLERS = { + manta: "0xCc396B83Baba70c85FBB8f44B64e7e43aE810232", +} + + +async function tvl(_, _1, _2, { api }) { + const logs = await getLogs({ + api, + target: CONTROLLERS[api.chain], + eventAbi: "event CreatedSynth(address newSynth, string name, address oracle)", + onlyArgs: true, + fromBlock: 1548740 + }); + const synthAddresses = logs.map(log => log.newSynth); + + const vaultLength = await api.call({ abi: "uint:getVaultsLength", target: CONTROLLERS[api.chain] }) + const vaultCalls = createIncrementArray(vaultLength) + + const owners = [] + const tokens = [] + await Promise.all(synthAddresses.map(async (synth) => { + const vaults = await api.multiCall({ abi: "function mintVaults(uint vaultId) view returns (address)", calls: vaultCalls, target: synth}) + const _tokens = await api.multiCall({ abi: 'address:collateralAsset', calls: vaults}) + tokens.push(..._tokens) + owners.push(...vaults) + })) + + return api.sumTokens({ tokensAndOwners2: [tokens, owners]}) +} + + + +module.exports = { + methodology: + "Adds up the total value locked as collateral in Monroe vaults", + start: 1709510400, // Monday, March 4, 2024 00:00 GMT +}; + +Object.keys(CONTROLLERS).forEach((chain) => { + module.exports[chain] = { tvl }; +}); From aaedc204b39715a4c60cd9ed956cfa9220762cc1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 7 Mar 2024 10:53:52 +0100 Subject: [PATCH 0581/2004] Add stability adapter and refactor code (#9234) * stability adapter * code refactor --- projects/stability/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/stability/index.js diff --git a/projects/stability/index.js b/projects/stability/index.js new file mode 100644 index 00000000000..52843fc4205 --- /dev/null +++ b/projects/stability/index.js @@ -0,0 +1,28 @@ +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', + }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async function (_, _1, _2, { 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 From f14ff7b5f12b1bba596f112ef4094b45acb1aae6 Mon Sep 17 00:00:00 2001 From: 0xggoma Date: Thu, 7 Mar 2024 19:11:13 +0900 Subject: [PATCH 0582/2004] Add blast chain for mint-club-v2 (#9235) --- projects/mint-club-v2/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js index fcac528b43d..2127a2a6f22 100644 --- a/projects/mint-club-v2/index.js +++ b/projects/mint-club-v2/index.js @@ -7,13 +7,14 @@ module.exports = { const V2_BOND_CONTRACTS = { avax: "0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1", + blast: "0x621c335b4BD8f2165E120DC70d3AfcAfc6628681", } const ownTokens = { bsc: ['0x1f3Af095CDa17d63cad238358837321e95FC5915'] } -const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base'] +const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast'] chains.forEach(chain => { const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' From 657a4d758d905557b478b86ba319605f9f1a3c0c Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 7 Mar 2024 12:21:31 +0000 Subject: [PATCH 0583/2004] binance wallets march (#9236) --- projects/binance/config.js | 963 +++++++++++++++++++------------------ 1 file changed, 492 insertions(+), 471 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index 31ffc805951..ca614fff4b4 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -4,477 +4,492 @@ const { getUniqueAddresses } = require('../helper/utils') // taken from https://www.binance.com/en/blog/community/our-commitment-to-transparency-2895840147147652626 const assetList = [ - ['1INCH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['1INCH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['1INCH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['1INCH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['1INCH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['1INCH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['1INCH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['APT', 'APT', '0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00'], - ['APT', 'APT', '0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f'], - ['APT', 'APT', '0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70'], - ['APT', 'APT', '0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a'], - ['APT', 'APT', '0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e'], - ['ARB', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['ARB', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ARB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BNB', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], - ['BNB', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BNB', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['BNB', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['BNB', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BNB', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['BNB', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['BNB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['BNB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['BNB', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['BNB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['BNB', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['BNB', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['BNB', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['BNB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BNB', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], - ['BNB', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['BNB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['BNB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['BNB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BNB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BNB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['BTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BTC', 'BTC', '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw'], - ['BTC', 'BTC', '1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7'], - ['BTC', 'BTC', '34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J'], - ['BTC', 'BTC', '34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP'], - ['BTC', 'BTC', '34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo'], - ['BTC', 'BTC', '36zSLdRv1jyewjaC12fqK5fptn7PqewunL'], - ['BTC', 'BTC', '38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn'], - ['BTC', 'BTC', '38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE'], - ['BTC', 'BTC', '395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ'], - ['BTC', 'BTC', '39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v'], - ['BTC', 'BTC', '3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry'], - ['BTC', 'BTC', '3AtnehKDkFPC1bKvdrEVPSRGCtxQH8F1R8'], - ['BTC', 'BTC', '3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN'], - ['BTC', 'BTC', '3EVVc8e2rxwUuERtdJCduWig8DnpsUqyA6'], - ['BTC', 'BTC', '3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B'], - ['BTC', 'BTC', '3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA'], - ['BTC', 'BTC', '3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ'], - ['BTC', 'BTC', '3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ'], - ['BTC', 'BTC', '3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a'], - ['BTC', 'BTC', '3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH'], - ['BTC', 'BTC', '3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY'], - ['BTC', 'BTC', '3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6'], - ['BTC', 'BTC', '3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj'], - ['BTC', 'BTC', '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa'], - ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], - ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], - ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], - ['BTC', 'BTC', '3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2'], // added on 06/03/2024 - ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['BTC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BTC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['BTC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BUSD', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], - ['BUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BUSD', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['BUSD', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BUSD', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['BUSD', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['BUSD', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['BUSD', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['BUSD', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['BUSD', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['BUSD', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['BUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['BUSD', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['BUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BUSD', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['BUSD', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['BUSD', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['BUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['BUSD', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['BUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['BUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BUSD', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], - ['BUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['BUSD', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['BUSD', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['BUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['BUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['CHR', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['CHR', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['CHR', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['CHR', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CHR', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CHR', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CHR', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['CHR', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['CHR', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CHR', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CHZ', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], - ['CHZ', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['CHZ', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CHZ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CHZ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CRV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CRV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CRV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CRV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CVP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['CVP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['CVP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CVP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CVP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CVP', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['CVP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CVP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['DOGE', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['DOGE', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], - ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], - ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], - ['DOGE', 'DOGE', 'D7JLeAgZK2TyFRFtjKwHMxhFjWvJ9gS5kj'], - ['DOGE', 'DOGE', 'D7QZnXec5bkMyokPFPh6v4WAw5VF5TocAy'], - ['DOGE', 'DOGE', 'D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw'], - ['DOGE', 'DOGE', 'D7dm1b8DEqaCxcgaPuBXz9FqjAQ7UTK6sz'], - ['DOGE', 'DOGE', 'DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr'], - ['DOGE', 'DOGE', 'DCxFJEWsYJFnC3HP7YfZdsd3X43ttQA79Z'], - ['DOGE', 'DOGE', 'DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn'], - ['DOGE', 'DOGE', 'DD6K5pfaPd93ri5x67PzVVUS8Cui3rRoBe'], - ['DOGE', 'DOGE', 'DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX'], - ['DOGE', 'DOGE', 'DEvUEF9VrXbKf5rdaQCUzeh4MvZxd3Zx5T'], - ['DOGE', 'DOGE', 'DFyohYD3bMXCEg1TdMfdy1J7dYfK4shhPf'], - ['DOGE', 'DOGE', 'DGYUcgNQAAMzXynRHJJVAKkgXWhSddJNi2'], - ['DOGE', 'DOGE', 'DGiYKUGbzRtppwdoinym7ZJXWuBqBuHxUk'], - ['DOGE', 'DOGE', 'DHiKVUMdaAm43NMh2wMSfn7xtmUmfKSSNE'], - ['DOGE', 'DOGE', 'DJRaDXkewtLgwL9EZyTkWQEsxuyBUaveKU'], - ['DOGE', 'DOGE', 'DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC'], - ['DOGE', 'DOGE', 'DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC'], - ['DOGE', 'DOGE', 'DN9NrgYzgh6AtNmTUFThqRxhbyoNWhG6iD'], - ['DOGE', 'DOGE', 'DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW'], - ['DOGE', 'DOGE', 'DPKKpanH1hMVzdWb2oi126znjruvvGRQzj'], - ['DOGE', 'DOGE', 'DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx'], - ['DOGE', 'DOGE', 'DQkwksfYrAWAR9tRcqygA5pihmnURozxzo'], - ['DOGE', 'DOGE', 'DQnhnNxW89AkFHDsT6aWHim4DvtzwF9sGo'], - ['DOGE', 'DOGE', 'DRuYd74gqPuQD9HKEBDxRr9gSogQmdj9DH'], - ['DOGE', 'DOGE', 'DRweGdMgohChLBn2TamjCNicKYEncRgj5a'], - ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], - ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], - ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['DOT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['DOT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['DOT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['DOT', 'DOT', '16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD'], - ['DOT', 'DOT', '1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF'], - ['DOT', 'DOT', '1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7'], - ['DOT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['DOT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['DOT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], - ['ENJ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['ENJ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['ENJ', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], - ['ENJ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['ENJ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'ARB', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['ETH', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['ETH', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'BASE', '0x3304e22ddaa22bcdc5fca2269b418046ae7b566a'], - ['ETH', 'BASE', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['ETH', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['ETH', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['ETH', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['ETH', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['ETH', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['ETH', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['ETH', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['ETH', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['ETH', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['ETH', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['ETH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['ETH', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['ETH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['ETH', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['ETH', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['ETH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['ETH', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], - ['ETH', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], - ['ETH', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['ETH', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['ETH', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], - ['ETH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['ETH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['ETH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['ETH', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['FDUSD', 'BEP20', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['FDUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['FDUSD', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['FDUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['FDUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['GRT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['GRT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['GRT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['GRT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['GRT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['HFT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['HFT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['HFT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['HFT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['HFT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['HFT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['HFT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['LINK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LINK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['LINK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['LINK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['LINK', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['LINK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['LINK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['LTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['LTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['LTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LTC', 'LTC', 'LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm'], - ['LTC', 'LTC', 'LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN'], - ['LTC', 'LTC', 'LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq'], - ['LTC', 'LTC', 'M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua'], - ['LTC', 'LTC', 'MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k'], - ['LTC', 'LTC', 'MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z'], - ['LTC', 'LTC', 'MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ'], - ['LTC', 'LTC', 'MEhAHYijouCinmGKL6n1bRTXYznH1X24rD'], - ['LTC', 'LTC', 'MG9aFQgTH5C4UPcur8S2bh5duKYMfaJFUS'], - ['LTC', 'LTC', 'MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F'], - ['LTC', 'LTC', 'MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3'], - ['LTC', 'LTC', 'MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N'], - ['LTC', 'LTC', 'MLkNzCps6cXou2DELVfxDuRC4uZGwr397o'], - ['LTC', 'LTC', 'MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS'], - ['LTC', 'LTC', 'MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf'], - ['LTC', 'LTC', 'MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67'], - ['LTC', 'LTC', 'MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy'], - ['MASK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['MASK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['MASK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['MASK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['MASK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['MASK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['MASK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['MASK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['MASK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['MATIC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['MATIC', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['MATIC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['MATIC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['MATIC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['MATIC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['MATIC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['MATIC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['MATIC', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['MATIC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['MATIC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['MATIC', 'MATIC', '0x082489a616ab4d46d1947ee3f912e080815b08da'], - ['MATIC', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['MATIC', 'MATIC', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['MATIC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['MATIC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['OP', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['OP', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['OP', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['SHIB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['SHIB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['SHIB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['SHIB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['SHIB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['SHIB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['SHIB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['SHIB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['SHIB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SHIB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['SHIB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['SHIB', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], - ['SHIB', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['SHIB', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['SHIB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['SHIB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SOL', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['SOL', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['SOL', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['SOL', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SOL', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], - ['SOL', 'SOL', '3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u'], - ['SOL', 'SOL', '3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E'], - ['SOL', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], - ['SOL', 'SOL', '6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U'], - ['SOL', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], - ['SSV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['SSV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['TUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['TUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['TUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['TUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['TUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['TUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['TUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['TUSD', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], - ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['UNI', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['UNI', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['UNI', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['UNI', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'ALGO', 'MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI'], - ['USDC', 'ALGO', 'QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U'], - ['USDC', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['USDC', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], - ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['USDC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['USDC', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['USDC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['USDC', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['USDC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['USDC', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['USDC', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['USDC', 'RON', '0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3'], - ['USDC', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], - ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], - ['USDC', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['USDC', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], - ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], - ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], - ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['USDT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], - ['USDT', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], - ['USDT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['USDT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['USDT', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['USDT', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['USDT', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['USDT', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['USDT', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['USDT', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['USDT', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['USDT', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['USDT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['USDT', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], - ['USDT', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['USDT', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['USDT', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['USDT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['USDT', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['USDT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['USDT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['USDT', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], - ['USDT', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], - ['USDT', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['USDT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['USDT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['USDT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['USDT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['USDT', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['USDT', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], - ['USDT', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], - ['USDT', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], - ['USDT', 'TRX', 'TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr'], - ['USDT', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['USDT', 'TRX', 'TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo'], - ['USDT', 'TRX', 'TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe'], - ['USDT', 'TRX', 'TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9'], - ['USDT', 'TRX', 'TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY'], - ['USDT', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['USDT', 'TRX', 'TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm'], - ['USDT', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], - ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], - ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], - ['WRX', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['WRX', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['WRX', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['WRX', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['WRX', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['WRX', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['WRX', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['WRX', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['WRX', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['WRX', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['XRP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['XRP', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['XRP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['XRP', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['XRP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['XRP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['XRP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['XRP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['XRP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['XRP', 'XRP', 'rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A'], - ['XRP', 'XRP', 'rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr'], - ['XRP', 'XRP', 'rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ'], - ['XRP', 'XRP', 'rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK'], - ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], - ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], - ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], + ['1INCH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['1INCH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['1INCH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['1INCH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['1INCH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['1INCH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['1INCH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['APT', 'APT', '0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00'], + ['APT', 'APT', '0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f'], + ['APT', 'APT', '0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70'], + ['APT', 'APT', '0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a'], + ['APT', 'APT', '0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e'], + ['ARB', 'ARB', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['ARB', 'ARB', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['ARB', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['ARB', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ARB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['BNB', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BNB', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['BNB', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['BNB', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BNB', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['BNB', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['BNB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['BNB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['BNB', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['BNB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['BNB', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['BNB', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BNB', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['BNB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BNB', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], + ['BNB', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['BNB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['BNB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['BNB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BNB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BTC', 'BTC', '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw'], + ['BTC', 'BTC', '1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7'], + ['BTC', 'BTC', '3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2'], // THIS WALLET WAS PROVIDE BY BINANCE TEAM, AFTER THE SNAPSHOT OF MARCH + ['BTC', 'BTC', '32bhzEniykYRFADVaRM5PYswsjC23cxtes'], + ['BTC', 'BTC', '34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J'], + ['BTC', 'BTC', '34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP'], + ['BTC', 'BTC', '34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo'], + ['BTC', 'BTC', '36zSLdRv1jyewjaC12fqK5fptn7PqewunL'], + ['BTC', 'BTC', '38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn'], + ['BTC', 'BTC', '38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE'], + ['BTC', 'BTC', '395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ'], + ['BTC', 'BTC', '39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v'], + ['BTC', 'BTC', '3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry'], + ['BTC', 'BTC', '3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN'], + ['BTC', 'BTC', '3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B'], + ['BTC', 'BTC', '3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA'], + ['BTC', 'BTC', '3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ'], + ['BTC', 'BTC', '3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ'], + ['BTC', 'BTC', '3JqPhvKkAPcFB3oLELBT7z2tQdjpnxuDi9'], + ['BTC', 'BTC', '3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a'], + ['BTC', 'BTC', '3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH'], + ['BTC', 'BTC', '3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY'], + ['BTC', 'BTC', '3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6'], + ['BTC', 'BTC', '3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj'], + ['BTC', 'BTC', '3NPL82eaehTFh4r3StpHqVQBTnZJFaGsyy'], + ['BTC', 'BTC', '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa'], + ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], + ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], + ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], + ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['BTC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BTC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['BTC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BUSD', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['BUSD', 'BNB', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BUSD', 'BNB', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['BUSD', 'BNB', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BUSD', 'BNB', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['BUSD', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['BUSD', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['BUSD', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['BUSD', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['BUSD', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['BUSD', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['BUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BUSD', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['BUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BUSD', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['BUSD', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['BUSD', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['BUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BUSD', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['BUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['BUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BUSD', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['BUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['BUSD', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['BUSD', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['BUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['BUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['CHR', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CHR', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['CHR', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CHR', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHR', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CHR', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CHR', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CHR', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['CHR', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CHR', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHZ', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['CHZ', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['CHZ', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['CHZ', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + // ['CHZ', 'CHZ2', '0x87917d879ba83ce3ada6e02d49a10c1ec1988062'], + // ['CHZ', 'CHZ2', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CHZ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CHZ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CRV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CRV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CRV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CRV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CVP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['CVP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CVP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CVP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CVP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CVP', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CVP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CVP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['DOGE', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['DOGE', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], + ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + /* + ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], + ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], + ['DOGE', 'DOGE', 'D7JLeAgZK2TyFRFtjKwHMxhFjWvJ9gS5kj'], + ['DOGE', 'DOGE', 'D7QZnXec5bkMyokPFPh6v4WAw5VF5TocAy'], + ['DOGE', 'DOGE', 'D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw'], + ['DOGE', 'DOGE', 'D7dm1b8DEqaCxcgaPuBXz9FqjAQ7UTK6sz'], + ['DOGE', 'DOGE', 'DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr'], + ['DOGE', 'DOGE', 'DCxFJEWsYJFnC3HP7YfZdsd3X43ttQA79Z'], + ['DOGE', 'DOGE', 'DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn'], + ['DOGE', 'DOGE', 'DD6K5pfaPd93ri5x67PzVVUS8Cui3rRoBe'], + ['DOGE', 'DOGE', 'DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX'], + ['DOGE', 'DOGE', 'DEvUEF9VrXbKf5rdaQCUzeh4MvZxd3Zx5T'], + ['DOGE', 'DOGE', 'DFyohYD3bMXCEg1TdMfdy1J7dYfK4shhPf'], + ['DOGE', 'DOGE', 'DGYUcgNQAAMzXynRHJJVAKkgXWhSddJNi2'], + ['DOGE', 'DOGE', 'DGiYKUGbzRtppwdoinym7ZJXWuBqBuHxUk'], + ['DOGE', 'DOGE', 'DGmd2jn1D7oLXpdpcGkLaGLDMbnRt4qkH3'], + ['DOGE', 'DOGE', 'DHiKVUMdaAm43NMh2wMSfn7xtmUmfKSSNE'], + ['DOGE', 'DOGE', 'DJRaDXkewtLgwL9EZyTkWQEsxuyBUaveKU'], + ['DOGE', 'DOGE', 'DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC'], + ['DOGE', 'DOGE', 'DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC'], + ['DOGE', 'DOGE', 'DN9NrgYzgh6AtNmTUFThqRxhbyoNWhG6iD'], + ['DOGE', 'DOGE', 'DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW'], + ['DOGE', 'DOGE', 'DPKKpanH1hMVzdWb2oi126znjruvvGRQzj'], + ['DOGE', 'DOGE', 'DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx'], + ['DOGE', 'DOGE', 'DQkwksfYrAWAR9tRcqygA5pihmnURozxzo'], + ['DOGE', 'DOGE', 'DQnhnNxW89AkFHDsT6aWHim4DvtzwF9sGo'], + ['DOGE', 'DOGE', 'DRuYd74gqPuQD9HKEBDxRr9gSogQmdj9DH'], + ['DOGE', 'DOGE', 'DRweGdMgohChLBn2TamjCNicKYEncRgj5a'], + ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], + ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], + */ + ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['DOT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['DOT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['DOT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOT', 'DOT', '16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD'], + ['DOT', 'DOT', '1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF'], + ['DOT', 'DOT', '1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7'], + ['DOT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['DOT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['DOT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + // ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], + ['ENJ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['ENJ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['ENJ', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['ENJ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['ETH', 'ARB', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['ETH', 'ARB', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['ETH', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['ETH', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'BASE', '0x3304e22ddaa22bcdc5fca2269b418046ae7b566a'], + ['ETH', 'BASE', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['ETH', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['ETH', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['ETH', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['ETH', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['ETH', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['ETH', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['ETH', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['ETH', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['ETH', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['ETH', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['ETH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['ETH', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['ETH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['ETH', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['ETH', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['ETH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['ETH', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], + ['ETH', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['ETH', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['ETH', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['ETH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['ETH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['ETH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['ETH', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['ETH', 'ERA', '0x7aed074ca56f5050d5a2e512ecc5bf7103937d76'], + ['ETH', 'ERA', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['ETH', 'ERA', '0xa84fd90d8640fa63d194601e0b2d1c9094297083'], + ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['FDUSD', 'BEP20', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['FDUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['FDUSD', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['FDUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['FDUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['GRT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['GRT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['GRT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['HFT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['HFT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['HFT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['HFT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['HFT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['HFT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['HFT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['LINK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LINK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['LINK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['LINK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['LINK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['LINK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['LTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['LTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LTC', 'LTC', 'LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm'], + ['LTC', 'LTC', 'LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN'], + ['LTC', 'LTC', 'LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq'], + ['LTC', 'LTC', 'M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua'], + ['LTC', 'LTC', 'MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k'], + ['LTC', 'LTC', 'MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z'], + ['LTC', 'LTC', 'MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ'], + ['LTC', 'LTC', 'MEhAHYijouCinmGKL6n1bRTXYznH1X24rD'], + ['LTC', 'LTC', 'MG9aFQgTH5C4UPcur8S2bh5duKYMfaJFUS'], + ['LTC', 'LTC', 'MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F'], + ['LTC', 'LTC', 'MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3'], + ['LTC', 'LTC', 'MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N'], + ['LTC', 'LTC', 'MLkNzCps6cXou2DELVfxDuRC4uZGwr397o'], + ['LTC', 'LTC', 'MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS'], + ['LTC', 'LTC', 'MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf'], + ['LTC', 'LTC', 'MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67'], + ['LTC', 'LTC', 'MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy'], + ['MASK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['MASK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['MASK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MASK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['MASK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['MASK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MASK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['MASK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MATIC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['MATIC', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['MATIC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['MATIC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['MATIC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['MATIC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['MATIC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['MATIC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MATIC', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['MATIC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['MATIC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MATIC', 'MATIC', '0x082489a616ab4d46d1947ee3f912e080815b08da'], + ['MATIC', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['MATIC', 'MATIC', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['MATIC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['MATIC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['OP', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['OP', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['OP', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['SHIB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['SHIB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['SHIB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['SHIB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['SHIB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['SHIB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['SHIB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['SHIB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['SHIB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SHIB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['SHIB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['SHIB', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], + ['SHIB', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['SHIB', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], + ['SHIB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['SHIB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SOL', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['SOL', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['SOL', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['SOL', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SOL', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['SOL', 'SOL', '3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u'], + ['SOL', 'SOL', '3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E'], + ['SOL', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['SOL', 'SOL', '6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U'], + ['SOL', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['SSV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['SSV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['TUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['TUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['TUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['TUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['TUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['TUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['TUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['TUSD', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['UNI', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['UNI', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['UNI', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['UNI', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'ALGO', 'MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI'], + ['USDC', 'ALGO', 'QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U'], + ['USDC', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['USDC', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['USDC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['USDC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['USDC', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['USDC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['USDC', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['USDC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['USDC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + // ['USDC', 'RON', '0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3'], + ['USDC', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['USDC', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], + ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], + ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['USDT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], + ['USDT', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['USDT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['USDT', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['USDT', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['USDT', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['USDT', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['USDT', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['USDT', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['USDT', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['USDT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDT', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['USDT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['USDT', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], + ['USDT', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['USDT', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['USDT', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['USDT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['USDT', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['USDT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['USDT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['USDT', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['USDT', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['USDT', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['USDT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['USDT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], + ['USDT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['USDT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], + ['USDT', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['USDT', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['USDT', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['USDT', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['USDT', 'TRX', 'TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr'], + ['USDT', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['USDT', 'TRX', 'TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo'], + ['USDT', 'TRX', 'TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe'], + ['USDT', 'TRX', 'TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9'], + ['USDT', 'TRX', 'TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY'], + ['USDT', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['USDT', 'TRX', 'TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm'], + ['USDT', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], + ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['WRX', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['WRX', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['WRX', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['WRX', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['WRX', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['WRX', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['WRX', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['WRX', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['WRX', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['WRX', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['XRP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['XRP', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['XRP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['XRP', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['XRP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['XRP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['XRP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['XRP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'XRP', 'rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A'], + ['XRP', 'XRP', 'rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr'], + ['XRP', 'XRP', 'rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ'], + ['XRP', 'XRP', 'rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK'], + ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], + ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], + ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], ] function getAddresses(chain) { @@ -542,5 +557,11 @@ module.exports = { }, fantom: { owners: getOwners('FTM') + }, + base: { + owners: getOwners('BASE') + }, + era: { + owners: getOwners('ERA') } } \ No newline at end of file From 46ed24e2fd0415dc25c77a8f534d75a883ea300c Mon Sep 17 00:00:00 2001 From: elykct <137165620+elykct@users.noreply.github.com> Date: Thu, 7 Mar 2024 21:05:05 +0700 Subject: [PATCH 0584/2004] Adding BVM network (#9131) * Adding BVM network TVL * naka chain update SATS token address * adding bvm chain * restore Chocoinu * remove count assets from bridge, add univ3 factory contract * code refactor * Update chains.json --------- Co-authored-by: elykct Co-authored-by: elykct Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 6 ++++++ projects/naka-dex/index.js | 5 +++++ 4 files changed, 13 insertions(+) create mode 100644 projects/naka-dex/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 6d2ad0b4ebf..4437408a1de 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -169,6 +169,7 @@ "muuchain", "mvc", "nahmii", + "naka", "near", "neo", "neo3", diff --git a/projects/helper/env.js b/projects/helper/env.js index b41730d16d5..bba612ac270 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -23,6 +23,7 @@ const DEFAULTS = { MERLIN_RPC: "https://rpc.merlinchain.io", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', BITROCK_RPC_MULTICALL: '0x40DD0342A46Ab0893251211F6626E82c09A75345', + NAKA_RPC: 'https://node.nakachain.xyz', RONIN_RPC: 'https://api.roninchain.com/rpc', ETHF_RPC: 'https://rpc.dischain.xyz/', } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3cd91936b5a..c21fd4f1674 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,6 +34,12 @@ const ibcMappings = { } const fixBalancesTokens = { + + "naka": { + "0xDe4c4768ee70D97C044062fEC971eAE91B6aFAB7": { coingeckoId: "wrapped-bitcoin", decimals: 18 }, + "0x4F90055b8670B21d64146577152aE52975075900": { coingeckoId: "ethereum", decimals: 18 }, + "0xBD0adB3Ee21e0A75D3021384177238883D69e883": { coingeckoId: "ordinals", decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/naka-dex/index.js b/projects/naka-dex/index.js new file mode 100644 index 00000000000..b696ee28fb2 --- /dev/null +++ b/projects/naka-dex/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + naka: { factory: '0xf6632D6fF6fc71DAf1fA96AbAd1bC269bD507dF8', fromBlock: 49370, sumChunkSize: 50 }, +}) From acf7f4ce31a76b977e139997b3d5acc3760a69e2 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 7 Mar 2024 16:12:23 +0000 Subject: [PATCH 0585/2004] fix ownTokens --- projects/treasury/bitdao.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 4881039bf7b..63b38aa2c61 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -106,6 +106,7 @@ async function otherTvl(_timestamp, _block, _chainBlocks, {api}){ module.exports={ ethereum:{ tvl: sdk.util.sumChainTvls([tokenTreasuries.ethereum.tvl, otherTvl]), + ownTokens: tokenTreasuries.ethereum.ownTokens }, mantle: tokenTreasuries.mantle } \ No newline at end of file From fc29435a2e570a583585f507f4e96cb213179df6 Mon Sep 17 00:00:00 2001 From: Nowalski Date: Thu, 7 Mar 2024 17:41:52 +0100 Subject: [PATCH 0586/2004] =?UTF-8?q?This=20PR=20adds=20the=20ETCMC=20adap?= =?UTF-8?q?ter=20to=20the=20DeFi=20Llama=20project,=20showcasing=20?= =?UTF-8?q?=E2=80=A6=20(#9237)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * This PR adds the ETCMC adapter to the DeFi Llama project, showcasing a DEX on the Ethereum Classic chain. The adapter includes TVL calculation logic using the `getUniTVL` helper function. The methodology section in the adapter configuration explains how TVL is calculated based on liquidity in the AMM. Changes: - Added ETCMC adapter configuration to `projects/etcmc/index.js`. - Updated the configuration to include the staking contract address and the main ETCPOW contract address. - Tested the integration to ensure accurate TVL calculation * code refactor * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/etcmc/index.js | 12 ++++++++++++ projects/helper/utils.js | 1 + 2 files changed, 13 insertions(+) create mode 100644 projects/etcmc/index.js diff --git a/projects/etcmc/index.js b/projects/etcmc/index.js new file mode 100644 index 00000000000..9250afe2fc6 --- /dev/null +++ b/projects/etcmc/index.js @@ -0,0 +1,12 @@ +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/helper/utils.js b/projects/helper/utils.js index d6dbc318c94..96c90ac23e9 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -95,6 +95,7 @@ function isLP(symbol, token, chain) { 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 let label if (symbol.startsWith('ZLK-LP') || symbol.includes('DMM-LP') || (chain === 'avax' && 'DLP' === symbol) || symbol === 'fChe-LP') From ef778d79faa16b18d937eb46a18ccb2f370549f4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 7 Mar 2024 21:50:12 +0100 Subject: [PATCH 0587/2004] update uncx v3 --- projects/unicrypt-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index 99a38c55084..ad604fab0b2 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -15,7 +15,7 @@ const config = { reserves: ['0xc22218406983bf88bb634bb4bf15fa4e0a1a8c84', '0xd8207e9449647a9668ad3f8ecb97a1f929f81fd1', '0x40f6301edb774e8B22ADC874f6cb17242BaEB8c4'], }, base: { - reserves: ['0xd6cd8fb001cbdae91f0af7a58a1602c945967d67'] + reserves: ['0xd6cd8fb001cbdae91f0af7a58a1602c945967d67', '0x231278edd38b00b07fbd52120cef685b9baebcc1'] } }; From 77fca329759723f4f8cf6cd0b2a1a5201da5fcbe Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 7 Mar 2024 21:54:02 +0100 Subject: [PATCH 0588/2004] update ferro --- projects/ferro/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/ferro/index.js b/projects/ferro/index.js index 03b40dd2657..66035407636 100644 --- a/projects/ferro/index.js +++ b/projects/ferro/index.js @@ -31,6 +31,7 @@ const tokens = { // LATOM-ATOM '0xb888d8dd1733d72681b30c00ee76bde93ae7aa93': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], '0xac974ee7fc5d083112c809ccb3fce4a4f385750d': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], + '0xD42E078ceA2bE8D03cd9dFEcC1f0d28915Edea78': ['0x6A41732eaDBE15e9c9FcA2cfF1299c6321AA104B'], }; async function tvl(timestamp, ethBlock, _, { api }) { From c7b771e573ccf9affa426908f55490f698840741 Mon Sep 17 00:00:00 2001 From: Hyungsuk Kang Date: Fri, 8 Mar 2024 06:39:54 +0900 Subject: [PATCH 0589/2004] Add Blast deployment (#9239) --- projects/standard-mode/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/standard-mode/index.js b/projects/standard-mode/index.js index 7e4b16dbaa0..7f8e071e94e 100644 --- a/projects/standard-mode/index.js +++ b/projects/standard-mode/index.js @@ -1,6 +1,7 @@ const { getLogs } = require('../helper/cache/getLogs') const config = { mode: { factory: '0x4D1b18A7BDB8D0a02f692398337aBde8DeB8FB09', fromBlock: 4381503, }, + blast: { factory: '0x2CC505C4bc86B28503B5b8C450407D32e5E20A9f', fromBlock: 434946, }, } Object.keys(config).forEach(chain => { @@ -12,4 +13,4 @@ Object.keys(config).forEach(chain => { return api.sumTokens({ ownerTokens}) } } -}) \ No newline at end of file +}) From 54021f18699e0114a12b4ba2ab049ba8ad8b365d Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 7 Mar 2024 23:12:38 +0000 Subject: [PATCH 0590/2004] add fraxtal --- projects/frax-swap/index.js | 1 + projects/helper/chains.json | 3 ++- projects/ra/index.js | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 projects/ra/index.js diff --git a/projects/frax-swap/index.js b/projects/frax-swap/index.js index aaffa8e7ebe..5c9e5fe2adc 100644 --- a/projects/frax-swap/index.js +++ b/projects/frax-swap/index.js @@ -22,4 +22,5 @@ module.exports = { ...fx("fantom", "0xF55C563148cA0c0F1626834ec1B8651844D76792", "0xDc745E09fC459aDC295E2e7baACe881354dB7F64"), ...fx("moonbeam", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", "0x51f9DBEd76f5Dcf209817f641b549aa82F35D23F"), ...fx("polygon", "0xc2544A32872A91F4A553b404C6950e89De901fdb", "0x54F454D747e037Da288dB568D4121117EAb34e79"), + ...fx("fraxtal", "0xe30521fe7f3beb6ad556887b50739d6c7ca667e6"), }; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 4437408a1de..2f9d6467ec0 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -283,5 +283,6 @@ "zkfair", "zksync", "zyx", - "zeta" + "zeta", + "fraxtal" ] diff --git a/projects/ra/index.js b/projects/ra/index.js new file mode 100644 index 00000000000..c11d73361ea --- /dev/null +++ b/projects/ra/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + fraxtal: { factory: '0x95120704f4E2D545Aea8b6B3c16d9Da1fa32E30F', fromBlock: 1352709, }, +}) \ No newline at end of file From ccada6733a06e103fcbdbaab77ce2b7c8579ba54 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 7 Mar 2024 23:19:55 +0000 Subject: [PATCH 0591/2004] fix ra --- projects/ra/index.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/projects/ra/index.js b/projects/ra/index.js index c11d73361ea..106e8ef074f 100644 --- a/projects/ra/index.js +++ b/projects/ra/index.js @@ -1,5 +1,17 @@ +const sdk = require('@defillama/sdk') const { uniV3Export } = require('../helper/uniswapV3') +const {getUniTVL} = require('../helper/unknownTokens') -module.exports = uniV3Export({ - fraxtal: { factory: '0x95120704f4E2D545Aea8b6B3c16d9Da1fa32E30F', fromBlock: 1352709, }, -}) \ No newline at end of file +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 From ce189ab5f0fd882294923e5edc1f46d8f8073394 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 8 Mar 2024 09:51:58 +0100 Subject: [PATCH 0592/2004] track hyperlock --- projects/hyperlock/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/hyperlock/index.js diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js new file mode 100644 index 00000000000..5d6ceeb50ca --- /dev/null +++ b/projects/hyperlock/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +module.exports = { + doublecounted: true, + blast: { + tvl: sumTokensExport({ owner: '0xc28EffdfEF75448243c1d9bA972b97e32dF60d06', resolveUniV3: true, }) + } +} \ No newline at end of file From 2055e75bcca187702f28f1c9ca12da4596eced37 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 8 Mar 2024 09:56:01 +0100 Subject: [PATCH 0593/2004] Add hyperlink to Hyperlock documentation --- projects/hyperlock/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js index 5d6ceeb50ca..c7576f533c1 100644 --- a/projects/hyperlock/index.js +++ b/projects/hyperlock/index.js @@ -1,5 +1,6 @@ const { sumTokensExport } = require('../helper/unwrapLPs') +// https://docs.hyperlock.finance/developers/hyperlock-contracts module.exports = { doublecounted: true, blast: { From 471ce016ba3cb60b1ecf78ff5fa0b38338557043 Mon Sep 17 00:00:00 2001 From: XDXDex <162077358+XDXDex@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:33:58 +0800 Subject: [PATCH 0594/2004] update XDX TVL (#9248) Co-authored-by: LionDEXDev --- projects/XDX/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/XDX/index.js diff --git a/projects/XDX/index.js b/projects/XDX/index.js new file mode 100644 index 00000000000..388e2f70dd5 --- /dev/null +++ b/projects/XDX/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: getUniTVL({ + fetchBalances: true, + useDefaultCoreAssets: true, + factory: '0xF55dE36072beCebF162d2d54C49964f3b0683711', + }) + } +} \ No newline at end of file From ce29ee50f14df33189dae834468ca2071b798042 Mon Sep 17 00:00:00 2001 From: lanotechres <162079480+lanotechres@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:39:48 +0900 Subject: [PATCH 0595/2004] Add Gomble to DefiLlama (#9247) * gomble * Update pull_request_template.md * Update pull_request_template.md * Update pull_request_template.md * Update index.js --------- Co-authored-by: agwab Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gomble/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/gomble/index.js diff --git a/projects/gomble/index.js b/projects/gomble/index.js new file mode 100644 index 00000000000..20fbcc30746 --- /dev/null +++ b/projects/gomble/index.js @@ -0,0 +1,13 @@ +const stakingContractAddress = '0xAB8c9Eb287796F075C821ffafBaC5FeDAa4604d5'; + +async function tvl(ts, _block, chainBlocks, { 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 }) + return api.sumTokens({ owner: stakingContractAddress, tokens: vTokens.concat(tokens) }) +} + +module.exports = { + bsc: { + tvl, + }, +} From 9aa538ed13c5151021c8657611c0b1a9ca7d050e Mon Sep 17 00:00:00 2001 From: Bill Clippy <80559444+bill-clippy@users.noreply.github.com> Date: Fri, 8 Mar 2024 01:40:12 -0800 Subject: [PATCH 0596/2004] add TVL calculation for Tranchess V3 (#9245) --- projects/tranchess/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/tranchess/index.js b/projects/tranchess/index.js index 31b1f12b889..85e0eb754ca 100644 --- a/projects/tranchess/index.js +++ b/projects/tranchess/index.js @@ -24,14 +24,19 @@ const v2Swaps = [ '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 ] const ETHV2Funds = [ '0x69c53679EC1C06f3275b64C428e8Cd069a2d3966', // ETH V2 Fund (ETH mainnet) + '0x811c9dD8B7B670A78d02fac592EbbE465e5dD0FA', // wstETH Fund (ETH mainnet) ] const ETHV2Swaps = [ '0xBA919470C7a2983fbcdA6ADC89Be9C43b8298079', // ETH V2 BISHOP Swap (ETH mainnet) + '0xAD06a2DBd34Da8f8Cf5f85d284A5B93A2057bDb5', // wstETH SWAP (ETH mainnet) ] function getBSCAddress(address) { From 0118895b30d1fc229a341efe250ac548e9f01e78 Mon Sep 17 00:00:00 2001 From: UjjwalGupta49 Date: Fri, 8 Mar 2024 15:16:39 +0530 Subject: [PATCH 0597/2004] added FLP3 (governance pool) tokenAccounts to tvl (#9243) --- projects/flashtrade/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/flashtrade/index.js b/projects/flashtrade/index.js index 231d73967d3..2f52086db16 100644 --- a/projects/flashtrade/index.js +++ b/projects/flashtrade/index.js @@ -7,6 +7,10 @@ async function tvl() { "FuFoCkfnrDjNmwPr54JEAYTUshXA4gQojevfvv3KXdx7", // ETH "55UmrYacpb8v7gbKswDofmWjLS8TSP3VB8NKjNfxu11d", // BTC "7b2jY9CeCWCnyKBvaLSnsV7qwUhbJGsJTPdyCsspPY7Q", // Virtual Pool - USDC + "CjRKKtT3DCsDh7gvQwkX1aCLpYhhDUKaNrJhUzGtsHUC", // Governance Pool - USDC + "CjSYeE668mfLdY7hi1B1ocLMzAVAFFtEhjKrGo8hgvuy", // JUP + "5rdgpCu7xFDhyksEAyUxsyuH9q1KQReKg1FwzmGA7mFq", // PYTH + "FahFdXRRn1iodaCs9MZyNjSb62TTpaQCD98Xcsdowdgf" // JTO ]; return sumTokens2({ tokenAccounts: vaults }); From 0be40fdaf8c0ed180a88fd27d88dcf928edcd121 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 8 Mar 2024 10:48:29 +0100 Subject: [PATCH 0598/2004] code refactor --- projects/flashtrade/index.js | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/projects/flashtrade/index.js b/projects/flashtrade/index.js index 2f52086db16..84b4135accb 100644 --- a/projects/flashtrade/index.js +++ b/projects/flashtrade/index.js @@ -1,19 +1,7 @@ const { sumTokens2 } = require("../helper/solana"); async function tvl() { - const vaults = [ - "Hhed3wTHoVoPpnuBntGf236UfowMMAXfxqTLkMyJJENe", // SOL - "BC5xAUpEbfeSWi5fJdvhFQhM3eMbTok2c7SY62daB3da", // USDC - "FuFoCkfnrDjNmwPr54JEAYTUshXA4gQojevfvv3KXdx7", // ETH - "55UmrYacpb8v7gbKswDofmWjLS8TSP3VB8NKjNfxu11d", // BTC - "7b2jY9CeCWCnyKBvaLSnsV7qwUhbJGsJTPdyCsspPY7Q", // Virtual Pool - USDC - "CjRKKtT3DCsDh7gvQwkX1aCLpYhhDUKaNrJhUzGtsHUC", // Governance Pool - USDC - "CjSYeE668mfLdY7hi1B1ocLMzAVAFFtEhjKrGo8hgvuy", // JUP - "5rdgpCu7xFDhyksEAyUxsyuH9q1KQReKg1FwzmGA7mFq", // PYTH - "FahFdXRRn1iodaCs9MZyNjSb62TTpaQCD98Xcsdowdgf" // JTO - ]; - - return sumTokens2({ tokenAccounts: vaults }); + return sumTokens2({ owner: '81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG', getAllTokenAccounts: true, }); } module.exports = { From c492be30823a736aef64918112af303dd0e525ba Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 8 Mar 2024 10:52:40 +0100 Subject: [PATCH 0599/2004] Add gaming dex and refactor code (#9250) * add gaming dex * code refactor --------- Co-authored-by: oromp1812 --- projects/gaming-dex/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/gaming-dex/index.js diff --git a/projects/gaming-dex/index.js b/projects/gaming-dex/index.js new file mode 100644 index 00000000000..4e2aa774a72 --- /dev/null +++ b/projects/gaming-dex/index.js @@ -0,0 +1,7 @@ +const { onChainTvl } = require('../helper/balancer') + +module.exports = { + defiverse: { + tvl: onChainTvl('0x2FA699664752B34E90A414A42D62D7A8b2702B85', 87620), + }, +}; From 378afcd6bd13874417f021fc3859b9aa9f0f1f1b Mon Sep 17 00:00:00 2001 From: Kim <157560526+KJesTF@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:57:39 +0700 Subject: [PATCH 0600/2004] add INIT on Blast (#9241) Co-authored-by: Kim --- projects/init-capital/index.js | 50 ++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/projects/init-capital/index.js b/projects/init-capital/index.js index e1cd7e1b222..3c910adeff0 100644 --- a/projects/init-capital/index.js +++ b/projects/init-capital/index.js @@ -1,19 +1,47 @@ -const { getConfig } = require('../helper/cache') +const { getConfig } = require("../helper/cache"); const POOL_DATA_URI = "https://app.init.capital/static/json/pools.json"; const tvl = async (timestamp, block, _, { api }) => { - const allPoolData = await getConfig('init-capital', POOL_DATA_URI); - const pools = Object.keys(allPoolData[api.getChainId()]); - const tokens = await api.multiCall({ calls: pools, abi: 'address:underlyingToken' }) - return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) + 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 + ); + } else { + pools = Object.keys(allPoolData[chainId]); + } + + return api.sumTokens({ tokensAndOwners2: [tokens, pools] }); }; const borrowed = async (timestamp, block, _, { api }) => { - const allPoolData = await getConfig('init-capital', POOL_DATA_URI); - const pools = Object.keys(allPoolData[api.getChainId()]); - const tokens = await api.multiCall({ calls: pools, abi: 'address:underlyingToken' }) - const debts = await api.multiCall({ abi: "uint256:totalDebt", calls: pools, }); + 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, + params: [debt], + })), + abi: "function toAmt(uint256) returns (uint256)", + }); + } api.addTokens(tokens, debts); }; @@ -24,4 +52,8 @@ module.exports = { tvl, borrowed, }, + blast: { + tvl, + borrowed, + }, }; From a55034e29feec7cd9f3cf2d2bd88458a70d95d18 Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:08:39 +0800 Subject: [PATCH 0601/2004] add Muito Finance (#9242) * add muito finance * delete log * code refactor --------- Co-authored-by: muito Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/muito-finance/index.js | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/muito-finance/index.js diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js new file mode 100644 index 00000000000..1a1c59cd0c6 --- /dev/null +++ b/projects/muito-finance/index.js @@ -0,0 +1,41 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const MUTO_FARM = "0x30b0e706fB7a6BfaFcdcd0C8290d8542b5E9C5a0"; +const MUTO_MULTI_FARM = "0xBD08D27ED845a0b75e87A756226E6a2Bc1cDc4dA"; +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(_, _1, _2, { api }) { + await getTvl(api, MUTO_FARM); + return await getTvl(api, MUTO_MULTI_FARM); +} + +async function staking(_, _1, _2, { 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)[])", +}; From 6203a06327d61c265df7d61401854aa6e4d9eceb Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 8 Mar 2024 10:19:41 +0000 Subject: [PATCH 0602/2004] add more binance wallets (#9251) --- projects/binance/config.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index ca614fff4b4..1ad5a6fdc72 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -490,6 +490,16 @@ const assetList = [ ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], + // THE WALLETS UNDER WHERE PROVIDED BY BINANCE TEAM ON THE 08/03/2024 + ['FDUSD', 'ETH', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], + ['USDT', 'ETH', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], + ['ETH', 'ETH', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], + ['BNB', 'BEP20', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], + ['BTC', 'BTC', 'bc1q7t9fxfaakmtk8pj7tdxjvwsng6y9x76czuaf5h'], + ['SOL', 'SOL', 'HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664'], + ['USDT', 'TRX', 'TRGCqsUXeynKTgynp2j9g3sg7Nux2KtB3u'], + ['XRP', 'XRP', 'rP3mUZyCDzZkTSd1VHoBbFt8HGm8fyq8qV'], + ] function getAddresses(chain) { From a1c870a35daa90eee13dbb0e14ff248712b7d35e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 8 Mar 2024 14:06:48 +0100 Subject: [PATCH 0603/2004] Add USTB price calculation (#9253) * changes * fastcommit * add price * code refactor --------- Co-authored-by: bd21 --- projects/superstate/index.js | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 projects/superstate/index.js diff --git a/projects/superstate/index.js b/projects/superstate/index.js new file mode 100644 index 00000000000..e0107bb5dea --- /dev/null +++ b/projects/superstate/index.js @@ -0,0 +1,46 @@ +const { get } = require("../helper/http"); + +module.exports = { + misrepresentedTokens: true, + methodology: "Sums the total supplies of Superstate's issued tokens.", +}; + +async function USTBPrice(ts) { + const data = await get("https://api.superstate.co/v1/funds/1/nav-daily") + let date = getDate(ts) + const oneDay = 24 * 60 * 60 + let res = data.find((nav) => nav.net_asset_value_date === date) + if (!res) { + date = getDate(ts - oneDay) + res = data.find((nav) => nav.net_asset_value_date === date) + } + return res.net_asset_value +} + +const config = { + ethereum: { + USTB: '0x43415eb6ff9db7e26a15b704e7a3edce97d31c4e', + }, +} + +Object.keys(config).forEach((chain) => { + let fundsMap = config[chain]; + const fundAddresses = Object.values(fundsMap); + + module.exports[chain] = { + tvl: async (ts, _b, _cb, { api }) => { + let supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: fundAddresses }); + const price = await USTBPrice(ts); + api.addCGToken('tether', supplies[0] * price / 1e6) + } + }; +}); + +function getDate(ts) { + const date = new Date(ts * 1000); + const day = String(date.getDate()).padStart(2, '0') + const month = String(date.getMonth() + 1).padStart(2, '0'); // January is 0! + const year = date.getFullYear(); + + return `${month}/${day}/${year}`; +} \ No newline at end of file From 1798bee957e1434d81cd69a465e762173a6acf8c Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Fri, 8 Mar 2024 13:08:02 +0000 Subject: [PATCH 0604/2004] symbiosis adds Merlin support + add wrbtc token on Rootstock (#9252) --- projects/symbiosis-finance/config.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 155c5f30351..fd9a65b2427 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -262,6 +262,7 @@ module.exports = { name: 'rsk', tokens: [ ADDRESSES.rsk.rUSDT, + ADDRESSES.rsk.WRBTC1, ], holders: [ '0x5aa5f7f84ed0e5db0a4a85c3947ea16b53352fd4', // portal v2 @@ -276,5 +277,14 @@ module.exports = { '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 ] }, + { + name: 'merlin', + tokens: [ + ADDRESSES.merlin.WBTC, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From c26538372f134bc205937e0968179a293748e4f9 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 8 Mar 2024 14:48:48 +0000 Subject: [PATCH 0605/2004] backpack cexs --- projects/backpack/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/backpack/index.js diff --git a/projects/backpack/index.js b/projects/backpack/index.js new file mode 100644 index 00000000000..60bad72a9cf --- /dev/null +++ b/projects/backpack/index.js @@ -0,0 +1,25 @@ +const { cexExports } = require('../helper/cex') + +// https://dune.com/21co/backpack-exchange +const config = { + solana: { + owners: [ + '43DbAvKxhXh1oSxkJSqGosNw3HpBnmsWiak6tB5wpecN', + 'BbHG9GvPActFGogv3iNrpDAj4qpXr8t3jF16uGxXcKci' + ], + tokens: [ + 'hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux', // HNT + 'jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL', // JTO + 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // USDT + 'HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3', // PYTH + 'rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof', // RNDR + 'mb1eu7TzEc71KxDpsmsKoucSSuuoGLv1drys1oP2jh6', // MOBILE + 'EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm', // WIF + 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', // BONK + 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC + 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' // JUP + ] + }, +} + +module.exports = cexExports(config) \ No newline at end of file From ede3246bee8340bb8cf0e55ffdea3cfe2dc691b5 Mon Sep 17 00:00:00 2001 From: Miner PEPE <162719909+Minerpepe@users.noreply.github.com> Date: Fri, 8 Mar 2024 21:32:09 +0500 Subject: [PATCH 0606/2004] add minner pepe (#9254) --- projects/minerPepe/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/minerPepe/index.js diff --git a/projects/minerPepe/index.js b/projects/minerPepe/index.js new file mode 100644 index 00000000000..60b718f9800 --- /dev/null +++ b/projects/minerPepe/index.js @@ -0,0 +1,19 @@ +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", + start: 35011373, + 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 From 3957276fcf93c6e3a0f791729b88d67b7c17378f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 8 Mar 2024 20:42:26 +0000 Subject: [PATCH 0607/2004] fix --- projects/hyperlock/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js index c7576f533c1..c1daf49b76c 100644 --- a/projects/hyperlock/index.js +++ b/projects/hyperlock/index.js @@ -4,6 +4,6 @@ const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { doublecounted: true, blast: { - tvl: sumTokensExport({ owner: '0xc28EffdfEF75448243c1d9bA972b97e32dF60d06', resolveUniV3: true, }) + tvl: sumTokensExport({ owners: ['0xc28EffdfEF75448243c1d9bA972b97e32dF60d06', '0xC3EcaDB7a5faB07c72af6BcFbD588b7818c4a40e'], resolveUniV3: true, }) } } \ No newline at end of file From 4369995c5c9c42a0440e3d0f25563b5b569a9adb Mon Sep 17 00:00:00 2001 From: Bill Clippy <80559444+bill-clippy@users.noreply.github.com> Date: Fri, 8 Mar 2024 15:38:31 -0800 Subject: [PATCH 0608/2004] remove dup tvl calculated in tranchess eth (#9255) --- projects/tranchess/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/tranchess/index.js b/projects/tranchess/index.js index 85e0eb754ca..7b2b6c4f13e 100644 --- a/projects/tranchess/index.js +++ b/projects/tranchess/index.js @@ -30,7 +30,6 @@ const v2Swaps = [ ] const ETHV2Funds = [ - '0x69c53679EC1C06f3275b64C428e8Cd069a2d3966', // ETH V2 Fund (ETH mainnet) '0x811c9dD8B7B670A78d02fac592EbbE465e5dD0FA', // wstETH Fund (ETH mainnet) ] From 30cd6724477d8a508a04c48e0a3824ee64059975 Mon Sep 17 00:00:00 2001 From: AronYeager <100383952+AronYeager@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:42:34 -0500 Subject: [PATCH 0609/2004] Add clone protocol (#9256) --- projects/clone/index.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/clone/index.js diff --git a/projects/clone/index.js b/projects/clone/index.js new file mode 100644 index 00000000000..e9c5e403911 --- /dev/null +++ b/projects/clone/index.js @@ -0,0 +1,35 @@ +const anchor = require("@coral-xyz/anchor"); +const { sumTokens2, getProvider, } = require("../helper/solana"); + +const programId = new anchor.web3.PublicKey( + 'C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr') + +async function tvl() { + const provider = getProvider() + const idl = await anchor.Program.fetchIdl(programId, provider) + const program = new anchor.Program(idl, programId, provider) + + let owners = [] + let tokens = [] + + const cloneAccountAddress = anchor.web3.PublicKey.findProgramAddressSync( + [Buffer.from("clone")], programId)[0] + + const cloneAccount = await program.account.clone.fetch(cloneAccountAddress) + owners.push(cloneAccount.collateral.vault.toString()) + tokens.push(cloneAccount.collateral.mint.toString()) + + return sumTokens2({ + tokens, + owners, + }) +} + +module.exports = { + timetravel: false, + solana: { + tvl, + }, + methodology: + 'Return the amount of collateral in the vault.' +} From 81e84ff188e7562d3ac5dbf8381e9980643336c3 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 9 Mar 2024 00:21:58 +0000 Subject: [PATCH 0610/2004] add clone treasury --- projects/treasury/clone.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/treasury/clone.js diff --git a/projects/treasury/clone.js b/projects/treasury/clone.js new file mode 100644 index 00000000000..5d14ac9dcda --- /dev/null +++ b/projects/treasury/clone.js @@ -0,0 +1,10 @@ +const { treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + solana: { + owners: [ + 'GPJyF8fTgKKPykRW1XSrXiEXdJTJLHnhUqdDyyek66Z', + ], + ownTokens: [] + }, +}) \ No newline at end of file From d03606c95fab6c10aa41578c77db9862b5c606e7 Mon Sep 17 00:00:00 2001 From: 0xkaidev <92993009+0xkaidev@users.noreply.github.com> Date: Sat, 9 Mar 2024 15:35:26 +0700 Subject: [PATCH 0611/2004] moraswap v3 (#9258) * moraswap v2 * add neon evm chain * code refactor * sMora staking * import lib * code refactor * moraswap v3 * Update fromBlock --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/moraswap-v3/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/moraswap-v3/index.js diff --git a/projects/moraswap-v3/index.js b/projects/moraswap-v3/index.js new file mode 100644 index 00000000000..67d7c38a920 --- /dev/null +++ b/projects/moraswap-v3/index.js @@ -0,0 +1,9 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + neon_evm: { + factory: '0x58122246F7e33669cde3486Dd72f95c2e886E375', + fromBlock: 237396579, + isAlgebra: false, + } +}) From 48730f3a134179b8926cc071531276f1554780a2 Mon Sep 17 00:00:00 2001 From: ZeroTwoDAO Date: Sat, 9 Mar 2024 09:54:02 +0100 Subject: [PATCH 0612/2004] Add gasline protocol (#9238) * Add gasline protocol * Make linter happy * Only track TVL for WETH deposits on gasline * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gasline/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/gasline/index.js diff --git a/projects/gasline/index.js b/projects/gasline/index.js new file mode 100644 index 00000000000..0c107fd0631 --- /dev/null +++ b/projects/gasline/index.js @@ -0,0 +1,17 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const config = { + blast: { gasline: '0xD5400cAc1D76f29bBb8Daef9824317Aaf9d3C0a1', weth: '0x4300000000000000000000000000000000000004', }, + bsc: { gasline: '0x35138Ddfa39e00C642a483d5761C340E7b954F94', weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', }, +} + +Object.keys(config).forEach(chain => { + const {gasline, weth} = config[chain] + module.exports[chain] = { + tvl: sumTokensExport({ owner: gasline, tokens: [weth] }), + borrowed: async (_, _b, _cb, { api, }) => { + const supply = await api.call({ abi: 'erc20:totalSupply', target: gasline}) + api.addGasToken(supply) + }, + } +}) \ No newline at end of file From a42897f4d5b2c46d6203fa91c3623fa2dfe4b9df Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:56:26 +0100 Subject: [PATCH 0613/2004] bugfix --- projects/clone/index.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/projects/clone/index.js b/projects/clone/index.js index e9c5e403911..88136f79d80 100644 --- a/projects/clone/index.js +++ b/projects/clone/index.js @@ -1,28 +1,22 @@ const anchor = require("@coral-xyz/anchor"); const { sumTokens2, getProvider, } = require("../helper/solana"); -const programId = new anchor.web3.PublicKey( - 'C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr') +const programId = new anchor.web3.PublicKey('C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr') async function tvl() { const provider = getProvider() const idl = await anchor.Program.fetchIdl(programId, provider) const program = new anchor.Program(idl, programId, provider) - let owners = [] - let tokens = [] + let tokenAccounts = [] const cloneAccountAddress = anchor.web3.PublicKey.findProgramAddressSync( - [Buffer.from("clone")], programId)[0] + [Buffer.from("clone")], programId)[0] const cloneAccount = await program.account.clone.fetch(cloneAccountAddress) - owners.push(cloneAccount.collateral.vault.toString()) - tokens.push(cloneAccount.collateral.mint.toString()) + tokenAccounts.push(cloneAccount.collateral.vault.toString()) - return sumTokens2({ - tokens, - owners, - }) + return sumTokens2({ tokenAccounts }) } module.exports = { From a1642acceb329a35d2c523f4732078738d037b4f Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Sat, 9 Mar 2024 18:58:44 +0800 Subject: [PATCH 0614/2004] Add new Fee Rate BUCK-USDC vault to TVL (#9259) * feature: add strater project * feature: set the package-lock.json to the same version of original repo * feature: replace decimal.js to bignumber.js --- projects/strater/index.js | 43 ++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/projects/strater/index.js b/projects/strater/index.js index b849082024b..3c4587bfba0 100644 --- a/projects/strater/index.js +++ b/projects/strater/index.js @@ -2,11 +2,20 @@ const ADDRESSES = require("../helper/coreAssets.json"); const sui = require("../helper/chain/sui"); const { addUniV3LikePosition } = require("../helper/unwrapLPs"); -const BUCKETUS_VAULT_ID = "0x1a0b93fd2965ce3ceb4039c90b232ddee7b0e79015cab0ca10528bb5f4285188"; -const BUCK_USDC_POOL_ID = "0x6ecf6d01120f5f055f9a605b56fd661412a81ec7c8b035255e333c664a0c12e7"; +const BUCKETUS_VAULT_ID = + "0x1a0b93fd2965ce3ceb4039c90b232ddee7b0e79015cab0ca10528bb5f4285188"; +const BUCK_USDC_POOL_ID = + "0x6ecf6d01120f5f055f9a605b56fd661412a81ec7c8b035255e333c664a0c12e7"; -const CETABLE_VAULT_ID = "0xeed4e7948f88f1f044b653717a7855eef6fe188e9cbbb103d5169f9bc3edd257"; -const USDC_USDT_POOL_ID = "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20"; +const FEE_RATE_BUCKETUS_VAULT_ID = + "0x6edfc992f6e775fe926a5e850661c151ad01e6149e9b34792a2102e1721065fc"; +const FEE_RATE_BUCK_USDC_POOL_ID = + "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5"; + +const CETABLE_VAULT_ID = + "0xeed4e7948f88f1f044b653717a7855eef6fe188e9cbbb103d5169f9bc3edd257"; +const USDC_USDT_POOL_ID = + "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20"; function asIntN(int, bits = 32) { return Number(BigInt.asIntN(bits, BigInt(int))); @@ -27,7 +36,28 @@ async function tvl(_, _1, _2, { api }) { liquidity: bucketusPosition.liquidity, token0: ADDRESSES.sui.BUCK, token1: ADDRESSES.sui.USDC, - }) + }); + + const feeRateBucketusVaultObjs = await sui.getObject( + FEE_RATE_BUCKETUS_VAULT_ID + ); + const feeRateBucketusPoolObjs = await sui.getObject( + FEE_RATE_BUCK_USDC_POOL_ID + ); + + const feeRateBucketusPool = feeRateBucketusPoolObjs.fields; + const feeRateBucketusPosition = + feeRateBucketusVaultObjs.fields.position.fields; + + addUniV3LikePosition({ + api, + tickLower: asIntN(feeRateBucketusPosition.tick_lower_index.fields.bits), + tickUpper: asIntN(feeRateBucketusPosition.tick_upper_index.fields.bits), + tick: asIntN(feeRateBucketusPool.current_tick_index.fields.bits), + liquidity: feeRateBucketusPosition.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); @@ -35,7 +65,6 @@ async function tvl(_, _1, _2, { api }) { const cetablePool = cetablePoolObjs.fields; const cetablePosition = cetableVaultObjs.fields.position.fields; - addUniV3LikePosition({ api, tickLower: asIntN(cetablePosition.tick_lower_index.fields.bits), @@ -44,7 +73,7 @@ async function tvl(_, _1, _2, { api }) { liquidity: cetablePosition.liquidity, token0: ADDRESSES.sui.USDT, token1: ADDRESSES.sui.USDC, - }) + }); } module.exports = { From 29ce7562bfb2cb2b5e3e3c077ca67feada6a412e Mon Sep 17 00:00:00 2001 From: Bill Clippy <80559444+bill-clippy@users.noreply.github.com> Date: Sun, 10 Mar 2024 00:48:42 -0800 Subject: [PATCH 0615/2004] fix incorrect asset address use on ETH (#9262) --- projects/tranchess/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/tranchess/index.js b/projects/tranchess/index.js index 7b2b6c4f13e..9a3f46b0dae 100644 --- a/projects/tranchess/index.js +++ b/projects/tranchess/index.js @@ -202,7 +202,7 @@ async function ethereum(timestamp, blockETH, chainBlocks){ block: blockETH })).output - sdk.util.sumSingleBalance(balances, getBSCAddress(quoteAddress), balancesInSwap[1]) + sdk.util.sumSingleBalance(balances, quoteAddress, balancesInSwap[1]) } return balances From e383541693625f5e4e4010e329b687f76cc9bdc4 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Sun, 10 Mar 2024 10:11:43 +0000 Subject: [PATCH 0616/2004] symbiosis adds wbtc pool (#9265) --- projects/symbiosis-finance/config.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index fd9a65b2427..6e889869570 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -9,6 +9,7 @@ module.exports = { ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, XDAO, ], holders: [ @@ -23,6 +24,7 @@ module.exports = { ADDRESSES.bsc.BUSD, ADDRESSES.bsc.USDC, ADDRESSES.bsc.ETH, + ADDRESSES.bsc.BTCB, XDAO, ], holders: [ @@ -128,6 +130,7 @@ module.exports = { tokens: [ ADDRESSES.era.USDC, ADDRESSES.era.WETH, + ADDRESSES.era.WBTC, ], holders: [ '0x39dE19C9fF25693A2311AAD1dc5C790194084A39', // portal v2 From 425364848c26f76dd9b262f3455e45f38e8e0466 Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Sun, 10 Mar 2024 10:28:45 +0000 Subject: [PATCH 0617/2004] fix tvl (#9267) --- projects/nile-exchange/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/nile-exchange/index.js b/projects/nile-exchange/index.js index 002bd78b4de..bd0eee8cda7 100644 --- a/projects/nile-exchange/index.js +++ b/projects/nile-exchange/index.js @@ -1,5 +1,5 @@ const { uniV3Export } = require('../helper/uniswapV3') module.exports = uniV3Export({ - linea: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 1822530, }, + linea: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 1768897, }, }) \ No newline at end of file From 15f2d0a49c92ad2f60c72755dd5d788431dee172 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:35:19 +0100 Subject: [PATCH 0618/2004] update standard mode --- projects/standard-mode/index.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/projects/standard-mode/index.js b/projects/standard-mode/index.js index 7f8e071e94e..27125032b1e 100644 --- a/projects/standard-mode/index.js +++ b/projects/standard-mode/index.js @@ -1,16 +1,19 @@ const { getLogs } = require('../helper/cache/getLogs') const config = { - mode: { factory: '0x4D1b18A7BDB8D0a02f692398337aBde8DeB8FB09', fromBlock: 4381503, }, - blast: { factory: '0x2CC505C4bc86B28503B5b8C450407D32e5E20A9f', fromBlock: 434946, }, + mode: [{ factory: '0x4D1b18A7BDB8D0a02f692398337aBde8DeB8FB09', fromBlock: 4381503, }, { factory: '0xaA0075035b814eA7638C15100cFa86a03397bE91', fromBlock: 4937855, },], + blast: [{ factory: '0x2CC505C4bc86B28503B5b8C450407D32e5E20A9f', fromBlock: 434946, }, { factory: '0xA8a336Ec4D546c2Dc9F188E0Be4B3FB174791813', fromBlock: 616605, },] } Object.keys(config).forEach(chain => { - const { factory, fromBlock } = config[chain] module.exports[chain] = { tvl: async (_, _b, _cb, { api, }) => { - 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]) - return api.sumTokens({ ownerTokens}) + 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 From 2aff1a123569e0a81b02344d7c69346c5d64c55d Mon Sep 17 00:00:00 2001 From: Deadshot Ryker <151393124+deadshotryker@users.noreply.github.com> Date: Sun, 10 Mar 2024 16:07:14 +0530 Subject: [PATCH 0619/2004] added linea and the mainnet lrt markets (#9264) --- projects/zerolend/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/zerolend/index.js b/projects/zerolend/index.js index aebd87b1538..56cc7747a40 100644 --- a/projects/zerolend/index.js +++ b/projects/zerolend/index.js @@ -10,4 +10,10 @@ module.exports = { blast: aaveExports("blast", undefined, undefined, [ "0xc6DF4ddDBFaCb866e78Dcc01b813A41C15A08C10", ]), + linea: aaveExports("linea", undefined, undefined, [ + "0x67f93d36792c49a4493652B91ad4bD59f428AD15", + ]), + ethereum: aaveExports("ethereum", undefined, undefined, [ + "0x47223D4eA966a93b2cC96FFB4D42c22651FADFcf", + ]), }; From 7cad9ff23cdf378c0dc4e8f9beb9a05328c6c67d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:40:10 +0100 Subject: [PATCH 0620/2004] Refactor Aave chain configurations --- projects/zerolend/index.js | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/projects/zerolend/index.js b/projects/zerolend/index.js index 56cc7747a40..92a769822b7 100644 --- a/projects/zerolend/index.js +++ b/projects/zerolend/index.js @@ -1,19 +1,13 @@ const { aaveExports } = require("../helper/aave"); -module.exports = { - era: aaveExports("era", undefined, undefined, [ - "0xB73550bC1393207960A385fC8b34790e5133175E", - ]), - manta: aaveExports("manta", undefined, undefined, [ - "0x67f93d36792c49a4493652B91ad4bD59f428AD15", - ]), - blast: aaveExports("blast", undefined, undefined, [ - "0xc6DF4ddDBFaCb866e78Dcc01b813A41C15A08C10", - ]), - linea: aaveExports("linea", undefined, undefined, [ - "0x67f93d36792c49a4493652B91ad4bD59f428AD15", - ]), - ethereum: aaveExports("ethereum", undefined, undefined, [ - "0x47223D4eA966a93b2cC96FFB4D42c22651FADFcf", - ]), -}; +const config = { + era: "0xB73550bC1393207960A385fC8b34790e5133175E", + manta: "0x67f93d36792c49a4493652B91ad4bD59f428AD15", + blast: "0xc6DF4ddDBFaCb866e78Dcc01b813A41C15A08C10", + linea: "0x67f93d36792c49a4493652B91ad4bD59f428AD15", + ethereum: "0x47223D4eA966a93b2cC96FFB4D42c22651FADFcf", +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = aaveExports(chain, undefined, undefined, [config[chain]]) +}) \ No newline at end of file From ff502b607daf2385a91a7e4d6bb0ff4d17f3c5a4 Mon Sep 17 00:00:00 2001 From: hmMachghoul <97662562+hmMachghoul@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:42:34 +0100 Subject: [PATCH 0621/2004] add Opulous OVault TVL (#8994) * add Opulous OVault TVL * mark lent assets as borrowed --------- Co-authored-by: hmMachghoul Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/opulous/index.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/projects/opulous/index.js b/projects/opulous/index.js index 33c11ad4103..41c3280c4f7 100644 --- a/projects/opulous/index.js +++ b/projects/opulous/index.js @@ -1,6 +1,6 @@ const { lookupApplications } = require("../helper/chain/algorand"); -async function staking() { +async function algorandStaking() { const poolIds = [843061415, 1127413236, 1020347200]; let totalPoolAmount = 0; @@ -21,6 +21,16 @@ async function staking() { 'opulous': totalPoolAmount }; } +const arbitrumTVL = async (_, _b, _cb, { 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 = { // timetravel: true, @@ -28,7 +38,11 @@ module.exports = { methodology: `Counts the number of OPUL tokens locked in the staking pool.`, algorand: { tvl: () => ({}), - staking: staking + staking: algorandStaking + }, + arbitrum: { + tvl: () => ({}), + borrowed: arbitrumTVL, } }; From 3954cb87da1bca5af52231e5f36f4c88a6891ce2 Mon Sep 17 00:00:00 2001 From: ZeroTwoDAO Date: Sun, 10 Mar 2024 11:49:16 +0100 Subject: [PATCH 0622/2004] Add gasline staking (#9263) --- projects/gasline/index.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/projects/gasline/index.js b/projects/gasline/index.js index 0c107fd0631..e4ea19c8fcd 100644 --- a/projects/gasline/index.js +++ b/projects/gasline/index.js @@ -1,17 +1,19 @@ +const { staking } = require("../helper/staking"); const { sumTokensExport } = require("../helper/unwrapLPs"); const config = { - blast: { gasline: '0xD5400cAc1D76f29bBb8Daef9824317Aaf9d3C0a1', weth: '0x4300000000000000000000000000000000000004', }, - bsc: { gasline: '0x35138Ddfa39e00C642a483d5761C340E7b954F94', weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', }, + blast: { gasline: '0xD5400cAc1D76f29bBb8Daef9824317Aaf9d3C0a1', gas: '0x5d61c3f602579873Bb58d8DF53a9d82942de5267', weth: '0x4300000000000000000000000000000000000004', }, + bsc: { gasline: '0x35138Ddfa39e00C642a483d5761C340E7b954F94', gas: '0xd0245a9fe3D8366e8c019ce9CE4cAdFF0cEabB76', weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', }, } Object.keys(config).forEach(chain => { - const {gasline, weth} = config[chain] + const {gasline, gas, weth} = config[chain] module.exports[chain] = { tvl: sumTokensExport({ owner: gasline, tokens: [weth] }), + staking: staking(gasline, gas, chain), borrowed: async (_, _b, _cb, { api, }) => { const supply = await api.call({ abi: 'erc20:totalSupply', target: gasline}) api.addGasToken(supply) }, } -}) \ No newline at end of file +}) From f7b48d680cbe46565cfba4ce2629269989bbb5df Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sun, 10 Mar 2024 14:04:25 +0000 Subject: [PATCH 0623/2004] remove old wallets okcoin (#9268) --- projects/okcoin/index.js | 81 ---------------------------------------- 1 file changed, 81 deletions(-) diff --git a/projects/okcoin/index.js b/projects/okcoin/index.js index f97b4f305e7..c3ec17a84c5 100644 --- a/projects/okcoin/index.js +++ b/projects/okcoin/index.js @@ -15,88 +15,7 @@ const config = { bitcoin: { owners: [ // we only added wallets with more than 0.1 BTC - 'bc1q39q4hqvchfq2ynyl5xttshkpvdsvp958uq94m0ddv4gt92xhnlvsj32mfy', - 'bc1qv3ertag30cfd58e9krg7ee2etp2628yapwfv27scf3t4yaqvz5wslag54w', - "36Y1UJBWGGreKCKNYQPVPr41rgG2sQF7SC", - "bc1qwkq9e5teav7n4v5v9msdyxh3tdl8782xhf9y02ffnkutppkm4rxsq5wes2", - "bc1qzrz29mxxlv3lnsng50lzpa6xrl848jp3lwmcn67t082k2xv45muswkwelc", - "bc1quktu2u654pelsn7qtmv839yyg0xecmdr59r6tuu0t5hcxq5nsxwqc5fzpu", - "bc1q65v48necseqseqm7dggtz5wf6clvwj8t8a0wswucgy8664uad7ysyf705a", - "bc1q8hnvhz3kdpxv7p7nzh2pm5qn95kfp0ff8sfk435ega90cxae374sgd8658", - "bc1qwqtm4d9x4fa7lvc88xl0autp42lkqgmp6pdpw9hpsvt9ac8k2xvq83dkz4", - "bc1qsrdlqttu69x44z9ch4r2e4t9x099rpf3p7rtu3yzpufrz4dsse0qcpqxjn", - "bc1q0peyk5wv6uathf6jlal3sqd4s66y5hfux2vh5x9z47kkt6cu4dxq05t57u", - "bc1qnp7julzx0qyyz7dapdjjyuvlhd696frj0puu9gptwdutvhryyvcsuvc3na", - "bc1qyc54t9mc7rh0srk5ctyshykqmz793y30r6jrn372v8wx76gydgwqafugxu", - "bc1qx0v26ajsfq07j4l9c60eqa7putpcvakz2u234ywh9yk3lsrd5u0s8zh9hr", - "bc1qmsdxj3j3fq9mw2733dhpvc5d79u3nhekt6fqz4y3h40gqzq7kvgq0fwjku", - "bc1qxty7nz6zwk6lfxtzsldksfsgfpvem2hewn72mc9dm09y3xq7dh7qcnyul9", - "bc1q6pgpwufv42jrq724waqdhsv9vg3wrgrcw93mj0kpdpy3d622uyyspfc9nr", - "bc1qvc6tmyr9pas29d09hu7l0n8q5eqmcepptls3lrdkhxvdc4jhatzsa6wfls", - "bc1qlaltsl05swgtvweq9uc9qmy94n2l8t92y2rxy0wnxz72jdt3qugschn0rt", - "bc1qy3s7efla47m9s32pqwg220p3a4de4f2uqe0rfmqhdfh30h52rguspl52g6", - "bc1q0708h4g2g35xfwujrrgxj6e0j2et6qkfr3a85dc2lzmyyezg4eeszmkrae", - "35EyyC2Q7UTTzmcWeuVd7b96cjkR2ykadT", - "36igHhLGsmCt4Qh1TZTgzinEjU3AQipVDi", - "36j6PzEU83pmM1PbHCP3uBH9HcuwYX1igb", - "361SutatvucBNkTBZvmNPaXThLbDm1XK5i", - "38xvfmxwR81ZtdQRw8j5XLwP38J2AioW6i", - "33qUcf4RyoysAn1TxQgzEBodvq22pDT32H", - "3HPQGA5BDsfk2Wxy4jjkg9bNpxKz33kN5o", - "3FJ6vkm44vwPQz7X82S2q9poh55tTgECM7", - "3EunnmL6LhqcB9u3PVbUAdtj1vZdGQgFBP", - "3JnxnGXVn1iSkjhsAtNRq2GGgZaDXz9SZv", - "3BiJA1srAFWoaoCPAjvNiwSmgFGGnRXCQA", - "3Mn6GnHRtA5S9HWgKdJnTfGyCgj5r8a7d8", "bc1q2s3rjwvam9dt2ftt4sqxqjf3twav0gdx0k0q2etxflx38c3x8tnssdmnjq", - "3DekqjWw33GGZi6ER4QLTsyDZV8gEycLnt", - "3DFiiWYGszd44qADZFMae4vSwVkzKH9D1J", - "3BQ2ZssxxTpkDhSC1kanGpQ2ofNfZHfqdE", - "3L8Jow9gos1tewxYKvhxUeE43dzxFP7jfw", - "3Jcus23RVs6iyCLS4x67o64wZJuxyLJPEy", - "3EsXfkx4hdLdX6GhzthGw4G4QJSPymGyqY", - "39yNTRaotoLsGtUWrJQ2FTg4uT9i8jETNs", - "34Hx5KffA1mUQG23ZdcZ7zhpPj1jdHRPB7", - "336RCi69KyksFvfd5K8nVgv2V6L4TzPo5e", - "33Us9LTox4pPCyDRucWAeAgv5HFJ3F8QEY", - "33Miwhfghqp2fPre272zM6bBPjU6fFBjdP", - "3JrDVvApcDrJvYUhGoSXAkwCxJkxH37uRY", - "3ARVBKq7MESv4aKXeXZVjhMxmBBC7Uohvt", - "37jUoYXzKb5M2kvdXRxGnwmRrHLXuBPkGR", - "358DzMfBG2fzVMYTZjktqUQaDMR5WpYFGJ", - "35tt48ioWimAbPLxk4MfWkp6La2B7gRbRd", - "3MWUMsGmx3y1iBDCwjkZp1XdUxEHYNzUq2", - "3L39V5WF9422tHSjK7joFPnriioCrPim7j", - "35PTstw2PqGrquLnUhmye3A2nMZJzeK5MF", - "39uKss4GEpj7F8Z39tSThmatWivVW9N3cV", - "bc1qngnta9lvmht9z6y4nq5kc8x57pzan0e5daxrxtg3llgpd2jfumts8056hj", - "bc1q73cqllektyf7wgkfl9ar85sr56vuz7w8lre75ux8m0r3vcplqjmq6d8jkd", - "3Bbyo51FEEM8jzw2JQEwu7DQmBPMJzWRj4", - "3Kib3E62NKnL4bAy425G14BPofYH5qMgMF", - "3H36uhmRugEN9ySYSh4ZftP1GerUfvseXP", - "3EXXcxmcfAtMG5SeUshEZMGD3NEuDZWSXg", - "3PTcMGdNKYV5ZZDQorNYmMxoVDoghFcwWn", - "3FmNm3byE5qwzfgQbQod3jHoKGy5r4Qapp", - "36LdQB5Ae5BbnQv18R61qotgicbG1dTaBj", - "3HWqMWUcDxFjyCKvSBSmYDpGXWNqPaYoW1", - "3MxBjHLRhvV1jPLTtgUAdfDw8xJ4ww5R3z", - "3GVHA98byHdxekZjBhHBWdHCMH4GRNC61e", - "35t1TFTbUcTH5ZnZiMVqQUPUtfT4sRcTrC", - "3AxGEYCt8Hq13E6LhENzL1q6ieP7fv9M8s", - "bc1qp8gd6xakvqqg7qt9ktfpq4wrsfhp0jlyzy4npfk22xh5qk83fztqsuuspf", - "3NMQ4igWQVAZq1NeUSd4a2NLJ65w8JqmFS", - "33L5akK2tnaupkERpCndewo9hVNFkSuzFw", - "37J1MywnA1NY1mmC9ny4EgmkKEFB8zmg33", - "3Ad6D5e83PfTxZpdYQumYiMrFnc7S6hE1P", - "35VhixfJ7PhxF12F6oCSnzm6Cgu5RZUoMu", - "3FFyv1BR5r93YN8aVpmJ7JDeMH7TeccZw7", - "32UxKDSVdSeaNyAQQd5UfHveJzAikbGLmT", - "37HNTMRUGWFMzws1RF6fAp2sDP5m6tMwec", - "3JeBScBZpYp4szgK1R8LCZvA2tzkXr9VRD", - "38Tqph89kZ7pACYfB3QEWMmcqwT6iLYzsF", - "38E56tLzMHxpmwfdgB6BaPgNkHFh5FzaTi", - "3Kv5DCmHU64wN68hiD6hGyTgfEv3E7czDd", - "377313tZcAthF8jq2Z7zsfYPAHTvA3mg9P" ] }, tron: { From 3d834460fae43ad620ea657b3324284e43c0161b Mon Sep 17 00:00:00 2001 From: Decrypt <90518536+Decryptu@users.noreply.github.com> Date: Sun, 10 Mar 2024 22:00:08 +0100 Subject: [PATCH 0624/2004] Update README.md (#9270) A word was missing in the readme, just a simple typo fix! --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ef286254b5..ab14d8212ac 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Also, don't hesitate to send a message on [our discord](https://discord.defillam 1. PLEASE PLEASE **enable "Allow edits by maintainers" while putting up the PR.** 2. Once your adapter has been merged, it takes time to show on the UI. No need to notify us on Discord. -3. Sorry, We no longer accept fetch adapter for new projects (reason: https://github.com/DefiLlama/DefiLlama-Adapters/discussions/432), we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. +3. Sorry, We no longer accept fetch adapter for new projects (reason: https://github.com/DefiLlama/DefiLlama-Adapters/discussions/432), we prefer the tvl to be computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you. 4. **For updating listing info** It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR 5. Do not edit/push `package-lock.json` file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI 6. No need to go to our discord and announce that you've created a PR, we monitor all PRs and will review it asap From 10a03ce1a2e3e529d805768bee24fa169d3acf89 Mon Sep 17 00:00:00 2001 From: PandoraBox <161485024+pandorabok@users.noreply.github.com> Date: Sun, 10 Mar 2024 23:08:24 +0200 Subject: [PATCH 0625/2004] Add perfectswap (#9271) * add perfectswap * add perfectswap: change contract adrress --------- Co-authored-by: perfect-swap --- projects/perfectswap/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/perfectswap/index.js diff --git a/projects/perfectswap/index.js b/projects/perfectswap/index.js new file mode 100644 index 00000000000..50a5e3d22ea --- /dev/null +++ b/projects/perfectswap/index.js @@ -0,0 +1,11 @@ +const { uniTvlExport } = require('../helper/calculateUniTvl.js') + +module.exports = { + misrepresentedTokens: true, + arbitrum: { + tvl: uniTvlExport("0x6df18f08dF448ca2336dA5Fe1db9c6Fef7D5dFD5", undefined, undefined, { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, { useDefaultCoreAssets: true, hasStablePools: true, }), + }, +} \ No newline at end of file From 67f2e9d03f02e8269bf859606489ba4eb0f317dd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 01:22:10 +0100 Subject: [PATCH 0626/2004] fix broken adapters --- projects/augmented-finance/index.js | 44 +++++++++---------- projects/elektrik/index.js | 2 +- projects/extra/index.js | 2 +- projects/helper/chain/cosmos.js | 48 ++++++++++---------- projects/helper/chain/waves.js | 38 ++++++++++++++++ projects/socean/index.js | 17 +++----- projects/solfarm.js | 4 +- projects/sora.js | 2 +- projects/sushiswap-trident/trident.js | 6 +-- projects/teahouse-v3/index.js | 4 +- projects/teahouse/index.js | 4 +- projects/tulip/index.js | 4 +- projects/vires/index.js | 63 +++++++++++++++++++-------- 13 files changed, 147 insertions(+), 91 deletions(-) diff --git a/projects/augmented-finance/index.js b/projects/augmented-finance/index.js index ff4618c8565..7f335b37842 100644 --- a/projects/augmented-finance/index.js +++ b/projects/augmented-finance/index.js @@ -1,36 +1,32 @@ -const sdk = require('@defillama/sdk'); -const { nullAddress } = require('../helper/unwrapLPs') -const abi = { "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], "name": "getReservesData", "outputs": [{ "components": [{ "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "internalType": "address", "name": "pricingAsset", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "decimals", "type": "uint256" }, { "internalType": "uint256", "name": "baseLTVasCollateral", "type": "uint256" }, { "internalType": "uint256", "name": "reserveLiquidationThreshold", "type": "uint256" }, { "internalType": "uint256", "name": "reserveLiquidationBonus", "type": "uint256" }, { "internalType": "uint256", "name": "reserveFactor", "type": "uint256" }, { "internalType": "bool", "name": "usageAsCollateralEnabled", "type": "bool" }, { "internalType": "bool", "name": "borrowingEnabled", "type": "bool" }, { "internalType": "bool", "name": "stableBorrowRateEnabled", "type": "bool" }, { "internalType": "bool", "name": "isActive", "type": "bool" }, { "internalType": "bool", "name": "isFrozen", "type": "bool" }, { "internalType": "uint128", "name": "liquidityIndex", "type": "uint128" }, { "internalType": "uint128", "name": "variableBorrowIndex", "type": "uint128" }, { "internalType": "uint128", "name": "liquidityRate", "type": "uint128" }, { "internalType": "uint128", "name": "variableBorrowRate", "type": "uint128" }, { "internalType": "uint128", "name": "stableBorrowRate", "type": "uint128" }, { "internalType": "uint40", "name": "lastUpdateTimestamp", "type": "uint40" }, { "internalType": "address", "name": "depositTokenAddress", "type": "address" }, { "internalType": "address", "name": "stableDebtTokenAddress", "type": "address" }, { "internalType": "address", "name": "variableDebtTokenAddress", "type": "address" }, { "internalType": "address", "name": "strategy", "type": "address" }, { "internalType": "bool", "name": "isExternalStrategy", "type": "bool" }, { "internalType": "uint256", "name": "availableLiquidity", "type": "uint256" }, { "internalType": "uint256", "name": "totalPrincipalStableDebt", "type": "uint256" }, { "internalType": "uint256", "name": "averageStableRate", "type": "uint256" }, { "internalType": "uint256", "name": "totalStableDebt", "type": "uint256" }, { "internalType": "uint256", "name": "stableDebtLastUpdateTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "totalScaledVariableDebt", "type": "uint256" }, { "internalType": "uint256", "name": "priceInEth", "type": "uint256" }], "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]", "name": "", "type": "tuple[]" }, { "components": [{ "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "internalType": "uint256", "name": "scaledDepositTokenBalance", "type": "uint256" }, { "internalType": "bool", "name": "usageAsCollateralEnabledOnUser", "type": "bool" }, { "internalType": "uint256", "name": "stableBorrowRate", "type": "uint256" }, { "internalType": "uint256", "name": "scaledVariableDebt", "type": "uint256" }, { "internalType": "uint256", "name": "principalStableDebt", "type": "uint256" }, { "internalType": "uint256", "name": "stableBorrowLastUpdateTimestamp", "type": "uint256" }], "internalType": "struct IUiPoolDataProvider.UserReserveData[]", "name": "", "type": "tuple[]" }, { "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" } const config = { - ethereum: '0x8F5273c5aa638e946BC5dD2171Ae9E9184C75228', - bsc: '0xa450547F27F0947760C9C818d9fd2CD51DFA7441', - avax: '0x483B76b13B14DB4fF49359aF9DF3A51F25FaB6a0', + ethereum: '0x9276635Ec39C72866f3cF70298eFe501EB5dcDf1', + bsc: '0xEdBDF91ac20287e332c761179FaCe71eba9FBc93', + avax: '0xb2e7216F2f70ac9d9Eec70e1Ca6f2f1CADf218D5', xdai: '0x75e5cF901f3A576F72AB6bCbcf7d81F1619C6a12', } 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.", + // deadFrom: 2024-02-22 }; Object.keys(config).forEach(chain => { const provider = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { - const balances = {} - const data = await api.call({ abi, target: provider, params: nullAddress }) - data[0].forEach(i => { - sdk.util.sumSingleBalance(balances, i.underlyingAsset, i.availableLiquidity, chain) - }) - return balances - }, - borrowed: async (_, _b, _cb, { api, }) => { - const balances = {} - const data = await api.call({ abi, target: provider, params: nullAddress }) - data[0].forEach(i => { - sdk.util.sumSingleBalance(balances, i.underlyingAsset, +i.totalPrincipalStableDebt + +i.totalScaledVariableDebt, chain) - }) - return balances - }, - } -}) + borrowed: () => ({}), // project abandoned? + tvl: async (_, _1, _2, { 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/elektrik/index.js b/projects/elektrik/index.js index 5e2a28a80ab..7bd0f583d09 100644 --- a/projects/elektrik/index.js +++ b/projects/elektrik/index.js @@ -10,7 +10,7 @@ const query = `{ }` async function tvl(_, _b, _cb, { api, }) { - const { pools } = await cachedGraphQuery('elektrik-1', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH', query) + const { pools } = await cachedGraphQuery('elektrik/test-2', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH', query) const ownerTokens = pools.map(i => [[i.token0.id, i.token1.id], i.id]) return sumTokens2({ api, ownerTokens, }) } diff --git a/projects/extra/index.js b/projects/extra/index.js index edabd63e72c..bc4851a56cf 100644 --- a/projects/extra/index.js +++ b/projects/extra/index.js @@ -34,7 +34,7 @@ Object.keys(config).forEach(chain => { const calls = [] for (let i = 1; i <= vaultLogs.length; i++) calls.push(i) - const data = await api.multiCall({ target: positionViewer, abi: getVaultAbi, calls }) + 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]) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index b63b7e145e7..e2cbba1fb8b 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -1,6 +1,6 @@ -const axios = require("axios"); const sdk = require("@defillama/sdk"); const { transformBalances } = require("../portedTokens"); +const { get, post } = require("../http"); const { PromisePool } = require("@supercharge/promise-pool"); const { log } = require("../utils"); const ADDRESSES = require('../coreAssets.json') @@ -27,7 +27,7 @@ const endPoints = { persistence: "https://rest.cosmos.directory/persistence", secret: "https://rpc.ankr.com/http/scrt_cosmos", // chihuahua: "https://api.chihuahua.wtf", - injective: "https://sentry.lcd.injective.network:443", + injective: "https://injective-rest.publicnode.com", migaloo: "https://migaloo-api.polkachu.com", fxcore: "https://fx-rest.functionx.io", xpla: "https://dimension-lcd.xpla.dev", @@ -35,7 +35,7 @@ const endPoints = { neutron: "https://rest-kralum.neutron-1.neutron.org", quasar: "https://quasar-api.polkachu.com", gravitybridge: "https://gravitychain.io:1317", - sei: "https://sei-api.polkachu.com", + sei: "https://sei-rest.publicnode.com", aura: "https://lcd.aura.network", archway: "https://api.mainnet.archway.io", sifchain: "https://sifchain-api.polkachu.com", @@ -53,7 +53,7 @@ const chainSubpaths = { // some contract calls need endpoint with higher gas limit const highGasLimitEndpoints = { - 'sei1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3shh3qfl': "https://rest.sei-apis.com", + // 'sei1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3shh3qfl': "https://rest.sei-apis.com", } function getEndpoint(chain, { contract } = {}) { @@ -69,7 +69,7 @@ async function query(url, block, chain) { if (block !== undefined) { endpoint += `&height=${block - (block % 100)}`; } - return (await axios.get(endpoint)).data.result; + return (await get(endpoint)).result; } async function queryV1Beta1({ chain, paginationKey, block, url } = {}) { @@ -87,7 +87,7 @@ async function queryV1Beta1({ chain, paginationKey, block, url } = {}) { } endpoint += paginationQueryParam; } - return (await axios.get(endpoint)).data; + return get(endpoint) } async function getTokenBalance({ token, owner, block, chain }) { @@ -130,7 +130,7 @@ async function getDenomBalance({ denom, owner, block, chain } = {}) { if (block !== undefined) { endpoint += `?height=${block - (block % 100)}`; } - let { data } = await axios.get(endpoint) + 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; @@ -145,8 +145,8 @@ async function getBalance2({ balances = {}, owner, block, chain, tokens, blackli endpoint += `?height=${block - (block % 100)}`; } const { - data: { balances: data }, - } = await axios.get(endpoint); + balances: data, + } = await get(endpoint); for (const { denom, amount } of data) { if (blacklistedTokens?.includes(denom)) continue; if (tokens && !tokens.includes(denom)) continue; @@ -178,13 +178,13 @@ async function queryContract({ contract, chain, data }) { if (typeof data !== "string") data = JSON.stringify(data); data = Buffer.from(data).toString("base64"); return ( - await axios.get( + await get( `${getEndpoint(chain, { contract })}/cosmwasm/wasm/v1/contract/${contract}/smart/${data}` ) - ).data.data; + ).data; } -const multipleEndpoints={ +const multipleEndpoints = { sei: [ "https://sei-api.polkachu.com", "https://sei-rest.brocha.in", @@ -197,20 +197,20 @@ const multipleEndpoints={ async function queryContractWithRetries({ contract, chain, data }) { const rpcs = multipleEndpoints[chain] - if(rpcs === undefined){ - return queryContract({contract, chain, data}) + 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 - 1){ + ).data; + } catch (e) { + if (i >= rpcs.length - 1) { throw e } } @@ -222,7 +222,7 @@ async function queryManyContracts({ contracts = [], chain, data }) { const { results, errors } = await PromisePool .withConcurrency(parallelLimit) .for(contracts) - .process(async (contract) => queryContract({ contract, chain, data })) + .process(async (contract) => queryContract({ contract, chain, data })) if (errors && errors.length) throw errors[0] @@ -237,9 +237,9 @@ async function queryContracts({ chain, codeId, }) { do { let endpoint = `${getEndpoint(chain)}/cosmwasm/wasm/v1/code/${codeId}/contracts?pagination.limit=${limit}${paginationKey ? `&pagination.key=${encodeURIComponent(paginationKey)}` : ''}` - const { data: { contracts, pagination } } = await axios.get(endpoint) - paginationKey = pagination.next_key - res.push(...contracts) + const { contracts, pagination } = await get(endpoint) + paginationKey = pagination.next_key + res.push(...contracts) } while (paginationKey) return res diff --git a/projects/helper/chain/waves.js b/projects/helper/chain/waves.js index 30fd46c1e4b..7671b2a03b2 100644 --- a/projects/helper/chain/waves.js +++ b/projects/helper/chain/waves.js @@ -1,4 +1,5 @@ const axios = require('axios') +const { get } = require('../http') 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({ @@ -65,8 +66,45 @@ async function data(address, key) { return response.data; } +const tokenMapping = { + '3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13': { cgId: 'ethereum', decimals: 8 }, + '2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6': { cgId: 'wrapped-bitcoin', decimals: 8 }, + '9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi': { cgId: 'tether', decimals: 6 }, + 'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW': { cgId: 'usd-coin', decimals: 6 }, +} + +async function sumTokens({ owners, api, includeWaves = true, }) { + await Promise.all( + owners.map(async (owner) => { + const { balances } = await get(API_HOST + `assets/balance/${owner}`); + balances.forEach(({ assetId, balance }) => { + if (tokenMapping[assetId]) { + const { cgId, decimals } = tokenMapping[assetId] + api.addCGToken(cgId, balance / (10 ** decimals)) + } else { + 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) + }) + ) +} + +async function call({ target, key}) { + const { value } = await await get(API_HOST + `addresses/data/${target}/${key}`) + return value; +} + module.exports = { + call, assetDetails, scriptEvaluate, data, + sumTokens, }; diff --git a/projects/socean/index.js b/projects/socean/index.js index 39b0753a82d..35433fae130 100644 --- a/projects/socean/index.js +++ b/projects/socean/index.js @@ -1,15 +1,10 @@ -const { getConnection, decodeAccount, sumTokens2 } = require('../helper/solana') -const { PublicKey } = require("@solana/web3.js") -const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2, } = require('../helper/solana') -async function tvl(_, _1, _2, { api }) { - const connection = getConnection() -// const programPublicKey = new PublicKey('5ocnV1qiCgaQR8Jb8xWnVbApfaygJ8tNoZfgPwsgx9kx') - const stakeAccount = new PublicKey('5oc4nmbNTda9fx8Tw57ShLD132aqDK65vuHH4RU1K4LZ') - const data = await connection.getAccountInfo(stakeAccount) - const i = decodeAccount('scnStakePool', data) - api.add(ADDRESSES.solana.SOL, i.totalStakeLamports.toString()) - return api.getBalances() +// https://www.npmjs.com/package/@unstake-it/sol +// https://learn.sanctum.so/docs/contracts + +async function tvl() { + return sumTokens2({ solOwners: ['3rBnnH9TTgd3xwu48rnzGsaQkSr1hR64nY71DrDt6VrQ'],}) } module.exports = { diff --git a/projects/solfarm.js b/projects/solfarm.js index 98bef94e130..687f1e8d1c2 100644 --- a/projects/solfarm.js +++ b/projects/solfarm.js @@ -1,9 +1,9 @@ const { get } = require('./helper/http') async function fetch() { - var response = await get('https://api.solfarm.io/tvl') + var response = await get('https://api.tulip.garden/tvl') - return response.TOTAL; + return response.total; } module.exports = { diff --git a/projects/sora.js b/projects/sora.js index fa05e920acf..e01d0984871 100644 --- a/projects/sora.js +++ b/projects/sora.js @@ -1,7 +1,7 @@ const { post } = require('./helper/http') async function tvl(timestamp) { - const { data: { entities: { nodes } } } = await post('https://api.subquery.network/sq/sora-xor/sora-prod-sub4', { + 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": { diff --git a/projects/sushiswap-trident/trident.js b/projects/sushiswap-trident/trident.js index 268baae7e79..9f4ca672996 100644 --- a/projects/sushiswap-trident/trident.js +++ b/projects/sushiswap-trident/trident.js @@ -19,7 +19,7 @@ const tridentQueryWithBlock = ` query get_tokens($block: Int) { tokens( block: { number: $block } - first: 1000 + first: 100 orderBy: liquidityUSD orderDirection: desc where: { liquidityUSD_gt: 0 } @@ -34,7 +34,7 @@ const tridentQueryWithBlock = ` const tridentQuery = ` query get_tokens { tokens( - first: 1000 + first: 100 orderBy: liquidityUSD orderDirection: desc where: { liquidityUSD_gt: 0 } @@ -63,7 +63,7 @@ function trident(chain) { result.tokens.forEach((token) => { api.add(token.id, token.liquidity); }); - + return api.getBalances() }; } diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 87ed0b4265a..656dc66cf8e 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -7,7 +7,7 @@ const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; // get vault contract addresses from teahouse api async function getVaultContractsAddress(chain) { let plAddress = []; - const { vaults } = await getConfig("teahouse", teahouseVaultAPI); + const { vaults } = await getConfig("teahouse/v3", teahouseVaultAPI); vaults.forEach((element) => { // v3 vaults if (element.isDeFi == true && element.isActive == true) { @@ -34,7 +34,7 @@ chains.forEach((chain) => { api.addTokens(tokens, bals); if (['boba', 'mantle'].includes(chain)) { const tvl = await api.getUSDValue() - if (+tvl === 0) throw new Error('tvl is 0') + if (+tvl === 0) throw new Error('tvl is 0 Balances:' + JSON.stringify(api.getBalances())) } return api.getBalances(); }, diff --git a/projects/teahouse/index.js b/projects/teahouse/index.js index 60ca2fc68bb..3dc57db8b12 100644 --- a/projects/teahouse/index.js +++ b/projects/teahouse/index.js @@ -8,7 +8,7 @@ const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; // get vault contract addresses from teahouse api async function getVaultContractsAddress(chain) { let htAddress = []; - const { vaults } = await getConfig("teahouse", teahouseVaultAPI); + const { vaults } = await getConfig("teahouse/v1", teahouseVaultAPI); vaults.forEach((element) => { // v2 vaults if (element.isDeFi == false && element.isActive == true) { @@ -44,7 +44,7 @@ chains.forEach((chain) => { api.addTokens(tokens, bals); if (chain === 'bsc') { const tvl = await api.getUSDValue() - if (+tvl === 0) throw new Error('tvl is 0') + if (+tvl === 0) throw new Error('tvl is 0 Balances:' + JSON.stringify(api.getBalances())) } return api.getBalances(); }, diff --git a/projects/tulip/index.js b/projects/tulip/index.js index 1448c45638c..6b3b7f7e98f 100644 --- a/projects/tulip/index.js +++ b/projects/tulip/index.js @@ -6,7 +6,7 @@ const garden = "0xceF2f95f185D49bcd1c10DE7f23BEaCBaae6eD0f"; module.exports = { oasis: { - staking: staking(garden, petal, "oasis"), - tvl: getUniTVL({ factory: '0x90a5e676EFBdeFeeeb015cd87484B712fd54C96A', chain: 'oasis', useDefaultCoreAssets: true }), + staking: staking(garden, petal), + tvl: getUniTVL({ factory: '0x90a5e676EFBdeFeeeb015cd87484B712fd54C96A', useDefaultCoreAssets: true }), } }; diff --git a/projects/vires/index.js b/projects/vires/index.js index dead9c5c394..61afd1f2f73 100644 --- a/projects/vires/index.js +++ b/projects/vires/index.js @@ -1,23 +1,50 @@ -const { wavesAdapter } = require('../helper/chain/wavesAdapter') +const { sumTokens, call } = require('../helper/chain/waves') const endpoint = "/vires" module.exports = { - timetravel: false, - 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`, - waves: { - tvl: wavesAdapter(endpoint, item => { - let tvl = 0; - item.meta.forEach(market => tvl += market.currentTotalDepositUsd - market.currentTotalDebtUsd + market.protectedSupply * market.assetPriceUsd) - return tvl - }), - borrowed: wavesAdapter(endpoint, item => { - let tvl = 0; - item.meta.forEach(market => tvl += Number(market.currentTotalDebtUsd)) - return tvl - }), - }, - hallmarks:[ - [1659092400, "Bad debt settlement in USDN"], - ], + timetravel: false, + 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`, + 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(_, _b, _cb, { api, }) { + return sumTokens({ + owners: aTokens, api, includeWaves: true, + }) +} + +async function borrowed(_, _b, _cb, { api, }) { + await Promise.all(aTokens.map(async (token) => { + const assetId = (await call({ target: token, key: 'assetId'})).split('_')[0] + const res = (await call({ target: token, key: 'reserveGlobalData'})).split('|')[2] + api.add(assetId, res) + })) +} \ No newline at end of file From 23359106f74d895fd2082210550542295c2cee1c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 01:39:15 +0100 Subject: [PATCH 0627/2004] updates neutrino adapter --- projects/helper/chain/waves.js | 4 +++- projects/neutrino/index.js | 12 +++++++++--- projects/vires/index.js | 2 -- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/projects/helper/chain/waves.js b/projects/helper/chain/waves.js index 7671b2a03b2..6ba52b31a49 100644 --- a/projects/helper/chain/waves.js +++ b/projects/helper/chain/waves.js @@ -73,11 +73,13 @@ const tokenMapping = { 'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW': { cgId: 'usd-coin', decimals: 6 }, } -async function sumTokens({ owners, api, includeWaves = true, }) { +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; if (tokenMapping[assetId]) { const { cgId, decimals } = tokenMapping[assetId] api.addCGToken(cgId, balance / (10 ** decimals)) diff --git a/projects/neutrino/index.js b/projects/neutrino/index.js index 2efa357ff40..e9d538021fe 100644 --- a/projects/neutrino/index.js +++ b/projects/neutrino/index.js @@ -1,5 +1,11 @@ -const { wavesExport } = require('../helper/chain/wavesAdapter') +const { sumTokens } = require('../helper/chain/waves') -const endpoint = "/neutrino" -module.exports = wavesExport(endpoint, item => item.usdnLocked + item.defoLocked) \ No newline at end of file +module.exports = { + waves: { tvl } +} + +async function tvl(_, _b, _cb, { api, }) { + return sumTokens({ owners: ['3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo',], includeWaves: true, api, blacklistedTokens: ['DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', '6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'] }) + +} \ No newline at end of file diff --git a/projects/vires/index.js b/projects/vires/index.js index 61afd1f2f73..53df644167b 100644 --- a/projects/vires/index.js +++ b/projects/vires/index.js @@ -1,7 +1,5 @@ const { sumTokens, call } = require('../helper/chain/waves') -const endpoint = "/vires" - module.exports = { timetravel: false, 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`, From 15c99b5588e4b2c6b4707357df8b36d991e0b253 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:12:33 +0100 Subject: [PATCH 0628/2004] track overnight usdc+ on base --- projects/overnight-usdPlus/index.js | 41 +++++++++++++---------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/projects/overnight-usdPlus/index.js b/projects/overnight-usdPlus/index.js index dae6f282020..95751dfa118 100644 --- a/projects/overnight-usdPlus/index.js +++ b/projects/overnight-usdPlus/index.js @@ -1,38 +1,33 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const m2m = { - polygon: "0x33efB0868A6f12aEce19B451e0fcf62302Ec4A72", - bsc: "0x9Af655c4DBe940962F776b685d6700F538B90fcf", - optimism: "0x9Af655c4DBe940962F776b685d6700F538B90fcf", - arbitrum: "0x9Af655c4DBe940962F776b685d6700F538B90fcf", - era: "0x240aad990FFc5F04F11593fF4dCF1fF714d6fc80", - base: "0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb", - linea: "0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb" + polygon: ["0x33efB0868A6f12aEce19B451e0fcf62302Ec4A72"], + bsc: ["0x9Af655c4DBe940962F776b685d6700F538B90fcf",], + optimism: ["0x9Af655c4DBe940962F776b685d6700F538B90fcf",], + arbitrum: ["0x9Af655c4DBe940962F776b685d6700F538B90fcf",], + era: ["0x240aad990FFc5F04F11593fF4dCF1fF714d6fc80"], + base: ["0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb", "0x96aa0bBe4D0dea7C4AF4739c53dBFA0300262253"], + linea: ["0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb"], } 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 + 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 } const abi = "uint256:totalNetAssets" -module.exports = {}; - Object.keys(m2m).forEach(chain => { + const asset = assets[chain] module.exports[chain] = { - tvl: async (_, _b, cb) => { - const block = cb[chain] - const { output } = await sdk.api.abi.call({ chain, block, abi, target: m2m[chain]}) - return { - [`${chain}:${assets[chain]}`]: output - } + tvl: async (_, _b, cb, { api }) => { + const balances = await api.multiCall({ abi, calls: m2m[chain]}) + api.add(asset, balances) } } }) \ No newline at end of file From 0522e4d5e3b70dc075825345ff8268dad684a335 Mon Sep 17 00:00:00 2001 From: henrio123 Date: Mon, 11 Mar 2024 11:13:58 +0200 Subject: [PATCH 0629/2004] Sommelier: Turbo-rsETH vault (#9278) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults * Sommelier: Add Turbo eETH V2 * Sommelier: Add Turbo eETH V2 vault * Sommelier: Arbitrum vaults * Fix Arbitrum TVL cals * RYUSD-ARB * Turbo-RSETH --------- Co-authored-by: Phil Co-authored-by: Phil <30321052+philipjames44@users.noreply.github.com> --- projects/sommelier/cellar-constants.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index cf684756e2a..5c662d52455 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -55,6 +55,7 @@ const MORPHO_MAXIMIZER = "0xcf4b531b4cde95bd35d71926e09b2b54c564f5b6"; const TURBO_DIVETH = "0x6c1edce139291Af5b84fB1e496c9747F83E876c9"; const TURBO_ETHX = "0x19B8D8FC682fC56FbB42653F68c7d48Dd3fe597E"; const TURBO_EETH_V2 = "0xdAdC82e26b3739750E036dFd9dEfd3eD459b877A"; +const TURBO_RSETH = "0x1dffb366b5c5A37A12af2C127F31e8e0ED86BDbe"; const cellarsV2p5 = [ { id: TURBO_SWETH, startBlock: 17910374 }, @@ -68,6 +69,7 @@ const cellarsV2p5 = [ { id: TURBO_DIVETH, startBlock: 19117472 }, { id: TURBO_ETHX, startBlock: 19117547 }, { id: TURBO_EETH_V2, startBlock: 19163705 }, + { id: TURBO_RSETH, startBlock: 19338456 }, ]; // v2.5 Cellars on Arbitrum From a26b2f9feb81c03e7c9230ab99662206c5cd3e6e Mon Sep 17 00:00:00 2001 From: Marc Puig Date: Mon, 11 Mar 2024 10:14:23 +0100 Subject: [PATCH 0630/2004] add stars TVL (#9276) --- projects/pstake/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/pstake/index.js b/projects/pstake/index.js index 34a4e5b6ced..ad9e0c742a6 100644 --- a/projects/pstake/index.js +++ b/projects/pstake/index.js @@ -28,6 +28,11 @@ const chainInfos = { name: "dydx-chain", decimals: 1e18, endpoint: "/stkdydx/dydx_tvu" + }, + stargaze: { + name: "stargaze", + decimals: 1e6, + endpoint: "/stkstars/stars_tvu" } } From 08a7c8059fcbefc25d7467d98871bcd288a849c6 Mon Sep 17 00:00:00 2001 From: Ryan C Date: Mon, 11 Mar 2024 18:16:41 +0900 Subject: [PATCH 0631/2004] feat: add blast config (#9274) --- projects/xy-finance/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index b57d8fa567e..a4b7179baf2 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -62,6 +62,9 @@ const config = { scroll: { chainId: '534352', }, + blast: { + chainId: '81457', + }, } const ethAddress = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' @@ -374,6 +377,12 @@ const yPoolDepositContract = { "tokenAddress": ADDRESSES.scroll.USDC } }, + "81457": { + "ETH": { + "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", + "tokenAddress": ethAddress + }, + } } module.exports={} From 468908c219401144f29f5c94ceb8a3799644411e Mon Sep 17 00:00:00 2001 From: allush Date: Mon, 11 Mar 2024 10:35:13 +0000 Subject: [PATCH 0632/2004] symbiosis adds Bahamut support --- projects/helper/coreAssets.json | 3 +++ projects/symbiosis-finance/config.js | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index e2afac19e3a..a92b23a2e2b 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1637,5 +1637,8 @@ "merlin": { "WBTC": "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA", "VOYA": "0x480e158395cc5b41e5584347c495584ca2caf78d" + }, + "ftn": { + "USDC": "0x4237e0A5b55233D5B6D6d1D9BF421723954130D8" } } diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 6e889869570..7bcc4649795 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -289,5 +289,14 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'ftn', + tokens: [ + ADDRESSES.ftn.USDC, + ], + holders: [ + '0x318C2B9a03C37702742C3d40C72e4056e430135A', // portal v2 + ] + }, ] } \ No newline at end of file From 03545bcb9e4341056426ca64286965aa67d3d95c Mon Sep 17 00:00:00 2001 From: yepp4you Date: Mon, 11 Mar 2024 14:35:36 +0400 Subject: [PATCH 0633/2004] Adding new Klaytn STAKING CONTRACT addresses and deleting old ones --- projects/neopin-staking/index.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/projects/neopin-staking/index.js b/projects/neopin-staking/index.js index c4559746bb8..05ca3766865 100644 --- a/projects/neopin-staking/index.js +++ b/projects/neopin-staking/index.js @@ -1,27 +1,31 @@ -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'); +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' + "0xf9d92BAd7b1410dfFB0a204B7aa418C9fd5A898F", + "0xf20816C9bdcb25da3ba79b206e9b7107ae02ae10", + "0x489d6d679F1CA4cFE6976C55B54427D1AaDb8057", ], tokens: [nullAddress], }), - staking: staking('0x306ee01a6ba3b4a8e993fa2c1adc7ea24462000c', ADDRESSES.klaytn.NPT, 'klaytn'), + staking: staking( + "0x306ee01a6ba3b4a8e993fa2c1adc7ea24462000c", + ADDRESSES.klaytn.NPT, + "klaytn", + ), }, tron: { tvl: async () => { return { - tron: await getStakedTron('TTjacDH5PL8hpWirqU7HQQNZDyF723PuCg') - } + tron: await getStakedTron("TTjacDH5PL8hpWirqU7HQQNZDyF723PuCg"), + }; }, }, timetravel: false, -} +}; From 84cb628a4ca9facd770207df6c339ab1bc5142a7 Mon Sep 17 00:00:00 2001 From: bitcoincashautist <80100588+A60AB5450353F40E@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:07:26 +0100 Subject: [PATCH 0634/2004] Optimize AnyHedge I updated the scanner to split data to 1 csv per day: https://gitlab.com/0353F40E/anyhedge-stats/-/commit/6e59580091a9a3ab2b1c87d2de46b07f484e43d7 so now adapter can just download the data for 1 day instead of downloading the whole history just to extract data for 1 day --- projects/anyhedge/index.js | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/projects/anyhedge/index.js b/projects/anyhedge/index.js index 8f638c3920f..79947df67f5 100644 --- a/projects/anyhedge/index.js +++ b/projects/anyhedge/index.js @@ -1,24 +1,20 @@ const axios = require("axios"); - -const dayHistory = {}; - -async function GetDailyHistory() { +async function GetDailyHistory(day) { // Data & calculation method is fully reproducible, see: // https://gitlab.com/0353F40E/anyhedge-stats/-/blob/master/readme.md - - let { data } = await axios.get('https://gitlab.com/0353F40E/anyhedge-stats/-/raw/master/stats_daily.csv'); - data = parseCSV(data); - - data.forEach((row) => { - if (!row.tvl) return; - dayHistory[row.day] = row.tvl; - }); + 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 dayHistory[day] + return await GetDailyHistory(day); } async function tvl(timestamp) { @@ -32,8 +28,6 @@ async function tvl(timestamp) { if (timestamp > lastTimestamp) throw "Data for the date is incomplete, awaiting contract reveals." - await GetDailyHistory(); - tvlAnyHedge = await getTVLAnyHedge(timestamp) testDataSource = await getTVLAnyHedge(timestamp + 31*86400) From 028037c9d3e83e1b3c0b63a263488471d0de3281 Mon Sep 17 00:00:00 2001 From: arth-dev <162883763+arth-dev@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:34:12 +0900 Subject: [PATCH 0635/2004] ArthSwap v3 (#9273) * fix staking * add arthswap v3 * fix core assets * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/arthswap-v3/index.js | 5 +++++ projects/arthswap/index.js | 27 ++++----------------------- projects/helper/coreAssets.json | 12 +++++++++++- test.js | 32 ++------------------------------ 4 files changed, 22 insertions(+), 54 deletions(-) create mode 100644 projects/arthswap-v3/index.js diff --git a/projects/arthswap-v3/index.js b/projects/arthswap-v3/index.js new file mode 100644 index 00000000000..de47f5edb36 --- /dev/null +++ b/projects/arthswap-v3/index.js @@ -0,0 +1,5 @@ +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 index ad7bdb436da..227944c3cf2 100644 --- a/projects/arthswap/index.js +++ b/projects/arthswap/index.js @@ -1,31 +1,12 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require("../helper/unknownTokens"); -const { stakingPricedLP } = require("../helper/staking"); +const { staking } = require("../helper/staking"); const FACTORIES = "0xA9473608514457b4bF083f9045fA63ae5810A03E"; -const TOKENS = { - ARSW: ADDRESSES.astar.ARSW, -}; - -const STAKING_CONTRACTS = { - astar: "0x42d175a498Cb517Ad29d055ea7DcFD3D99045404", -}; - module.exports = { - timetravel: true, - methodology: "Arthswap Tvl Calculation", + misrepresentedTokens: true, astar: { - tvl: getUniTVL({ - factory: FACTORIES, - useDefaultCoreAssets: true, - }), - staking: stakingPricedLP( - STAKING_CONTRACTS.astar, - TOKENS.ARSW, - "astar", - "0x50497E7181eB9e8CcD70a9c44FB997742149482a", - "arthswap" - ), + tvl: getUniTVL({ factory: FACTORIES, useDefaultCoreAssets: true, }), + staking: staking('0x42d175a498Cb517Ad29d055ea7DcFD3D99045404', '0xde2578edec4669ba7f41c5d5d2386300bcea4678'), }, }; diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a92b23a2e2b..7f12fb6c273 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -531,6 +531,7 @@ "BUSDbs": "5RpUwQ8wtdPCZHhu6MERp2RGrpobsbZ6MH5dDHkUjs2" }, "astar": { + "WASTR_1": "0xaeaaf0e2c81af264101b9129c00f4440ccf0f720", "WASTR": "0xecc867de9f5090f55908aaa1352950b9eed390cd", "WETH": "0x81ecac0d6be0550a00ff064a4f9dd2400585fe9c", "WBTC": "0xad543f18cff85c77e140e3e5e3c3392f6ba9d5ca", @@ -540,7 +541,6 @@ "USDC": "0x6a2d262d56735dba19dd70682b39f6be9a931d98", "USDT": "0x3795c36e7d12a8c252a20c5a7b455f7c57b60283", "nativeUSDT": "0xffffffff000000000000000000000001000007c0", - "ARSW": "0xde2578edec4669ba7f41c5d5d2386300bcea4678", "DOT": "0xffffffffffffffffffffffffffffffffffffffff", "DAI": "0x6de33698e9e9b787e09d3bd7771ef63557e148bb", "MUUU": "0xc5bcac31cf55806646017395ad119af2441aee37", @@ -565,6 +565,16 @@ "vDOT": "0xFfFfFfff00000000000000010000000000000008", "ASTR": "0xffffffff00000000000000010000000000000010" }, + "astarzk": { + "WETH": "0xe9cc37904875b459fa5d0fe37680d36f1ed55e38", + "USDC": "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035", + "USDT": "0x1e4a5963abfd975d8c9021ce480b42188849d41d", + "WBTC": "0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1", + "DAI": "0xc5015b9d9161dca7e18e32f6f25c4ad850731fd4", + "MATIC": "0xa2036f0538221a77a3937f1379699f44945018d0", + "wstETH": "0x5d8cff95d7a57c0bf50b30b43c7cc0d52825d4a9", + "weETH": "0xcd68dff4415358c35a28f96fd5bf7083b22de1d6" + }, "cardano": { "ADA": "ADA" }, diff --git a/test.js b/test.js index bc0018f9871..8515d4466f2 100644 --- a/test.js +++ b/test.js @@ -4,9 +4,9 @@ const handleError = require('./utils/handleError') process.on('unhandledRejection', handleError) process.on('uncaughtException', handleError) -const { ENV_KEYS } = require("./projects/helper/env"); const path = require("path"); require("dotenv").config(); +const { ENV_KEYS } = require("./projects/helper/env"); const { util: { blocks: { getCurrentBlocks }, humanizeNumber: { humanizeNumber }, @@ -29,24 +29,6 @@ if (process.env.LLAMA_SANITIZE) delete process.env[key] }) -const locks = []; -function getCoingeckoLock() { - return new Promise((resolve) => { - locks.push(resolve); - }); -} -function releaseCoingeckoLock() { - const firstLock = locks.shift(); - if (firstLock !== undefined) { - firstLock(null); - } -} -// Rate limit is 50 calls/min for coingecko's API -// So we'll release one every 1.2 seconds to match it -setInterval(() => { - releaseCoingeckoLock(); -}, 2000); -const maxCoingeckoRetries = 5; async function getTvl( unixTimestamp, @@ -58,7 +40,6 @@ async function getTvl( tvlFunction, isFetchFunction, storedKey, - knownTokenPrices ) { if (!isFetchFunction) { const chain = storedKey.split('-')[0] @@ -66,14 +47,7 @@ async function getTvl( const api = new sdk.ChainApi({ chain, block: chainBlocks[chain], timestamp: unixTimestamp, }) let tvlBalances = await tvlFunction(unixTimestamp, ethBlock, chainBlocks, { api, chain, block, storedKey }); if (!tvlBalances && Object.keys(api.getBalances()).length) tvlBalances = api.getBalances() - const tvlResults = await computeTVL( - tvlBalances, - "now", - false, - knownTokenPrices, - getCoingeckoLock, - maxCoingeckoRetries - ); + const tvlResults = await computeTVL(tvlBalances, "now"); await diplayUnknownTable({ tvlResults, storedKey, tvlBalances, }) usdTvls[storedKey] = tvlResults.usdTvl; tokensBalances[storedKey] = tvlResults.tokenBalances; @@ -170,7 +144,6 @@ sdk.api.abi.call = async (...args) => { tvlFunction, tvlFunctionIsFetch, storedKey, - knownTokenPrices ); let keyToAddChainBalances = tvlType; if (tvlType === "tvl" || tvlType === "fetch") { @@ -201,7 +174,6 @@ sdk.api.abi.call = async (...args) => { mainTvlIsFetch ? module.fetch : module.tvl, mainTvlIsFetch, "tvl", - knownTokenPrices ); tvlPromises.push(mainTvlPromise); } From 36652ba7c58a76d48ed8c21bf619ba514d47193d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:33:21 +0100 Subject: [PATCH 0636/2004] minor fix --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index c21fd4f1674..d7e0e17b5fd 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -40,6 +40,9 @@ const fixBalancesTokens = { "0x4F90055b8670B21d64146577152aE52975075900": { coingeckoId: "ethereum", decimals: 18 }, "0xBD0adB3Ee21e0A75D3021384177238883D69e883": { coingeckoId: "ordinals", decimals: 18 }, }, + astrzk: { + '0xe9cc37904875b459fa5d0fe37680d36f1ed55e38': { coingeckoId: "ethereum", decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain From 5a25fe09d8d21efd2c76accfdc2e5287ea082085 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:34:32 +0100 Subject: [PATCH 0637/2004] Add ASTRZK_RPC_MULTICALL to env.js --- projects/helper/env.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/env.js b/projects/helper/env.js index bba612ac270..52273461ce1 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -23,6 +23,7 @@ const DEFAULTS = { MERLIN_RPC: "https://rpc.merlinchain.io", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', BITROCK_RPC_MULTICALL: '0x40DD0342A46Ab0893251211F6626E82c09A75345', + ASTRZK_RPC_MULTICALL: '0x36eabf148272BA81A5225C6a3637972F0EE17771', NAKA_RPC: 'https://node.nakachain.xyz', RONIN_RPC: 'https://api.roninchain.com/rpc', ETHF_RPC: 'https://rpc.dischain.xyz/', From 925039464587b1f829b18f9e151752a58481fdfb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:42:26 +0100 Subject: [PATCH 0638/2004] 0xlend (#9285) * update 0xlend * update 0xlend * update 0xlend * Refactor config object and import compoundExports2 function --------- Co-authored-by: haokang --- projects/0xLend/index.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/projects/0xLend/index.js b/projects/0xLend/index.js index 35c4577f9a9..476433c6431 100644 --- a/projects/0xLend/index.js +++ b/projects/0xLend/index.js @@ -1,4 +1,13 @@ -const { usdCompoundExports } = require("../helper/compound"); -module.exports = { - kcc: usdCompoundExports("0x337d8719f70D514367aBe780F7c1eAd1c0113Bc7", "kcc", "0x309f1639018e8B272126C4B99af442AA25Dcd1F2") -} \ No newline at end of file +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 From e073443404b45753df53fa7d8b6fee54b7d7ed27 Mon Sep 17 00:00:00 2001 From: hoomp3 Date: Mon, 11 Mar 2024 09:44:27 -0400 Subject: [PATCH 0639/2004] Update Juice Finance (#9272) * feat: add weth lending pool * feat: add weth lending pool * feat: add weth lending pool --- projects/juice-finance/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index c10b3869243..6d90accadb4 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -1,17 +1,17 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') -const LENDING_POOL = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a" +const LENDING_POOL_USDB = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a" +const LENDING_POOL_WETH = "0x44f33bC796f7d3df55040cd3C631628B560715C2"; const COLLATERAL_VAULT = "0x6301795aa55B90427CF74C18C8636E0443F2100b" const COLLATERAL_VAULT_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0" const vaults = [ - // This vault holds a Thruster LP token, but it is not being priced. ["0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df", "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], [ADDRESSES.blast.WETH, "0x4A355D57fc1A5eEB33C0a19539744A2144220027"] ] async function tvl(timestamp, _, _1, { api }) { - return sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL], [ADDRESSES.blast.WETH, COLLATERAL_VAULT], [ADDRESSES.blast.WETH, COLLATERAL_VAULT_V2], ...vaults] }) + return sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL_USDB], [ADDRESSES.blast.WETH, LENDING_POOL_WETH], [ADDRESSES.blast.WETH, COLLATERAL_VAULT], [ADDRESSES.blast.WETH, COLLATERAL_VAULT_V2], ...vaults] }) } module.exports = { From 010b4e98e640089ea079408cf9fc139581922b03 Mon Sep 17 00:00:00 2001 From: Bitstable <154438863+pi-bitstable@users.noreply.github.com> Date: Mon, 11 Mar 2024 22:03:43 +0800 Subject: [PATCH 0640/2004] BitStable add BTC Assets to TVL (#9275) --- projects/bitstable-finance/index.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/projects/bitstable-finance/index.js b/projects/bitstable-finance/index.js index db845956ec1..29e3a3b63f6 100644 --- a/projects/bitstable-finance/index.js +++ b/projects/bitstable-finance/index.js @@ -1,8 +1,6 @@ const ADDRESS = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const { - sumTokensExport: sumBRC20TokensExport, -} = require("../helper/chain/brc20"); +const { sumTokensExport } = require("../helper/sumTokens"); +const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); const owner = "0x103dd1184599c7511a3016E0a383E11F84AE7173"; const tokens = { @@ -13,19 +11,20 @@ const tokens = { module.exports = { methodology: "Staking tokens via BitStable counts as TVL", bitcoin: { - tvl: sumBRC20TokensExport({ - // Deposit Address - owners: [ - "bc1p0uw83vg0h32v7kypyvjn9nextku2h7axjdeefy2ewstevnqffaksjzhrdf", - ], - blacklistedTokens: ['BSSB', 'DAII'], - }), + tvl: [ + // Native(BTC) + sumTokensExport({ owners: ["bc1p36wvtxursam9cq8zmc9ppvsqf9ulefm7grvlfc4tzc5j83rcggsqh6nxw5"] }), + // BRC20 + sumBRC20TokensExport({ + // Deposit Address + owners: ["bc1p0uw83vg0h32v7kypyvjn9nextku2h7axjdeefy2ewstevnqffaksjzhrdf"], + blacklistedTokens: ["BSSB", "DAII"], + }), + ], staking: sumBRC20TokensExport({ // Farm Address - owners: [ - "bc1pvngqf24g3hhr5s4ptv472prz576uye8qmagy880ydq5gzpd30pdqtua3rd", - ], - blacklistedTokens: ['DAII'], + owners: ["bc1pvngqf24g3hhr5s4ptv472prz576uye8qmagy880ydq5gzpd30pdqtua3rd"], + blacklistedTokens: ["DAII"], }), }, }; From 752853d019ee7edffb026299963c5aab278cd908 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:05:28 +0100 Subject: [PATCH 0641/2004] minor fix --- projects/bitstable-finance/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/bitstable-finance/index.js b/projects/bitstable-finance/index.js index 29e3a3b63f6..39f2780ef94 100644 --- a/projects/bitstable-finance/index.js +++ b/projects/bitstable-finance/index.js @@ -1,5 +1,6 @@ const ADDRESS = require("../helper/coreAssets.json"); const { sumTokensExport } = require("../helper/sumTokens"); +const sdk = require('@defillama/sdk') const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); const owner = "0x103dd1184599c7511a3016E0a383E11F84AE7173"; @@ -11,7 +12,7 @@ const tokens = { module.exports = { methodology: "Staking tokens via BitStable counts as TVL", bitcoin: { - tvl: [ + tvl: sdk.util.sumChainTvls([ // Native(BTC) sumTokensExport({ owners: ["bc1p36wvtxursam9cq8zmc9ppvsqf9ulefm7grvlfc4tzc5j83rcggsqh6nxw5"] }), // BRC20 @@ -20,7 +21,7 @@ module.exports = { owners: ["bc1p0uw83vg0h32v7kypyvjn9nextku2h7axjdeefy2ewstevnqffaksjzhrdf"], blacklistedTokens: ["BSSB", "DAII"], }), - ], + ]), staking: sumBRC20TokensExport({ // Farm Address owners: ["bc1pvngqf24g3hhr5s4ptv472prz576uye8qmagy880ydq5gzpd30pdqtua3rd"], From 52614bb318c438ec36e6b097034e8c71f62ff901 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:16:13 +0100 Subject: [PATCH 0642/2004] update juice fi --- projects/juice-finance/index.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index 6d90accadb4..0346a170270 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -7,11 +7,20 @@ const COLLATERAL_VAULT_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0" const vaults = [ ["0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df", "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], - [ADDRESSES.blast.WETH, "0x4A355D57fc1A5eEB33C0a19539744A2144220027"] + [ADDRESSES.blast.WETH, "0x4A355D57fc1A5eEB33C0a19539744A2144220027"], + ['0x4bed2a922654cacc2be974689619768fabf24855', "0x0CA56aa647E83A8F0a5f7a81a2fdcA393bC68D78"], ] async function tvl(timestamp, _, _1, { api }) { - return sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL_USDB], [ADDRESSES.blast.WETH, LENDING_POOL_WETH], [ADDRESSES.blast.WETH, COLLATERAL_VAULT], [ADDRESSES.blast.WETH, COLLATERAL_VAULT_V2], ...vaults] }) + const thrusterv2LPs = [ // [LP, contract] + ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', '0x8034b01555487C26D4e21F4E33b7A30fbc90d181'], + ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], + ] + 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) + await sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL_USDB], [ADDRESSES.blast.WETH, LENDING_POOL_WETH], [ADDRESSES.blast.WETH, COLLATERAL_VAULT], [ADDRESSES.blast.WETH, COLLATERAL_VAULT_V2], ...vaults], }) } module.exports = { From b1ad9417276ab0cdf1d51e38e2b2609d59fa8fe7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:37:21 +0100 Subject: [PATCH 0643/2004] track inevm --- package-lock.json | 6 +++--- projects/helper/chains.json | 1 + projects/helper/env.js | 1 - projects/helper/tokenMapping.js | 6 ++++++ projects/interport-finance/index.js | 2 +- projects/poolshark/index.js | 4 +++- projects/thetanuts/index.js | 6 ++++++ projects/timeswap-v2/index.js | 12 +++++++----- 8 files changed, 27 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 496134da871..a54e000d2dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.38", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.38.tgz", - "integrity": "sha512-XhcqNwaKvbnXwcHO+oIUx5vcdP/PpkdtNHAPR7sdZ5vjnAvSQgSMCgSqH0qu0gvqiJgblULdqJ5rf77QSIAHgg==", + "version": "5.0.40", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.40.tgz", + "integrity": "sha512-YtMaOKKaGKovmReEfgDRd+cLaXGFiBbAnAHdDJE8eb6BVkjhR2N9l+OvgLSMgLY6I/Bpu3pkJiiweEdCuvqfEA==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 2f9d6467ec0..389d4974bf8 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -124,6 +124,7 @@ "injective", "interlay", "iotex", + "inevm", "jbc", "juno", "kadena", diff --git a/projects/helper/env.js b/projects/helper/env.js index 52273461ce1..bba612ac270 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -23,7 +23,6 @@ const DEFAULTS = { MERLIN_RPC: "https://rpc.merlinchain.io", MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', BITROCK_RPC_MULTICALL: '0x40DD0342A46Ab0893251211F6626E82c09A75345', - ASTRZK_RPC_MULTICALL: '0x36eabf148272BA81A5225C6a3637972F0EE17771', NAKA_RPC: 'https://node.nakachain.xyz', RONIN_RPC: 'https://api.roninchain.com/rpc', ETHF_RPC: 'https://rpc.dischain.xyz/', diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d7e0e17b5fd..a9ee84f8b62 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -43,6 +43,12 @@ const fixBalancesTokens = { astrzk: { '0xe9cc37904875b459fa5d0fe37680d36f1ed55e38': { coingeckoId: "ethereum", decimals: 18 }, }, + inevm: { + "0x97423a68bae94b5de52d767a17abcc54c157c0e5": { coingeckoId: "tether", decimals: 6 }, + "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147": { coingeckoId: "usd-coin", decimals: 6 }, + "0x69011706b3f6c6eaed7d2bc13801558b4fd94cbf": { coingeckoId: "injective-protocol", decimals: 18 }, + "0x4c3a213bd5e8c4bd70a8396d6f3c8302571598cd": { coingeckoId: "injective-protocol", decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index 6590b756223..55242b791f5 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -15,7 +15,7 @@ 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'].forEach(chain => { +['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'polygon_zkevm', 'base', 'era', 'optimism', 'linea', 'eon', 'op_bnb', 'scroll', 'manta', 'inevm'].forEach(chain => { module.exports[chain] = { tvl: async (_, _1, _2, { api }) => { const vaults = config[chain]?.vaults || defaultVaults diff --git a/projects/poolshark/index.js b/projects/poolshark/index.js index 5342dee01ac..f67b21448db 100644 --- a/projects/poolshark/index.js +++ b/projects/poolshark/index.js @@ -1,10 +1,12 @@ 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 => { @@ -31,7 +33,7 @@ Object.keys(config).forEach(chain => { }) ownerTokens.push(...logs.map(log => [[log.token0, log.token1], log.pool])) } - return api.sumTokens({ ownerTokens }) + return sumTokens2({ ownerTokens, api }) } } }) diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index 90d3f49e9fc..2a4c2d3bad3 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -270,6 +270,12 @@ const config = { [stMatic, stMaticCallVault,], ] }, + inevm: { + tokensAndOwners: [ + ['0x69011706b3f6C6eaeD7D2Bc13801558B4fd94CBF', '0x6950D30996e8EC8D93dd1602b059b3a38389Bb88'], + ['0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147', '0xEc9284b92B8039c4180Ac99863ed73Ee5Ff33E63'], + ] + } } Object.keys(config).forEach(chain => { diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index aed50ee66af..5b75e74b07c 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); async function tvl(_, _b, _cb, { api }) { const { factory, oldFactory, fromBlock, newFactory, oldEthFactory,factory__2_5, factory__2_5_block } = config[api.chain]; let logs; - let ownerTokens; + let ownerTokens = [] if (factory){ logs = await getLogs({ api, @@ -15,12 +15,12 @@ async function tvl(_, _b, _cb, { api }) { fromBlock, }); - ownerTokens = logs.map((i) => { + 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({ @@ -149,10 +149,12 @@ const config = { factory__2_5_block: 114721107, fromBlock: 112818437, }, + inevm: { + factory__2_5: "0x17385e95cb74A20150E4fA092Aa72D57330896C4", + factory__2_5_block: 118420, + }, }; -module.exports = {}; - Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl }; }); \ No newline at end of file From b890ea95df951b13accf7bce4cd8798ec87b41b4 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 11 Mar 2024 18:49:44 +0000 Subject: [PATCH 0644/2004] fix cether 2 --- projects/orbitlending-io/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/orbitlending-io/index.js b/projects/orbitlending-io/index.js index fa887efde69..ffafb1329bd 100644 --- a/projects/orbitlending-io/index.js +++ b/projects/orbitlending-io/index.js @@ -4,6 +4,6 @@ module.exports = { blast: compoundExports2({ comptroller: '0x1E18C3cb491D908241D0db14b081B51be7B6e652', cether: '0xF9B3B455f5d900f62bC1792A6Ca6e1d47B989389', - blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec'] + blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec', '0x0872b71efc37cb8dde22b2118de3d800427fdba0'] }), }; From d8c67fc73b5c814c63c041c6649ebfa2c9ebc108 Mon Sep 17 00:00:00 2001 From: Shell Yu Date: Tue, 12 Mar 2024 05:27:52 +0800 Subject: [PATCH 0645/2004] add Ngad Artemis Finance (#9287) Co-authored-by: sheldon --- projects/ngad-artemis/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/ngad-artemis/index.js diff --git a/projects/ngad-artemis/index.js b/projects/ngad-artemis/index.js new file mode 100644 index 00000000000..d25ea65001b --- /dev/null +++ b/projects/ngad-artemis/index.js @@ -0,0 +1,10 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + metis: { + tvl: sumTokensExport({ + owner: '0x96C4A48Abdf781e9c931cfA92EC0167Ba219ad8E', + tokens: ['0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000'] + }) + } +}; From 875b0e7697c8f891ab86cccfd00e6b504cac39aa Mon Sep 17 00:00:00 2001 From: Altug Durmaz Date: Tue, 12 Mar 2024 00:56:06 +0300 Subject: [PATCH 0646/2004] wasabi perps tvl integration (#9290) * wasabi perps tvl integration * fix async * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/wasabi/index.js | 47 +++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/projects/wasabi/index.js b/projects/wasabi/index.js index c707425e49c..3506aa7feac 100644 --- a/projects/wasabi/index.js +++ b/projects/wasabi/index.js @@ -1,21 +1,34 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs'); -async function tvl(_, _b, _cb, { api, }) { - const logs = await getLogs({ - api, - target: '0x8e2b50413a53f50e2a059142a9be060294961e40', - topics: ['0xd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b967'], - eventAbi: 'event NewPool(address poolAddress, address indexed nftAddress, address indexed owner)', - onlyArgs: true, - fromBlock: 17082136, - }) - const ownerTokens = logs.map(i => [[i.nftAddress, nullAddress], i.poolAddress]) - return sumTokens2({ api, ownerTokens, blacklistedTokens: ['0xedb61f74b0d09b2558f1eeb79b247c1f363ae452'] }) +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, + }, } -module.exports = { - ethereum: { - tvl + +Object.keys(config).forEach(chain => { + let { pools, fromBlock, tokens = [], } = config[chain] + pools = Object.values(pools) + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const logs = (await Promise.all(pools.map(target => getLogs({ + api, + target, + eventAbi: "event NewVault(address indexed pool, address indexed asset, address vault)", + onlyArgs: true, + fromBlock, + })))).flat(); + return api.erc4626Sum({ calls: logs.map(log => log.vault), isOG4626: true, }); + } } -} \ No newline at end of file +}) \ No newline at end of file From 98b2540de7989b20057fbce8e8af5419b1648e14 Mon Sep 17 00:00:00 2001 From: party-for-illuminati <143411128+party-for-illuminati@users.noreply.github.com> Date: Tue, 12 Mar 2024 01:46:06 +0300 Subject: [PATCH 0647/2004] illuminex TVL tracking added (#9289) * illuminex TVL tracking added * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 7 +++++++ projects/illuminex/index.js | 15 +++++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 projects/illuminex/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 389d4974bf8..108eeb4063a 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -214,6 +214,7 @@ "quicksilver", "quasar", "radixdlt", + "sapphire", "reef", "regen", "rei", diff --git a/projects/helper/env.js b/projects/helper/env.js index bba612ac270..e200a18bbbe 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -26,6 +26,7 @@ const DEFAULTS = { NAKA_RPC: 'https://node.nakachain.xyz', RONIN_RPC: 'https://api.roninchain.com/rpc', ETHF_RPC: 'https://rpc.dischain.xyz/', + SAPPHIRE_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index a9ee84f8b62..7c05165b5b3 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -49,6 +49,13 @@ const fixBalancesTokens = { "0x69011706b3f6c6eaed7d2bc13801558b4fd94cbf": { coingeckoId: "injective-protocol", decimals: 18 }, "0x4c3a213bd5e8c4bd70a8396d6f3c8302571598cd": { coingeckoId: "injective-protocol", decimals: 18 }, }, + sapphire: { + "0x8bc2b030b299964eefb5e1e0b36991352e56d2d3": { coingeckoId: "oasis-network", decimals: 18 }, + "0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019": { coingeckoId: "oasis-network", decimals: 18 }, + "0x9ca066f00e55b90623efe323feb2a649686538b6": { coingeckoId: "tether", decimals: 6 }, + "0x013e54bee29813bd786b24f9cb08f47c4b75955c": { coingeckoId: "usd-coin", decimals: 6 }, + "0x3e4079ad76c83760e22b5c0105670ebab88b8d0e": { coingeckoId: "tether", decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/illuminex/index.js b/projects/illuminex/index.js new file mode 100644 index 00000000000..e4f0b39cd6e --- /dev/null +++ b/projects/illuminex/index.js @@ -0,0 +1,15 @@ +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: 1706475600, + sapphire: { + tvl: getUniTVL({ factory: '0x045551B6A4066db850A1160B8bB7bD9Ce3A2B5A5', useDefaultCoreAssets: true,}), + staking: stakingPricedLP(stakingFarmingContractAddress, ixToken, "sapphire", "0xf0f7c4e8edb9edcbe200a4eaec384e8a48fc7815", "oasis-network", true), + } +} \ No newline at end of file From a39b390cc84f3842f76fb4eb71cf2922c3f11b6a Mon Sep 17 00:00:00 2001 From: Da Sichuan <86024678+DaSichuan@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:55:05 -0700 Subject: [PATCH 0648/2004] Add Suilend (#9291) * Add suilend * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/suilend/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/suilend/index.js diff --git a/projects/suilend/index.js b/projects/suilend/index.js new file mode 100644 index 00000000000..880b64a3429 --- /dev/null +++ b/projects/suilend/index.js @@ -0,0 +1,29 @@ +const sui = require("../helper/chain/sui"); + +const SUILEND_LENDING_MARKET_ID = "0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1"; + +async function tvl() { + const { api } = arguments[3] + 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; + api.add(coinType, reserve.fields.available_amount) + } +} + +async function borrowed() { + const { api } = arguments[3] + 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; + api.add(coinType, reserve.fields.borrowed_amount.fields.value / 1e18) + } +} + +module.exports = { + timetravel: false, + sui: { + tvl: tvl, + borrowed: borrowed, + }, +} \ No newline at end of file From a0f4b171df6fdc7eead4f1dcd0688578c8ce931f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 12 Mar 2024 00:36:27 +0100 Subject: [PATCH 0649/2004] track cian lst --- projects/cian-lst/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/cian-lst/index.js diff --git a/projects/cian-lst/index.js b/projects/cian-lst/index.js new file mode 100644 index 00000000000..cd740248820 --- /dev/null +++ b/projects/cian-lst/index.js @@ -0,0 +1,22 @@ +const config = { + ethereum: [ + '0xcDd374F491fBF3f4FcF6E9023c99043774005137', + '0xB8c0c50D255B93f5276549cbA7F4bf78751A5D34', + '0x88508306E43FCe43F7f2c1e7D73c88cf6a523f6C', + ], + optimism: ['0x907883da917ca9750ad202ff6395C4C6aB14e60E'], + bsc: ['0xEa5f10A0E612316A47123D818E2b597437D19a17'], + arbitrum: ['0xE946Dd7d03F6F5C440F68c84808Ca88d26475FC5'], +} + +module.exports = { + doublecounted: true, +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + return api.erc4626Sum({ calls: config[chain], isOG4626: true }) + } + } +}) \ No newline at end of file From ae25e7bcb3fe55c447046fe02cab5c010ed01505 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 12 Mar 2024 01:31:39 +0100 Subject: [PATCH 0650/2004] update sudoswap v2 --- projects/sudoswap-v2/index.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/projects/sudoswap-v2/index.js b/projects/sudoswap-v2/index.js index fa8e48b75ec..d16438cc7d4 100644 --- a/projects/sudoswap-v2/index.js +++ b/projects/sudoswap-v2/index.js @@ -2,33 +2,34 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') async function tvl(_, _b, _cb, { api, }) { + const { target, fromBlock } = config[api.chain] const multicallAddy = '0xca11bde05977b3631167028862be2a173976ca11' const logs1155 = await getLogs({ - api, - target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', + target, fromBlock, api, onlyArgs: true, topics: ['0x2966b6b401975e778520aec46cbefbe73799119a5670feda3e8f884c7c3ffb11'], eventAbi: 'event NewERC1155Pair(address indexed pool, uint256 initialBalance)', - onlyArgs: true, - fromBlock: 17309203, extraKey: 'erc1155', }) const logs721 = await getLogs({ - api, - target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', + target, fromBlock, api, onlyArgs: true, topics: ['0xe8e1cee58c33f242c87d563bbc00f2ac82eb90f10a252b0ba8498ae6c1dc241a'], eventAbi: 'event NewERC721Pair(address indexed pool, uint256[] initialIds)', - onlyArgs: true, - fromBlock: 17309203, 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}) + 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 }) } -module.exports = { - ethereum: { tvl, } -} \ No newline at end of file +const config = { + ethereum: { target: '0xA020d57aB0448Ef74115c112D18a9C231CC86000', fromBlock: 17309203 }, + arbitrum: { target: '0x4f1627be4C72aEB9565D4c751550C4D262a96B51', fromBlock: 168473054 }, + base: { target: '0x605145d263482684590f630e9e581b21e4938eb8', fromBlock: 7529192 }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 2aa6bd606ef270cd4c830673186bca94b9fcdb06 Mon Sep 17 00:00:00 2001 From: atozICT <60227992+atozICT20@users.noreply.github.com> Date: Mon, 11 Mar 2024 20:36:57 -0400 Subject: [PATCH 0651/2004] [Sturdy V2]: add Mode network (#9293) --- projects/sturdy-v2/index.js | 47 +++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/projects/sturdy-v2/index.js b/projects/sturdy-v2/index.js index 259300d795d..5a691474e7c 100644 --- a/projects/sturdy-v2/index.js +++ b/projects/sturdy-v2/index.js @@ -1,25 +1,32 @@ const abi = require("./abi.json"); -const REGISTRY_ADDR = "0x69764E3e0671747A7768A1C1AfB7C0C39868CC9e" - -async function tvl(timestamp, block, chainBlocks, { api }) { - const aggregators = await api.call({target: REGISTRY_ADDR, abi: abi['getVaults'], }) - aggregators.forEach((aggregator) => api.add(aggregator.asset, aggregator.totalAssets)) - - const strategies = await api.call({ target: REGISTRY_ADDR, abi: abi['getStrategies'], }) - strategies.forEach((strategy) => api.add(strategy.pairData.collateral, strategy.pairData.totalCollateral)) -} -async function borrowed(timestamp, block, chainBlocks, { api }) { - const strategies = await api.call({ target: REGISTRY_ADDR, 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)) +// DataProvider Addresses +const config = { + ethereum: '0x69764E3e0671747A7768A1C1AfB7C0C39868CC9e', + mode: '0xF0382A9Eca5276d7B4BbcC503e4159C046c120ec', } module.exports = { - methodology: 'Gets the aggregators & strategies from the REGISTRY_ADDRESS and adds the asset amounts from each of them', - ethereum: { - tvl, borrowed, - }, -} \ No newline at end of file + 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 (_, _b, _cb, { 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 (_, _b, _cb, { 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)) + } + } +}) From e569cfe09f7a89eb9822337f821517056b82ac77 Mon Sep 17 00:00:00 2001 From: jack-lvsjack <106633601+jack-lvsjack@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:48:14 +0800 Subject: [PATCH 0652/2004] feat: add l2x (#9300) Co-authored-by: Jack Yin --- projects/l2x/index.js | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/l2x/index.js diff --git a/projects/l2x/index.js b/projects/l2x/index.js new file mode 100644 index 00000000000..339e31f99dc --- /dev/null +++ b/projects/l2x/index.js @@ -0,0 +1,4 @@ +const { uniV3Export } = require('../helper/uniswapV3') +module.exports = uniV3Export({ + astrzk: { factory: '0x350B0F09EE6659e18a2642d6B25b909d59271e3c', fromBlock: 177553, }, +}) From 455ff7439900b01866b4fd7abc2ca12a0fa2e240 Mon Sep 17 00:00:00 2001 From: killbond007 Date: Tue, 12 Mar 2024 09:49:42 +0100 Subject: [PATCH 0653/2004] feat:Add vastr in astar-zkevm (#9299) --- projects/omni/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/omni/index.js b/projects/omni/index.js index 7edb0da0f03..f2ab82d7443 100644 --- a/projects/omni/index.js +++ b/projects/omni/index.js @@ -9,6 +9,9 @@ const config = { "0xFfFfFfff00000000000000010000000000000008", "0xfffFffff00000000000000010000000000000010", ], + astrzk: [ + "0x7746ef546d562b443AE4B4145541a3b1a3D75717", + ], moonbeam: [ "0xFFFfffFf15e1b7E3dF971DD813Bc394deB899aBf", "0xFfFfFFff99dABE1a8De0EA22bAa6FD48fdE96F6c", From ba2a616d6a6e3775546a9a5540e98324cf818864 Mon Sep 17 00:00:00 2001 From: kappayield-range <131840920+kappayield-range@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:50:12 +0800 Subject: [PATCH 0654/2004] [Range Protocol] Update Thruster Factory (#9297) * Add ethereum-uniswap factory vault * Add zeta chain factory for izumi * Add Scroll Factory * code refactor * Add zkfair factory * Update thruster factory --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/range/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/range/index.js b/projects/range/index.js index 5303ce5b629..a4c9c49ce45 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -43,7 +43,7 @@ const config ={ { factory: '0x873fD467A2A7e4E0A71aD3c45966A84797e55B5B', fromBlock: 6740958, factoryType: 'izumi' } // izumi ], blast: [ - { factory: '0x72Add08DE88121007b48F964aFCf77A5AE1Da0a2', fromBlock: 228630 } // Thruster + { factory: '0x6b12399172036db8a8E2b7e2206175080C981A4D', fromBlock: 228630 } // Thruster ] } From 2a46b8f93aca783152601fe704cc3d105b8df251 Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:20:00 +0000 Subject: [PATCH 0655/2004] add cleo-v1 pools (#9304) --- projects/cleopatra-exchange-v1/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/cleopatra-exchange-v1/index.js diff --git a/projects/cleopatra-exchange-v1/index.js b/projects/cleopatra-exchange-v1/index.js new file mode 100644 index 00000000000..bfa36b95e9e --- /dev/null +++ b/projects/cleopatra-exchange-v1/index.js @@ -0,0 +1,10 @@ +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 From 707ad270d19a90dfb96f44ab6302adf608f2e44c Mon Sep 17 00:00:00 2001 From: oogway112 <106013294+oogway112@users.noreply.github.com> Date: Tue, 12 Mar 2024 14:50:13 +0530 Subject: [PATCH 0656/2004] Add mode network to MantisSwap (#9303) --- projects/MantisSwap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/MantisSwap/index.js b/projects/MantisSwap/index.js index 439b3c14a5c..9431558c4a1 100644 --- a/projects/MantisSwap/index.js +++ b/projects/MantisSwap/index.js @@ -3,6 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { polygon: { vaults: ['0x62Ba5e1AB1fa304687f132f67E35bFC5247166aD'] }, polygon_zkevm: { vaults: ['0x12d41b6DF938C739F00c392575e3FD9292d98215'] }, + mode: { vaults: ['0x4af97f73343b226C5a5872dCd2d1c4944BDb3E77'] }, } const MAX_LP_TOKENS = 3 From f54a54d41ffe52dc8f0ba8e94e89a3499c563d82 Mon Sep 17 00:00:00 2001 From: Produs <162736252+produstoken@users.noreply.github.com> Date: Tue, 12 Mar 2024 02:20:40 -0700 Subject: [PATCH 0657/2004] Create index.js (#9298) --- projects/Produs/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/Produs/index.js diff --git a/projects/Produs/index.js b/projects/Produs/index.js new file mode 100644 index 00000000000..be8684fb5cd --- /dev/null +++ b/projects/Produs/index.js @@ -0,0 +1,8 @@ +const { getUniTVL, } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + bsc: { + tvl: getUniTVL({ factory: '0x8ae5527706446943cBA8589313EC217a4a7288a4', useDefaultCoreAssets: true, fetchBalances: true, }), + }, +}; From 5769df8ae81e538eae13179cade9048f51a5e02a Mon Sep 17 00:00:00 2001 From: Maduck Club <162635234+maduck-club@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:21:11 +0000 Subject: [PATCH 0658/2004] Maduck Club (#9292) --- projects/maduck/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/maduck/index.js diff --git a/projects/maduck/index.js b/projects/maduck/index.js new file mode 100644 index 00000000000..e7b6d92b9d9 --- /dev/null +++ b/projects/maduck/index.js @@ -0,0 +1,18 @@ +const { pool2BalanceFromMasterChefExports} = require("../helper/pool2.js"); +const masterchefAbi = require("../helper/abis/masterchef.json"); + +//BSC staking contracts +const bscContract = "0x944dFb7f7caB8bbA2F74882784742C39b8495F5e"; + +const maduck = "0xb976d9684412f75f7AeE24E56D846fd404b1B329"; + + +module.exports = { + methodology: 'Pool2 TVL BSC LPs', + bsc: { + tvl: async ()=>({}), + pool2: pool2BalanceFromMasterChefExports(bscContract, maduck, "bsc", addr=>`bsc:${addr}`, masterchefAbi.poolInfo) + }, +} + + From d4e2a194b63fc8b970ac7927ea9a9533194c05f1 Mon Sep 17 00:00:00 2001 From: Stone <125890624+Stonepapa@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:21:53 +0800 Subject: [PATCH 0659/2004] Update index.js (#9296) The Btc asset address was added --- projects/bsquared/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/bsquared/index.js b/projects/bsquared/index.js index 615e604250c..0dca597dfc3 100644 --- a/projects/bsquared/index.js +++ b/projects/bsquared/index.js @@ -4,6 +4,7 @@ const { sumTokensExport } = require('../helper/sumTokens'); const ADDRESSES = require('../helper/coreAssets.json') const BTCOwners = [ + "bc1q4fsk5pgnmnu7ngp79xclsw2t0yk46sjqw22ffz", "bc1qva5m5e7da2zm590z03tdnj42u9q2uye3hgrehwrzgg8j4kxq9seq9rvw0m", ]; const BRC20Owners = [ From cf842f3c3b5d3185e9e747319b90653a6b1e93be Mon Sep 17 00:00:00 2001 From: empm0ney <99704063+empm0ney@users.noreply.github.com> Date: Tue, 12 Mar 2024 05:32:11 -0400 Subject: [PATCH 0660/2004] Update: Sparkswap dex contracts & migrated farm (#9295) * upd: sparkswap dex contracts & migrated farm * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sparkswap/index.js | 50 +++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/projects/sparkswap/index.js b/projects/sparkswap/index.js index 31366b2084d..f84ff6d30bc 100644 --- a/projects/sparkswap/index.js +++ b/projects/sparkswap/index.js @@ -1,45 +1,41 @@ +const { getUniTVL } = require("../helper/unknownTokens"); const { - masterchefExports, sumTokensExport, nullAddress, sumUnknownTokens, } = require("../helper/unknownTokens"); const { mergeExports } = require("../helper/utils"); -const abi = require("../helper/abis/masterchef.json"); const pendleAbi = require("../pendle/abi.json"); -const MASTER_CHEF_CONTRACT = "0x2c8BBd2cecC77F2d18A04027Cc03CDB8Ab103214"; -const NATIVE_TOKEN = "0x6386704cD6f7A584EA9D23cccA66aF7EBA5a727e"; -const NATIVE_LP_TOKEN = "0x1B044593a78E374bD0E558Aa6633D2ff13fD5Bb7"; -const SPARKLER_CONTRACT = "0x7b1C460d0Ad91c8A453B7b0DBc0Ae4F300423FFB"; - -const chefExport = masterchefExports({ - chain: "pulse", - masterchef: MASTER_CHEF_CONTRACT, - nativeToken: NATIVE_TOKEN, - lps: [NATIVE_LP_TOKEN], - useDefaultCoreAssets: true, -}); -delete chefExport.staking; +const FACTORY = "0x955219A87eB0C6754fd247266af970F7d16906CD"; +const SPARK_TOKEN = "0x6386704cD6f7A584EA9D23cccA66aF7EBA5a727e"; +const SPARK_LP = "0x33208439e1B28B1d6fCfbB6334e9950027Ee3B52"; +const SDAI_TOKEN = "0x30FCB23A906493371b1721C8feb8815804808D74"; +const SDAI_DAI_LP = "0xf32B9398a7277609772F328Fc2005D7DA5420E77"; +const SDAI_SPARK_LP = "0x9095D464A29Abd1B840C1C5205FB602ae5b011FF"; +const MASTERCHEF = "0x63c2a0083861F8C496A0A29BD8BA223E1180664e"; +const SPARKLER = "0x44Ee223D0a9Eec269b1757685F438bddB311F1AE"; module.exports = mergeExports([ - chefExport, { pulse: { tvl, - pool2: sumTokensExport({ - owner: SPARKLER_CONTRACT, - tokens: [NATIVE_LP_TOKEN], - useDefaultCoreAssets: true, - }), + }, + }, + { + 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_CONTRACT, MASTER_CHEF_CONTRACT], - tokens: [NATIVE_TOKEN], + owners: [SPARKLER, MASTERCHEF], + tokens: [SPARK_TOKEN, SDAI_TOKEN], useDefaultCoreAssets: true, - lps: [NATIVE_LP_TOKEN], + lps: [SPARK_LP, SDAI_DAI_LP, SDAI_SPARK_LP], }), }, - }, + } ]); // add amount in pulsex farm @@ -48,14 +44,14 @@ async function tvl(_, _b, _cb, { api }) { lengthAbi: "uint256:poolLength", itemAbi: "function rehypothecations(uint256) view returns (address farm, uint256 pid)", - target: MASTER_CHEF_CONTRACT, + 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, MASTER_CHEF_CONTRACT], + params: [pid, MASTERCHEF], })), }); const pInfos = await api.multiCall({ From 327e2fa76d40ea6a20acb81530723bed6543f795 Mon Sep 17 00:00:00 2001 From: Shane K Moore <41407272+shane-moore@users.noreply.github.com> Date: Tue, 12 Mar 2024 02:37:23 -0700 Subject: [PATCH 0661/2004] chore: mito tvl (#9294) * chore: mito tvl * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/mito/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/mito/index.js diff --git a/projects/mito/index.js b/projects/mito/index.js new file mode 100644 index 00000000000..4468e98b092 --- /dev/null +++ b/projects/mito/index.js @@ -0,0 +1,19 @@ +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(_, _1, _2, { 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 } +} From 35996b173d87c5e0db67078623ea6163ded620ac Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:38:18 +0000 Subject: [PATCH 0662/2004] add nile-v1 pools (#9305) --- projects/nile-exchange-v1/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/nile-exchange-v1/index.js diff --git a/projects/nile-exchange-v1/index.js b/projects/nile-exchange-v1/index.js new file mode 100644 index 00000000000..b5d73fca551 --- /dev/null +++ b/projects/nile-exchange-v1/index.js @@ -0,0 +1,10 @@ +const {getUniTVL} = require('../helper/unknownTokens') +const { staking } = require('../helper/staking') + +module.exports = { + misrepresentedTokens: true, + linea:{ + tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), + staking: staking("0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F", "0xAAAac83751090C6ea42379626435f805DDF54DC8"), + }, +} \ No newline at end of file From 0bbfdfc36a5309d7bc2a4e911ee2ef29426cef4c Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:38:31 +0000 Subject: [PATCH 0663/2004] add phar-v1 pools (#9306) --- projects/pharaoh-exchange-v1/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/pharaoh-exchange-v1/index.js diff --git a/projects/pharaoh-exchange-v1/index.js b/projects/pharaoh-exchange-v1/index.js new file mode 100644 index 00000000000..8e88a557392 --- /dev/null +++ b/projects/pharaoh-exchange-v1/index.js @@ -0,0 +1,10 @@ +const {getUniTVL} = require('../helper/unknownTokens') +const { staking } = require('../helper/staking') + +module.exports = { + misrepresentedTokens: true, + avax:{ + tvl: getUniTVL({ factory: '0xAAA91e283126774b3bb513fD5922976d5212dc49', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), + staking: staking("0xAAA3249511DE3E7A5c61FbA8313170c1Bef9A65e", "0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b"), + }, +} \ No newline at end of file From 423dafbcb4eae7a5b32a2e4bf903a98968e1fdaf Mon Sep 17 00:00:00 2001 From: BlasterDEX <160229589+BlasterDEX@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:45:55 +0800 Subject: [PATCH 0664/2004] Add Blaster DEX adapter (#9307) --- projects/Blaster/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/Blaster/index.js diff --git a/projects/Blaster/index.js b/projects/Blaster/index.js new file mode 100644 index 00000000000..b527e6c4875 --- /dev/null +++ b/projects/Blaster/index.js @@ -0,0 +1,6 @@ +const { uniV3Export } = require("../helper/uniswapV3"); +const { mergeExports } = require('../helper/utils') + +module.exports = mergeExports([ + uniV3Export({ blast: { factory: "0x9792FaeA53Af241bCE57C7C8D6622d5DaAD0D4Fc", fromBlock: 693561, }, }), +]) From 91536801175e0fc6f352541439f1e07afb382546 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 12 Mar 2024 12:34:08 +0100 Subject: [PATCH 0665/2004] track methlab.xyz --- projects/methlab-xyz/index.js | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 projects/methlab-xyz/index.js diff --git a/projects/methlab-xyz/index.js b/projects/methlab-xyz/index.js new file mode 100644 index 00000000000..9041d9bdc8b --- /dev/null +++ b/projects/methlab-xyz/index.js @@ -0,0 +1,43 @@ +const { getLogs } = require('../helper/cache/getLogs') +const config = { + mantle: { + factories: [{ target: '0x6Cc0c2D8F9533dFd2276337DdEaBBCEE9dd0747F', fromBlock: 51253051 },], + } +} + +Object.keys(config).forEach(chain => { + const { factories } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const vaults = [] + for (const { target, fromBlock, } of factories) { + const logs = await getLogs({ api, target, fromBlock, onlyArgs: true, eventAbi: 'event VaultAdded (address indexed vault)' }) + vaults.push(...logs.map(log => log.vault)) + } + const counters = await api.multiCall({ abi: abi.collectionCounter, calls: vaults }) + const callOwners = [] + const calls = [] + for (let i = 0; i < vaults.length; i++) { + const counter = counters[i] + for (let j = 0; j < +counter; j++) { + calls.push({ target: vaults[i], params: j }) + callOwners.push(vaults[i]) + } + } + const results = await api.multiCall({ abi: abi.collection, calls }) + const tokenSet = new Set() + results.forEach((result, i) => { + tokenSet.add(result.collToken) + tokenSet.add(result.borrowToken) + // tokensAndOwners.push([result.collToken, callOwners[i]]) + // tokensAndOwners.push([result.borrowToken, callOwners[i]]) + }) + return api.sumTokens({ owners: vaults, tokens: Array.from(tokenSet) }) + } + } +}) + +const abi = { + "collection": "function collection(uint256 collectionId) view returns ((address collToken, address borrowToken, uint256 minSingleLoanAmt, uint256 maxSingleLoanAmt, uint256 expiresAt, bool isEnabled, (uint256 strikePrice, uint256 interestRate, uint256 duration)[] intents))", + "collectionCounter": "uint256:collectionCounter", +} \ No newline at end of file From a78ef31d93f6b1cdb757835259995ba4da2451f2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 12 Mar 2024 12:54:03 +0100 Subject: [PATCH 0666/2004] fix nolus --- projects/helper/chain/cosmos.js | 4 ++-- projects/nolus/index.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index e2cbba1fb8b..3acbd43e3ae 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -217,14 +217,14 @@ async function queryContractWithRetries({ contract, chain, data }) { } } -async function queryManyContracts({ contracts = [], chain, data }) { +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 (errors && errors.length) throw errors[0] + if (!permitFailure && errors && errors.length) throw errors[0] return results } diff --git a/projects/nolus/index.js b/projects/nolus/index.js index a19812435af..905c6af3765 100644 --- a/projects/nolus/index.js +++ b/projects/nolus/index.js @@ -39,6 +39,7 @@ async function getLeaseContracts(leaseCodeId) { async function getLeases(leaseAddresses) { return await queryManyContracts({ + permitFailure: true, contracts: leaseAddresses, chain: chain, data: {} @@ -80,7 +81,7 @@ async function getLppTvl(lppAddresses) { const lpps = await queryManyContracts({ contracts: lppAddresses, chain: chain, - data: { "lpp_balance": [] } + data: { "lpp_balance": [] }, }) let totalLpp = 0 From 7a9b2e8abed2fbb8295c76803bdfa98e035a2542 Mon Sep 17 00:00:00 2001 From: Sindermann <163030670+Sindermann@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:55:18 +0000 Subject: [PATCH 0667/2004] Update GoGoPool TVL Adapter (#9308) --- projects/gogopool/index.js | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/projects/gogopool/index.js b/projects/gogopool/index.js index ea7a4d75d30..20826fc6133 100644 --- a/projects/gogopool/index.js +++ b/projects/gogopool/index.js @@ -1,11 +1,30 @@ -async function tvl(_, _b, _cb, { api, }) { - const ggAVAX = '0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3' - const token = await api.call({ abi: 'address:asset', target: ggAVAX }) - const bal= await api.call({ abi: 'uint256:totalAssets', target: ggAVAX }) - api.add(token, bal) +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 = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"; +const ggp = "0x69260B9483F9871ca57f81A90D91E2F96c2Cd11d"; + +async function tvl(timestamp, block, chainBlocks, { 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, } From 40a929c0ea8f100457779e36fad31765af4dc85e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 12 Mar 2024 14:35:26 +0100 Subject: [PATCH 0668/2004] update pancakeswap --- projects/pancake-swap-stableswap/index.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/projects/pancake-swap-stableswap/index.js b/projects/pancake-swap-stableswap/index.js index e73aff10af5..4311ddbcbf0 100644 --- a/projects/pancake-swap-stableswap/index.js +++ b/projects/pancake-swap-stableswap/index.js @@ -1,14 +1,21 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -const factories = [ - // { target: '0x36bbb126e75351c0dfb651e39b38fe0bc436ffd2', fromBlock: 21456599, }, - { target: '0x25a55f9f2279a54951133d503490342b50e5cd15', fromBlock: 25535459, token3: true, }, -] 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.", - bsc: { +} + + +const config = { + bsc: [{ target: '0x25a55f9f2279a54951133d503490342b50e5cd15', fromBlock: 25535459, token3: true, },], + arbitrum: [{ target: '0x5D5fBB19572c4A89846198c3DBEdB2B6eF58a77a', fromBlock: 169319653, token3: true, },], +} + + +Object.keys(config).forEach(chain => { + const factories = config[chain] + module.exports[chain] = { tvl: async (_, _b, _cb, { api }) => { const configs = await Promise.all(factories.map(getTvlConfig)) return sumTokens2({ api, ownerTokens: configs.flat() }) @@ -35,5 +42,5 @@ module.exports = { return getOwnTokens(logs) } } - }, -}; + } +}) \ No newline at end of file From d0791af010c27b80d920db3cf315ec039e3466a6 Mon Sep 17 00:00:00 2001 From: Ivan <3238603+ivivanov@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:00:17 +0200 Subject: [PATCH 0669/2004] add newly listed assets on Nolus (#9310) --- projects/nolus/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/nolus/index.js b/projects/nolus/index.js index 905c6af3765..504ea20629c 100644 --- a/projects/nolus/index.js +++ b/projects/nolus/index.js @@ -3,6 +3,7 @@ const { queryContract, queryManyContracts, queryContracts } = require('../helper const chain = 'nolus' const _6Zeros = 1000000 const _8Zeros = 100000000 +const _12Zeros = 1000000000000 const _18Zeros = 1000000000000000000 // Osmosis @@ -61,10 +62,14 @@ async function getPrices(oracleAddr) { case "CRO": price = (p.amount_quote.amount / (p.amount.amount / _8Zeros)) / _6Zeros break + case "PICA": + price = (p.amount_quote.amount / (p.amount.amount / _12Zeros)) / _6Zeros + break case "WETH": case "EVMOS": case "INJ": case "DYDX": + case "DYM": price = (p.amount_quote.amount / (p.amount.amount / _18Zeros)) / _6Zeros break default: @@ -119,10 +124,14 @@ function getAssetsTvl(assets, prices) { case "CRO": amount = Number(assets[ticker]) / _8Zeros break + case "PICA": + amount = Number(assets[ticker]) / _12Zeros + break case "WETH": case "EVMOS": case "INJ": case "DYDX": + case "DYM": amount = Number(assets[ticker]) / _18Zeros break default: From eb86b619b40ab8db772b07acf37b7fcab9adab91 Mon Sep 17 00:00:00 2001 From: henrio123 Date: Tue, 12 Mar 2024 16:00:29 +0200 Subject: [PATCH 0670/2004] Sommelier: Turbo-ezETH vault (#9309) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults * Sommelier: Add Turbo eETH V2 * Sommelier: Add Turbo eETH V2 vault * Sommelier: Arbitrum vaults * Fix Arbitrum TVL cals * RYUSD-ARB * Turbo-RSETH * Turbo-ezETH --------- Co-authored-by: Phil Co-authored-by: Phil <30321052+philipjames44@users.noreply.github.com> --- projects/sommelier/cellar-constants.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index 5c662d52455..59505a4f050 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -56,6 +56,7 @@ 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 }, @@ -70,6 +71,7 @@ const cellarsV2p5 = [ { 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 @@ -89,3 +91,4 @@ module.exports = { cellarsV2p5, arbitrumCellarsV2p5, }; + From b3836140df5f51f624f023503b79f8caf84b511f Mon Sep 17 00:00:00 2001 From: Shell Yu Date: Wed, 13 Mar 2024 00:41:37 +0800 Subject: [PATCH 0671/2004] update ngad-artemis (#9313) Co-authored-by: sheldon --- projects/ngad-artemis/index.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/projects/ngad-artemis/index.js b/projects/ngad-artemis/index.js index d25ea65001b..d3c1049d43f 100644 --- a/projects/ngad-artemis/index.js +++ b/projects/ngad-artemis/index.js @@ -1,10 +1,14 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); +async function tvl(_, _1, _2, {api}) { + const depositedMetis = await api.call({ + abi: 'function totalDeposits() view returns (uint256)', + target: '0x96C4A48Abdf781e9c931cfA92EC0167Ba219ad8E' + }); + + api.add('0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', depositedMetis); +} module.exports = { metis: { - tvl: sumTokensExport({ - owner: '0x96C4A48Abdf781e9c931cfA92EC0167Ba219ad8E', - tokens: ['0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000'] - }) + tvl } }; From 8b8110f99d7d638e92d7680b5d0abe4a2cae0062 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:47:09 +0100 Subject: [PATCH 0672/2004] Add Arbitrum chain TVL for IPOR Protocol (#9315) * IPOR Protocol - add Arbitrum chain tvl * IPOR Protocol - get arbitrum assets from the official IPOR github repository to be prepared for the next pools * minor fix --------- Co-authored-by: adam --- projects/ipor/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/ipor/index.js b/projects/ipor/index.js index 727cc47b64b..85b5df29cc5 100644 --- a/projects/ipor/index.js +++ b/projects/ipor/index.js @@ -1,8 +1,10 @@ const ADDRESSES = require('../helper/coreAssets.json') const { abi } = require("./abi"); +const { getConfig } = require('../helper/cache') -const V2DeploymentBlockNumber = 18333744 +const IPOR_GITHUB_ADDRESSES_URL = "https://raw.githubusercontent.com/IPOR-Labs/ipor-abi/main/mainnet/addresses.json"; +const V2DeploymentBlockNumber = 18333744 async function tvlEthereum(_, block, _1, { api }) { if (block >= V2DeploymentBlockNumber) { return await calculateTvlForV2(api); @@ -11,8 +13,11 @@ async function tvlEthereum(_, block, _1, { api }) { } } async function tvlArbitrum(_, block, _1, {api}) { - const ammTreasuryWstEthArbitrum = '0xBd013Ea2E01C2Ab3462dd67e9C83aa3834882A5D' - return api.sumTokens({owner: ammTreasuryWstEthArbitrum, tokens: [ADDRESSES.arbitrum.WSTETH]}) + const addresses = await getConfig('ipor/assets', IPOR_GITHUB_ADDRESSES_URL); + for (const pool of addresses.arbitrum.pools) { + await api.sumTokens({owner: pool.AmmTreasury, tokens: [pool.asset]}); + } + return api.getBalances(); } async function calculateTvlForV2(api) { From 26da82eec2e4e4e68c0756d6278ca71758c22e9c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 12 Mar 2024 21:43:05 +0000 Subject: [PATCH 0673/2004] fix double cether --- projects/helper/compound.js | 2 +- projects/orbitlending-io/index.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 0ee8d93bcea..5c41e120fbc 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -33,7 +33,7 @@ async function getMarkets(comptroller, block, chain, cether, cetheEquivalent, bl allCTokens.forEach(cToken => { cToken = cToken.toLowerCase() if (blacklist.includes(cToken)) return; - if (cether && cToken === cether.toLowerCase()) { + if (cether && (cToken === cether.toLowerCase?.() || cether.includes(cToken))) { markets.push({ underlying: cetheEquivalent, cToken }) return; } diff --git a/projects/orbitlending-io/index.js b/projects/orbitlending-io/index.js index ffafb1329bd..e5c480b9ed4 100644 --- a/projects/orbitlending-io/index.js +++ b/projects/orbitlending-io/index.js @@ -3,7 +3,7 @@ const { compoundExports2 } = require('../helper/compound'); module.exports = { blast: compoundExports2({ comptroller: '0x1E18C3cb491D908241D0db14b081B51be7B6e652', - cether: '0xF9B3B455f5d900f62bC1792A6Ca6e1d47B989389', - blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec', '0x0872b71efc37cb8dde22b2118de3d800427fdba0'] + cether: ['0xf9b3b455f5d900f62bc1792a6ca6e1d47b989389', '0x0872b71efc37cb8dde22b2118de3d800427fdba0'], + blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec'] }), }; From 58f6c1f90a176402780e0554db5e97d15b8c45b7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 07:53:49 +0100 Subject: [PATCH 0674/2004] track unilend v2 --- projects/helper/chain/ton.js | 4 +-- projects/unilend-v2/index.js | 35 ++++++++++++++++++ projects/unilend/index.js | 69 ++++-------------------------------- 3 files changed, 43 insertions(+), 65 deletions(-) create mode 100644 projects/unilend-v2/index.js diff --git a/projects/helper/chain/ton.js b/projects/helper/chain/ton.js index 898c3ccce02..36d2d8c6c48 100644 --- a/projects/helper/chain/ton.js +++ b/projects/helper/chain/ton.js @@ -7,7 +7,7 @@ const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) const { getUniqueAddresses, sleep } = require('../utils') async function getTonBalance(addr) { - const res = await get(`https://tonapi.io/v2/accounts/${addr}`) + const res = await get(`https://toncenter.com/api/v3/account?address=${addr}`) return res.balance } @@ -17,7 +17,7 @@ async function _sumTokensAccount({ api, addr, tokens = [], onlyWhitelistedTokens api.add(ADDRESSES.null, balance) } const { balances } = await get(`https://tonapi.io/v2/accounts/${addr}/jettons?currencies=usd`) - await sleep(1000 * (10 * Math.random() + 3)) + await sleep(1000 * (3 * Math.random() + 3)) balances.forEach(({ balance, price, jetton }) => { if (onlyWhitelistedTokens && !tokens.includes(jetton.address)) return; const decimals = jetton.decimals diff --git a/projects/unilend-v2/index.js b/projects/unilend-v2/index.js new file mode 100644 index 00000000000..5e00561466b --- /dev/null +++ b/projects/unilend-v2/index.js @@ -0,0 +1,35 @@ +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 (_, _b, _cb, { api, }) => { + const data = await getPools(api) + const ownerTokens = data.map(i => [[i.token0, i.token1], i.pool]) + return api.sumTokens({ ownerTokens }) + }, + borrowed: async (_, _b, _cb, { 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, + }) + } +}) \ No newline at end of file diff --git a/projects/unilend/index.js b/projects/unilend/index.js index 9055c53dab2..e29c2370588 100644 --- a/projects/unilend/index.js +++ b/projects/unilend/index.js @@ -1,70 +1,13 @@ -const { getConfig } = require('../helper/cache') -const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs"); -const UnilendContract = "0x13A145D215182924c89F2aBc7D358DCc72F8F788"; - -const API_URL = "https://unilend.finance/list.json"; - -const calcTvl = async (balances, Id, block, chain, transformAddr) => { - const tokenList = (await getConfig('unilend', API_URL)).tokens - .filter((CHAIN) => CHAIN.chainId == Id) - .map((token) => token.address); - - for (const token of tokenList) { - await sumTokensAndLPsSharedOwners( - balances, - [[token, false]], - [UnilendContract], - block, - chain, - transformAddr - ); - } -}; - -const ethTvl = async () => { - const balances = {}; - - await calcTvl(balances, 1); - - return balances; -}; +const { sumTokensExport } = require("../helper/unwrapLPs"); -const polygonTvl = async (chainBlocks) => { - const balances = {}; - - const transformAddress = i => `polygon:${i}`; - await calcTvl( - balances, - 137, - chainBlocks["polygon"], - "polygon", - transformAddress - ); - - return balances; -}; - -const bscTvl = async (chainBlocks) => { - const balances = {}; - - const transformAddress = i => `bsc:${i}`; - await calcTvl(balances, 56, chainBlocks["bsc"], "bsc", transformAddress); - - return balances; -}; +const UnilendContract = "0x13A145D215182924c89F2aBc7D358DCc72F8F788"; +const tvl = { tvl: sumTokensExport({ owners: [UnilendContract], fetchCoValentTokens: true, blacklistedTokens: ['0x0202Be363B8a4820f3F4DE7FaF5224fF05943AB1', '0x5b4cf2c120a9702225814e18543ee658c5f8631e']})} module.exports = { - misrepresentedTokens: true, - ethereum: { - tvl: ethTvl, - }, - polygon: { - tvl: polygonTvl, - }, - bsc: { - tvl: bscTvl, - }, + ethereum: tvl, + polygon: tvl, + bsc: tvl, methodology: "We count liquidity on the Pools through UnilendFlashLoansCore Contract", }; From 5debc40396ab281fed81dda6ff6544f0c1c46544 Mon Sep 17 00:00:00 2001 From: Nova <127639799+BuzzSeagull@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:03:42 +0800 Subject: [PATCH 0675/2004] add more collateral to goku money (#9319) * add more collateral to goku money * chore: remove gai in goku money --- projects/goku-money/index.js | 42 ++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/projects/goku-money/index.js b/projects/goku-money/index.js index ba5680818fb..b79f9955f87 100644 --- a/projects/goku-money/index.js +++ b/projects/goku-money/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') +const { sumTokensExport } = require('../helper/unwrapLPs') const COLLATERALS = { [ADDRESSES.manta.USDC]: { @@ -10,6 +10,7 @@ const COLLATERALS = { activePool: "0x74242b001869037594c8b59b191DF7284c6A3801", defaultPool: "0xF42cE1F6F90Ea3B6254E2390B7E9467Fb1584AAA", }, + // TIA "0x6Fae4D9935E2fcb11fC79a64e917fb2BF14DaFaa": { activePool: "0x00A14CF3A66De2D4585F399Ed4240d0F2730fFCB", defaultPool: "0x6851255D2CEc9D66502282D3C6F11f552186eDA7", @@ -17,34 +18,43 @@ const COLLATERALS = { [ADDRESSES.manta.WETH]: { activePool: "0xd58300481551F2bB81343abB5C6288fEaCC72Be4", defaultPool: "0x2C903a6858374925f5020B8EA2D88E545515eD4D", - } -} - -const GAI_TOKEN_ADDRESS = "0xcd91716ef98798A85E79048B78287B13ae6b99b2" -const GOK_TOKEN_ADDRESS = "0x387660bc95682587efc12c543c987abf0fb9778f" - -const GOK_STAKES = { - USDC: "0x60e47C06E3999c1Ef8bC5A424FCd665925CB0FB1", - USDT: "0x1343804D5936EA6E98988F27870b913b1c93081e", - TIA: "0xD2fBB34Bd69EC810AF2D243eA2192e7c89a696dA", - WETH: "0x4CF0Ac5Ac97E8d58e798eBc4EaB9afF17481c5F5", + }, + // MANTA + "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5": { + activePool: "0xEBC3E41176C1d63E8B99271cD75dD3FBa907CbAf", + defaultPool: "0x64a602a31030D531Ca0dF336A811ab0247b87165", + }, + // wUSDM + "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07": { + activePool: "0xdf4A63E03A327E1Fc68460622937A7BcC300e66b", + defaultPool: "0xF79BA93C02dD2B0529eF254075428aAdb2416595", + }, + // STONE + "0xEc901DA9c68E90798BbBb74c11406A32A70652C3": { + activePool: "0x5Ee4DC855Ca71158CB0516a27e01bDB18C05D923", + defaultPool: "0x558a64CB6e2e335Fc468ab3215d5c7Fe5dF26F31", + }, } -async function tvl(ts, _block, chainBlocks, { api }) { +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 sumTokens2({ api, tokensAndOwners, }) + return tokensAndOwners; } + module.exports = { start: 1698768000, // 01 Nov 2023 methodology: "Total locked collateral assets (in ERC-20 form) in ActivePool and DefaultPool, plus total staked GAI in StabilityPool", manta: { - tvl, - staking: sumTokensExport({ owners: Object.values(GOK_STAKES), tokens: [GOK_TOKEN_ADDRESS], }), + tvl: sumTokensExport({ + tokensAndOwners: [ + ...getCollateralOwnersAndToken(), + ] + }), }, }; From 057b650b7782f5bc7609477be508a32bec0ff56d Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Wed, 13 Mar 2024 07:04:11 +0000 Subject: [PATCH 0676/2004] Pharaoh v1 (#9318) * add phar-v1 pools * fix factory address * fix factory address --- projects/pharaoh-exchange-v1/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/pharaoh-exchange-v1/index.js b/projects/pharaoh-exchange-v1/index.js index 8e88a557392..1059009c1f2 100644 --- a/projects/pharaoh-exchange-v1/index.js +++ b/projects/pharaoh-exchange-v1/index.js @@ -4,7 +4,7 @@ const { staking } = require('../helper/staking') module.exports = { misrepresentedTokens: true, avax:{ - tvl: getUniTVL({ factory: '0xAAA91e283126774b3bb513fD5922976d5212dc49', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), + tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), staking: staking("0xAAA3249511DE3E7A5c61FbA8313170c1Bef9A65e", "0xAAAB9D12A30504559b0C5a9A5977fEE4A6081c6b"), }, } \ No newline at end of file From 5c15e06009d0f471f01e308b01ea372e7cace713 Mon Sep 17 00:00:00 2001 From: Jeremy Crane Date: Wed, 13 Mar 2024 01:04:52 -0600 Subject: [PATCH 0677/2004] Update index.js (#9316) --- projects/alta-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/alta-finance/index.js b/projects/alta-finance/index.js index f927d9da39a..08700bdc0be 100644 --- a/projects/alta-finance/index.js +++ b/projects/alta-finance/index.js @@ -3,7 +3,7 @@ module.exports = { } const config = { - polygon: { investments: ['0xcf152E9f60E197A44FAdce961c6B822Dcb6c9dcc'], debts: ['0xE92F580C930dd24aACB38Ab0EA18F6c1dEf31369'], token: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' }, + polygon: { investments: ['0xcf152E9f60E197A44FAdce961c6B822Dcb6c9dcc'], debts: ['0xE92F580C930dd24aACB38Ab0EA18F6c1dEf31369','0x64D6583b81716a4d141f07E264805CaCd3f484bB'], token: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' }, } Object.keys(config).forEach(chain => { From 924d383d3d015e636e00a01d7d3fb97174f1073d Mon Sep 17 00:00:00 2001 From: Maduck Club <162635234+maduck-club@users.noreply.github.com> Date: Wed, 13 Mar 2024 07:11:57 +0000 Subject: [PATCH 0678/2004] Maduck (#9317) * Maduck Club * fix TVL Maduck * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/maduck/index.js | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/projects/maduck/index.js b/projects/maduck/index.js index e7b6d92b9d9..ffb12036c14 100644 --- a/projects/maduck/index.js +++ b/projects/maduck/index.js @@ -1,18 +1,4 @@ -const { pool2BalanceFromMasterChefExports} = require("../helper/pool2.js"); -const masterchefAbi = require("../helper/abis/masterchef.json"); - -//BSC staking contracts -const bscContract = "0x944dFb7f7caB8bbA2F74882784742C39b8495F5e"; - -const maduck = "0xb976d9684412f75f7AeE24E56D846fd404b1B329"; - - -module.exports = { - methodology: 'Pool2 TVL BSC LPs', - bsc: { - tvl: async ()=>({}), - pool2: pool2BalanceFromMasterChefExports(bscContract, maduck, "bsc", addr=>`bsc:${addr}`, masterchefAbi.poolInfo) - }, -} +const { masterchefExports } = require('../helper/unknownTokens') +module.exports = masterchefExports({ chain: 'bsc', masterchef: '0x944dFb7f7caB8bbA2F74882784742C39b8495F5e', nativeToken: '0xb976d9684412f75f7aee24e56d846fd404b1b329', useDefaultCoreAssets: true, }) \ No newline at end of file From 2dbff5cc2f99ebd272f9a510e662ccc3466181e9 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Wed, 13 Mar 2024 15:29:50 +0800 Subject: [PATCH 0679/2004] filter depositAddress --- projects/solv-protocol-funds/index.js | 34 +++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index b784f893dfa..47497156a7b 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -22,13 +22,13 @@ async function borrowed(ts) { const network = api.chain; let address = (await getConfig('solv-protocol/funds', addressUrl)); - let gm = address[api.chain]["gm"]; + const depositAddress = filterDepositAddress(network, address); const graphData = await getGraphData(ts, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; var pools = poolLists.filter((value) => { - return gm == undefined || gm["depositAddress"].indexOf(value.vault) == -1; + return depositAddress.length == 0 || depositAddress.indexOf(value.vault) == -1; }); const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ @@ -249,6 +249,36 @@ async function getGraphData(timestamp, chain, api) { pools: poolList }; } + +function filterDepositAddress(network, address) { + let depositAddresses = []; + if (address[network]) { + if (address[network]["gm"]) { + for (let depositAddress of address[network]["gm"]["depositAddress"]) { + depositAddresses.push(depositAddress.toLowerCase()) + } + } + if (address[network]["mux"]) { + depositAddresses.push(address[network]["mux"]["account"].toLowerCase()) + } + if (address[network]["klp"]) { + for (let poolAddress of address[network]["klp"]["klpPool"]) { + depositAddresses.push(poolAddress.toLowerCase()) + } + } + if (address[network]["iziswap"]) { + for (let owner of address[network]["iziswap"]["owner"]) { + depositAddresses.push(owner.toLowerCase()) + } + } + if (address[network]["lendle"]) { + depositAddresses.push(address[network]["lendle"]["account"]["user"].toLowerCase()) + } + } + + return depositAddresses; +} + // node test.js projects/solv-protocol-funds module.exports = { arbitrum: { From 775d3dbedcffe00cdd50148b6e09d059215189b0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 08:51:41 +0100 Subject: [PATCH 0680/2004] update sdk version --- package-lock.json | 6 +++--- projects/helper/env.js | 16 ---------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index a54e000d2dd..d98d4027d9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.40", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.40.tgz", - "integrity": "sha512-YtMaOKKaGKovmReEfgDRd+cLaXGFiBbAnAHdDJE8eb6BVkjhR2N9l+OvgLSMgLY6I/Bpu3pkJiiweEdCuvqfEA==", + "version": "5.0.41", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.41.tgz", + "integrity": "sha512-53cAjD+P+gotPGLUMTRqbeL14HEe4zR/t6sYqOIHIKO9dHX6HkCpIgwkjGRoM+lUQwEEkH9QFhfLzeUCZ6+DVQ==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/env.js b/projects/helper/env.js index e200a18bbbe..08dcf612974 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -11,22 +11,6 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", - CORE_RPC: "https://rpc.coredao.org,https://rpc.ankr.com/core,https://1rpc.io/core,https://rpc-core.icecreamswap.com", - BITGERT_RPC: "https://flux-rpc2.brisescan.com,https://mainnet-rpc.brisescan.com,https://chainrpc.com,https://serverrpc.com,https://flux-rpc.brisescan.com", - LYRA_RPC: "https://rpc.lyra.finance", - BITCHAIN_RPC: "https://rpc.bitchain.biz/", - ALV_RPC: "https://elves-core3.alvey.io/", - OZONE_RPC: "https://node1.ozonechain.io", - XDC_RPC: "https://erpc.xinfin.network", - ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", - DEFIVERSE_RPC: "https://rpc.defi-verse.org/", - MERLIN_RPC: "https://rpc.merlinchain.io", - MERLIN_RPC_MULTICALL: '0x830E7E548F4D80947a40A7Cf3a2a53166a0C3980', - BITROCK_RPC_MULTICALL: '0x40DD0342A46Ab0893251211F6626E82c09A75345', - NAKA_RPC: 'https://node.nakachain.xyz', - RONIN_RPC: 'https://api.roninchain.com/rpc', - ETHF_RPC: 'https://rpc.dischain.xyz/', - SAPPHIRE_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', } const ENV_KEYS = [ From 1adf7f18d4613a822b1551c29faa03b35f515332 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Wed, 13 Mar 2024 16:01:07 +0800 Subject: [PATCH 0681/2004] getSubscribeNav params time to millisecond --- projects/solv-protocol-funds/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 47497156a7b..8a584fabbd7 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -27,15 +27,17 @@ async function borrowed(ts) { const graphData = await getGraphData(ts, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; + var pools = poolLists.filter((value) => { return depositAddress.length == 0 || depositAddress.indexOf(value.vault) == -1; }); + const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ abi: abi.getSubscribeNav, calls: pools.map((index) => ({ target: index.navOracle, - params: [index.poolId, ts] + params: [index.poolId, ts * 1000] })), }) From 8c276147e052573a1b88a27481268178d7c48b67 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:12:08 +0100 Subject: [PATCH 0682/2004] Add Cian Automation module with configuration --- projects/cian-automation/index.js | 70 +++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 projects/cian-automation/index.js diff --git a/projects/cian-automation/index.js b/projects/cian-automation/index.js new file mode 100644 index 00000000000..394e3442273 --- /dev/null +++ b/projects/cian-automation/index.js @@ -0,0 +1,70 @@ +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, '0xfa68fb4628dff1028cfec22b4162fccd0d45efb6', '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x80ca0d8c38d2e2bcbab66aa1648bd1c7160500fe'] + }, + avax: { + factories: [ + { factory: '0x15cbFF12d53e7BdE3f1618844CaaEf99b2836d2A', fromBlock: 20869027, }, + ], + tokens: [ + ADDRESSES.null, ADDRESSES.avax.WAVAX, ADDRESSES.avax.SAVAX, + '0xF362feA9659cf036792c9cb02f8ff8198E21B4cB','0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', + ] + }, +} + +Object.keys(config).forEach(chain => { + const { factories, tokens } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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)) + } + console.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) + } + return api.sumTokens({ owners, tokens }) + } + } +}) + +/* +backup: +`https://data.cian.app/${network}/api/v1/${accountType}?page=${page}&size=${size} +"accounts", "sub_accounts" +networks: ethereum, polygon, avalanche +*/ From 97c14c1abd77793dfbe3bf67d34a9d47a0c494ed Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Wed, 13 Mar 2024 22:40:37 +0800 Subject: [PATCH 0683/2004] borrow filter depositAddress (#9320) * add arbitrum tvl * solv protocol funds add KLP * klp amount * refactor: dont fetch fsKLP price * Change the configuration of contract address * Modify judgment logic * Modify judgment logic * change cache file name * fix bug * add iziswap lp * fix * reduce usage of BigNumber * add lendle * add mux lp count * filter depositAddress * getSubscribeNav params time to millisecond --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/index.js | 38 ++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index b784f893dfa..8a584fabbd7 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -22,20 +22,22 @@ async function borrowed(ts) { const network = api.chain; let address = (await getConfig('solv-protocol/funds', addressUrl)); - let gm = address[api.chain]["gm"]; + const depositAddress = filterDepositAddress(network, address); const graphData = await getGraphData(ts, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; + var pools = poolLists.filter((value) => { - return gm == undefined || gm["depositAddress"].indexOf(value.vault) == -1; + return depositAddress.length == 0 || depositAddress.indexOf(value.vault) == -1; }); + const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ abi: abi.getSubscribeNav, calls: pools.map((index) => ({ target: index.navOracle, - params: [index.poolId, ts] + params: [index.poolId, ts * 1000] })), }) @@ -249,6 +251,36 @@ async function getGraphData(timestamp, chain, api) { pools: poolList }; } + +function filterDepositAddress(network, address) { + let depositAddresses = []; + if (address[network]) { + if (address[network]["gm"]) { + for (let depositAddress of address[network]["gm"]["depositAddress"]) { + depositAddresses.push(depositAddress.toLowerCase()) + } + } + if (address[network]["mux"]) { + depositAddresses.push(address[network]["mux"]["account"].toLowerCase()) + } + if (address[network]["klp"]) { + for (let poolAddress of address[network]["klp"]["klpPool"]) { + depositAddresses.push(poolAddress.toLowerCase()) + } + } + if (address[network]["iziswap"]) { + for (let owner of address[network]["iziswap"]["owner"]) { + depositAddresses.push(owner.toLowerCase()) + } + } + if (address[network]["lendle"]) { + depositAddresses.push(address[network]["lendle"]["account"]["user"].toLowerCase()) + } + } + + return depositAddresses; +} + // node test.js projects/solv-protocol-funds module.exports = { arbitrum: { From ac7ef03d23486a27b3bf3c0ddd652347b1b89960 Mon Sep 17 00:00:00 2001 From: Roch Date: Wed, 13 Mar 2024 15:41:48 +0100 Subject: [PATCH 0684/2004] Add polygon chain to Owna (#9328) * Adding polygon mainnet to Owna * fix network name * update backend subdomain depending on chain id --- projects/owna/config.js | 11 ++++++++++- projects/owna/index.js | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/owna/config.js b/projects/owna/config.js index ad8b5edca06..11023232746 100644 --- a/projects/owna/config.js +++ b/projects/owna/config.js @@ -1,4 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') + module.exports = { chains: [ { @@ -9,5 +10,13 @@ module.exports = { nftContract: '0xa0db7ef54eeffb7a3a5d9e7a95fb853392573b90', lendingContract: '0x27Ca3D6c64398FF9BcF2E66896EC4B3BEc5e1959', }, + { + name: 'polygon', + tokens: [ + ADDRESSES.polygon.USDC, + ], + nftContract: '0x666E30E3cdB0A920deA6Cd52E6d1cF0C344CC218', + lendingContract: '0x514F4FC7A3F5CF4c8bD14957C19997b42269c9Ce', + }, ] -} \ No newline at end of file +} diff --git a/projects/owna/index.js b/projects/owna/index.js index 4bb4f8a0a40..6410e55c5c5 100644 --- a/projects/owna/index.js +++ b/projects/owna/index.js @@ -46,7 +46,8 @@ config.chains.forEach(async chainInfo => { } async function getOffersCount(tokenId) { - return parseInt(await get('https://backend.owna.io/offer/getOffersCount?mintId=' + tokenId)); + const backendUrl = chain === 'polygon' ? 'https://polygon-backend.owna.io' : 'https://backend.owna.io'; + return parseInt(await get(`${backendUrl}/offer/getOffersCount?mintId=` + tokenId)); } async function totalOffers() { From a8c13754f895b828bacbf97d3d7dcd9b43aaa281 Mon Sep 17 00:00:00 2001 From: Georgi Popov Date: Wed, 13 Mar 2024 16:44:02 +0200 Subject: [PATCH 0685/2004] Added project return-finance project (#9311) * Added project return-finance project * code refactor * Minor changes --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/return-finance/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/return-finance/index.js diff --git a/projects/return-finance/index.js b/projects/return-finance/index.js new file mode 100644 index 00000000000..73c4b6961b5 --- /dev/null +++ b/projects/return-finance/index.js @@ -0,0 +1,19 @@ +const { sumERC4626VaultsExport } = require("../helper/erc4626") + +module.exports = { + doublecounted: true, +}; + +const config = { + ethereum: ['0xFD360A096E4a4c3C424fc3aCd85da8010D0Db9a5', '0x201254227f9fE57296C257397Be6c617389a8cCb'], + avax: ['0x3B6385493a1d4603809dDbaE647200eF8baA53F5'], + polygon: ['0x3B6385493a1d4603809dDbaE647200eF8baA53F5'], + base: ['0x3B6385493a1d4603809dDbaE647200eF8baA53F5'], +} + + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: sumERC4626VaultsExport({ vaults: config[chain], isOG4626: true, }) + } +}); From f31f66d5a436a7a7656a906276bf7089c92065c3 Mon Sep 17 00:00:00 2001 From: webmass Date: Wed, 13 Mar 2024 18:48:17 +0400 Subject: [PATCH 0686/2004] inverse treasury: blacklist scam token adding fake value (#9325) --- projects/treasury/inverse.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index fdad759c766..35b10eb5e47 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -47,13 +47,13 @@ module.exports = treasuryExports({ ownTokens: [ inv, "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", // Uniswap INV/ETH LP - "0xA5D7A7690B72a89B7b720E43fC9cBda5419d0C71", // 50INV-50DOLA Aura Deposit Vault - // "0x9c7305eb78a432ced5C4D14Cac27E8Ed569A2e26", // veNFT + "0xA5D7A7690B72a89B7b720E43fC9cBda5419d0C71", // 50INV-50DOLA Aura Deposit Vault ], resolveUniV3: true, resolveLP: true, blacklistedTokens: [ - '0x21e83dbfd8f11d885eba9f9ba126da11ae0671b7' + '0x21e83dbfd8f11d885eba9f9ba126da11ae0671b7', + '0x265befe2b1a0f4f646dea96ba09c1656b74bda91', ] }, optimism: { From 319338e8da1a42d2e6e2c68fcaa7cf5a40c4e291 Mon Sep 17 00:00:00 2001 From: GausPeerzade <116433573+GausPeerzade@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:18:42 +0530 Subject: [PATCH 0687/2004] Added Arbitrum vaults (#9324) --- projects/rivera_money/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/rivera_money/index.js b/projects/rivera_money/index.js index 4f83b106996..33f1739f235 100644 --- a/projects/rivera_money/index.js +++ b/projects/rivera_money/index.js @@ -30,6 +30,9 @@ const config = { "0xA0dD02ef78570a4d93b7eE334EA9c593F7A0ebc4", "0x4778CAAa0E52F0B58eAF5e947Ae81A0a10cDe707", ], + arbitrum: [ + "0x8E99B66dE170b53b39D9B54f189a12D7c6AC0cd9" + ], } module.exports = { @@ -39,6 +42,6 @@ module.exports = { Object.keys(config).forEach(chain => { const vaults = config[chain] module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults, tokenAbi: 'asset', balanceAbi: 'totalAssets'}) + tvl: sumERC4626VaultsExport({ vaults, tokenAbi: 'asset', balanceAbi: 'totalAssets' }) } }) \ No newline at end of file From 3dde0df8518991adac4736a9297b55091ca6c7f8 Mon Sep 17 00:00:00 2001 From: "Guillermo M. Narvaja" Date: Wed, 13 Mar 2024 11:50:43 -0300 Subject: [PATCH 0688/2004] Ensuro: new pools and Premiums accounts + v1 deprecated (#9322) * Ensuro: new pools and Premiums accounts Adds new eTokens (liquidity pool) and Premiums Accounts for recently onboarded risks. * Ensuro: new pools and Premiums accounts + remove v1 Adds new eTokens (liquidity pool) and Premiums Accounts for recently onboarded risks. Also, I'm removing the code for v1 since is no longer in use. --- projects/ensuro/index.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/projects/ensuro/index.js b/projects/ensuro/index.js index 3eb3881ec3f..b56951a9492 100644 --- a/projects/ensuro/index.js +++ b/projects/ensuro/index.js @@ -16,6 +16,10 @@ const addressBook = { {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"}, // PremiumsAccounts {name: "PremiumsAccount Koala", address: "0xCCf5C404d32eB6E777088AB13837a1b8dCBA9328"}, {name: "PremiumsAccount Innov Zone", address: "0x4f43B8F252887F814ED689346fdb5Bd266394520"}, @@ -23,11 +27,11 @@ const addressBook = { {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"}, ], - v1: { - pool: "0xF7ED72430bEA07D8dB6eC264603811381F5af8e0", - asset_manager: "0x09d9Dd252659a497F3525F257e204E7192beF132", - } } }; @@ -35,10 +39,6 @@ async function tvl(_timestamp, _block, _blocksOthers, { api }) { const addresses = addressBook[api.chain]; const ownerTokens = addresses.reserves.map(i => [[addresses.usdc, addresses.aave_v3_usdc], i.address]) - if (addresses.v1) { - ownerTokens.push([[addresses.usdc], addresses.v1.pool]) - ownerTokens.push([[addresses.aave_v2_usdc], addresses.v1.asset_manager]) - } return sumTokens2({ api, ownerTokens, }); } From dfa4ce095c3f6aff4e5f034771eac357db12e1c5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:51:22 +0100 Subject: [PATCH 0689/2004] code refactor (#9329) * Update Metavault Derivatives V2 chains * code refactor --------- Co-authored-by: 0xR <0xr@metavault.org> --- projects/metavault-derivatives-v2/index.js | 25 +++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/projects/metavault-derivatives-v2/index.js b/projects/metavault-derivatives-v2/index.js index 115e839b512..67f1cd8ccee 100644 --- a/projects/metavault-derivatives-v2/index.js +++ b/projects/metavault-derivatives-v2/index.js @@ -1,15 +1,14 @@ -const ADDRESSES = require("../helper/coreAssets.json"); - -const { nullAddress } = require("../helper/unwrapLPs"); - -async function LineaTvl(_time, _ethBlock, _cb, { api}) { - const tokens = [nullAddress, ADDRESSES.linea.USDC]; - const owners = ["0xf3Ef1c95aecf5B5025815014890dC14488599883"]; - return api.sumTokens({ owners, tokens}) +const config = { + linea: '0xb514Ee8a1e00B102cE2312048abcbc3E57bfED94', + polygon: '0xAb36984e4952e5a9d08536C4dE5190ed37725017' } -module.exports = { - linea: { - tvl: LineaTvl, - }, -}; +Object.keys(config).forEach(chain => { + const target = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const tokens= await api.call({ abi: 'address[]:getAssetList', target}) + return api.sumTokens({ owner: target, tokens }) + } + } +}) \ No newline at end of file From a41ebaa2994f147036abcebad8e83f5cfe9f8069 Mon Sep 17 00:00:00 2001 From: Nova <127639799+BuzzSeagull@users.noreply.github.com> Date: Wed, 13 Mar 2024 22:55:49 +0800 Subject: [PATCH 0690/2004] add u235 (#9323) * add u235 * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/u235/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/u235/index.js diff --git a/projects/u235/index.js b/projects/u235/index.js new file mode 100644 index 00000000000..a909f9abf70 --- /dev/null +++ b/projects/u235/index.js @@ -0,0 +1,7 @@ +const { aaveExports } = require('../helper/aave'); +const methodologies = require('../helper/methodologies'); + +module.exports = { + methodology: methodologies.lendingMarket, + scroll: aaveExports('scroll', undefined, undefined, ['0xeB3C203418f0cb55b351C3E45A5C4f47bE5DA77A']), +} \ No newline at end of file From 252f13289fd721d820faa96b6c304a6f3735a545 Mon Sep 17 00:00:00 2001 From: crews <64375250+TheYoungCrews@users.noreply.github.com> Date: Wed, 13 Mar 2024 10:56:17 -0500 Subject: [PATCH 0691/2004] Add new Index Coop Leverage Indices, Remove old FLI products (#9331) We migrated all TVL from the old FLI products into new 2x tokens built on Aave v3 instead of Compound v2. I've also removed ethFLI and btcFLI from `sets` to prevent double counting TVL as the old FLI tokens hold the new 2x tokens for simplified user migration see announcement: https://discord.com/channels/762061559744299010/814879319633428540/1217264332635902134 cc @g1nt0ki let me know if you have any questions at t.me/theyoungcrews --- projects/indexcoop/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/indexcoop/index.js b/projects/indexcoop/index.js index cd168d8a821..3907cff413a 100644 --- a/projects/indexcoop/index.js +++ b/projects/indexcoop/index.js @@ -4,9 +4,11 @@ const sdk = require("@defillama/sdk") 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"; @@ -17,10 +19,10 @@ const USDC = ADDRESSES.ethereum.USDC const gtcETH = '0x36c833Eed0D376f75D1ff9dFDeE260191336065e' const sets = [ dpiAddress, - ethFliAddress, + eth2x, + btc2x, mviAddress, cgiAddress, - btcFliAddress, bedAddress, dataAddress, gmiAddress, From 1ba6ddd7f8066471e086fe61288f1844f58dde8c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:59:49 +0100 Subject: [PATCH 0692/2004] Add new tokens to the list --- projects/indexcoop/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/indexcoop/index.js b/projects/indexcoop/index.js index 3907cff413a..587c515ddd6 100644 --- a/projects/indexcoop/index.js +++ b/projects/indexcoop/index.js @@ -36,6 +36,8 @@ async function tvl(timestamp, block, _, { api }) { const toa = [] sets.forEach((o, i) => toa.push([tokens[i], o])) toa.push([[aaveDebtToken], icethAddress]) + toa.push([['0x72e95b8931767c79ba4eee721354d6e99a61d004'], eth2x]) + toa.push([['0x72E95b8931767C79bA4EeE721354d6E99a61D004'], btc2x]) const balances = await sumTokens2({ api, ownerTokens: toa, blacklistedTokens: sets }) const usdcDebt = await api. multiCall({abi:"function borrowBalanceStored(address account) view returns (uint256)", target: "0x39aa39c021dfbae8fac545936693ac917d5e7563", calls:[ethFliAddress, btcFliAddress]}) usdcDebt.forEach(i => sdk.util.sumSingleBalance(balances,USDC,i * -1, api.chain)) From f0b18d80e3ac840d5675c277954ba133d330da91 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:12:34 +0100 Subject: [PATCH 0693/2004] pangolin: disable hedera --- projects/pangolin/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pangolin/index.js b/projects/pangolin/index.js index bee01ff67d2..0a3bde87a92 100644 --- a/projects/pangolin/index.js +++ b/projects/pangolin/index.js @@ -46,6 +46,7 @@ module.exports = { }, hedera: { tvl: async () => { + return {} const block = await getCurrentBlock() const data = await graphQuery('https://graph-hedera-main.pangolin.network/subgraphs/name/pangolin', `{ pangolinFactory(id: "1" block: { number: ${block - 1000} }) { From 9cb20bb536ad3f2ca15d7ea27a8a615b70689ab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Wed, 13 Mar 2024 20:40:42 +0100 Subject: [PATCH 0694/2004] Add Nostra Staked STRK (#9332) * Add Nostra Staked STRK * Update STARKNET_RPC URL in starknet.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chain/starknet.js | 3 ++- projects/helper/env.js | 1 + projects/nostra-staked-strk/abi.js | 20 ++++++++++++++++++++ projects/nostra-staked-strk/index.js | 24 ++++++++++++++++++++++++ projects/nostra/index.js | 6 ++++++ 5 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 projects/nostra-staked-strk/abi.js create mode 100644 projects/nostra-staked-strk/index.js diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index 7082821298b..436c5cb1221 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -9,11 +9,12 @@ const plimit = require('p-limit') const { sliceIntoChunks, sleep } = require('../utils') const { getUniTVL } = require('../cache/uniswap') const { getCache } = require('../cache') +const { getEnv } = require('../env') const _rateLimited = plimit(1) const rateLimited = fn => (...args) => _rateLimited(() => fn(...args)) -const STARKNET_RPC = 'https://starknet-mainnet.public.blastapi.io' +const STARKNET_RPC = getEnv('STARKNET_RPC') function formCallBody({ abi, target, params = [], allAbi = [] }, id = 0) { if ((params || params === 0) && !Array.isArray(params)) diff --git a/projects/helper/env.js b/projects/helper/env.js index 08dcf612974..334d3c95012 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -4,6 +4,7 @@ const BOOL_KEYS = [ ] const DEFAULTS = { + 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', APTOS_RPC: 'https://aptos-mainnet.pontem.network', diff --git a/projects/nostra-staked-strk/abi.js b/projects/nostra-staked-strk/abi.js new file mode 100644 index 00000000000..e75d6939fa9 --- /dev/null +++ b/projects/nostra-staked-strk/abi.js @@ -0,0 +1,20 @@ +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 new file mode 100644 index 00000000000..502505ebf20 --- /dev/null +++ b/projects/nostra-staked-strk/index.js @@ -0,0 +1,24 @@ +const { call } = require("../helper/chain/starknet"); +const { stakedStrkAbi } = require("./abi"); + +const STAKED_STRK = + "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2"; +const STRK = + "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d"; + +async function tvl(_, _1, _2, { 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/index.js b/projects/nostra/index.js index e7df5965930..0144e1a17a4 100644 --- a/projects/nostra/index.js +++ b/projects/nostra/index.js @@ -42,6 +42,11 @@ const supplyTokens = [ "0x40f5a6b7a6d3c472c12ca31ae6250b462c6d35bbdae17bd52f6c6ca065e30cf", "0x26c5994c2462770bbf940552c5824fb0e0920e2a8a5ce1180042da1b3e489db", "0x7c2e1e733f28daa23e78be3a4f6c724c0ab06af65f6a95b5e0545215f1abc1b", + // nstSTRK + "0x4b11c750ae92c13fdcbe514f9c47ba6f8266c81014501baa8346d3b8ba55342", + "0x0142af5b6c97f02cac9c91be1ea9895d855c5842825cb2180673796e54d73dc5", + "0x78a40c85846e3303bf7982289ca7def68297d4b609d5f588208ac553cff3a18", + "0x67a34ff63ec38d0ccb2817c6d3f01e8b0c4792c77845feb43571092dcf5ebb5", ]; const debtTokens = [ "0x0491480f21299223b9ce770f23a2c383437f9fbf57abc2ac952e9af8cdb12c97", @@ -52,6 +57,7 @@ const debtTokens = [ "0x348cc417fc877a7868a66510e8e0d0f3f351f5e6b0886a86b652fcb30a3d1fb", "0x35778d24792bbebcf7651146896df5f787641af9e2a3db06480a637fbc9fff8", "0x1258eae3eae5002125bebf062d611a772e8aea3a1879b64a19f363ebd00947", + "0x292be6baee291a148006db984f200dbdb34b12fb2136c70bfe88649c12d934b", ]; function* chunks(arr, n) { From 5b9981743c568d022aab2a04af44d8781adab8f3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 13 Mar 2024 21:22:16 +0100 Subject: [PATCH 0695/2004] Add blacklisted tokens to sumTokens2 function --- projects/polygon/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/polygon/index.js b/projects/polygon/index.js index 871ea974040..90168975dad 100644 --- a/projects/polygon/index.js +++ b/projects/polygon/index.js @@ -86,7 +86,7 @@ async function tvl(_, block, _c) { }) toa.push([maticToken, plasmaDepositManager]) toa.push([maticToken, stakeManager]) - return sumTokens2({ block, tokensAndOwners: toa }) + return sumTokens2({ block, tokensAndOwners: toa, blacklistedTokens: ['0x99fe3b1391503a1bc1788051347a1324bff41452'] }) } module.exports = { From d710dbea6fbd572fdfdf9556a07468c06a10d107 Mon Sep 17 00:00:00 2001 From: Sahitya77 <77379621+Sahitya777@users.noreply.github.com> Date: Thu, 14 Mar 2024 12:54:32 +0530 Subject: [PATCH 0696/2004] Updated index.js (#9341) --- projects/hashstack/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/hashstack/index.js b/projects/hashstack/index.js index 82fed28e816..94fe6ec068b 100644 --- a/projects/hashstack/index.js +++ b/projects/hashstack/index.js @@ -6,7 +6,8 @@ const supplyTokens = [ "0x436d8d078de345c11493bd91512eae60cd2713e05bcaa0bb9f0cba90358c6e", "0x5fa6cc6185eab4b0264a4134e2d4e74be11205351c7c91196cb27d5d97f8d21", "0x3bcecd40212e9b91d92bbe25bb3643ad93f0d230d93237c675f46fac5187e8c", - "0x19c981ec23aa9cbac1cc1eb7f92cf09ea2816db9cbd932e251c86a2e8fb725f" + "0x19c981ec23aa9cbac1cc1eb7f92cf09ea2816db9cbd932e251c86a2e8fb725f", + "0x7514ee6fa12f300ce293c60d60ecce0704314defdb137301dae78a7e5abbdd7" ] const debtTokens = [ @@ -14,7 +15,8 @@ const debtTokens = [ "0x1ef7f9f8bf01678dc6d27e2c26fb7e8eac3812a24752e6a1d6a49d153bec9f3", "0x12b8185e237dd0340340faeb3351dbe53f8a42f5a9bf974ddf90ced56e301c7", "0x21d8d8519f5464ec63c6b9a80a5229c5ddeed57ecded4c8a9dfc34e31b49990", - "0x7eeed99c095f83716e465e2c52a3ec8f47b323041ddc4f97778ac0393b7f358" + "0x7eeed99c095f83716e465e2c52a3ec8f47b323041ddc4f97778ac0393b7f358", + "0x1bdbaaa456c7d6bbba9ff740af3cfcd40bec0e85cd5cefc3fbb05a552fd14df" ] async function tvl(_, _1, _2, { api }) { From 1499243fe2bc77f442126c50c5bef5516f1d3020 Mon Sep 17 00:00:00 2001 From: Nova <127639799+BuzzSeagull@users.noreply.github.com> Date: Thu, 14 Mar 2024 15:27:29 +0800 Subject: [PATCH 0697/2004] upgrade counting methond to v3 in u235 (#9339) --- projects/u235/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/u235/index.js b/projects/u235/index.js index a909f9abf70..9f7271c20ce 100644 --- a/projects/u235/index.js +++ b/projects/u235/index.js @@ -3,5 +3,5 @@ const methodologies = require('../helper/methodologies'); module.exports = { methodology: methodologies.lendingMarket, - scroll: aaveExports('scroll', undefined, undefined, ['0xeB3C203418f0cb55b351C3E45A5C4f47bE5DA77A']), + scroll: aaveExports('scroll', "0xE58Ebf93885c8Ea0368fCe84aF79EC983b80c8D5", undefined, ['0xeB3C203418f0cb55b351C3E45A5C4f47bE5DA77A'], { v3: true }), } \ No newline at end of file From 99f6e46cd73da1d3568e44c273472f13a7c9f0b7 Mon Sep 17 00:00:00 2001 From: Wayne Kuo <95527849+WayneAl@users.noreply.github.com> Date: Thu, 14 Mar 2024 15:31:00 +0800 Subject: [PATCH 0698/2004] trans MFUD to FUD (#9340) --- projects/typus-finance/index.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/projects/typus-finance/index.js b/projects/typus-finance/index.js index 4852ccf55f8..6da24de79ae 100644 --- a/projects/typus-finance/index.js +++ b/projects/typus-finance/index.js @@ -1,7 +1,7 @@ const sui = require("../helper/chain/sui"); -const SINGLE_DEPOSIT_VAULT_REGISTRY = - "0xd67cf93a0df61b4b3bbf6170511e0b28b21578d9b87a8f4adafec96322dd284d"; +const SINGLE_DEPOSIT_VAULT_REGISTRY = "0xd67cf93a0df61b4b3bbf6170511e0b28b21578d9b87a8f4adafec96322dd284d"; +const fud_token = "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD"; async function tvl(timestamp, block, chainBlocks, { api }) { const depositVaultFields = await sui.getDynamicFieldObjects({ @@ -14,11 +14,22 @@ async function tvl(timestamp, block, chainBlocks, { api }) { depositVaults.forEach(({ fields }) => { const deposit_token = "0x" + fields.deposit_token.fields.name; const bid_token = "0x" + fields.bid_token.fields.name; - 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); - api.add(bid_token, fields.premium_share_supply); + 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); + } }); } From 34b3f350211d4a838a80b7a6225b443e618ad8d1 Mon Sep 17 00:00:00 2001 From: hmMachghoul <97662562+hmMachghoul@users.noreply.github.com> Date: Thu, 14 Mar 2024 08:33:03 +0100 Subject: [PATCH 0699/2004] add Opulous OVault TVL (#9335) * add Opulous OVault TVL * mark lent assets as borrowed * update Algo pools for Opulous --------- Co-authored-by: hmMachghoul Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/opulous/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/opulous/index.js b/projects/opulous/index.js index 41c3280c4f7..ce5667a8cfb 100644 --- a/projects/opulous/index.js +++ b/projects/opulous/index.js @@ -2,7 +2,7 @@ const { lookupApplications } = require("../helper/chain/algorand"); async function algorandStaking() { - const poolIds = [843061415, 1127413236, 1020347200]; + const poolIds = [843061415, 1127413236, 1020347200,929851093]; let totalPoolAmount = 0; for (const poolId of poolIds) { From 6bf6bd8af19ee979ebca9c0a9f004a2cb415b53b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:37:23 +0100 Subject: [PATCH 0700/2004] Update methodologies in project files --- projects/aave/index.js | 3 ++- projects/aave/v3.js | 3 ++- projects/agave.js | 5 +++-- projects/agora/index.js | 24 ++++++------------------ projects/apeswap-lending/index.js | 3 ++- projects/augmented-finance/index.js | 3 ++- projects/benddao/index.js | 5 ++--- projects/blizzfinance/index.js | 3 ++- projects/deepr-finance/index.js | 4 ++-- projects/exactly/index.js | 4 ++-- projects/geist/index.js | 4 ++-- projects/goledo/index.js | 4 ++-- projects/helper/aave.js | 4 +++- projects/helper/compound.js | 3 +++ projects/kinza/index.js | 4 ++-- projects/klap/index.js | 4 ++-- projects/knightswap-lending/index.js | 3 ++- projects/lava/index.js | 5 +++-- projects/monolend/index.js | 4 ++-- projects/omniprotocol/index.js | 4 ++-- projects/opensky/index.js | 5 +++-- projects/pangolin/index.js | 4 ++-- projects/paperdao/index.js | 8 ++++---- projects/phiat/index.js | 5 ++--- projects/planet-green/index.js | 9 ++++----- projects/qubit/index.js | 4 ++-- projects/radiant-v2/index.js | 5 ++--- projects/radiant/index.js | 5 ++--- projects/realtmarkets/index.js | 5 ++--- projects/realtoken-rmm-v3/index.js | 4 ++-- projects/sculptor-finance/index.js | 5 ++--- projects/seamless/index.js | 3 ++- projects/shoebillFinance/index.js | 4 ++-- projects/sio2/index.js | 5 ++--- projects/starlay/index.js | 4 ++-- projects/sturdy/index.js | 8 ++++---- projects/tonpound.js | 4 ++-- projects/toreus/index.js | 5 ++--- projects/tropykus-zkevm/index.js | 4 ++-- projects/union-finance/index.js | 6 +++--- projects/unlockd/index.js | 3 ++- projects/uwulend/index.js | 5 ++--- projects/valas/index.js | 5 ++--- projects/vee-finance/index.js | 6 +++--- projects/vires/index.js | 3 ++- projects/wanlend/index.js | 4 ++-- projects/xcarnival/index.js | 4 ++-- 47 files changed, 111 insertions(+), 117 deletions(-) diff --git a/projects/aave/index.js b/projects/aave/index.js index aaad00a8671..ce351ed5ee4 100644 --- a/projects/aave/index.js +++ b/projects/aave/index.js @@ -4,6 +4,7 @@ const { getV2Reserves, getTvl, getBorrowed, aaveChainTvl } = require('../helper/ const { staking } = require('../helper/staking'); const { ammMarket } = require('./amm'); const { unwrapBalancerToken } = require('../helper/unwrapLPs'); +const methodologies = require('../helper/methodologies'); const addressesProviderRegistryETH = "0x52D306e36E3B6B02c153d0266ff0f85d18BCD413"; @@ -49,7 +50,7 @@ function v2(chain, v2Registry){ module.exports = { timetravel: true, - 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`, + methodology: methodologies.lendingMarket, ethereum: { staking: staking(aaveStakingContract, aaveTokenAddress), pool2: stakingBalancerTvl, diff --git a/projects/aave/v3.js b/projects/aave/v3.js index d07e380324f..a515119da1e 100644 --- a/projects/aave/v3.js +++ b/projects/aave/v3.js @@ -1,4 +1,5 @@ const { aaveChainTvl } = require('../helper/aave'); +const methodologies = require('../helper/methodologies'); const v3params = ["0x770ef9f4fe897e59daCc474EF11238303F9552b6", undefined, ["0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654"]] @@ -24,7 +25,7 @@ function v3(chain) { } 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`, + methodology: methodologies.lendingMarket, avax: v3("avax"), ...["optimism", "fantom", "harmony", "arbitrum", "polygon", "ethereum", "metis", "base", "xdai", "scroll", "bsc"].reduce((t, c) => ({ ...t, [c]: v3(c) }), {}), hallmarks: [ diff --git a/projects/agave.js b/projects/agave.js index 50b367f9ecc..d3a43b18839 100644 --- a/projects/agave.js +++ b/projects/agave.js @@ -1,6 +1,7 @@ const { staking } = require("./helper/staking.js"); const { aaveChainTvl } = require('./helper/aave.js'); -const sdk = require('@defillama/sdk') +const sdk = require('@defillama/sdk'); +const methodologies = require("./helper/methodologies.js"); // Staking TVLs const agaveTokenAddress = '0x3a97704a1b25F08aa230ae53B352e2e72ef52843' @@ -22,7 +23,7 @@ module.exports = { hallmarks: [ [1647302400, "Reentrancy attack"] ], - 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`, + methodology: methodologies.lendingMarket, xdai: { tvl: sdk.util.sumChainTvls([ aaveChainTvl("xdai", addressesProviderRegistryXDAI, addr => `xdai:${addr}`, [protocolDataHelper], false), diff --git a/projects/agora/index.js b/projects/agora/index.js index aef9b34a536..60c8624464a 100644 --- a/projects/agora/index.js +++ b/projects/agora/index.js @@ -1,31 +1,20 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const { compoundExports } = require("../helper/compound"); +const { compoundExports, methodology, } = require("../helper/compound"); const { getUniTVL } = require('../helper/unknownTokens') const factory = '0x3c4063B964B1b3bF229315fCc4df61a694B0aE84' const metis = ADDRESSES.metis.Metis const agora = '0x0Ed0Ca6872073E02cd3aE005BaF04bA43BE947fA' -const whitelist = [ - agora, // AGORA - ADDRESSES.metis.m_USDC, // USDC - ADDRESSES.metis.m_USDT, // USDT - ADDRESSES.metis.WETH, // WETH - '0x94e56c0c59433599ba857a9a7243b2826745cf91', //kWBTC - '0x6d11f074131e3fc61c983cce538f5d0ca3553c0f', //kUSDC - '0xcfd482dce13ca1d27834d381af1b570e9e6c6810', //kmetis - '0x2e9347dda00b3ec1b188963b590ca1ecbd73145a', //kweth -] - -const { tvl: agoraTvl, borrowed: agoraBorrowed } = compoundExports( +const { tvl: agoraTvl, } = compoundExports( "0x3fe29D7412aCDade27e21f55a65a7ddcCE23d9B3", "metis", "0xcFd482DcE13cA1d27834D381AF1b570E9E6C6810", metis, ); -const { tvl: agoraPlusTvl, borrowed: agoraPlusBorrowed } = compoundExports( +const { tvl: agoraPlusTvl, } = compoundExports( "0x92DcecEaF4c0fDA373899FEea00032E8E8Da58Da", "metis", "0xE85A1ae1A2A21135c49ADEd398D3FD5Ed032B28e", @@ -34,7 +23,7 @@ const { tvl: agoraPlusTvl, borrowed: agoraPlusBorrowed } = compoundExports( symbol => symbol.indexOf('appuffNetswap') > -1 ); -const { tvl: agoraStakeTvl, borrowed: agoraStakeBorrowed } = compoundExports( +const { tvl: agoraStakeTvl, } = compoundExports( "0xb36DF0773AbD23081516F54f9dbB9a99Ec27dbB0", "metis", "0xc3034143816398d37Ec9447c9CA17c407e96Dc12", @@ -42,7 +31,7 @@ const { tvl: agoraStakeTvl, borrowed: agoraStakeBorrowed } = compoundExports( undefined, ); -const { tvl: agoraFarmTvl, borrowed: agoraFarmBorrowed } = compoundExports( +const { tvl: agoraFarmTvl, } = compoundExports( "0xEC1A06f320E6e295Ab6892BB4e0f9e29c712F11F", "metis", "0x13Cb104a1D94A89a260b27DfAAB07C862da622E5", @@ -56,9 +45,8 @@ module.exports = { hallmarks: [ [1649376000, "STARS collateral Exploit"] ], - incentivized: true, + methodology, misrepresentedTokens: true, - methodology: `As in Compound Finance, TVL counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are counted as "Borrowed" TVL and can be toggled towards the regular TVL.`, metis: { tvl: sdk.util.sumChainTvls([chainTvl, agoraTvl, agoraPlusTvl, agoraFarmTvl, agoraStakeTvl]), borrowed: ()=>({}), diff --git a/projects/apeswap-lending/index.js b/projects/apeswap-lending/index.js index de0d05409f0..93852f88a41 100644 --- a/projects/apeswap-lending/index.js +++ b/projects/apeswap-lending/index.js @@ -1,4 +1,5 @@ const {usdCompoundExports} = require('../helper/compound'); +const methodologies = require('../helper/methodologies'); const unitroller_bsc = "0xad48b2c9dc6709a560018c678e918253a65df86e" @@ -18,5 +19,5 @@ module.exports = { tvl: lendingMarket.tvl, borrowed: lendingMarket.borrowed }, - 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.. 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. To view the Borrowed amounts along with the currently liquidity, click the 'Borrowed' check box", + methodology: methodologies.lendingMarket, } \ No newline at end of file diff --git a/projects/augmented-finance/index.js b/projects/augmented-finance/index.js index 7f335b37842..d98cb1356d9 100644 --- a/projects/augmented-finance/index.js +++ b/projects/augmented-finance/index.js @@ -1,3 +1,4 @@ +const methodologies = require("../helper/methodologies"); const config = { ethereum: '0x9276635Ec39C72866f3cF70298eFe501EB5dcDf1', @@ -7,7 +8,7 @@ const config = { } 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.", + methodology: methodologies.lendingMarket, // deadFrom: 2024-02-22 }; diff --git a/projects/benddao/index.js b/projects/benddao/index.js index 2908f649698..75b1913f668 100644 --- a/projects/benddao/index.js +++ b/projects/benddao/index.js @@ -1,11 +1,10 @@ -const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { tvl, borrowed } = require("./helper/index"); const address = require("./helper/address"); +const methodologies = require("../helper/methodologies"); module.exports = { - timetravel: true, - 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`, + methodology: methodologies.lendingMarket, ethereum: { tvl, borrowed, diff --git a/projects/blizzfinance/index.js b/projects/blizzfinance/index.js index 2f8a9e59043..420e6e7bf6a 100644 --- a/projects/blizzfinance/index.js +++ b/projects/blizzfinance/index.js @@ -1,8 +1,9 @@ const { aaveExports } = require('../helper/aave') +const methodologies = require('../helper/methodologies') module.exports={ timetravel: true, - 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", + methodology: methodologies.lendingMarket, avax:{ tvl: aaveExports("avax", "0xfF50b540c9152F1841edF47b49dA69696Be59783").tvl, borrowed: ()=>({}) // hacked, it's all bad debt diff --git a/projects/deepr-finance/index.js b/projects/deepr-finance/index.js index 5271245ab67..b252e40e0b5 100644 --- a/projects/deepr-finance/index.js +++ b/projects/deepr-finance/index.js @@ -1,6 +1,6 @@ -const { compoundExports2 } = require('../helper/compound'); +const { compoundExports2, methodology, } = require('../helper/compound'); module.exports = { shimmer_evm: compoundExports2({ comptroller: '0xF7E452A8685D57083Edf4e4CC8064EcDcF71D7B7', }), - 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.", + methodology, } \ No newline at end of file diff --git a/projects/exactly/index.js b/projects/exactly/index.js index e03d76c5ae7..08afe5d8940 100644 --- a/projects/exactly/index.js +++ b/projects/exactly/index.js @@ -1,8 +1,8 @@ const sdk = require("@defillama/sdk"); +const methodologies = require("../helper/methodologies"); 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 are multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.", + methodology: methodologies.lendingMarket, }; /** @type {Record} */ diff --git a/projects/geist/index.js b/projects/geist/index.js index 412fc9f4e11..9258983a75e 100644 --- a/projects/geist/index.js +++ b/projects/geist/index.js @@ -1,6 +1,7 @@ const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); const { aaveChainTvl } = require("../helper/aave"); +const methodologies = require("../helper/methodologies"); const stakingContract = "0x49c93a95dbcc9A6A4D8f77E59c038ce5020e82f8"; const GEIST = "0xd8321aa83fb0a4ecd6348d4577431310a6e0814d"; @@ -23,8 +24,7 @@ function lending(borrowed) { module.exports = { timetravel: true, - 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", + methodology: methodologies.lendingMarket, fantom: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/goledo/index.js b/projects/goledo/index.js index b623c146a49..a3db0f4a2c4 100644 --- a/projects/goledo/index.js +++ b/projects/goledo/index.js @@ -1,4 +1,5 @@ const { aaveV2Export } = require('../helper/aave'); +const methodologies = require('../helper/methodologies'); const { staking } = require('../helper/unknownTokens') const stakingContract = "0x7d236c0486c9579507C67B36d175990CAb5100fC"; @@ -9,8 +10,7 @@ const stakedToken_WrappedCurrency_spLP = "0x93D4Be3C0B11fe52818cD96A5686Db1E21D7 const lendingpool = "0x9aeba63d77d25c95dadd057db74741517862f360"; 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.. 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. To view the Borrowed amounts along with the currently liquidity, click the 'Borrowed' check box`, + methodology: methodologies.lendingMarket, conflux: { ...aaveV2Export(lendingpool), staking: staking({ owner: stakingContract, tokens: [stakedToken], lps: [stakedToken_WrappedCurrency_spLP], useDefaultCoreAssets: true, }), diff --git a/projects/helper/aave.js b/projects/helper/aave.js index 04d96b1c281..e9fc466f764 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -4,7 +4,8 @@ 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 { sumTokens2 } = require('../helper/unwrapLPs'); +const methodologies = require('./methodologies'); async function getV2Reserves(block, addressesProviderRegistry, chain, dataHelperAddress, abis = {}) { let validProtocolDataHelpers @@ -132,6 +133,7 @@ function aaveExports(chain, addressesProviderRegistry, transform = undefined, da } module.exports = { + methodology: methodologies.lendingMarket, aaveChainTvl, getV2Reserves, getTvl, diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 5c41e120fbc..976bd587163 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -8,6 +8,8 @@ const { getChainTransform, transformBalances } = require('./portedTokens'); const { usdtAddress } = require('./balances'); const agoraAbi = require("./../agora/abi.json"); const { sumTokens2, nullAddress, unwrapLPsAuto, } = require('./unwrapLPs') +const methodologies = require('./methodologies'); + // ask comptroller for all markets array async function getAllCTokens(comptroller, block, chain, allMarketsAbi = abi['getAllMarkets']) { return (await sdk.api.abi.call({ @@ -330,6 +332,7 @@ function compoundExports2({ comptroller, chain, cether, cetheEquivalent = nullAd } module.exports = { + methodology: methodologies.lendingMarket, getCompoundV2Tvl, compoundExports, compoundExports2, diff --git a/projects/kinza/index.js b/projects/kinza/index.js index d80991fbfa7..bb3d496bbb1 100644 --- a/projects/kinza/index.js +++ b/projects/kinza/index.js @@ -1,8 +1,8 @@ const { aaveExports } = require("../helper/aave"); +const methodologies = require("../helper/methodologies"); 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", + methodology: methodologies.lendingMarket, bsc: aaveExports('bsc', '0x37D7Eb561E189895E5c8601Cd03EEAB67C269189', undefined, ['0x09ddc4ae826601b0f9671b9edffdf75e7e6f5d61'], { v3: true, }), op_bnb: aaveExports('op_bnb', '0x37D7Eb561E189895E5c8601Cd03EEAB67C269189', undefined, ['0xBb5f2d30c0fC9B0f71f7B19DaF19e7Cf3D23eb5E'], { v3: true, }), }; diff --git a/projects/klap/index.js b/projects/klap/index.js index 07c27607cab..6cec8bd3c3c 100644 --- a/projects/klap/index.js +++ b/projects/klap/index.js @@ -1,8 +1,8 @@ const { aaveExports } = require("../helper/aave"); +const methodologies = require("../helper/methodologies"); module.exports = { timetravel: true, - 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", + methodology: methodologies.lendingMarket, klaytn: aaveExports('klaytn', '0x969E4A05c2F3F3029048e7943274eC2E762497AB'), } diff --git a/projects/knightswap-lending/index.js b/projects/knightswap-lending/index.js index c6412cd5527..1cffb381a69 100644 --- a/projects/knightswap-lending/index.js +++ b/projects/knightswap-lending/index.js @@ -1,8 +1,9 @@ const {compoundExports2} = require('../helper/compound'); +const methodologies = require('../helper/methodologies'); const unitroller_bsc = "0x4f92913b86d5e79593fa2e475a8232b22ef17ed1" module.exports = { bsc:compoundExports2({ comptroller: unitroller_bsc}), - 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.. 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. To view the Borrowed amounts along with the currently liquidity, click the 'Borrowed' check box", + methodology: methodologies.lendingMarket, } \ No newline at end of file diff --git a/projects/lava/index.js b/projects/lava/index.js index 4b1974e0ce9..c34c21003c8 100644 --- a/projects/lava/index.js +++ b/projects/lava/index.js @@ -1,3 +1,5 @@ +const methodologies = require("../helper/methodologies"); + const DATA_PROVIDER_ADDRESS = { arbitrum: "0x8CfA3a5105e87e6e5568b80F64d05eD5fc53F0a9", base: "0x22d6Ab83EEe06B7EE815420a7F2e737D64E534ef", @@ -85,8 +87,7 @@ function getMetrics() { } module.exports = { - methodology: - "Counts the tokens locked in the contracts to be used as collateral to borrow or to earn lending interest. Tokens also include various wrapped liquidity positions, the tokens comprising these positions are counted as well. Borrowed tokens are not counted towards the TVL, so only the tokens actually locked in the contracts are counted. The main reason for this is to avoid inflating the TVL through cycled lending.", + methodology: methodologies.lendingMarket, arbitrum: getMetrics(), base: getMetrics(), }; diff --git a/projects/monolend/index.js b/projects/monolend/index.js index c38eb994ab6..0e6b0815f55 100644 --- a/projects/monolend/index.js +++ b/projects/monolend/index.js @@ -1,6 +1,6 @@ -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology, } = require("../helper/aave"); 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 are multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending.", + methodology, polygon: aaveExports('polygon', '0x49Ce0308F3F55955D224453aECe7610b6983c123'), }; diff --git a/projects/omniprotocol/index.js b/projects/omniprotocol/index.js index 617e207341a..8ba29232f9a 100644 --- a/projects/omniprotocol/index.js +++ b/projects/omniprotocol/index.js @@ -1,12 +1,12 @@ const abi = require("./omni.json"); -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology, } = require("../helper/aave"); const validProtocolDataHelper = "0x8AAc97e25c79195aC77817287Cf512b0Acc9da44"; const omniOracle = "0x08Eaf1C8c270a485DD9c8aebb2EDE3FcAe72e04f"; module.exports = { misrepresentedTokens: true, - methodology: `Counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. NFT's are counted as their floor price for both collateral and debt. 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`, + methodology, ethereum: aaveExports('ethereum', undefined, undefined, [validProtocolDataHelper], { oracle: omniOracle, abis: { getAllATokens: abi.getAllOTokens, diff --git a/projects/opensky/index.js b/projects/opensky/index.js index 1466f2914a4..1bc3cc2f21d 100644 --- a/projects/opensky/index.js +++ b/projects/opensky/index.js @@ -1,4 +1,5 @@ -const { getLogs } = require('../helper/cache/getLogs') +const { getLogs } = require('../helper/cache/getLogs'); +const methodologies = require('../helper/methodologies'); const { sumTokens2 } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') @@ -39,7 +40,7 @@ async function borrowed(timestamp, block, chainBlocks, { 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. There's multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending`, + methodology: methodologies.lendingMarket, ethereum: { tvl, borrowed, diff --git a/projects/pangolin/index.js b/projects/pangolin/index.js index 0a3bde87a92..f5de076000c 100644 --- a/projects/pangolin/index.js +++ b/projects/pangolin/index.js @@ -47,13 +47,13 @@ module.exports = { hedera: { tvl: async () => { return {} - const block = await getCurrentBlock() + /* const block = await getCurrentBlock() const data = await graphQuery('https://graph-hedera-main.pangolin.network/subgraphs/name/pangolin', `{ pangolinFactory(id: "1" block: { number: ${block - 1000} }) { totalLiquidityUSD } }`) - return toUSDTBalances(data.pangolinFactory.totalLiquidityUSD) + return toUSDTBalances(data.pangolinFactory.totalLiquidityUSD) */ } }, start: 1612715300, // 7th-Feb-2021 diff --git a/projects/paperdao/index.js b/projects/paperdao/index.js index d70f520098f..b3ef80894e3 100644 --- a/projects/paperdao/index.js +++ b/projects/paperdao/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports } = require("../helper/compound"); +const { compoundExports, methodology, } = require("../helper/compound"); const blacklist = [ '0x4002a65e13f87C897B8018Fd7329af17339346ba', @@ -8,8 +8,8 @@ const blacklist = [ '0x1611Ac5e87aC082e016d60dB63eccb50F45B8b4e', '0x438DDA002CaDBe95F72b7b9acB1FEf4782418566', ]; - + module.exports = { - methodology: `As in Compound Finance, TVL counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are counted as "Borrowed" TVL and can be toggled towards the regular TVL.`, - ethpow: compoundExports("0x5e496e7F241B13c514A78B7E840bc3cC744D7215", "ethpow", "0xb9e008f2C039fB994C8adD806F8aF709899aA95e", ADDRESSES.ethereum.WETH , undefined, undefined, {blacklistedTokens: blacklist}) + methodology, + ethpow: compoundExports("0x5e496e7F241B13c514A78B7E840bc3cC744D7215", "ethpow", "0xb9e008f2C039fB994C8adD806F8aF709899aA95e", ADDRESSES.ethereum.WETH, undefined, undefined, { blacklistedTokens: blacklist }) } \ No newline at end of file diff --git a/projects/phiat/index.js b/projects/phiat/index.js index 9c22cb0db66..3aff9055358 100644 --- a/projects/phiat/index.js +++ b/projects/phiat/index.js @@ -1,5 +1,5 @@ const { staking } = require("../helper/staking"); -const { aaveChainTvl } = require("../helper/aave"); +const { aaveChainTvl, methodology, } = require("../helper/aave"); const stakingContract = "0xeAa92F835757a8B3fA4cbCA3Db9D2Ea342651D44"; @@ -22,8 +22,7 @@ function lending(borrowed) { module.exports = { timetravel: true, - 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", + methodology, pulse: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/planet-green/index.js b/projects/planet-green/index.js index f798ee1ef5a..a03e3671059 100644 --- a/projects/planet-green/index.js +++ b/projects/planet-green/index.js @@ -1,7 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { compoundExports } = require("../helper/compound"); -const { staking } = require("../helper/staking.js"); +const { compoundExports, methodology, } = require("../helper/compound"); const { mergeExports } = require("../helper/utils"); @@ -22,9 +20,10 @@ const compoundTVL2 = compoundExports( // node test.js projects/planet-green/index.js module.exports = mergeExports([ -{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.. 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."}, { bsc: { tvl: compoundTVL1.tvl }, }, { bsc: compoundTVL2, }, -]); \ No newline at end of file +]); + +module.exports.methodology = methodology; \ No newline at end of file diff --git a/projects/qubit/index.js b/projects/qubit/index.js index 38a82bfc25f..1fbbd87256b 100644 --- a/projects/qubit/index.js +++ b/projects/qubit/index.js @@ -1,6 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); +const methodologies = require('../helper/methodologies'); const qBnb = "0xbE1B5D17777565D67A5D2793f879aBF59Ae5D351"; // qBNB const wBnb = ADDRESSES.bsc.WBNB; //wBNB @@ -79,8 +80,7 @@ module.exports = { ], timetravel: true, doublecounted: false, - 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 are multiple reasons behind this but one of the main ones is to avoid inflating the TVL through cycled lending", + methodology: methodologies.lendingMarket, bsc: { tvl: tvl(false), //borrowed: tvl(true), // hacked diff --git a/projects/radiant-v2/index.js b/projects/radiant-v2/index.js index 6cba59aee5f..fe7426a4f17 100644 --- a/projects/radiant-v2/index.js +++ b/projects/radiant-v2/index.js @@ -1,13 +1,12 @@ const { staking } = require("../helper/staking"); const { sumTokensExport } = require("../helper/unknownTokens"); -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology, } = require("../helper/aave"); module.exports = { hallmarks: [ [1704178500,"flash loan exploit"] ], - 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", + methodology, arbitrum: { ...aaveExports('arbitrum', '0x9D36DCe6c66E3c206526f5D7B3308fFF16c1aa5E'), // balancer pool is not unwrapped properly, so we use staking and rely on price api instead diff --git a/projects/radiant/index.js b/projects/radiant/index.js index f34f56249c3..00463ae298f 100644 --- a/projects/radiant/index.js +++ b/projects/radiant/index.js @@ -1,6 +1,6 @@ const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology } = require("../helper/aave"); const stakingContract = "0xc2054A8C33bfce28De8aF4aF548C48915c455c13"; const RADIANT = "0x0C4681e6C0235179ec3D4F4fc4DF3d14FDD96017"; @@ -9,8 +9,7 @@ const stakingContractPool2 = "0xc963ef7d977ECb0Ab71d835C4cb1Bf737f28d010"; const RADIANT_WETH_sushiLP = "0x24704aFF49645D32655A76Df6d407E02d146dAfC"; 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", + methodology, arbitrum: { ...aaveExports('arbitrum', '0x7BB843f889e3a0B307299c3B65e089bFfe9c0bE0'), staking: staking(stakingContract, RADIANT, "arbitrum"), diff --git a/projects/realtmarkets/index.js b/projects/realtmarkets/index.js index a3f0b673fc7..4a82bff910c 100644 --- a/projects/realtmarkets/index.js +++ b/projects/realtmarkets/index.js @@ -1,9 +1,8 @@ -const { aaveExports } = require('../helper/aave') +const { aaveExports, methodology, } = require('../helper/aave') module.exports={ - timetravel: true, misrepresentedTokens: true, - 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", + methodology: methodology, xdai: aaveExports('xdai', '0xae6933231Fb83257696E29B050cA6068D6E6Cc84', undefined, undefined, { oracle: '0x1a88d967936a73326562d2310062eCE226Ed6664', }), diff --git a/projects/realtoken-rmm-v3/index.js b/projects/realtoken-rmm-v3/index.js index c5563d5c764..eda380666e8 100644 --- a/projects/realtoken-rmm-v3/index.js +++ b/projects/realtoken-rmm-v3/index.js @@ -1,6 +1,6 @@ -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology } = require("../helper/aave"); 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`, + methodology, xdai: aaveExports('xdai', '0x11B45acC19656c6C52f93d8034912083AC7Dd756', undefined, ["0x11B45acC19656c6C52f93d8034912083AC7Dd756"],), }; diff --git a/projects/sculptor-finance/index.js b/projects/sculptor-finance/index.js index 5a3d12117fb..ea87f2f98fe 100644 --- a/projects/sculptor-finance/index.js +++ b/projects/sculptor-finance/index.js @@ -1,6 +1,6 @@ const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); -const { aaveChainTvl } = require("../helper/aave"); +const { aaveChainTvl, methodology } = require("../helper/aave"); const stakingContract = "0xd4F7F739488f5C9930A60e85afbE26a8B71BA795"; const SCULPT = "0xAd3E02e83b886543D1171FF446C130D52068C106"; @@ -23,8 +23,7 @@ function lending(borrowed) { module.exports = { timetravel: true, - 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", + methodology, bsc: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/seamless/index.js b/projects/seamless/index.js index 9d4a131e34b..f56122d9c98 100644 --- a/projects/seamless/index.js +++ b/projects/seamless/index.js @@ -2,6 +2,7 @@ const { aaveExports } = require("../helper/aave"); const { sumTokens2 } = require("../helper/unwrapLPs"); const abi = require("./abis.json"); const { mergeExports } = require("../helper/utils"); +const methodologies = require("../helper/methodologies"); const AAVE_ADDRESSES_PROVIDER_REGISTRY = "0x90C5055530C0465AbB077FA016a3699A3F53Ef99"; const AAVE_POOL_DATA_PROVIDER = "0x2A0979257105834789bC6b9E1B00446DFbA8dFBa"; @@ -44,6 +45,6 @@ async function geyserTvl(_, _1, _2, { api }) { const baseAAVE = aaveExports("base", AAVE_ADDRESSES_PROVIDER_REGISTRY, undefined, [AAVE_POOL_DATA_PROVIDER], { v3: true }); module.exports = mergeExports([{ - 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`, + methodology: methodologies.lendingMarket, base: baseAAVE, }, { base: { tvl: geyserTvl } }]); diff --git a/projects/shoebillFinance/index.js b/projects/shoebillFinance/index.js index 9db30a8c819..03c32faf648 100644 --- a/projects/shoebillFinance/index.js +++ b/projects/shoebillFinance/index.js @@ -1,4 +1,5 @@ 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)[])" @@ -32,8 +33,7 @@ async function borrowed(timestamp, ethBlock, chainBlocks, { api }) { module.exports = { misrepresentedTokens: true, doublecounted: true, - 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", + methodology: methodologies.lendingMarket, }; const config = { diff --git a/projects/sio2/index.js b/projects/sio2/index.js index cc7942e8961..3d228a24222 100644 --- a/projects/sio2/index.js +++ b/projects/sio2/index.js @@ -1,8 +1,7 @@ -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology, } = require("../helper/aave"); module.exports = { - timetravel: true, - 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.`, + methodology, astar: aaveExports("astar", '0x9D8bB85b1c728f69672923dD4A0209EC8b75EFda', undefined, undefined, { abis: { getAllATokens: "function getAllSTokens() view returns (tuple(string symbol, address tokenAddress)[])" diff --git a/projects/starlay/index.js b/projects/starlay/index.js index 4aae7108979..4c515b8c911 100644 --- a/projects/starlay/index.js +++ b/projects/starlay/index.js @@ -1,10 +1,10 @@ -const { aaveExports } = require("../helper/aave"); +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: `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.`, + methodology, astar: { ...aaveExports("astar", '0xF6206297b6857779443eF7Eca4a3cFFb1660F952', undefined, undefined, { abis: { diff --git a/projects/sturdy/index.js b/projects/sturdy/index.js index 73cb695f252..14f26051b2e 100644 --- a/projects/sturdy/index.js +++ b/projects/sturdy/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { aaveV2Export, } = require('../helper/aave'); -const { mergeExports, } = require('../helper/utils'); +const { aaveV2Export, methodology, } = require('../helper/aave'); +const { mergeExports, } = require('../helper/utils'); module.exports = mergeExports([ { @@ -10,10 +10,10 @@ module.exports = mergeExports([ misrepresentedTokens: true, ethereum: aaveV2Export('0xA422CA380bd70EeF876292839222159E41AAEe17', { useOracle: true }), fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a', { useOracle: true, baseCurrency: ADDRESSES.fantom.DAI }), - 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.. 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. To view the Borrowed amounts along with the currently liquidity, click the 'Borrowed' check box", + methodology, } ]) module.exports.hallmarks = [ - [Math.floor(new Date('2023-06-11')/1e3), 'Protocol was hacked'], + [Math.floor(new Date('2023-06-11') / 1e3), 'Protocol was hacked'], ] module.exports.doublecounted = true diff --git a/projects/tonpound.js b/projects/tonpound.js index f3477dd18fe..bcb4108f5f3 100644 --- a/projects/tonpound.js +++ b/projects/tonpound.js @@ -1,6 +1,6 @@ -const { compoundExports2 } = require('./helper/compound'); +const { compoundExports2, methodology, } = require('./helper/compound'); module.exports = { ethereum:compoundExports2({ comptroller: '0x1775286Cbe9db126a95AbF52c58a3214FCA26803',}), - 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.", + methodology, } \ No newline at end of file diff --git a/projects/toreus/index.js b/projects/toreus/index.js index 01ee4202325..8d7ed182408 100644 --- a/projects/toreus/index.js +++ b/projects/toreus/index.js @@ -1,12 +1,11 @@ const { staking } = require("../helper/staking"); -const { aaveExports } = require("../helper/aave"); +const { aaveExports, methodology, } = require("../helper/aave"); const stakingContract = "0x2911c3a3b497Af71aAcbB9B1E9FD3ee5D50f959D"; const TOREUS = "0x8549724fcC84ee9ee6c7A676F1Ba2Cc2f43AAF5B"; 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", + methodology, kava: { ...aaveExports("kava", "0xcCe311383b0f4A41c82D8d03a1f4214A3c8E70Bd"), staking: staking(stakingContract, TOREUS, "kava"), diff --git a/projects/tropykus-zkevm/index.js b/projects/tropykus-zkevm/index.js index 70dce7d0755..2ccc4b96442 100644 --- a/projects/tropykus-zkevm/index.js +++ b/projects/tropykus-zkevm/index.js @@ -1,6 +1,6 @@ -const { aaveExports } = require('../helper/aave'); +const { aaveExports, methodology } = require('../helper/aave'); 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`, + methodology, polygon_zkevm: aaveExports("polygon_zkevm", "0x4Dac514F520D051551372d277d1b2Fa3cF2AfdFF"), } \ No newline at end of file diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js index 4b6a8e473cf..d459713331b 100644 --- a/projects/union-finance/index.js +++ b/projects/union-finance/index.js @@ -1,5 +1,6 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json'); +const methodologies = require('../helper/methodologies'); const config = { ethereum: { @@ -45,8 +46,7 @@ async function borrowed() { } module.exports = { - methodology: - "Counts the tokens locked in the contracts to be used to underwrite or to borrow. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted.", + methodology: methodologies.lendingMarket, }; Object.keys(config).forEach(chain => { diff --git a/projects/unlockd/index.js b/projects/unlockd/index.js index b6f939f11d6..856ee506c02 100644 --- a/projects/unlockd/index.js +++ b/projects/unlockd/index.js @@ -1,7 +1,8 @@ +const methodologies = require("../helper/methodologies.js"); const { tvl, borrowed } = require("./helper/index.js"); 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`, + methodology: methodologies.lendingMarket, ethereum: { tvl, borrowed, diff --git a/projects/uwulend/index.js b/projects/uwulend/index.js index c5d4b0ba0be..3ca5e71d1e4 100644 --- a/projects/uwulend/index.js +++ b/projects/uwulend/index.js @@ -1,4 +1,4 @@ -const { aaveChainTvl } = require("../helper/aave"); +const { aaveChainTvl, methodology } = require("../helper/aave"); const { stakings } = require("../helper/staking"); const PoolV1 = "0x7c0bF1108935e7105E218BBB4f670E5942c5e237"; @@ -20,8 +20,7 @@ function lending(borrowed) { module.exports = { timetravel: true, - 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. The staking TVL is the protocol's revenue sharing pool locking UwU-ETH LP (SLP) tokens.", + methodology, ethereum: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/valas/index.js b/projects/valas/index.js index 108399f5291..27753bd5a06 100644 --- a/projects/valas/index.js +++ b/projects/valas/index.js @@ -1,6 +1,6 @@ const { staking } = require("../helper/staking"); const { pool2 } = require("../helper/pool2"); -const { aaveChainTvl } = require("../helper/aave"); +const { aaveChainTvl, methodology } = require("../helper/aave"); const stakingContract = "0x685D3b02b9b0F044A3C01Dbb95408FC2eB15a3b3"; const VALAS = "0xB1EbdD56729940089Ecc3aD0BBEEB12b6842ea6F"; @@ -23,8 +23,7 @@ function lending(borrowed) { module.exports = { timetravel: true, - 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", + methodology, bsc: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/vee-finance/index.js b/projects/vee-finance/index.js index e8b32ad3ef8..c145a9c6105 100644 --- a/projects/vee-finance/index.js +++ b/projects/vee-finance/index.js @@ -1,9 +1,9 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {getCompoundV2Tvl} = require('../helper/compound') +const ADDRESSES = require('../helper/coreAssets.json') +const {getCompoundV2Tvl, methodology} = require('../helper/compound') const sdk = require('@defillama/sdk') module.exports={ - methodology: 'As in Compound Finance, TVL counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield on Avalanche and Heco. Borrowed coins are not counted towards the TVL, so only the coins actually locked in the contracts are counted.', + methodology, avax:{ tvl: sdk.util.sumChainTvls([ //V1&V2 on Avalanche diff --git a/projects/vires/index.js b/projects/vires/index.js index 53df644167b..5440a28609f 100644 --- a/projects/vires/index.js +++ b/projects/vires/index.js @@ -1,8 +1,9 @@ const { sumTokens, call } = require('../helper/chain/waves') +const methodologies = require('../helper/methodologies') module.exports = { timetravel: false, - 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`, + methodology: methodologies.lendingMarket, waves: { tvl, borrowed, }, diff --git a/projects/wanlend/index.js b/projects/wanlend/index.js index ae7445b7ee7..5c75f29d9d7 100644 --- a/projects/wanlend/index.js +++ b/projects/wanlend/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { compoundExports2 } = require("../helper/compound"); +const { compoundExports2, methodology, } = require("../helper/compound"); const { mergeExports } = require("../helper/utils"); const cetheEquivalent=ADDRESSES.wan.WWAN @@ -8,6 +8,6 @@ const tvlV2 = compoundExports2( { comptroller: '0xd6980C52C20Fb106e54cC6c8AE04c delete tvlV1.borrowed module.exports = mergeExports([{ - methodology: `As in Compound Finance, TVL counts the tokens locked in the contracts to be used as collateral to borrow or to earn yield. Borrowed coins are counted as "Borrowed" TVL and can be toggled towards the regular TVL.`, + methodology, wan: tvlV1, }, { wan: tvlV2}]) diff --git a/projects/xcarnival/index.js b/projects/xcarnival/index.js index af039bf46b2..e4b18692628 100644 --- a/projects/xcarnival/index.js +++ b/projects/xcarnival/index.js @@ -1,3 +1,4 @@ +const methodologies = require("../helper/methodologies"); const { getTVL, getBorrowed } = require("./helper/index"); async function tvl(timestamp, block, chainBlocks) { @@ -13,8 +14,7 @@ async function borrowed(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - 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`, + methodology: methodologies.lendingMarket, ethereum: { tvl, borrowed, From 15374b1b2d9d74c4026ea106fcb432983325f213 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:56:39 +0100 Subject: [PATCH 0701/2004] Refactor code and update TVL calculation (#9345) * infusion * code refactor --------- Co-authored-by: infusiondev7 --- projects/infusion/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/infusion/index.js diff --git a/projects/infusion/index.js b/projects/infusion/index.js new file mode 100644 index 00000000000..65c9f6f5d95 --- /dev/null +++ b/projects/infusion/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require('../helper/unknownTokens.js') + +module.exports = { + misrepresentedTokens: true, + base: { + tvl: getUniTVL({ factory: '0x2D9A3a2bd6400eE28d770c7254cA840c82faf23f', hasStablePools: true, useDefaultCoreAssets: true, fetchBalances: true, }), + }, +} From a7ac31d9a73d576ea396162cc1f518aebaec7152 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:09:11 +0100 Subject: [PATCH 0702/2004] Add let's get hai protocol and refactor code (#9347) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add let’s get hai protocol * code refactor --------- Co-authored-by: Luke Hamilton --- projects/hai/index.js | 19 +++++++++++++++++++ projects/helper/coreAssets.json | 1 + 2 files changed, 20 insertions(+) create mode 100644 projects/hai/index.js diff --git a/projects/hai/index.js b/projects/hai/index.js new file mode 100644 index 00000000000..df4c55841ae --- /dev/null +++ b/projects/hai/index.js @@ -0,0 +1,19 @@ +const { getLogs } = require('../helper/cache/getLogs') +const config = { + optimism: { factory: '0xfe7987b1ee45a8d592b15e8e924d50bfc8536143', fromBlock: 116055146 } +} + +module.exports = { + start: 1709780769, // globalDebtCeiling raised > 0 +}; + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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/helper/coreAssets.json b/projects/helper/coreAssets.json index 7f12fb6c273..e5cbd50b13a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -198,6 +198,7 @@ "OP": "0x4200000000000000000000000000000000000042", "WETH": "0x121ab82b49b2bc4c7901ca46b8277962b4350204", "WETH_1": "0x4200000000000000000000000000000000000006", + "WSTETH": "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", "BitANT": "0x5029c236320b8f15ef0a657054b84d90bfbeded3", "FEI": "0x35d48a789904e9b15705977192e5d95e2af7f1d3", "alUSD": "0xcb8fa9a76b8e203d8c3797bf438d8fb81ea3326a", From 8d8d72b19f55b71c0ba18a2cd9a6b130b2455b73 Mon Sep 17 00:00:00 2001 From: amydlarz Date: Thu, 14 Mar 2024 10:18:04 +0100 Subject: [PATCH 0703/2004] IPOR Protocol - get ethereum addresses from the official IPOR github repository. The new weETH pool on ethereum (#9346) * IPOR Protocol - add Arbitrum chain tvl * IPOR Protocol - get ethereum addresses from the official IPOR github repository. The new weETH pool --- projects/ipor/index.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/projects/ipor/index.js b/projects/ipor/index.js index 85b5df29cc5..033b57bdf86 100644 --- a/projects/ipor/index.js +++ b/projects/ipor/index.js @@ -21,25 +21,28 @@ async function tvlArbitrum(_, block, _1, {api}) { } async function calculateTvlForV2(api) { + const addresses = await getConfig('ipor/assets', IPOR_GITHUB_ADDRESSES_URL) + const assets = [ ADDRESSES.ethereum.USDT, // USDT ADDRESSES.ethereum.USDC, // USDC ADDRESSES.ethereum.DAI, // DAI ] - const iporRouter = '0x16d104009964e694761C0bf09d7Be49B7E3C26fd' - const ammTreasuryEth = '0x63395EDAF74a80aa1155dB7Cd9BBA976a88DeE4E' - - const output = await api.multiCall({ abi: abi.getAmmBalance, calls: assets, target: iporRouter, }) + const output = await api.multiCall({ abi: abi.getAmmBalance, calls: assets, target: addresses.ethereum.IporProtocolRouter }) const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: assets }) output.forEach(({ totalCollateralPayFixed, totalCollateralReceiveFixed, liquidityPool, vault }, i) => { const balance = +totalCollateralPayFixed + +totalCollateralReceiveFixed + +liquidityPool const decimal = 18 - decimals[i] api.add(assets[i], balance / (10 ** decimal)) - }) + }); - return api.sumTokens({ owner: ammTreasuryEth, tokens: [ADDRESSES.ethereum.STETH] }) + for (const pool of addresses.ethereum.pools) { + await api.sumTokens({owner: pool.AmmTreasury, tokens: [pool.asset]}); + } + + return api.getBalances(); } async function calculateTvlForV1(api) { From 95b8b73e1322d1d2604e692e573dcf677eeaa383 Mon Sep 17 00:00:00 2001 From: robin yang Date: Thu, 14 Mar 2024 17:28:31 +0800 Subject: [PATCH 0704/2004] Add zkex DEX adapter (#9343) * Add zkex DEX adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkex/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/zkex/index.js diff --git a/projects/zkex/index.js b/projects/zkex/index.js new file mode 100644 index 00000000000..4824471ce34 --- /dev/null +++ b/projects/zkex/index.js @@ -0,0 +1,20 @@ +const ADDRESSES = require("../helper/coreAssets.json") +const { sumTokensExport } = require('../helper/unwrapLPs') + +const config = { + polygon: { owners: ["0x3C7c0ebFCD5786ef48df5ed127cdDEb806db976c"], tokens: [ADDRESSES.polygon.USDC, ADDRESSES.polygon.DAI, ADDRESSES.polygon.USDT, ADDRESSES.polygon.WMATIC_1] }, + avax: { owners: ["0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585"], tokens: [ADDRESSES.avax.USDC, ADDRESSES.avax.USDt] }, + bsc: { owners: ["0x7bd79DEd935B542fb22c74305a4d2A293C18483a"], tokens: ['0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3'] }, + arbitrum: { owners: ["0xe469c1330ceecc375fe17e7d649ea270186d344f"], tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.ARB], }, + optimism: { owners: ["0xa194fb4eab262ec9886a119609bbb2800bdd3a2e"], tokens: [ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDT, ADDRESSES.optimism.OP], }, + era: { owners: ["0x3E3C7c1DCbAf343d14da4F0A0CD7E3c4b9765A4c"], tokens: [ADDRESSES.era.USDC], }, + linea: { owners: ["0x2Fad6cB2A9Db68395Ba4f87ff05768485C7fa6Fd"], tokens: [ADDRESSES.linea.USDC, ADDRESSES.linea.USDT], }, + base: { owners: ["0xaa46d98049cd895e980b60abc4af18cae681865a"], }, + op_bnb: { owners: ["0x85079cb83b6cadba34e64bc0f24493f49d8b1f4e"], }, +} + +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 From e9bf8b736cc9fce95ca8f9722e15547d48c016d8 Mon Sep 17 00:00:00 2001 From: Kyrylo Riabov Date: Thu, 14 Mar 2024 11:45:16 +0200 Subject: [PATCH 0705/2004] Add Q Saving adapter (#9193) * Added DRAFT for the Q Saving adapter * Updated TVL function * Updated TVL function * Adapted adapter for Borrowing contract * code refactor * bugfix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 5 +++++ projects/helper/tokenMapping.js | 5 +++++ projects/q-borrowing/index.js | 7 +++++++ 3 files changed, 17 insertions(+) create mode 100644 projects/q-borrowing/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index e5cbd50b13a..c7ebbe07467 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1651,5 +1651,10 @@ }, "ftn": { "USDC": "0x4237e0A5b55233D5B6D6d1D9BF421723954130D8" + }, + "q": { + "WBTC": "0xde397e6C442A3E697367DecBF0d50733dc916b79", + "WDAI": "0xDeb87c37Dcf7F5197026f574cd40B3Fc8Aa126D1", + "WUSDC": "0x79Cb92a2806BF4f82B614A84b6805963b8b1D8BB" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7c05165b5b3..7ca123b13e4 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -56,6 +56,11 @@ const fixBalancesTokens = { "0x013e54bee29813bd786b24f9cb08f47c4b75955c": { coingeckoId: "usd-coin", decimals: 6 }, "0x3e4079ad76c83760e22b5c0105670ebab88b8d0e": { coingeckoId: "tether", decimals: 18 }, }, + q: { + [ADDRESSES.q.WUSDC]: { coingeckoId: "usd-coin", decimals: 6 }, + [ADDRESSES.q.WDAI]: { coingeckoId: "dai", decimals: 18 }, + [ADDRESSES.q.WBTC]: { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/q-borrowing/index.js b/projects/q-borrowing/index.js new file mode 100644 index 00000000000..7d1ed743afd --- /dev/null +++ b/projects/q-borrowing/index.js @@ -0,0 +1,7 @@ +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)}) }, +}; From c2c2f0f4052bad31ada48893bbbc2af493817489 Mon Sep 17 00:00:00 2001 From: lsblk07 <154802093+lsblk07@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:23:17 +0800 Subject: [PATCH 0706/2004] blasterswap-v2 tvl (#9350) Co-authored-by: lsblk07 --- projects/blasterswap-v2/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/blasterswap-v2/index.js diff --git a/projects/blasterswap-v2/index.js b/projects/blasterswap-v2/index.js new file mode 100644 index 00000000000..f6287ad59af --- /dev/null +++ b/projects/blasterswap-v2/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport("blast", "0x9CC1599D4378Ea41d444642D18AA9Be44f709ffD") From 886b5bb517f3f7d502da9cdc2137852538fb3cb8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:08:17 +0100 Subject: [PATCH 0707/2004] reveert change --- projects/helper/env.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/helper/env.js b/projects/helper/env.js index 334d3c95012..532df877e0e 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,6 +12,14 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", + NAKA_RPC: 'https://node.nakachain.xyz', + ETHF_RPC: 'https://rpc.dischain.xyz/', + CORE_RPC: "https://rpc.coredao.org,https://rpc.ankr.com/core,https://1rpc.io/core,https://rpc-core.icecreamswap.com", + BITGERT_RPC: "https://flux-rpc2.brisescan.com,https://mainnet-rpc.brisescan.com,https://chainrpc.com,https://serverrpc.com,https://flux-rpc.brisescan.com", + BITCHAIN_RPC: "https://rpc.bitchain.biz/", + OZONE_RPC: "https://node1.ozonechain.io", + ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", + DEFIVERSE_RPC: "https://rpc.defi-verse.org/", } const ENV_KEYS = [ From 156c1f9e31771a2d91c9761eb4284bdc1b2ba8c8 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 14 Mar 2024 13:55:57 +0000 Subject: [PATCH 0708/2004] blast --- projects/blast-bridge/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/blast-bridge/index.js b/projects/blast-bridge/index.js index 097b8fcc950..f022a4c84a2 100644 --- a/projects/blast-bridge/index.js +++ b/projects/blast-bridge/index.js @@ -8,6 +8,7 @@ module.exports = { owners: [ "0xa230285d5683C74935aD14c446e137c8c8828438", "0x98078db053902644191f93988341E31289E1C8FE", + "0x5F6AE08B8AeB7078cf2F96AFb089D7c9f51DA47d", ], fetchCoValentTokens: true, }), From 3ecbef938ca292c735a9d4b407dce7b068c229e4 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 14 Mar 2024 14:04:43 +0000 Subject: [PATCH 0709/2004] xdai --- projects/xdai/index.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/projects/xdai/index.js b/projects/xdai/index.js index 37f1544a221..d53a4630bb8 100644 --- a/projects/xdai/index.js +++ b/projects/xdai/index.js @@ -1,5 +1,5 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokens2 } = require("../helper/unwrapLPs"); const tokenAddresses = [ ADDRESSES.ethereum.SAI, @@ -7,21 +7,25 @@ const tokenAddresses = [ //'0x06af07097c9eeb7fd685c692751d5C66db49c215' // CHAI "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", // cDAI ]; -const omniBridge = '0x88ad09518695c6c3712AC10a214bE5109a655671'; -const xDaiBridge = '0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016'; -const owlToken = '0x1a5f9352af8af974bfc03399e3767df6370d82e4'; -const owlBridge = '0xed7e6720ac8525ac1aeee710f08789d02cd87ecb' +const owners = [ + "0x88ad09518695c6c3712AC10a214bE5109a655671", + "0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6", + "0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d", +]; +const xDaiBridge = "0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016"; +const owlToken = "0x1a5f9352af8af974bfc03399e3767df6370d82e4"; +const owlBridge = "0xed7e6720ac8525ac1aeee710f08789d02cd87ecb"; async function eth(timestamp, block, _, { api }) { const ownerTokens = [ [tokenAddresses, xDaiBridge], [[owlToken], owlBridge], - ] - return sumTokens2({ api, ownerTokens, owner: omniBridge, fetchCoValentTokens: true }); + ]; + return sumTokens2({ api, ownerTokens, owners, fetchCoValentTokens: true }); } module.exports = { ethereum: { - tvl: eth + tvl: eth, }, start: 1539028166, }; From c3f92af260d2ddb29fd51e44adaadb97ee1f7a82 Mon Sep 17 00:00:00 2001 From: TJakubek <39831436+TJakubek@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:22:22 +0100 Subject: [PATCH 0710/2004] Enosys farm update (#9358) * fix: updating farms * fix: missing BNZ farm * fix: incorrect pool2 farm --- projects/flarefarm/flare.js | 2 ++ projects/flarefarm/songbird.js | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/flarefarm/flare.js b/projects/flarefarm/flare.js index 019b38982e7..8e6a9dda21e 100644 --- a/projects/flarefarm/flare.js +++ b/projects/flarefarm/flare.js @@ -18,6 +18,7 @@ const LPs ={ WFLR_eQNT_LP: '0x80A08BbAbB0A5C51A9ae53211Df09EF23Debd4f3', HLN_eQNT_LP: '0xEd920325b7dB1e909DbE2d562fCD07f714395e10', eQNT_APS_LP: '0x33E2354928002766C27F7424EcA6f9B133E922a5', + WFLR_BNZ_LP: '0x2C934BbBD152A40419d3330e4d79f362Bc6691D6' } const chain = 'flare' @@ -40,6 +41,7 @@ async function farmTvl(timestamp, ethblock, { [chain]: block }) { [LPs.WFLR_eQNT_LP, "0xc786B4a2F9c314743Ed713184e5c94c244fF6c8D"], [LPs.HLN_eQNT_LP, "0x02321f8030208de54dBd3e2DbdEfbd07cc88Ad6D"], [LPs.eQNT_APS_LP, "0x5E69aD043AE8941969617aeF4487f15445D774C6"], + [LPs.WFLR_BNZ_LP, "0x8246A727510F471f8a61CBc218B60e5cf85739F6"] ]; return sumUnknownTokens({ tokensAndOwners: tokens, chain, block, useDefaultCoreAssets: true, }) diff --git a/projects/flarefarm/songbird.js b/projects/flarefarm/songbird.js index 33382c776e3..fbf8159073b 100644 --- a/projects/flarefarm/songbird.js +++ b/projects/flarefarm/songbird.js @@ -50,14 +50,14 @@ async function farmTvl(timestamp, ethblock, { [chain]: block }) { [EXFI, "0x3B346b0b091fA8813f60Cd6e81b95b63375e22f5"], [LPs.EXFI_ExXDC_LP, "0xa275DD75C1182055C7039b839cC0Da017c78933a"], [EXFI,"0x74C09E58AB2fb74dF729000e36D338016396ee67"], - [LPs.EXFI_SFIN_LP,"0x0E437e1c7371b2ac0f3040e2B5866c9cb2e6EA64"], [LPs.SGB_ExUSDT_LP,"0xf2773bb7aa49FE3da03D327Abc0C49dB296133f3"], - [LPs.SFIN_ExXDC_LP,"0x9E7d575014489B3557D3c53E837b772E7A1EB27c"], [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, }) @@ -78,6 +78,9 @@ async function pool2(timestamp, ethblock, { [chain]: block }) { [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, }) } From 57a67732f63aceb8162c58f59d0eeb5fde024539 Mon Sep 17 00:00:00 2001 From: 0xBluePingu <156801910+0xBluePingu@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:27:16 +0100 Subject: [PATCH 0711/2004] change token contract (#9355) Co-authored-by: 0xBluePingu <0xBluePingu@pingu.exchange> --- projects/pingu/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/pingu/index.js b/projects/pingu/index.js index d51a00c3e3c..f38d74d3ca8 100644 --- a/projects/pingu/index.js +++ b/projects/pingu/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const fundStore = "0x7Cc41ee3Cba9a1D2C978c37A18A0d6b59c340224"; // FundStore -const PINGU = "0x4615fa30fFA5716984d4372030ce28D99fCB702f"; // PINGU +const PINGU = "0x964CBf436Ddb782d09465930ce8b431311Cb54f4"; // PINGU const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC module.exports = { From 212339b0744cd8d1657f2561c3b1371add30ef4a Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Thu, 14 Mar 2024 11:34:54 -0400 Subject: [PATCH 0712/2004] Add stDYM to Stride TVL (#9356) --- projects/helper/chains.json | 1 + projects/stride/index.js | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 108eeb4063a..ee72ece7f14 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -71,6 +71,7 @@ "dogechain", "dsc", "dydx", + "dymension", "echelon", "edg", "elastos", diff --git a/projects/stride/index.js b/projects/stride/index.js index 2647a75f096..b96cfe370d5 100644 --- a/projects/stride/index.js +++ b/projects/stride/index.js @@ -72,12 +72,18 @@ const chains = { chainId: "celestia", denom: "utia", coinGeckoId: "celestia", + }, + + dymension: { + chainId: "dymension_1100-1", + denom: "adym", + coinGeckoId: "dymension", } }; // inj uses 1e18 - https://docs.injective.network/learn/basic-concepts/inj_coin#base-denomination function getCoinDenimals(denom) { - return ["aevmos", "inj", "adydx"].includes(denom) ? 1e18 : 1e6; + return ["aevmos", "inj", "adydx", "adym"].includes(denom) ? 1e18 : 1e6; } function makeTvlFn(chain) { @@ -87,6 +93,8 @@ function makeTvlFn(chain) { let hostZoneUrl = `https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/stakeibc/host_zone/${chain.chainId}`; if (chain.chainId === 'celestia') { hostZoneUrl = `https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/staketia/host_zone`; + } else if (chain.chainId === 'dymension_1100-1') { + hostZoneUrl = `https://stride-fleet.main.stridenet.co/api/Stride-Labs/stride/stakedym/host_zone`; } const [{ amount: assetBalances }, { host_zone: hostZone }] = From 999333a77f4535b5f128af4d63936ff39f024769 Mon Sep 17 00:00:00 2001 From: reikodoteth <149171651+reikodoteth@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:34:53 +0100 Subject: [PATCH 0713/2004] Update index.js (#9357) --- projects/goat-protocol/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/goat-protocol/index.js b/projects/goat-protocol/index.js index c8950f50a4f..73ef82d5046 100644 --- a/projects/goat-protocol/index.js +++ b/projects/goat-protocol/index.js @@ -1,8 +1,11 @@ const { yieldHelper } = require("../helper/unknownTokens"); const { getConfig } = require('../helper/cache'); +const { staking } = require('../helper/staking') const chain = "arbitrum"; const tokenAPI = "address:want"; +const GOA_TOKEN_CONTRACT = '0x8c6Bd546fB8B53fE371654a0E54D7a5bD484b319'; +const REWARD_POOL_CONTRACT = '0xAD9CE8580a1Cd887038405275cB02443E8fb88aC'; module.exports = { timetravel: false, @@ -16,6 +19,7 @@ module.exports = { if(pools[i].platformId != 'goatfi') vaults.push(pools[i].earnedTokenAddress); return yieldHelper({ vaults, chain, block, tokenAPI, useDefaultCoreAssets: true, }) - } + }, + staking: staking(REWARD_POOL_CONTRACT, GOA_TOKEN_CONTRACT, "arbitrum") } } \ No newline at end of file From d131610d5916ff6949f5a9bca88164b784902b14 Mon Sep 17 00:00:00 2001 From: DruPlusDru <42284348+DruPlusDru@users.noreply.github.com> Date: Thu, 14 Mar 2024 11:53:06 -0500 Subject: [PATCH 0714/2004] added USDT (binance-pegged USD-T) to tvl. (#9359) --- projects/dogewhale/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/dogewhale/index.js b/projects/dogewhale/index.js index 35993ad8eb7..dd80d5b6470 100644 --- a/projects/dogewhale/index.js +++ b/projects/dogewhale/index.js @@ -2,13 +2,14 @@ const DW_TOKEN_CONTRACT = '0x43adc41cf63666ebb1938b11256f0ea3f16e6932'; const DOGE = '0xbA2aE424d960c26247Dd6c32edC70B295c744C43'; const SHIB = '0x2859e4544C4bB03966803b044A93563Bd2D0DD4D'; const FLOKI = '0xfb5B838b6cfEEdC2873aB27866079AC55363D37E'; +const USDT = '0x55d398326f99059fF775485246999027B3197955'; const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { bsc: { tvl: sumTokensExport({ owner: DW_TOKEN_CONTRACT, - tokens: [DOGE, SHIB, FLOKI] + tokens: [DOGE, SHIB, FLOKI, USDT] }), } }; \ No newline at end of file From a40dfd566467816e38af84d98fe95591ab074ac2 Mon Sep 17 00:00:00 2001 From: Topleft <87454455+topleft1562@users.noreply.github.com> Date: Thu, 14 Mar 2024 11:56:12 -0500 Subject: [PATCH 0715/2004] MarSwap Update (#9360) * MarSwap Update * Just Dexs with TVL * kk * Added base and cronos * Fixed import * test * backtoWorking * adding V2 * oops * back. meant to do this locally * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/marswap/index.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/projects/marswap/index.js b/projects/marswap/index.js index 65d8cedb173..4e517949566 100644 --- a/projects/marswap/index.js +++ b/projects/marswap/index.js @@ -1,3 +1,17 @@ -const { uniTvlExport } = require('../helper/unknownTokens') +const { getUniTVL } = require('../helper/unknownTokens') -module.exports = uniTvlExport('shibarium', '0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7') \ No newline at end of file +const config = { + bsc: '0xe19165248159B6cB2A2e35bF398581C777C9979A', + ethereum: '0x5e763172d59b3b580af29a1c9fa4ac1cee69c5dd', + shibarium: "0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7", + base: "0xeE42fe6d6Be1eF43701DDAbc417AD22d82C5ecC3", + cronos: "0xD716B78F0002C23190B024fc93C33CF73E30b8A6", +} + +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 From 6806d2f0d724db87787b3bbb6c6d44b445803076 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:00:53 +0100 Subject: [PATCH 0716/2004] Update addresses in index.js files --- projects/BlastNYAN/index.js | 3 ++- projects/abracadabra/index.js | 3 ++- projects/allbridge/index.js | 2 +- projects/alta-finance/index.js | 3 ++- projects/archon-bridge/index.js | 2 +- projects/asymmetry-fi/index.js | 2 +- projects/backpack/index.js | 7 ++++--- projects/benqi-staked-avax/index.js | 2 +- projects/betafinance/index.js | 2 +- projects/bifi/index.js | 2 +- projects/bounce-bit/index.js | 2 +- projects/bucket-protocol/index.js | 2 +- projects/cakedao/index.js | 2 +- projects/celerbridge/index.js | 2 +- projects/cian-automation/index.js | 2 +- projects/defiverse/index.js | 9 +++++---- projects/dogewhale/index.js | 3 ++- projects/ferro/index.js | 2 +- projects/fluid/index.js | 3 ++- projects/gasline/index.js | 5 +++-- projects/gogopool/index.js | 3 ++- projects/helper/tokenMapping.js | 2 +- projects/kuufinance/index.js | 2 +- projects/maximizer/index.js | 2 +- projects/merlin-l2/index.js | 5 +++-- projects/moremoney/StrategyMetadata.js | 4 ++-- projects/nereus/index.js | 2 +- projects/ngad-artemis/index.js | 3 ++- projects/nostra-staked-strk/index.js | 3 ++- projects/omni/index.js | 11 ++++++----- projects/orcadao/index.js | 6 +++--- projects/piggybankdao/index.js | 3 ++- projects/planet-finance/index.js | 3 ++- projects/quickswap/index.js | 3 ++- projects/relayChain/index.js | 2 +- projects/ribbon/evm.js | 2 +- projects/rsk-bridge/index.js | 3 ++- projects/sailingprotocol/index.js | 3 ++- projects/satori/index.js | 2 +- projects/shui/index.js | 3 ++- projects/soulswap/index.js | 2 +- projects/soyfinance/index.js | 2 +- projects/spacebar/index.js | 3 ++- projects/stabilizefi/index.js | 2 +- projects/steakHut-lb/index.js | 3 ++- projects/synapse/config.js | 4 ++-- projects/treasury/aave.js | 4 ++-- projects/treasury/balancer.js | 6 +++--- projects/treasury/bitdao.js | 10 +++++----- projects/treasury/platypus.js | 2 +- projects/treasury/velodrome.js | 2 +- projects/treasury/wand.js | 5 +++-- projects/wand/index.js | 5 +++-- projects/wemix-on-kroma/index.js | 3 ++- projects/yama-finance/index.js | 2 +- projects/zircuit/index.js | 5 +++-- 56 files changed, 106 insertions(+), 81 deletions(-) diff --git a/projects/BlastNYAN/index.js b/projects/BlastNYAN/index.js index 7ee4c57fe1a..f08da36369d 100644 --- a/projects/BlastNYAN/index.js +++ b/projects/BlastNYAN/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens') -const WETH = '0x4300000000000000000000000000000000000004' +const WETH = ADDRESSES.blast.WETH const BLNYAN = '0x9aAC39ca368D27bf03887CCe32f28b44F466072F' const BLNYAN_WETH_SLP = '0x0E9309f32881899F6D4aC2711c6E21367A84CA26' diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js index a7a64ea976b..4df67b0a513 100644 --- a/projects/abracadabra/index.js +++ b/projects/abracadabra/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const marketsJSON = require('./market.json'); const abi = require('./abi.json'); @@ -38,7 +39,7 @@ const liquidityLaunchEvents = { blast: { contractAddress: "0xa64B73699Cc7334810E382A4C09CAEc53636Ab96", supportedTokens: [ - "0x4300000000000000000000000000000000000003", // USDb + ADDRESSES.blast.USDB, // USDb // "0x76DA31D7C9CbEAE102aff34D3398bC450c8374c1", // MIM ] }, diff --git a/projects/allbridge/index.js b/projects/allbridge/index.js index 16051634299..0512b969c44 100644 --- a/projects/allbridge/index.js +++ b/projects/allbridge/index.js @@ -36,7 +36,7 @@ const data = { {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: "0x50b7545627a5162F82A992c33b87aDc75187B218", decimals: 8}, + {name: "bitcoin", address: ADDRESSES.avax.WBTC_e, decimals: 8}, {name: "apyswap", address: "0x4b0093a44802bD870FC20E811862875f0F1E5970", decimals: 18} ] }, diff --git a/projects/alta-finance/index.js b/projects/alta-finance/index.js index 08700bdc0be..8f55f67b182 100644 --- a/projects/alta-finance/index.js +++ b/projects/alta-finance/index.js @@ -1,9 +1,10 @@ +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: ['0xE92F580C930dd24aACB38Ab0EA18F6c1dEf31369','0x64D6583b81716a4d141f07E264805CaCd3f484bB'], token: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' }, + polygon: { investments: ['0xcf152E9f60E197A44FAdce961c6B822Dcb6c9dcc'], debts: ['0xE92F580C930dd24aACB38Ab0EA18F6c1dEf31369','0x64D6583b81716a4d141f07E264805CaCd3f484bB'], token: ADDRESSES.polygon.USDC }, } Object.keys(config).forEach(chain => { diff --git a/projects/archon-bridge/index.js b/projects/archon-bridge/index.js index fa1eb0e5c0f..72298064ebf 100644 --- a/projects/archon-bridge/index.js +++ b/projects/archon-bridge/index.js @@ -8,7 +8,7 @@ const tokens = { USDT: ADDRESSES.avax.USDt, DAI: ADDRESSES.avax.DAI, LINK: "0x5947bb275c521040051d82396192181b413227a3", - WBTC: "0x50b7545627a5162F82A992c33b87aDc75187B218", + WBTC: ADDRESSES.avax.WBTC_e, WZEN: "0xAA1dA1591cBF7f2Df46884E7144297FF15Ea3a7f", }, ethereum: { diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js index 517e8469529..aa9a4b5ec0e 100644 --- a/projects/asymmetry-fi/index.js +++ b/projects/asymmetry-fi/index.js @@ -8,7 +8,7 @@ const STAFI = '0x9559aaa82d9649c7a7b220e7c461d2e74c9a3593' // afETH const AFETH = '0x0000000016E6Cb3038203c1129c8B4aEE7af7a11' -const CVX = '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b' +const CVX = ADDRESSES.ethereum.CVX const VOTIUM = '0x00000069aBbB0B1Ad6975bcF753eEe15D318A0BF' async function tvl(_, _b, _cb, { api, }) { diff --git a/projects/backpack/index.js b/projects/backpack/index.js index 60bad72a9cf..5a3e8aa66f4 100644 --- a/projects/backpack/index.js +++ b/projects/backpack/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { cexExports } = require('../helper/cex') // https://dune.com/21co/backpack-exchange @@ -10,13 +11,13 @@ const config = { tokens: [ 'hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux', // HNT 'jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL', // JTO - 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', // USDT + ADDRESSES.solana.USDT, // USDT 'HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3', // PYTH 'rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof', // RNDR 'mb1eu7TzEc71KxDpsmsKoucSSuuoGLv1drys1oP2jh6', // MOBILE 'EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm', // WIF - 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', // BONK - 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC + ADDRESSES.solana.BONK, // BONK + ADDRESSES.solana.USDC, // USDC 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' // JUP ] }, diff --git a/projects/benqi-staked-avax/index.js b/projects/benqi-staked-avax/index.js index fd2468f2231..a2069f50629 100644 --- a/projects/benqi-staked-avax/index.js +++ b/projects/benqi-staked-avax/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const savaxAbi = require("./savax.json"); -const SAVAX = "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"; +const SAVAX = ADDRESSES.avax.SAVAX; const WAVAX = ADDRESSES.avax.WAVAX; const transformAddress = (addr) => `avax:${addr}`; diff --git a/projects/betafinance/index.js b/projects/betafinance/index.js index 32b199a0467..93005f6d264 100644 --- a/projects/betafinance/index.js +++ b/projects/betafinance/index.js @@ -50,7 +50,7 @@ const config = { { underlying: ADDRESSES.avax.USDC_e, bToken: '0xaAAD5237FAcD7e61548dc1DE71B26D3431562bf3' }, { underlying: ADDRESSES.avax.DAI, bToken: '0x2D29dcdBc64658EFd33565731cAFbA48c95Eae76' }, { underlying: ADDRESSES.avax.WETH_e, bToken: '0xd62eFF4221f83f05843AB1F645F7C0b4E38A6b49' }, - { underlying: '0x50b7545627a5162F82A992c33b87aDc75187B218', bToken: '0x8aEE941d2043d4Ee9327394c810a29c97d13DE52' }, + { underlying: ADDRESSES.avax.WBTC_e, bToken: '0x8aEE941d2043d4Ee9327394c810a29c97d13DE52' }, { underlying: '0xCE1bFFBD5374Dac86a2893119683F4911a2F7814', bToken: '0x7a7426B0d4b95952F81b170a09A26F9eaAC949C2' }, { underlying: '0x511D35c52a3C244E7b8bd92c0C297755FbD89212', bToken: '0x5837dE0D87Ec40f05E79a27cBa7Dc7Ff96da5980' }, { underlying: '0x2147EFFF675e4A4eE1C2f918d181cDBd7a8E208f', bToken: '0x4da7A2Cf132E12cd4D3fD2C8a30A076f9e08d7A7' }, diff --git a/projects/bifi/index.js b/projects/bifi/index.js index f3efae10a71..7adad78d2d1 100644 --- a/projects/bifi/index.js +++ b/projects/bifi/index.js @@ -30,7 +30,7 @@ const chainPools = { 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: '0x50b7545627a5162F82A992c33b87aDc75187B218' }, + wbtc: { pool: '0xc4D1e935F02A44D44985E6b1C0eE1ee616fC146a', token: ADDRESSES.avax.WBTC_e }, }, klaytn: { null: { pool: '0x829fCFb6A6EeA9d14eb4C14FaC5B29874BdBaD13', token: ADDRESSES.null, }, diff --git a/projects/bounce-bit/index.js b/projects/bounce-bit/index.js index 1fede078a92..8ee4a580e4b 100644 --- a/projects/bounce-bit/index.js +++ b/projects/bounce-bit/index.js @@ -12,7 +12,7 @@ module.exports = { bsc: { tvl: sumTokensExport({ owners: ["0x53C58E975f3F72162Fc0509b9742c9b55E24a599", "0x9d0e151414aAA3913f22ac95B9c6377Ea7826F08"], - tokens: [ADDRESSES.bsc.BTCB, '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409'] // BTCB FDUSD + tokens: [ADDRESSES.bsc.BTCB, ADDRESSES.ethereum.FDUSD] // BTCB FDUSD }), }, tron: { diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index a27b7103547..ad8ccc657d8 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -4,7 +4,7 @@ const sui = require("../helper/chain/sui"); const MAINNET_PROTOCOL_ID = "0x9e3dab13212b27f5434416939db5dec6a319d15b89a84fd074d03ece6350d3df"; const BUCK = - "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK"; + ADDRESSES.sui.BUCK; const USDC = ADDRESSES.sui.USDC; const USDT = ADDRESSES.sui.USDT; diff --git a/projects/cakedao/index.js b/projects/cakedao/index.js index 79e24bb2592..a3d62a26f92 100644 --- a/projects/cakedao/index.js +++ b/projects/cakedao/index.js @@ -9,7 +9,7 @@ const treasuryTokens = [ ["0x130966628846bfd36ff31a822705796e8cb8c18d", false], // MIM [ADDRESSES.avax.WAVAX, false], // WAVAX, [ADDRESSES.avax.USDT_e, false], // USDT - ["0x50b7545627a5162f82a992c33b87adc75187b218", false], // WBTC + [ADDRESSES.avax.WBTC_e, false], // WBTC [ADDRESSES.avax.WETH_e, false], // WETH ["0x84d2fe6adace63407f4b6bd91ab9f782ba3cb420", true], // CAKE-MIM JLP ["0xb8df8111a74e5fd62b13dbbe59ddeb343fc91d4a", true] // CAKE-WAVAX JLP diff --git a/projects/celerbridge/index.js b/projects/celerbridge/index.js index e7b2fcbed43..44845993238 100644 --- a/projects/celerbridge/index.js +++ b/projects/celerbridge/index.js @@ -133,7 +133,7 @@ const liquidityBridgeTokens = [ { // WBTC arbitrum: ADDRESSES.arbitrum.WBTC, - avax: "0x50b7545627a5162F82A992c33b87aDc75187B218", + avax: ADDRESSES.avax.WBTC_e, ethereum: ADDRESSES.ethereum.WBTC, fantom: "0x321162Cd933E2Be498Cd2267a90534A804051b11", polygon: ADDRESSES.polygon.WBTC, diff --git a/projects/cian-automation/index.js b/projects/cian-automation/index.js index 394e3442273..41f6a57fad1 100644 --- a/projects/cian-automation/index.js +++ b/projects/cian-automation/index.js @@ -17,7 +17,7 @@ const config = { factories: [ { factory: '0x1cb9cf5439dced63d8f5b7f1a5bf9834d8076a9a', fromBlock: 34735173, }, ], - tokens: [ADDRESSES.null, ADDRESSES.polygon.WMATIC, ADDRESSES.polygon.MATICX, '0xfa68fb4628dff1028cfec22b4162fccd0d45efb6', '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x80ca0d8c38d2e2bcbab66aa1648bd1c7160500fe'] + tokens: [ADDRESSES.null, ADDRESSES.polygon.WMATIC, ADDRESSES.polygon.MATICX, ADDRESSES.polygon.MATICX, '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x80ca0d8c38d2e2bcbab66aa1648bd1c7160500fe'] }, avax: { factories: [ diff --git a/projects/defiverse/index.js b/projects/defiverse/index.js index b4f1bdfbf49..1f08d250599 100644 --- a/projects/defiverse/index.js +++ b/projects/defiverse/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const VAULT_CONTRACT = "0x2FA699664752B34E90A414A42D62D7A8b2702B85"; const TOKENS = [ - "0x7c6b91D9Be155A6Db01f749217d76fF02A7227F2", - "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea", - "0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351", + ADDRESSES.defiverse.USDC, + ADDRESSES.base.DAI, + ADDRESSES.defiverse.ETH, + ADDRESSES.defiverse.OAS, ]; async function tvl(_, _b, _cb, { api }) { diff --git a/projects/dogewhale/index.js b/projects/dogewhale/index.js index dd80d5b6470..bb657c16bb2 100644 --- a/projects/dogewhale/index.js +++ b/projects/dogewhale/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const DW_TOKEN_CONTRACT = '0x43adc41cf63666ebb1938b11256f0ea3f16e6932'; const DOGE = '0xbA2aE424d960c26247Dd6c32edC70B295c744C43'; const SHIB = '0x2859e4544C4bB03966803b044A93563Bd2D0DD4D'; const FLOKI = '0xfb5B838b6cfEEdC2873aB27866079AC55363D37E'; -const USDT = '0x55d398326f99059fF775485246999027B3197955'; +const USDT = ADDRESSES.bsc.USDT; const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { diff --git a/projects/ferro/index.js b/projects/ferro/index.js index 66035407636..c53f3ae1e8b 100644 --- a/projects/ferro/index.js +++ b/projects/ferro/index.js @@ -29,7 +29,7 @@ const tokens = { SWAP_LCRO_WCRO_ADDRESSES, ], // LATOM-ATOM - '0xb888d8dd1733d72681b30c00ee76bde93ae7aa93': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], + [ADDRESSES.cronos.ATOM]: ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], '0xac974ee7fc5d083112c809ccb3fce4a4f385750d': ['0x5FA9412C2563c0B13CD9F96F0bd1A971F8eBdF96'], '0xD42E078ceA2bE8D03cd9dFEcC1f0d28915Edea78': ['0x6A41732eaDBE15e9c9FcA2cfF1299c6321AA104B'], }; diff --git a/projects/fluid/index.js b/projects/fluid/index.js index 4b88a89e256..090c522604f 100644 --- a/projects/fluid/index.js +++ b/projects/fluid/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') module.exports={ ethereum:{ tvl: async (_, _b, _cb, { api, }) => { const tokens = await api.call({ target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", abi: "function listedTokens() public view returns (address[] memory listedTokens_)" }) return api.sumTokens({ owner: "0x52aa899454998be5b000ad077a46bbe360f4e497", tokens: [ - "0x0000000000000000000000000000000000000000", + ADDRESSES.null, ...tokens.filter(t=>t.toLowerCase()!=="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") ] }) }, diff --git a/projects/gasline/index.js b/projects/gasline/index.js index e4ea19c8fcd..5122ff53dd6 100644 --- a/projects/gasline/index.js +++ b/projects/gasline/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); const { sumTokensExport } = require("../helper/unwrapLPs"); const config = { - blast: { gasline: '0xD5400cAc1D76f29bBb8Daef9824317Aaf9d3C0a1', gas: '0x5d61c3f602579873Bb58d8DF53a9d82942de5267', weth: '0x4300000000000000000000000000000000000004', }, - bsc: { gasline: '0x35138Ddfa39e00C642a483d5761C340E7b954F94', gas: '0xd0245a9fe3D8366e8c019ce9CE4cAdFF0cEabB76', weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', }, + blast: { gasline: '0xD5400cAc1D76f29bBb8Daef9824317Aaf9d3C0a1', gas: '0x5d61c3f602579873Bb58d8DF53a9d82942de5267', weth: ADDRESSES.blast.WETH, }, + bsc: { gasline: '0x35138Ddfa39e00C642a483d5761C340E7b954F94', gas: '0xd0245a9fe3D8366e8c019ce9CE4cAdFF0cEabB76', weth: ADDRESSES.bsc.WBNB, }, } Object.keys(config).forEach(chain => { diff --git a/projects/gogopool/index.js b/projects/gogopool/index.js index 20826fc6133..e96804654d9 100644 --- a/projects/gogopool/index.js +++ b/projects/gogopool/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const GGAVAX_CONTRACT = '0xA25EaF2906FA1a3a13EdAc9B9657108Af7B703e3'; const GGP_STAKING_CONTRACT = '0xB6dDbf75e2F0C7FC363B47B84b5C03959526AecB'; const MINIPOOL_MANAGER_CONTRACT = '0xb84fA022c7fE1CE3a1F94C49f2F13236C3d1Ed08'; @@ -6,7 +7,7 @@ const ggAVAXTotalAssetsAbi = "function totalAssets() view returns (uint256)"; const AvaxInMinipoolsABI = "function getTotalAVAXLiquidStakerAmt() view returns (uint256)"; const GGPStakedAbi = "function getTotalGGPStake() view returns (uint256)"; -const wavax = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"; +const wavax = ADDRESSES.avax.WAVAX; const ggp = "0x69260B9483F9871ca57f81A90D91E2F96c2Cd11d"; async function tvl(timestamp, block, chainBlocks, { api }) { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7ca123b13e4..aff089e8b4c 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -41,7 +41,7 @@ const fixBalancesTokens = { "0xBD0adB3Ee21e0A75D3021384177238883D69e883": { coingeckoId: "ordinals", decimals: 18 }, }, astrzk: { - '0xe9cc37904875b459fa5d0fe37680d36f1ed55e38': { coingeckoId: "ethereum", decimals: 18 }, + [ADDRESSES.astarzk.WETH]: { coingeckoId: "ethereum", decimals: 18 }, }, inevm: { "0x97423a68bae94b5de52d767a17abcc54c157c0e5": { coingeckoId: "tether", decimals: 6 }, diff --git a/projects/kuufinance/index.js b/projects/kuufinance/index.js index 6461825496e..9d66382759c 100644 --- a/projects/kuufinance/index.js +++ b/projects/kuufinance/index.js @@ -15,7 +15,7 @@ module.exports = { tokens: [ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', ADDRESSES.avax.WETH_e, - '0x50b7545627a5162F82A992c33b87aDc75187B218', + ADDRESSES.avax.WBTC_e, ADDRESSES.avax.USDT_e, ADDRESSES.avax.DAI, '0x5947BB275c521040051D82396192181b413227A3' diff --git a/projects/maximizer/index.js b/projects/maximizer/index.js index 1672dfe0004..ba02b163b04 100644 --- a/projects/maximizer/index.js +++ b/projects/maximizer/index.js @@ -31,7 +31,7 @@ const VEPTP = "0x5857019c749147EEE22b1Fe63500F237F3c1B692"; const MORE = "0xd9D90f882CDdD6063959A9d837B05Cb748718A05"; const MONEY = "0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948"; const HEC = "0xC7f4debC8072e23fe9259A5C0398326d8EfB7f5c"; -const SAVAX = "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"; +const SAVAX = ADDRESSES.avax.SAVAX; const MAXI_DAI_JLP = "0xfBDC4aa69114AA11Fae65E858e92DC5D013b2EA9"; const MAXI_WAVAX_PGL = "0xbb700450811a30c5ee0dB80925Cf1BA53dBBd60A"; const PNG_WAVAX_PGL = "0xd7538cABBf8605BdE1f4901B47B8D42c61DE0367"; diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index b1253d63157..de2e51ef8fc 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { sumTokensExport: sumBRC20TokensExport } = require("../helper/chain/brc20"); const { sumTokensExport } = require('../helper/sumTokens'); @@ -35,14 +36,14 @@ module.exports = { tvl: sumTokensExport({ ownerTokens: [ [["0x7122985656e38BDC0302Db86685bb972b145bD3C"], "0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5",], //sttone - [["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183", //usdc + [[ADDRESSES.ethereum.USDC], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183", //usdc ]] }), }, arbitrum: { tvl: sumTokensExport({ owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], - tokens: ["0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] //usdc and usdt + tokens: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE] //usdc and usdt }), }, zkfair: { diff --git a/projects/moremoney/StrategyMetadata.js b/projects/moremoney/StrategyMetadata.js index 72c5f8ea288..8c81eb01e94 100644 --- a/projects/moremoney/StrategyMetadata.js +++ b/projects/moremoney/StrategyMetadata.js @@ -12,7 +12,7 @@ async function useStrategyMetadata(block) { curAddresses.YieldYakStrategy2, [ADDRESSES.avax.BTC_b]: curAddresses.YieldYakStrategy2, - ["0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"]: + [ADDRESSES.avax.SAVAX]: curAddresses.YieldYakStrategy2, [ADDRESSES.avax.WAVAX]: curAddresses.YieldYakAVAXStrategy2, @@ -30,7 +30,7 @@ async function useStrategyMetadata(block) { strats.push(curAddresses.OldYieldYakAVAXStrategy2); // tokens.push(ADDRESSES.avax.BTC_b); // strats.push(curAddresses.AltYieldYakStrategy2); - // tokens.push("0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"); + // tokens.push(ADDRESSES.avax.SAVAX); // strats.push(curAddresses.AltYieldYakStrategy2); // tokens.push("0xF7D9281e8e363584973F946201b82ba72C965D27"); // strats.push(curAddresses.YieldYakStrategy2); diff --git a/projects/nereus/index.js b/projects/nereus/index.js index 12b134729fa..de31c526bf2 100644 --- a/projects/nereus/index.js +++ b/projects/nereus/index.js @@ -4,7 +4,7 @@ const sdk = require("@defillama/sdk"); const tokenAndContract = [ [ADDRESSES.avax.WAVAX, "0x6d9336ce867606Dcb1aeC02C8Ef0EDF0FF22d247"], // nWAVAX [ADDRESSES.avax.WETH_e, "0x92F79834fC52f0Aa328f991C91185e081ea4f957"], // nWETH - ["0x50b7545627a5162F82A992c33b87aDc75187B218", "0x3D8231cE419886a5D400dD5a168C8917aEeAB25C"], // nWBTC + [ADDRESSES.avax.WBTC_e, "0x3D8231cE419886a5D400dD5a168C8917aEeAB25C"], // nWBTC [ADDRESSES.avax.DAI, "0x6Ce0e6e81Dc7A5D997E6169cD5f8C982DA83e49e"], // nDAI [ADDRESSES.avax.USDT_e, "0x29F511e6f62118b27D9B47d1AcD6fDd5cD0B4C64"], // nUSDT [ADDRESSES.avax.USDC_e, "0x723191E7F8D87eC22E682c13Df504E5E3432e53E"] // nUSDC diff --git a/projects/ngad-artemis/index.js b/projects/ngad-artemis/index.js index d3c1049d43f..bb179335a85 100644 --- a/projects/ngad-artemis/index.js +++ b/projects/ngad-artemis/index.js @@ -1,10 +1,11 @@ +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('0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', depositedMetis); + api.add(ADDRESSES.metis.Metis, depositedMetis); } module.exports = { diff --git a/projects/nostra-staked-strk/index.js b/projects/nostra-staked-strk/index.js index 502505ebf20..36f88b4f1db 100644 --- a/projects/nostra-staked-strk/index.js +++ b/projects/nostra-staked-strk/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { call } = require("../helper/chain/starknet"); const { stakedStrkAbi } = require("./abi"); const STAKED_STRK = "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2"; const STRK = - "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d"; + ADDRESSES.starknet.STRK; async function tvl(_, _1, _2, { api }) { const totalAssets = await call({ diff --git a/projects/omni/index.js b/projects/omni/index.js index f2ab82d7443..a62748d5467 100644 --- a/projects/omni/index.js +++ b/projects/omni/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { @@ -14,13 +15,13 @@ const config = { ], moonbeam: [ "0xFFFfffFf15e1b7E3dF971DD813Bc394deB899aBf", - "0xFfFfFFff99dABE1a8De0EA22bAa6FD48fdE96F6c", - "0xFffffFffCd0aD0EA6576B7b285295c85E94cf4c1", + ADDRESSES.moonbeam.VGLMR, + ADDRESSES.moonbeam.FIL, ], moonriver: [ - "0xFFffffff3646A00f78caDf8883c5A2791BfCDdc4", - "0xFFffffFFC6DEec7Fc8B11A2C8ddE9a59F8c62EFe", - "0xfFfffFfF98e37bF6a393504b5aDC5B53B4D0ba11", + ADDRESSES.moonriver.BNC, + ADDRESSES.moonriver.KSM, + ADDRESSES.moonriver.MOVR, ], } diff --git a/projects/orcadao/index.js b/projects/orcadao/index.js index 2ab76ac03e6..8a030aa2ce6 100644 --- a/projects/orcadao/index.js +++ b/projects/orcadao/index.js @@ -30,18 +30,18 @@ const banksAndCollateral = [ ["0x0f7f48d4b66bf5a53d4f21fa6ffca45f70cef770","0x18419976Ba05dd9cE44544B8d91590704aFA4a29"], // YAK AAVE WBTC ["0xbf5bffbf7d94d3b29abe6eb20089b8a9e3d229f7","0xC09caDDA753c54292BeB1D10429bD175556b8b5E"], // YAK QI [ADDRESSES.avax.WETH_e,"0x4805D6563B36a02C5012c11d6e15552f50066d58"], // WETH - ["0x50b7545627a5162f82a992c33b87adc75187b218","0x1eA60d781376C06693dFB21d7e5951cAEc13F7E4"], // WBTC + [ADDRESSES.avax.WBTC_e,"0x1eA60d781376C06693dFB21d7e5951cAEc13F7E4"], // WBTC ] const translateToken = { "0x957ca4a4aa7cdc866cf430bb140753f04e273bc0": "avax:" + ADDRESSES.avax.WAVAX, - "0x0f7f48d4b66bf5a53d4f21fa6ffca45f70cef770": "avax:0x50b7545627a5162f82a992c33b87adc75187b218", + "0x0f7f48d4b66bf5a53d4f21fa6ffca45f70cef770": "avax:" + ADDRESSES.avax.WBTC_e, "0xb634a71a54d3382ff6896eb22244b4a4e54c0a82": "avax:" + ADDRESSES.avax.WETH_e, "0x3a91a592a06390ca7884c4d9dd4cba2b4b7f36d1": "avax:" + ADDRESSES.avax.JOE, "0x8b414448de8b609e96bd63dcf2a8adbd5ddf7fdd": "avax:0x8729438eb15e2c8b576fcc6aecda6a148776c0f5", "0x4084f32a91f4d8636ca08386efe70c6e302f1d84": "avax:0x5947bb275c521040051d82396192181b413227a3", "0x9669fe1ea0d8883661289461b90a10b71ae400ee": "avax:" + ADDRESSES.avax.DAI, - "0x330cc45c8f60fef7f9d271a7512542b3d201a48d": "avax:0x50b7545627a5162f82a992c33b87adc75187b218", + "0x330cc45c8f60fef7f9d271a7512542b3d201a48d": "avax:" + ADDRESSES.avax.WBTC_e, "0x07b0e11d80ccf75cb390c9be6c27f329c119095a": "avax:" + ADDRESSES.avax.USDt, "0x0eac97a78a93b75549d49145df41dbe9cd520874": "avax:" + ADDRESSES.avax.USDC_e, "0x7d2d076000611e44740d636843384412399e31b9": "avax:" + ADDRESSES.avax.WETH_e, diff --git a/projects/piggybankdao/index.js b/projects/piggybankdao/index.js index 63909b5db35..35ae2760328 100644 --- a/projects/piggybankdao/index.js +++ b/projects/piggybankdao/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const {sumTokensAndLPsSharedOwners, sumLPWithOnlyOneToken} = require('../helper/unwrapLPs') const { stakingPricedLP } = require('../helper/staking') @@ -17,7 +18,7 @@ async function avaxTvl(time, ethBlock, chainBlocks){ await sumLPWithOnlyOneToken(balances, "0xd3a6eebbe6f6d9197a7fc2aaaf94d8b0ec51f8a8", treasury, MIM, chainBlocks.avax, "avax", transform) await sumTokensAndLPsSharedOwners(balances, [ [MIM, false], - ["0x50b7545627a5162f82a992c33b87adc75187b218", false] + [ADDRESSES.avax.WBTC_e, false] ], [treasury], chainBlocks.avax, "avax", transform) return balances } diff --git a/projects/planet-finance/index.js b/projects/planet-finance/index.js index d8f99469526..594294f87dd 100644 --- a/projects/planet-finance/index.js +++ b/projects/planet-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const abiV3 = require("./abiV3.json"); const abiNew = require("./abiNew.json"); @@ -12,7 +13,7 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { 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() !== "0x0000000000000000000000000000000000000000".toLowerCase()) + 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 }) diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js index 3f997b1e944..8525d89f5aa 100644 --- a/projects/quickswap/index.js +++ b/projects/quickswap/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const { staking } = require('../helper/staking'); @@ -6,7 +7,7 @@ module.exports = { misrepresentedTokens: true, timetravel: true, polygon:{ - staking: staking("0x958d208Cdf087843e9AD98d23823d32E17d723A1", "0xB5C064F955D8e7F38fE0460C556a72987494eE17"), + staking: staking("0x958d208Cdf087843e9AD98d23823d32E17d723A1", ADDRESSES.polygon.QUICK), tvl: getChainTvl({ polygon: 'https://api.thegraph.com/subgraphs/name/sameepsi/quickswap06' })('polygon') diff --git a/projects/relayChain/index.js b/projects/relayChain/index.js index 1e0fad1ea19..b2ac00eb584 100644 --- a/projects/relayChain/index.js +++ b/projects/relayChain/index.js @@ -25,7 +25,7 @@ const relayBsc = "0xE338D4250A4d959F88Ff8789EaaE8c32700BD175"; const daiAvax = ADDRESSES.avax.DAI; const wavax = ADDRESSES.avax.WAVAX; -const wbtcAvax = "0x50b7545627a5162F82A992c33b87aDc75187B218"; +const wbtcAvax = ADDRESSES.avax.WBTC_e; const usdcAvax = ADDRESSES.avax.USDC_e; const usdtAvax = ADDRESSES.avax.USDT_e; diff --git a/projects/ribbon/evm.js b/projects/ribbon/evm.js index 1d8c5385ea7..c2260902c07 100644 --- a/projects/ribbon/evm.js +++ b/projects/ribbon/evm.js @@ -56,7 +56,7 @@ const uni = ADDRESSES.ethereum.UNI; // Avalanche Assets const wavax = ADDRESSES.avax.WAVAX; -const savax = "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE"; +const savax = ADDRESSES.avax.SAVAX; const usdce = ADDRESSES.avax.USDC_e; async function addVaults({ balances, chain, vaults, block, transformAddress = a => a }) { diff --git a/projects/rsk-bridge/index.js b/projects/rsk-bridge/index.js index cc76832abf6..2fb151a1b0a 100644 --- a/projects/rsk-bridge/index.js +++ b/projects/rsk-bridge/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { @@ -17,7 +18,7 @@ module.exports = { "0xFF9EA341d9ea91CB7c54342354377f5104Fd403f", "0x4991516DF6053121121274397A8C1DAD608bc95B", "0x1BDa44fda023F2af8280a16FD1b01D1A493BA6c4", - "0xEf213441a85DF4d7acBdAe0Cf78004E1e486BB96", + ADDRESSES.rsk.rUSDT, "0x75c6e15702ebAcd51177154ff383DF9695E1B1DA", "0x9C3a5F8d686fadE293c0Ce989A62a34408C4e307", "0xe506F698B31a66049bD4653Ed934e7A07Cbc5549", diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js index ae499eaafc1..2ea7939c7c4 100644 --- a/projects/sailingprotocol/index.js +++ b/projects/sailingprotocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const axios = require('axios'); @@ -93,7 +94,7 @@ async function tvl(_0, blockNumber, _2, { api }) { ); const tickerPrice = tickerPricing.data.at(-1)[1]; api.add( - '0x919C1c267BC06a7039e03fcc2eF738525769109c', // usdtKavaAddress + ADDRESSES.kava.USDt, // usdtKavaAddress tokenTotalSupply * tickerPrice * (1e6 / 1e18) ); } diff --git a/projects/satori/index.js b/projects/satori/index.js index 1c492e1a526..d0da28bcc75 100644 --- a/projects/satori/index.js +++ b/projects/satori/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokensExport } = require("../helper/unwrapLPs"); -const USDT_TOKEN_CONTRACT = "0x1E4a5963aBFD975d8c9021ce480b42188849D41d"; +const USDT_TOKEN_CONTRACT = ADDRESSES.astarzk.USDT; const WALLET_ADDR = [ "0x62e724cB4d6C6C7317e2FADe4A03001Fe7856940", "0xA59a2365D555b24491B19A5093D3c99b119c2aBb", diff --git a/projects/shui/index.js b/projects/shui/index.js index d223e962fb1..87ffbe961e7 100644 --- a/projects/shui/index.js +++ b/projects/shui/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const SCFX_TokenAddress = "0x1858a8d367e69cd9E23d0Da4169885a47F05f1bE"; -const WCFX = "0x14b2d3bc65e74dae1030eafd8ac30c533c976a9b"; +const WCFX = ADDRESSES.conflux.WCFX; module.exports = { conflux: { diff --git a/projects/soulswap/index.js b/projects/soulswap/index.js index c4f86c5b246..3b255525b2d 100644 --- a/projects/soulswap/index.js +++ b/projects/soulswap/index.js @@ -16,7 +16,7 @@ const farm_avax = '0xB1e330401c920077Ddf157AbA5594238d36b54B1' const soul_avax = '0x11d6DD25c1695764e64F439E32cc7746f3945543' const wavax_avax = ADDRESSES.avax.WAVAX const usdc_avax = ADDRESSES.avax.USDC -const wbtc_avax = '0x50b7545627a5162F82A992c33b87aDc75187B218' +const wbtc_avax = ADDRESSES.avax.WBTC_e const weth_avax = ADDRESSES.avax.WETH_e const wl_fantom = [ usdc_fantom, soul_fantom, rndm_fantom, wbtc_fantom ] diff --git a/projects/soyfinance/index.js b/projects/soyfinance/index.js index 4bc55bc7718..9272c831f9d 100644 --- a/projects/soyfinance/index.js +++ b/projects/soyfinance/index.js @@ -9,7 +9,7 @@ module.exports = { tvl: getUniTVL({ factory: '0x9CC7C769eA3B37F1Af0Ad642A268b80dc80754c5', useDefaultCoreAssets: true, - blacklistedTokens: ["0x9fae2529863bd691b4a7171bdfcf33c7ebb10a65"] + blacklistedTokens: [ADDRESSES.callisto.SOY] }) }, ethereumclassic: { diff --git a/projects/spacebar/index.js b/projects/spacebar/index.js index 93c4eaff1f6..8b265fd3097 100644 --- a/projects/spacebar/index.js +++ b/projects/spacebar/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, } = require("graphql-request") const { getLogs } = require('../helper/cache/getLogs') @@ -16,7 +17,7 @@ const tvlQuery = ` // const response = await request(graphUrl, tvlQuery) // const tvlAmount = response.totalValueLocked.amount // return { -// "blast:0x0000000000000000000000000000000000000000": +// ["blast:" + ADDRESSES.null]: // tvlAmount.toString(), // } // } diff --git a/projects/stabilizefi/index.js b/projects/stabilizefi/index.js index 5f8a27d7eaa..9e5ddf9ba22 100644 --- a/projects/stabilizefi/index.js +++ b/projects/stabilizefi/index.js @@ -13,7 +13,7 @@ const LP_ADDRESS_SET_USDC = "0x31fa3838788A07607D95C9c640D041eAec649f50" // system coll const AVAX_TROVE_MANAGER_ADDRESS = "0x7551A127C41C85E1412EfE263Cadb49900b0668C"; const ETH_TROVE_MANAGER_ADDRESS = "0x7837C2dB2d004eB10E608d95B2Efe8cb57fd40b4"; -const BTC_ADDRESS = '0x50b7545627a5162f82a992c33b87adc75187b218'; +const BTC_ADDRESS = ADDRESSES.avax.WBTC_e; const BTC_TROVE_MANAGER_ADDRESS = "0x56c194F1fB30F8cdd49E7351fC9C67d8C762a86F"; const DAI_TROVE_MANAGER_ADDRESS = "0x54b35c002468a5Cc2BD1428C011857d26463ecbC"; diff --git a/projects/steakHut-lb/index.js b/projects/steakHut-lb/index.js index 3c2c82990e8..025ec56809d 100644 --- a/projects/steakHut-lb/index.js +++ b/projects/steakHut-lb/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const abi = require('./abi.json') const _vaults = { @@ -55,7 +56,7 @@ async function tvl(_, block, _1, { api }) { // hJOE tvl const HJOE_ADDRESS = '0xe7250b05bd8dee615ecc681eda1196add5156f2b' - const JOE_ADDRESS = '0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd' + const JOE_ADDRESS = ADDRESSES.avax.JOE api.add(JOE_ADDRESS, await api.call({ target: HJOE_ADDRESS, abi: 'erc20:totalSupply' })) diff --git a/projects/synapse/config.js b/projects/synapse/config.js index e8e1fe143c6..d0b9b8c9418 100644 --- a/projects/synapse/config.js +++ b/projects/synapse/config.js @@ -449,14 +449,14 @@ module.exports = { { pool: '0xa4bd1AAD7cF04567c10f38FC4355E91bba32aC9c', // Stableswap tokens: [ - '0x4300000000000000000000000000000000000003', // USDB + ADDRESSES.blast.USDB, // USDB // '0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0', // nUSD ] }, { pool: '0x999fcd13C54B26E02a6Ccd185f71550b3a4641c0', // ETH pool tokens: [ - '0x4300000000000000000000000000000000000004', // WETH + ADDRESSES.blast.WETH, // WETH // '0xce971282fAAc9faBcF121944956da7142cccC855', // nETH ] }, diff --git a/projects/treasury/aave.js b/projects/treasury/aave.js index 5eb7164bfc6..e5bb1e371bc 100644 --- a/projects/treasury/aave.js +++ b/projects/treasury/aave.js @@ -202,7 +202,7 @@ module.exports = treasuryExports({ ADDRESSES.avax.WAVAX, '0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B', // avWAVAX '0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97', // aAvaWAVAX - '0x50b7545627a5162f82a992c33b87adc75187b218', // WBTC + ADDRESSES.avax.WBTC_e, // WBTC '0x686bEF2417b6Dc32C50a3cBfbCC3bb60E1e9a15D', // aWBTC '0x078f358208685046a11C85e8ad32895DED33A249', // aAvaWBTC ADDRESSES.avax.WETH_e, @@ -214,7 +214,7 @@ module.exports = treasuryExports({ '0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA', // aAvaFRAX '0x5c49b268c9841aff1cc3b0a418ff5c3442ee3f3b', // MAI '0x8Eb270e296023E9D92081fdF967dDd7878724424', // aAvaMAI - '0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be', // sAVAX + ADDRESSES.avax.SAVAX, // sAVAX '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aAvaSAVAX ADDRESSES.avax.BTC_b, '0x8ffDf2DE812095b1D19CB146E4c004587C0A0692', // aAvaBTC.b diff --git a/projects/treasury/balancer.js b/projects/treasury/balancer.js index 516dddb977a..a0327c28f33 100644 --- a/projects/treasury/balancer.js +++ b/projects/treasury/balancer.js @@ -29,11 +29,11 @@ const ethTokens = [ ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.GNO, - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH + ADDRESSES.ethereum.STETH, // stETH "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", // GTC - "0x5aFE3855358E112B5647B952709E6165e1c1eEEe", // SAFE + ADDRESSES.ethereum.SAFE, // SAFE "0x4da27a545c0c5B758a6BA100e3a049001de870f5", // stAAVE - "0x83F20F44975D03b1b09e64809B757c47f942BEeA", // sDAI + ADDRESSES.ethereum.SDAI, // sDAI "0xc3d688B66703497DAA19211EEdff47f25384cdc3" // Compound USDC ]; diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 63b38aa2c61..4d655ba584f 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -20,8 +20,8 @@ const mTreasuryL2FF1 = "0xcD9Dab9Fa5B55EE4569EdC402d3206123B1285F4" const BIT = "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5"; const MNT = "0x3c3a81e81dc49a522a592e7622a7e711c06bf354" -const MNTMantle = "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000" -const wrappedmantleonmantle = "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8" +const MNTMantle = ADDRESSES.metis.Metis +const wrappedmantleonmantle = ADDRESSES.mantle.WMNT const ecspWallets = [ '0x87c185bEFFfb36a42b741d10601A007e997a63bA', @@ -84,9 +84,9 @@ const tokenTreasuries = treasuryExports({ nullAddress, "0x5bE26527e817998A7206475496fDE1E68957c5A6", //ondo usd "0xcda86a272531e8640cd7f1a92c01839911b90bb0", //mantle staked eth - "0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", //eth - "0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9", //usdc - "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE", //tether + ADDRESSES.mantle.WETH, //eth + ADDRESSES.mantle.USDC, //usdc + ADDRESSES.mantle.USDT, //tether "0xf52b354ffdb323e0667e87a0136040e3e4d9df33", //lp meth ], owners: [mTreasuryL2, mTreasuryL2RB2, mTreasuryL2LPM1, mTreasuryL2FF1, ...ecspWallets], diff --git a/projects/treasury/platypus.js b/projects/treasury/platypus.js index 96f5b70c33a..a6a13f50fa5 100644 --- a/projects/treasury/platypus.js +++ b/projects/treasury/platypus.js @@ -6,7 +6,7 @@ const treasury = "0x068e297e8FF74115C9E1C4b5B83B700FdA5aFdEB"; const tokens = [ nullAddress, ADDRESSES.avax.DAI, // DAI - "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE", // sAVAX + ADDRESSES.avax.SAVAX, // sAVAX ADDRESSES.avax.USDC, // USDC ADDRESSES.avax.USDT_e, // USDT.e ADDRESSES.polygon.BUSD, // BUSD diff --git a/projects/treasury/velodrome.js b/projects/treasury/velodrome.js index 36a7ae4f263..84ce8197a5e 100644 --- a/projects/treasury/velodrome.js +++ b/projects/treasury/velodrome.js @@ -25,7 +25,7 @@ const tokens = [ "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D", // rETH "0xE3AB61371ECc88534C522922a026f2296116C109", // SPELL "0xcB59a0A753fDB7491d5F3D794316F1adE197B21E", // TUSD - "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", // wstETH + ADDRESSES.optimism.WSTETH, // wstETH ]; const ownTokens = [ diff --git a/projects/treasury/wand.js b/projects/treasury/wand.js index 9cee1189aac..663d9889f28 100644 --- a/projects/treasury/wand.js +++ b/projects/treasury/wand.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { treasuryExports } = require("../helper/treasury") const config = { @@ -6,8 +7,8 @@ const config = { "0x462bd2d3c020f6986c98160bc4e189954f49634b", // treasury ], tokens: [ - '0x0000000000000000000000000000000000000000', // $ETH - '0x4300000000000000000000000000000000000003' // $USDB + ADDRESSES.null, // $ETH + ADDRESSES.blast.USDB // $USDB ], }, } diff --git a/projects/wand/index.js b/projects/wand/index.js index f414e6c1056..9a4023001d2 100644 --- a/projects/wand/index.js +++ b/projects/wand/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { @@ -10,8 +11,8 @@ module.exports = { '0x05c061126A82DC1AfF891b9184c1bC42D380a2ff' // $USDB vault's token pot ], tokens: [ - '0x0000000000000000000000000000000000000000', // $ETH - '0x4300000000000000000000000000000000000003' // $USDB + ADDRESSES.null, // $ETH + ADDRESSES.blast.USDB // $USDB ], }), } diff --git a/projects/wemix-on-kroma/index.js b/projects/wemix-on-kroma/index.js index 2ff05591159..3b49d047838 100644 --- a/projects/wemix-on-kroma/index.js +++ b/projects/wemix-on-kroma/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); -const wemixEContract = '0x3720b1dc2c8dde3bd6cfcf0b593d0a2bbcac856e'; +const wemixEContract = ADDRESSES.kroma.WEMIX; const stakingContract = '0xA5c7992710A94A2ef2e8E910b441bD70385DBAB8' module.exports = { diff --git a/projects/yama-finance/index.js b/projects/yama-finance/index.js index 1c91958269b..d5b775592f4 100644 --- a/projects/yama-finance/index.js +++ b/projects/yama-finance/index.js @@ -27,7 +27,7 @@ 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: '0x1E4a5963aBFD975d8c9021ce480b42188849D41d', fromBlock: 3678493, PSM: '0x896cd0b08AdC23cA7F9e5dAaA82ca6e6Ea8576D5'}, + polygon_zkevm: { CDP: '0x36C4E69aacBd10C28beBe4cAd2188f3809CB5226', USDT: ADDRESSES.astarzk.USDT, fromBlock: 3678493, PSM: '0x896cd0b08AdC23cA7F9e5dAaA82ca6e6Ea8576D5'}, } Object.keys(config).forEach(chain => { diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js index 5d5398fbd12..ceb3f54f9c9 100644 --- a/projects/zircuit/index.js +++ b/projects/zircuit/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const ZIRCUIT_STAKING_CONTRACT = '0xf047ab4c75cebf0eb9ed34ae2c186f3611aeafa6'; @@ -6,12 +7,12 @@ const TOKEN_CONTRACTS = [ '0xa1290d69c65a6fe4df752f95823fae25cb99e5a7', // rsETH '0xbf5495Efe5DB9ce00f80364C8B423567e58d2110', // ezETH '0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549', // lsETH - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // ETH + ADDRESSES.ethereum.WETH, // ETH '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', // rswETH '0x49446A0874197839D15395B908328a74ccc96Bc0', // mstETH '0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10', // mwBETH '0x32bd822d615A3658A68b6fDD30c2fcb2C996D678', // mswETH - '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', // wstETH + ADDRESSES.ethereum.WSTETH, // wstETH '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', // weETH '0xf951E335afb289353dc249e82926178EaC7DEd78' // swETH ]; From b1d81799c117a3d93c6e0c4c78da3b728ca057c4 Mon Sep 17 00:00:00 2001 From: Topleft <87454455+topleft1562@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:58:32 -0500 Subject: [PATCH 0717/2004] Add multiDex per chain (#9365) --- projects/marswap/index.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/projects/marswap/index.js b/projects/marswap/index.js index 4e517949566..c798121331e 100644 --- a/projects/marswap/index.js +++ b/projects/marswap/index.js @@ -1,11 +1,12 @@ const { getUniTVL } = require('../helper/unknownTokens') +const sdk = require('@defillama/sdk') const config = { - bsc: '0xe19165248159B6cB2A2e35bF398581C777C9979A', - ethereum: '0x5e763172d59b3b580af29a1c9fa4ac1cee69c5dd', - shibarium: "0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7", - base: "0xeE42fe6d6Be1eF43701DDAbc417AD22d82C5ecC3", - cronos: "0xD716B78F0002C23190B024fc93C33CF73E30b8A6", + bsc: ['0xe19165248159B6cB2A2e35bF398581C777C9979A'], + ethereum: ['0x5e763172d59b3b580af29a1c9fa4ac1cee69c5dd'], + shibarium: ["0xBe0223f65813C7c82E195B48F8AAaAcb304FbAe7","0xd871a3f5d3bB9c00DDB0cC772690351B9712968D"], + base: ["0xeE42fe6d6Be1eF43701DDAbc417AD22d82C5ecC3"], + cronos: ["0xD716B78F0002C23190B024fc93C33CF73E30b8A6"], } module.exports = { @@ -13,5 +14,5 @@ module.exports = { }; Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true, }) } + module.exports[chain] = { tvl: sdk.util.sumChainTvls(config[chain].map((factory) => getUniTVL({ factory, useDefaultCoreAssets: true, hasStablePools: true, }))) } }) \ No newline at end of file From 8a64ae2d0fd515e473ffa07bb479e12e8a293966 Mon Sep 17 00:00:00 2001 From: Dario Date: Thu, 14 Mar 2024 23:59:16 +0100 Subject: [PATCH 0718/2004] add bsc to brickken (#9364) --- projects/brickken/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/brickken/index.js b/projects/brickken/index.js index e353ea4df86..b1dce2e7a47 100644 --- a/projects/brickken/index.js +++ b/projects/brickken/index.js @@ -27,6 +27,7 @@ module.exports = { const config = { ethereum: { factory: '0x91af681C85Ca98Efc5D69C1B62E6F435030969Db', }, bsc: { factory: '0xCe4529Fe88df480BD777d3e32dfD7032e6C685ff', }, + base: { factory: '0x278D7bdc2451B0Fa4087A68ce084a86cB91D4d83', } } Object.keys(config).forEach(chain => { From c05d2b8c8525ab7e0862ff8b178eb32d0daf4b14 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Fri, 15 Mar 2024 06:59:53 +0800 Subject: [PATCH 0719/2004] feature: add StaPearl as collateral to tvl (#9363) --- projects/bucket-protocol/index.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index ad8ccc657d8..41a692608f8 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -3,8 +3,7 @@ const sui = require("../helper/chain/sui"); const MAINNET_PROTOCOL_ID = "0x9e3dab13212b27f5434416939db5dec6a319d15b89a84fd074d03ece6350d3df"; -const BUCK = - ADDRESSES.sui.BUCK; +const BUCK = ADDRESSES.sui.BUCK; const USDC = ADDRESSES.sui.USDC; const USDT = ADDRESSES.sui.USDT; @@ -48,6 +47,9 @@ const BUCKETUS_PSM = const CETABLE_PSM = "0x6e94fe6910747a30e52addf446f2d7e844f69bf39eced6bed03441e01fa66acd"; +const STAPEARL_PSM = + "0x368b7301b499eded2949f9d0806254144ac368eb7173ec42c36b7db87e9af9a8"; + async function tvl(_, _1, _2, { api }) { const protocolFields = await sui.getDynamicFieldObjects({ parent: MAINNET_PROTOCOL_ID, @@ -84,6 +86,9 @@ async function tvl(_, _1, _2, { api }) { const cetablePSMObj = await sui.getObject(CETABLE_PSM); const cetablePSMAmount = cetablePSMObj.fields.pool; + const stapearlPSMObj = await sui.getObject(STAPEARL_PSM); + const stapearlPSMAmount = stapearlPSMObj.fields.pool; + const bucketList = protocolFields.filter((item) => item.type.includes("Bucket") ); @@ -154,6 +159,11 @@ async function tvl(_, _1, _2, { api }) { 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)); + const halfBucketusAmount = Math.floor(bucketusPSMAmount / 2); api.add(USDC, Math.floor(halfBucketusAmount / 1000)); From 443264fc8a9915c74228917c01fc97d304ea0802 Mon Sep 17 00:00:00 2001 From: Samster91 <37342443+samster91@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:05:39 +0100 Subject: [PATCH 0720/2004] NEW: Idle Ethena tranche (#9374) * NEW: optimism & zkEVM for Idle * FIX: lower case underlying mapping addresses * minor fix * NEW: automatically get Idle vaults from apis * FIX: added hallmarks * NEW: added amphor vaults * NEW: added ethena tranche --------- Co-authored-by: Samster91 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/idle/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/idle/index.js b/projects/idle/index.js index 00486f80f65..99163d21afe 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -41,7 +41,8 @@ const contracts = { // "0xd0DbcD556cA22d3f3c142e9a3220053FD7a247BC", // "0x1f5A97fB665e295303D2F7215bA2160cc5313c8E", // "0x8E0A8A5c1e5B3ac0670Ea5a613bB15724D51Fc37", // Instadapp stETH - "0x9e0c5ee5e4B187Cf18B23745FCF2b6aE66a9B52f" // Amphor wstETH + "0x9e0c5ee5e4B187Cf18B23745FCF2b6aE66a9B52f", // Amphor wstETH + "0x1EB1b47D0d8BCD9D761f52D26FCD90bBa225344C" // Ethena USDe ] }, polygon: { From 1087aa9e2cbce6efec5aab0abd043dfd901f3c44 Mon Sep 17 00:00:00 2001 From: Oleh Kalenyk <80328073+okalenyk@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:05:51 +0200 Subject: [PATCH 0721/2004] *added a v4 for kim-exchange (#9372) --- projects/kim-v4/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/kim-v4/index.js diff --git a/projects/kim-v4/index.js b/projects/kim-v4/index.js new file mode 100644 index 00000000000..22ad8794958 --- /dev/null +++ b/projects/kim-v4/index.js @@ -0,0 +1,9 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + mode: { + factory: '0xB5F00c2C5f8821155D8ed27E31932CFD9DB3C5D5', + fromBlock: 4823915, + isAlgebra: true, + }, +}) From 514f31d0a1496fffd9e15f2fc9705a6470d88df4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:22:04 +0100 Subject: [PATCH 0722/2004] Update dependencies and add new helper function --- package-lock.json | 6 +++--- projects/cian-automation/index.js | 11 ++++++----- projects/helper/unwrapLPs.js | 22 ++++++++++++++-------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index d98d4027d9f..6ea51958b62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.41", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.41.tgz", - "integrity": "sha512-53cAjD+P+gotPGLUMTRqbeL14HEe4zR/t6sYqOIHIKO9dHX6HkCpIgwkjGRoM+lUQwEEkH9QFhfLzeUCZ6+DVQ==", + "version": "5.0.42", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.42.tgz", + "integrity": "sha512-9Iss3LFXIH9KNnjYSOUmN2nEw/Yx1dbRRz76scgStZzTbMlXrrtJ28IwVMWi5Q6uiMS+yJN/SO6eCUFICfcQ5A==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/cian-automation/index.js b/projects/cian-automation/index.js index 41f6a57fad1..134a241b02c 100644 --- a/projects/cian-automation/index.js +++ b/projects/cian-automation/index.js @@ -4,6 +4,7 @@ module.exports = { const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2 } = require('../helper/unwrapLPs') const config = { ethereum: { @@ -17,7 +18,7 @@ const config = { factories: [ { factory: '0x1cb9cf5439dced63d8f5b7f1a5bf9834d8076a9a', fromBlock: 34735173, }, ], - tokens: [ADDRESSES.null, ADDRESSES.polygon.WMATIC, ADDRESSES.polygon.MATICX, ADDRESSES.polygon.MATICX, '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x80ca0d8c38d2e2bcbab66aa1648bd1c7160500fe'] + tokens: [ADDRESSES.null, ADDRESSES.polygon.WMATIC, ADDRESSES.polygon.MATICX, ADDRESSES.polygon.MATICX, '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9', '0x80ca0d8c38d2e2bcbab66aa1648bd1c7160500fe', '0x1d734A02eF1e1f5886e66b0673b71Af5B53ffA94'] }, avax: { factories: [ @@ -25,8 +26,8 @@ const config = { ], tokens: [ ADDRESSES.null, ADDRESSES.avax.WAVAX, ADDRESSES.avax.SAVAX, - '0xF362feA9659cf036792c9cb02f8ff8198E21B4cB','0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', - ] + '0xF362feA9659cf036792c9cb02f8ff8198E21B4cB', '0x4a1c3ad6ed28a636ee1751c69071f6be75deb8b8', '0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', '0x8729438eb15e2c8b576fcc6aecda6a148776c0f5', + ] }, } @@ -51,13 +52,13 @@ Object.keys(config).forEach(chain => { }) owners.push(...subAccounts.map(i => i._newSubAccount)) } - console.log(chain, owners.length, tokens.length) + 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) } - return api.sumTokens({ owners, tokens }) + return sumTokens2({ owners, tokens, api, sumChunkSize: 5000, }) } } }) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 0daad0fb660..62759944681 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -712,7 +712,13 @@ async function sumTokens2({ if (owner) owners.push(owner) tokens = getUniqueAddresses(tokens, chain) owners = getUniqueAddresses(owners, chain) - if (owners.length) tokensAndOwners.push(...tokens.map(t => owners.map(o => [t, o])).flat()) + 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') @@ -735,12 +741,12 @@ async function sumTokens2({ nftTokens.forEach((tokens, i) => ownerTokens.push([[tokens, coreNftTokens].flat(), owners[i]])) } - if(solidlyVeNfts.length) { + if (solidlyVeNfts.length) { await Promise.all( owners.map( - owner => solidlyVeNfts.map(veNftDetails => unwrapSolidlyVeNft({ api, owner, ...veNftDetails })) + owner => solidlyVeNfts.map(veNftDetails => unwrapSolidlyVeNft({ api, owner, ...veNftDetails })) ) - .flat() + .flat() ) } @@ -911,7 +917,7 @@ async function unwrapConvexRewardPools({ api, tokensAndOwners }) { return api.getBalances() } -function addUniV3LikePosition({ api, token0, token1, liquidity, tickLower, tickUpper, tick}) { +function addUniV3LikePosition({ api, token0, token1, liquidity, tickLower, tickUpper, tick }) { const tickToPrice = (tick) => 1.0001 ** tick const sa = tickToPrice(tickLower / 2) const sb = tickToPrice(tickUpper / 2) @@ -939,14 +945,14 @@ async function unwrapSolidlyVeNft({ api, baseToken, veNft, owner, hasTokensOfOwn 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) { + 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)) + bals.forEach(i => api.add(baseToken, i.amount)) } module.exports = { From 3744df8c5b177bd8ab30f27e461047eb441955db Mon Sep 17 00:00:00 2001 From: Cian <96416801+NatureLab@users.noreply.github.com> Date: Fri, 15 Mar 2024 20:23:18 +0800 Subject: [PATCH 0723/2004] Update cian-lst. (#9373) * Add arbitrum data for cian. * Add optimism for cian. * Add bsc data for cian. * Update cian-lst. --- projects/cian-lst/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/cian-lst/index.js b/projects/cian-lst/index.js index cd740248820..b068f2392e9 100644 --- a/projects/cian-lst/index.js +++ b/projects/cian-lst/index.js @@ -7,6 +7,7 @@ const config = { optimism: ['0x907883da917ca9750ad202ff6395C4C6aB14e60E'], bsc: ['0xEa5f10A0E612316A47123D818E2b597437D19a17'], arbitrum: ['0xE946Dd7d03F6F5C440F68c84808Ca88d26475FC5'], + base: ['0x9B2316cfe980515de7430F1c4E831B89a5921137'], } module.exports = { @@ -19,4 +20,4 @@ Object.keys(config).forEach(chain => { return api.erc4626Sum({ calls: config[chain], isOG4626: true }) } } -}) \ No newline at end of file +}) From d88ea4d0644b4e7426320d3ca4445728f66c7ac2 Mon Sep 17 00:00:00 2001 From: Jatin Jain Date: Fri, 15 Mar 2024 17:58:34 +0530 Subject: [PATCH 0724/2004] update: multichain TVL tracker (#9369) * update: multichain TVL tracker * Refactor TVL calculation and add support for multiple chains --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/renzo/index.js | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/projects/renzo/index.js b/projects/renzo/index.js index 8f8fea5f03d..bfe7d6e92ee 100644 --- a/projects/renzo/index.js +++ b/projects/renzo/index.js @@ -1,18 +1,28 @@ -const { nullAddress } = require("../helper/tokenMapping") +const L1_EZ_ETH_ADDRESS = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; +const L2_EZ_ETH_ADDRESS = "0x2416092f143378750bb29b79eD961ab195CcEea5"; +const L1_LOCKBOX_ADDRESS = "0xC8140dA31E6bCa19b287cC35531c2212763C2059"; -async function tvl(_, _b, _cb, { api, }) { - const tvl = await api.call({ - target: "0x74a09653A083691711cF8215a6ab074BB4e99ef5", - abi: "function calculateTVLs() public view returns (uint256[][] memory, uint256[] memory, uint256)" - }) - return { - [nullAddress]: tvl[2] - } +async function L2Tvl(_, _b, _cb, { api, }) { + return { + [L1_EZ_ETH_ADDRESS]: await api.call({ target: L2_EZ_ETH_ADDRESS, abi: "erc20:totalSupply" }) + } } +async function ethTvl(_, _b, _cb, { 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] }) + api.add(L1_EZ_ETH_ADDRESS, totalTvl - lockBoxBalance) +} + +const chains = ["mode", "blast", "bsc", "linea", "arbitrum"] + module.exports = { - doublecounted: true, - ethereum: { - tvl, - }, -} \ No newline at end of file + doublecounted: true, + ethereum: { + tvl: ethTvl, + } +} + +chains.forEach(chain => { + module.exports[chain] = { tvl: L2Tvl } +}) \ No newline at end of file From aa19d8433b5933521019126bc697bea184b0c631 Mon Sep 17 00:00:00 2001 From: MiguelGGMM <104460442+MiguelGGMM@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:29:16 +0100 Subject: [PATCH 0725/2004] HyperBlast listing (#9371) --- projects/HyperBlast/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/HyperBlast/index.js diff --git a/projects/HyperBlast/index.js b/projects/HyperBlast/index.js new file mode 100644 index 00000000000..be608acd72c --- /dev/null +++ b/projects/HyperBlast/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: getUniTVL({ + factory: '0xD97fFc2041a8aB8f6bc4aeE7eE8ECA485381D088', + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, +} \ No newline at end of file From e14cef67fa368c2c7a11e06e71ff12ae8ff7070c Mon Sep 17 00:00:00 2001 From: muteenn <90485619+muteenn@users.noreply.github.com> Date: Fri, 15 Mar 2024 21:32:10 +0900 Subject: [PATCH 0726/2004] added VeryLongSwap (#9376) --- projects/VeryLongSwap/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/VeryLongSwap/index.js diff --git a/projects/VeryLongSwap/index.js b/projects/VeryLongSwap/index.js new file mode 100644 index 00000000000..fdd5845d2cd --- /dev/null +++ b/projects/VeryLongSwap/index.js @@ -0,0 +1,7 @@ +const { uniV3Export } = require('../helper/uniswapV3') +const factory = '0x287fAE8c400603029c27Af0451126b9581B6fcD4' + +module.exports = uniV3Export({ + astrzk: { factory: factory, fromBlock: 156301, }, +}); + From 513de8a3352c3ae743a3ed1d1721b6691250acbe Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Fri, 15 Mar 2024 20:46:41 +0800 Subject: [PATCH 0727/2004] add tvl and general info for Airpuff (#9375) --- projects/airpuff/index.js | 149 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 projects/airpuff/index.js diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js new file mode 100644 index 00000000000..e0f3f90dfa9 --- /dev/null +++ b/projects/airpuff/index.js @@ -0,0 +1,149 @@ +//import utils +const ADDRESSES = require("../helper/coreAssets.json"); + +const contractAbis = { + readOraclePrice: { + inputs: [], + name: "read", + outputs: [ + { internalType: "int224", name: "value", type: "int224" }, + { internalType: "uint32", name: "timestamp", type: "uint32" }, + ], + stateMutability: "view", + type: "function", + }, // + balanceOf: "function balanceOf(address) external view returns (uint256)", +}; + +module.exports = { + misrepresentedTokens: true, + + ethereum: { + tvl: async (_, _b, _cb, { api }) => { + const lendingMain = { + eth: "0xdeF3AA48bad043e53207d359dcDFdE46F50b6C02", //ETH + }; + await api.sumTokens({ + tokensAndOwners: [[ADDRESSES.ethereum.WETH, lendingMain.eth]], + }); + // leverage users + const ezETH = { + vault: "0x32a0ce2bDfc37eE606aB905b4f9fC286049A774f", + reStakingToken: "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo + }; + + const weETH = { + vault: "0x5e0a74cb0F74D57F9d69914575b972ba6A14e27c", + reStakingToken: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", + }; + + // const rsETH = { + // vault: "0x65E7C3C88806FF010BB197B2577cCddA9704fA2F", + // reStakingToken: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + // oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", + // }; + + const ezETH1x = { + vault: "0xa9A57D0824a613d181e0323b0cA85fBD4E27160B", + reStakingToken: "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo + }; + + const weETH1x = { + vault: "0x9320AB04E319018842BD59e2817054d19850Abc0", + reStakingToken: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", + }; + + const rsETH1x = { + vault: "0x15A692f5986e9B3cd0aF02D0f5c78A37CB120843", + reStakingToken: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", + }; + + const strategies = [ezETH, weETH, 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.ethereum.WETH, balInETH); + } + }, + }, + + arbitrum: { + tvl: async (_, _b, _cb, { api }) => { + //lending + const lendingArb = { + usdc_e: "0xa2e4cab1F6f9f1163bCe937517f1935BEc4a0A7c", + usdt: "0xeb0b9B5FFb763dD69440565F63c67f9695B7C3dA", + arb: "0x529f94bcd37896b6a38452497C62b2F0a8217517", + wstETH: "0x521A8Ca3baF3d7677ddCC091eD91D969D4AfcfF8", + eth: "0x97801654D2048E639043c77b16Bc906541B3490a", + usdc: "0xd3E1BDe4b4163c86B9b7668dE8Ae7618720dCa93", + }; + + 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], + ], + }); + + // leverage users + const ezETH = { + vault: "0x6295248F578bFA9c057a3e1182BED27121530E7A", + reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5", + oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo + }; + + const weETH = { + vault: "0xb8Cfb3406aBE78a2C836DCe69608e9cD80a78301", + reStakingToken: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", + oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", + }; + + const rsETH = { + vault: "0x65E7C3C88806FF010BB197B2577cCddA9704fA2F", + reStakingToken: "0x4186BFC76E2E237523CBC30FD220FE055156b41F", + oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", + }; + + const strategies = [ezETH, weETH, rsETH]; + + 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); + } + }, + }, +}; From ba8c3238c59c56c41b4799ca8227213ccade88b7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:07:05 +0100 Subject: [PATCH 0728/2004] Add btcfi projects and token mappings for BFC (#9377) * add btcfi projects * Add token mappings for BFC --------- Co-authored-by: tlatkdgus1 --- projects/btcfi/index.js | 18 ++++++++++++++++++ projects/helper/coreAssets.json | 4 +++- projects/helper/tokenMapping.js | 6 +++++- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 projects/btcfi/index.js diff --git a/projects/btcfi/index.js b/projects/btcfi/index.js new file mode 100644 index 00000000000..e9b5348d22c --- /dev/null +++ b/projects/btcfi/index.js @@ -0,0 +1,18 @@ +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 (_, _b, _cb, { api, }) => { + return sumTokens2({ api, tokensAndOwners: Object.values(pools).map(({ pool, token }) => ([token, pool,])) }) + } + } +}) \ No newline at end of file diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index c7ebbe07467..69196cc2e3d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1534,7 +1534,9 @@ "UnifiedDAI": "0xcDB9579Db96EB5C8298dF889D915D0FF668AfF2a", "WITCH": "0xB1f3A83597Bce2AD842c29bD750AE17afc474137", "SAT": "0x17102AC78a02a98fC78B0c29B7b0506f035A99E5", - "BIFI": "0x047938C3aD13c1eB821C8e310B2B6F889b6d0003" + "BIFI": "0x047938C3aD13c1eB821C8e310B2B6F889b6d0003", + "WBTC": "0x7b8FAC5F29E101BaaB33c5f9c39d4F85ba2cc7C1", + "BTCB": "0xd267F821F1b8344B5A63626c8c824697194A173E" }, "scroll": { "WETH": "0x5300000000000000000000000000000000000004", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index aff089e8b4c..50711754e0a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -56,6 +56,10 @@ const fixBalancesTokens = { "0x013e54bee29813bd786b24f9cb08f47c4b75955c": { coingeckoId: "usd-coin", decimals: 6 }, "0x3e4079ad76c83760e22b5c0105670ebab88b8d0e": { coingeckoId: "tether", decimals: 18 }, }, + bfc: { + "0x7b8FAC5F29E101BaaB33c5f9c39d4F85ba2cc7C1": { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + "0xd267F821F1b8344B5A63626c8c824697194A173E": { coingeckoId: "bitcoin-avalanche-bridged-btc-b", decimals: 18 }, + }, q: { [ADDRESSES.q.WUSDC]: { coingeckoId: "usd-coin", decimals: 6 }, [ADDRESSES.q.WDAI]: { coingeckoId: "dai", decimals: 18 }, @@ -216,7 +220,7 @@ const anyswapTokenBlacklist = { ADDRESSES.shiden.ETH, ADDRESSES.telos.ETH, ADDRESSES.telos.USDT - ] + ], } module.exports = { From e42f12836d0f3cb53da194d8255fc72a6c71fa9a Mon Sep 17 00:00:00 2001 From: picardcapt1212 Date: Fri, 15 Mar 2024 23:33:40 +0900 Subject: [PATCH 0729/2004] add mvl staking --- projects/mvl/index.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects/mvl/index.js diff --git a/projects/mvl/index.js b/projects/mvl/index.js new file mode 100644 index 00000000000..f034b51539c --- /dev/null +++ b/projects/mvl/index.js @@ -0,0 +1,39 @@ +const { stakings } = require("../helper/staking.js"); +const { pool2s } = require("../helper/pool2.js"); + +const config = { + ethereum: { + token: "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71", + lp: "0x3c8ad34155b83ddb7f43119a19503d34ed2b5c7a", + staking: [ + "0x92Ec27935cE7b523cc70C2fFaf0728F1Fa6425dF", + "0x1BdFAa7aFAa454F491b5de40d24d681F0F3Adb1A", + ], + pool2: [ + "0x34fDA56b5c9Aa52DF9fa51b01666683b7b1434d6", + "0xC0496C7B9D7150A81bD6fF1d015e95668BD4abeD", + ], + }, + bsc: { + token: "0x5f588EfAf8eB57e3837486e834fC5a4E07768D98", + lp: "0xE01eDA650632986B2E5B8167F629D7C7c759D4FD", + staking: [ + "0x0A3AC95445F3e02cC80267f02B9669ed75b71043", + "0x121E257f4A6fa763012eF0b6b6f68905F6D4b721", + "0x5a54EC1e6DA36f19a806A9168fD4270fEf697354", + ], + pool2: [ + "0xC948622856a40Efd50d74BA6e3624FE7100A95Ef", + "0xc81632E77Ea7262137EA815DC8BA7a47A5a01ab1", + ], + }, +}; + +Object.keys(config).forEach((chain) => { + const { lp, token, staking, pool2 } = config[chain]; + module.exports[chain] = { + tvl: () => ({}), + staking: stakings(staking, token, chain), + pool2: pool2s(pool2, [lp], chain), + }; +}); \ No newline at end of file From 4715c0fd28954c8718dade2e551d1e8ca5102324 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 15 Mar 2024 15:39:33 +0100 Subject: [PATCH 0730/2004] minor fix --- projects/cian-automation/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/cian-automation/index.js b/projects/cian-automation/index.js index 134a241b02c..a556f2d03b3 100644 --- a/projects/cian-automation/index.js +++ b/projects/cian-automation/index.js @@ -58,7 +58,10 @@ Object.keys(config).forEach(chain => { const avaxDebtSum = avaxDebt.reduce((acc, borrow) => acc + +borrow, 0) api.addGasToken(avaxDebtSum * -1) } - return sumTokens2({ owners, tokens, api, sumChunkSize: 5000, }) + for (const token of tokens) { + await api.sumTokens({ owners, tokens: [token], }) + } + return api.getBalances() } } }) From d26abf11a3d8f03a3adeca36d12e4ffeec30bdd9 Mon Sep 17 00:00:00 2001 From: picardcapt1212 <61275696+picardcapt1212@users.noreply.github.com> Date: Sat, 16 Mar 2024 00:31:50 +0900 Subject: [PATCH 0731/2004] add mvl staking (#9379) --- projects/mvl/index.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects/mvl/index.js diff --git a/projects/mvl/index.js b/projects/mvl/index.js new file mode 100644 index 00000000000..f034b51539c --- /dev/null +++ b/projects/mvl/index.js @@ -0,0 +1,39 @@ +const { stakings } = require("../helper/staking.js"); +const { pool2s } = require("../helper/pool2.js"); + +const config = { + ethereum: { + token: "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71", + lp: "0x3c8ad34155b83ddb7f43119a19503d34ed2b5c7a", + staking: [ + "0x92Ec27935cE7b523cc70C2fFaf0728F1Fa6425dF", + "0x1BdFAa7aFAa454F491b5de40d24d681F0F3Adb1A", + ], + pool2: [ + "0x34fDA56b5c9Aa52DF9fa51b01666683b7b1434d6", + "0xC0496C7B9D7150A81bD6fF1d015e95668BD4abeD", + ], + }, + bsc: { + token: "0x5f588EfAf8eB57e3837486e834fC5a4E07768D98", + lp: "0xE01eDA650632986B2E5B8167F629D7C7c759D4FD", + staking: [ + "0x0A3AC95445F3e02cC80267f02B9669ed75b71043", + "0x121E257f4A6fa763012eF0b6b6f68905F6D4b721", + "0x5a54EC1e6DA36f19a806A9168fD4270fEf697354", + ], + pool2: [ + "0xC948622856a40Efd50d74BA6e3624FE7100A95Ef", + "0xc81632E77Ea7262137EA815DC8BA7a47A5a01ab1", + ], + }, +}; + +Object.keys(config).forEach((chain) => { + const { lp, token, staking, pool2 } = config[chain]; + module.exports[chain] = { + tvl: () => ({}), + staking: stakings(staking, token, chain), + pool2: pool2s(pool2, [lp], chain), + }; +}); \ No newline at end of file From 465984f4001c94fb60cbe1ad098fb2fcd1102115 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 15 Mar 2024 15:40:23 +0000 Subject: [PATCH 0732/2004] hyperblast treasury adapter (#9380) --- projects/treasury/hyperblast.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/treasury/hyperblast.js diff --git a/projects/treasury/hyperblast.js b/projects/treasury/hyperblast.js new file mode 100644 index 00000000000..7cce521069e --- /dev/null +++ b/projects/treasury/hyperblast.js @@ -0,0 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const Treasury = "0x2d741ac2647707297f38c48437b4f48e6c97c624"; + +const HYPE = "0x9FE9991dAF6b9a5d79280F48cbb6827D46DE2EA4"; + +module.exports = treasuryExports({ + blast: { + tokens: [ + nullAddress, + "0x4300000000000000000000000000000000000003" //usdb + ], + owners: [Treasury], + ownTokens: [HYPE], + }, +}) \ No newline at end of file From 4bde8aae14ca45a3ca8c75f5d2f6861ac54b28df Mon Sep 17 00:00:00 2001 From: Javier NFT Date: Sat, 16 Mar 2024 10:43:38 +0100 Subject: [PATCH 0733/2004] jexchange: add farms (#9344) * jexchange: use new `/pools/v3` endpoint * jexchange: no longer blacklist JEX We disabled our JEX distribution system (397M JEX remaining). The TVL should be fine now. * JEX: add "locker" SC * JEX: move "locker" to staking item * JEX: remove "locker" from regular TVL * jexchange: add farms --- projects/jexchange/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/jexchange/index.js b/projects/jexchange/index.js index 9d0e184da09..b5292f54dad 100644 --- a/projects/jexchange/index.js +++ b/projects/jexchange/index.js @@ -12,8 +12,12 @@ async function tvl() { } async function staking() { - const owner = "erd1qqqqqqqqqqqqqpgq05whpg29ggrrm9ww3ufsf9ud23f66msv6avs5s5xxy"; - return sumTokens({ owner }); + const farms = await getConfig('jexchange', 'https://api.jexchange.io/farms') + const owners = [ + ...farms.map(farm => farm.sc_address), + "erd1qqqqqqqqqqqqqpgq05whpg29ggrrm9ww3ufsf9ud23f66msv6avs5s5xxy", + ]; + return sumTokens({ owners }); } module.exports = { From e2b5dac834fa295b6e3d883d01e247a8ccd31f79 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Sat, 16 Mar 2024 17:46:31 +0800 Subject: [PATCH 0734/2004] feature: update stapearl psm id (#9381) --- projects/bucket-protocol/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index 41a692608f8..131f369b3d7 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -48,7 +48,7 @@ const CETABLE_PSM = "0x6e94fe6910747a30e52addf446f2d7e844f69bf39eced6bed03441e01fa66acd"; const STAPEARL_PSM = - "0x368b7301b499eded2949f9d0806254144ac368eb7173ec42c36b7db87e9af9a8"; + "0xccdaf635eb1c419dc5ab813cc64c728a9f5a851202769e254f348bff51f9a6dc"; async function tvl(_, _1, _2, { api }) { const protocolFields = await sui.getDynamicFieldObjects({ From 43ee6ff3bbbb4381e61fbadd03de0744ef5b5cf9 Mon Sep 17 00:00:00 2001 From: jellybeanswap <163602313+jellybeanswap@users.noreply.github.com> Date: Sat, 16 Mar 2024 12:46:50 +0300 Subject: [PATCH 0735/2004] Add "JellyBeanSwap" (#9384) * Add "JellyBeanSwap" * Update JellyBeanSwap index.js file --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/jellybeanswap/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/jellybeanswap/index.js diff --git a/projects/jellybeanswap/index.js b/projects/jellybeanswap/index.js new file mode 100644 index 00000000000..4bb8563154e --- /dev/null +++ b/projects/jellybeanswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens'); + +module.exports = uniTvlExport('bsc', '0x320827adb3f759a386348b325c54803b2b3a7572') \ No newline at end of file From 867e4452c6e78f251d289c9de40b36cb23aa4ce8 Mon Sep 17 00:00:00 2001 From: NonFinancialAdvisor <155776586+NonFinancialAdvisor@users.noreply.github.com> Date: Sat, 16 Mar 2024 10:49:58 +0100 Subject: [PATCH 0736/2004] Add Arbitrum support (#9382) --- projects/peapods-finance/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/peapods-finance/index.js b/projects/peapods-finance/index.js index bd14ccaefe6..db397ec576b 100644 --- a/projects/peapods-finance/index.js +++ b/projects/peapods-finance/index.js @@ -1,7 +1,8 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { - ethereum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" } + ethereum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, + arbitrum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, } const indexManagerABI = @@ -40,6 +41,7 @@ const getTvl = async (api, isStaking) => { module.exports = { methodology: "Aggregates TVL in all Peapods Finance indexes created", + hallmarks: [[1710444951, "Arbitrum launch"]], } Object.keys(config).forEach(chain => { From f66cbb35bc494ad740e78f648315d23f569a6b42 Mon Sep 17 00:00:00 2001 From: carpevm <111655404+carpevm@users.noreply.github.com> Date: Sat, 16 Mar 2024 15:28:45 +0530 Subject: [PATCH 0737/2004] vault tvl adapter (#9383) * adds copra-finance * adds arb vault tvl * Refactor tvl function and update config --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/copra-finance/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/copra-finance/index.js diff --git a/projects/copra-finance/index.js b/projects/copra-finance/index.js new file mode 100644 index 00000000000..aa8b636808c --- /dev/null +++ b/projects/copra-finance/index.js @@ -0,0 +1,29 @@ +const { getLogs, } = require("../helper/cache/getLogs"); +const ADDRESSES = require('../helper/coreAssets.json'); + +async function tvl(_, _b, _cb, { api }) { + const { factory, fromBlock, tokens, } = config[api.chain]; + + const logs = await getLogs({ + api, + target: factory, + onlyArgs: true, + eventAbi: 'event CreditAccountDeployed (address indexed creditAccount)', + fromBlock, + }) + const owners = logs.map((i) => i.creditAccount) + + return api.sumTokens({ owners, tokens }); +} + +const config = { + arbitrum: { + factory: "0x2eaA3A5223FCb7A9EeC3bFCD399A4c479c6008f6", + fromBlock: 166573084, + tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.WETH, ADDRESSES.null] + }, +} + +Object.keys(config).forEach((chain) => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 9c5fdc664dbcd7364776e4ef9f78ef31ba581862 Mon Sep 17 00:00:00 2001 From: Keref Date: Sat, 16 Mar 2024 18:01:03 +0800 Subject: [PATCH 0738/2004] New Monroe Protocol (#9385) * feat: monroeprotocol * feat: Monroe prod --- projects/monroeprotocol/index.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/projects/monroeprotocol/index.js b/projects/monroeprotocol/index.js index 8d34dd53653..b238a1de9d3 100644 --- a/projects/monroeprotocol/index.js +++ b/projects/monroeprotocol/index.js @@ -3,7 +3,7 @@ const { getLogs } = require('../helper/cache/getLogs') // Controllers[chain] const CONTROLLERS = { - manta: "0xCc396B83Baba70c85FBB8f44B64e7e43aE810232", + manta: "0xb2E609ef662889a32452598F0131863035974878", } @@ -28,18 +28,17 @@ async function tvl(_, _1, _2, { api }) { tokens.push(..._tokens) owners.push(...vaults) })) - + return api.sumTokens({ tokensAndOwners2: [tokens, owners]}) } - module.exports = { methodology: "Adds up the total value locked as collateral in Monroe vaults", - start: 1709510400, // Monday, March 4, 2024 00:00 GMT + start: 1710288000, // March 13, 2024 00:00 GMT }; Object.keys(CONTROLLERS).forEach((chain) => { module.exports[chain] = { tvl }; -}); +}); \ No newline at end of file From 578f41fa33d53470e77da38c631b651768ad587f Mon Sep 17 00:00:00 2001 From: WavesDev Date: Sat, 16 Mar 2024 13:39:53 +0300 Subject: [PATCH 0739/2004] Add new adapter for wx.network waves staking (#9387) Co-authored-by: Boris Volkov --- projects/helper/chain/waves.js | 17 +++++++++++++++++ projects/wx-network-waves/index.js | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 projects/wx-network-waves/index.js diff --git a/projects/helper/chain/waves.js b/projects/helper/chain/waves.js index 6ba52b31a49..e1d66254aa5 100644 --- a/projects/helper/chain/waves.js +++ b/projects/helper/chain/waves.js @@ -35,6 +35,22 @@ async function assetDetails(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; +} + /** * Evaluates the provided expression, taking into account the deployed dApp contract * @param {string} contract - Address of the deployed dApp contract @@ -106,6 +122,7 @@ async function call({ target, key}) { module.exports = { call, assetDetails, + wavesBalanceDetails, scriptEvaluate, data, sumTokens, diff --git a/projects/wx-network-waves/index.js b/projects/wx-network-waves/index.js new file mode 100644 index 00000000000..830da6cfc31 --- /dev/null +++ b/projects/wx-network-waves/index.js @@ -0,0 +1,19 @@ +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, + }, +}; From 659865fce803e1ab3d0871975853908117aa98d7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 16 Mar 2024 11:43:48 +0100 Subject: [PATCH 0740/2004] frontrun (#9389) * adds adapter for frontrun * Refactor token and owner configuration in index.js --------- Co-authored-by: e7h3r --- projects/frontrun-market/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/frontrun-market/index.js diff --git a/projects/frontrun-market/index.js b/projects/frontrun-market/index.js new file mode 100644 index 00000000000..4e2a30ee0d8 --- /dev/null +++ b/projects/frontrun-market/index.js @@ -0,0 +1,27 @@ +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 }), + }; +}); From bef64187ffa54d9426568981817370267fa2bccb Mon Sep 17 00:00:00 2001 From: DradexDex <163447238+DradexDex@users.noreply.github.com> Date: Sat, 16 Mar 2024 13:51:23 +0300 Subject: [PATCH 0741/2004] add dradex (#9367) * add dradex * Add Solana TVL calculation to dradex index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dradex/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/dradex/index.js diff --git a/projects/dradex/index.js b/projects/dradex/index.js new file mode 100644 index 00000000000..a9f3e0d0c0f --- /dev/null +++ b/projects/dradex/index.js @@ -0,0 +1,18 @@ +const { getProvider, sumTokens2, } = require('../helper/solana') +const { Program, } = require("@project-serum/anchor"); + +module.exports = { + solana: { + tvl + }, +} + +async function tvl(_, _b, _cb, { api, }) { + 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 From 4c536f88b720b9748518f9272eb3151c586e3ea0 Mon Sep 17 00:00:00 2001 From: NikolasHai <113891786+NikolasHai@users.noreply.github.com> Date: Sat, 16 Mar 2024 12:03:34 +0100 Subject: [PATCH 0742/2004] Add sns treasuries and neuron fund (#9378) * add: sns treasury * add:neuron fund * add: arguments * add: arguments * add: staking * fmt * fmt * fmt * remove axios * fmt * fmt * fmt * fmt * fmt * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/treasury/nns.js | 17 +++++++++++++++++ projects/treasury/sns.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 projects/treasury/nns.js create mode 100644 projects/treasury/sns.js diff --git a/projects/treasury/nns.js b/projects/treasury/nns.js new file mode 100644 index 00000000000..43285b34621 --- /dev/null +++ b/projects/treasury/nns.js @@ -0,0 +1,17 @@ +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(_ts, _b, _cb, { api, }) { + var data = await get(NEURON_FUND_URL); + let neuron_fund_balance = parseInt(data.community_fund_total_staked[0][1]); + console.log(neuron_fund_balance) + 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/treasury/sns.js b/projects/treasury/sns.js new file mode 100644 index 00000000000..4d1719906f8 --- /dev/null +++ b/projects/treasury/sns.js @@ -0,0 +1,39 @@ +const { get } = require('../helper/http') + +const SNS_URL = "https://sns-api.internetcomputer.org/api/v1/snses/" +const ICP_URL = "https://ledger-api.internetcomputer.org/accounts/" + +async function tvl(_ts, _b, _cb, { api, }) { + let offset = 0; + const limit = 100; + var icp_balance = 0; + while (true) { + let data = await get(SNS_URL + `?offset=${offset}&limit=${limit}&sort_by=name`); + let snses = data.data; + if (snses.length == undefined || snses.length == 0) { + break; + } + + for (let i = 0; i < snses.length; i++) { + let sns = snses[i]; + let root_canister_id = sns.root_canister_id; + let root_canister = await get( + SNS_URL + `${root_canister_id}`); + + let icp_ledger_treasury_accountidentifier = root_canister.icp_treasury_account; + let icp_ledger = await get( + ICP_URL + `${icp_ledger_treasury_accountidentifier}`); + icp_balance += parseInt(icp_ledger.balance); + } + offset += limit; + } + + api.addCGToken('internet-computer', icp_balance / 1e8) +} + +module.exports = { + methodology: `We count the ICP on all SNS treasuries accounts as the collateral`, + icp: { + tvl + }, +} \ No newline at end of file From 2c3d37eef77c1af87520b18e6f5df9641beee71b Mon Sep 17 00:00:00 2001 From: hydro-developer <158029485+hydro-developer@users.noreply.github.com> Date: Sat, 16 Mar 2024 20:19:04 +0900 Subject: [PATCH 0743/2004] Add auto-compound and hdro tvl (#9366) * Add auto-compound and hdro tvl * fix: hydro-protocol tvl * Add hydro-protocol staking * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hydro-protocol/index.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/projects/hydro-protocol/index.js b/projects/hydro-protocol/index.js index a80bfc3817e..cdbf872d36b 100644 --- a/projects/hydro-protocol/index.js +++ b/projects/hydro-protocol/index.js @@ -1,15 +1,31 @@ -const { queryContract } = require("../helper/chain/cosmos"); +const { queryContract, } = require("../helper/chain/cosmos"); const ADDRESSES = require("../helper/coreAssets.json"); -const autocompoundContract = 'inj1mjcg8a73904rj4w7t5qkgn0apua98n059nufma' +const hinj = "inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc" +const autoCompound = "inj1mjcg8a73904rj4w7t5qkgn0apua98n059nufma" +const xhdro = "inj1qc2tw477wwuvkad0h3g78xqgwx4k8knat6vz0h" + +async function staking(_, _1, _2, { api }) { + const { total_supply } = await queryContract({ chain: api.chain, contract: xhdro, data: { token_info: {} } }) + + return { + 'hydro-protocol-2': total_supply / 1e6 + } +} + async function tvl(_, _1, _2, { api }) { - const { total_supply } = await queryContract({ chain: api.chain, contract: "inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc", data: { token_info: {} } }) - api.add(ADDRESSES.injective.INJ, total_supply) + 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 From c5ff7cfdf3eae4d53eadf4dc3f6833b498c0a29b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 16 Mar 2024 13:50:53 +0100 Subject: [PATCH 0744/2004] update methlab --- projects/methlab-xyz/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/methlab-xyz/index.js b/projects/methlab-xyz/index.js index 9041d9bdc8b..407c8d7838d 100644 --- a/projects/methlab-xyz/index.js +++ b/projects/methlab-xyz/index.js @@ -1,4 +1,6 @@ const { getLogs } = require('../helper/cache/getLogs') +const { mergeExports } = require('../helper/utils') +const { uniV3Export } = require('../helper/uniswapV3') const config = { mantle: { factories: [{ target: '0x6Cc0c2D8F9533dFd2276337DdEaBBCEE9dd0747F', fromBlock: 51253051 },], @@ -40,4 +42,11 @@ Object.keys(config).forEach(chain => { const abi = { "collection": "function collection(uint256 collectionId) view returns ((address collToken, address borrowToken, uint256 minSingleLoanAmt, uint256 maxSingleLoanAmt, uint256 expiresAt, bool isEnabled, (uint256 strikePrice, uint256 interestRate, uint256 duration)[] intents))", "collectionCounter": "uint256:collectionCounter", -} \ No newline at end of file +} + +module.exports = mergeExports([ + module.exports, + uniV3Export({ + mantle: { factory: "0x8f140Fc3e9211b8DC2fC1D7eE3292F6817C5dD5D", fromBlock: 59915640, blacklistedTokens: ['0x26a6b0dcdcfb981362afa56d581e4a7dba3be140'] }, + }) +]) \ No newline at end of file From 45313e0487430dc058d889bb8f091b0d4aa7721e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 16 Mar 2024 14:21:36 +0100 Subject: [PATCH 0745/2004] bugfix --- projects/frontrun-market/index.js | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/projects/frontrun-market/index.js b/projects/frontrun-market/index.js index 4e2a30ee0d8..27cafc8c2c3 100644 --- a/projects/frontrun-market/index.js +++ b/projects/frontrun-market/index.js @@ -3,21 +3,17 @@ 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,], - }, - ], + 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) => { From e183730d3dc7a169e4ba5b84d74c4d23df9deb73 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 16 Mar 2024 14:28:42 +0100 Subject: [PATCH 0746/2004] lint fix --- projects/treasury/sns.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/treasury/sns.js b/projects/treasury/sns.js index 4d1719906f8..f3745d9d1f8 100644 --- a/projects/treasury/sns.js +++ b/projects/treasury/sns.js @@ -7,7 +7,8 @@ async function tvl(_ts, _b, _cb, { api, }) { let offset = 0; const limit = 100; var icp_balance = 0; - while (true) { + const a = true + while (a) { let data = await get(SNS_URL + `?offset=${offset}&limit=${limit}&sort_by=name`); let snses = data.data; if (snses.length == undefined || snses.length == 0) { From 430adfe05b90f81d48f31522bed66e9c3f4e074f Mon Sep 17 00:00:00 2001 From: cerraio <147749662+cerraio@users.noreply.github.com> Date: Sat, 16 Mar 2024 06:29:35 -0700 Subject: [PATCH 0747/2004] Update Cerra project (#9391) redeployed smart contract address, with security fixes --- projects/cerra/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/cerra/index.js b/projects/cerra/index.js index 34dce89be35..077d116cc0f 100644 --- a/projects/cerra/index.js +++ b/projects/cerra/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require("../helper/chain/cardano"); -const LENDING_SCRIPT = "addr1zy7d8hd6httaxc5xgtqsgcazdj0ughe2p534ns5lgh66jus0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhqlkdnye"; +const LENDING_SCRIPT = "addr1z878lgw0676mfkusf0f2h9wl3w5q2zu0klrlcamv6g2werc0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhqfmh5zc"; async function tvl() { return sumTokens2({ scripts: [LENDING_SCRIPT] }) From bbac51116c20e0287bea8c76fd3541d9bd2e38bd Mon Sep 17 00:00:00 2001 From: "BT.Wood(Tang Bo Hao)" Date: Sat, 16 Mar 2024 21:30:06 +0800 Subject: [PATCH 0748/2004] feat: add flow balance from lottery jackpot pool to the frc20 TVL (#9392) --- projects/fixes-frc20/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/projects/fixes-frc20/index.js b/projects/fixes-frc20/index.js index b276cf70f80..588f1d23d86 100644 --- a/projects/fixes-frc20/index.js +++ b/projects/fixes-frc20/index.js @@ -3,16 +3,29 @@ const { post } = require("../helper/http"); let queryTVLCode = ` import FRC20Indexer from 0xd2abb5dbf5e08666 +import FGameLottery from 0xd2abb5dbf5e08666 +import FGameLotteryRegistry from 0xd2abb5dbf5e08666 +import FGameLotteryFactory from 0xd2abb5dbf5e08666 access(all) fun main(): UFix64 { let indexer = FRC20Indexer.getIndexer() let tokens = indexer.getTokens() var totalBalance = 0.0 + // all treasury pool balance for tick in tokens { let balance = indexer.getPoolBalance(tick: tick) totalBalance = totalBalance + balance } + // FLOW lottery jackpot balance + let registry = FGameLotteryRegistry.borrowRegistry() + let flowLotteryPoolName = FGameLotteryFactory.getFIXESMintingLotteryPoolName() + if let poolAddr = registry.getLotteryPoolAddress(flowLotteryPoolName) { + if let poolRef = FGameLottery.borrowLotteryPool(poolAddr) { + let jackpotBalance = poolRef.getJackpotPoolBalance() + totalBalance = totalBalance + jackpotBalance + } + } return totalBalance } `; From 970977857ff63c5a6c35f31a133c62d9d1dd5a92 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Sat, 16 Mar 2024 21:30:26 +0800 Subject: [PATCH 0749/2004] Add stapearl lp to tvl (#9390) * feature: add strater project * feature: set the package-lock.json to the same version of original repo * feature: replace decimal.js to bignumber.js * feature: add stapearl lp to tvl --- projects/strater/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/projects/strater/index.js b/projects/strater/index.js index 3c4587bfba0..d77eb6dfaed 100644 --- a/projects/strater/index.js +++ b/projects/strater/index.js @@ -17,6 +17,11 @@ const CETABLE_VAULT_ID = const USDC_USDT_POOL_ID = "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20"; +const STAPREAL_VAULT_ID = + "0x614c78eabb6949b3e1e295f19f6b8476e2e62091ca66432fbb5507e7b54af0d9"; +const STAPEARL_PAIR_METADTA_ID = + "0x243096d976a44de24fde33f087665f8265543a533b5cdbae60fc72a939669867"; + function asIntN(int, bits = 32) { return Number(BigInt.asIntN(bits, BigInt(int))); } @@ -74,6 +79,26 @@ async function tvl(_, _1, _2, { api }) { 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; + + api.add(ADDRESSES.sui.USDC, stapearlUSDCAmount); + api.add(ADDRESSES.sui.USDT, stapearlUSDTAmount); } module.exports = { From e2af4db24cad7b7f03230be61fd9287297d7e400 Mon Sep 17 00:00:00 2001 From: picardcapt1212 Date: Sat, 16 Mar 2024 23:58:36 +0900 Subject: [PATCH 0750/2004] refactor mvl staking contract and add core tvl --- projects/mvl/index.js | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/projects/mvl/index.js b/projects/mvl/index.js index f034b51539c..ae930d36fa3 100644 --- a/projects/mvl/index.js +++ b/projects/mvl/index.js @@ -1,10 +1,35 @@ const { stakings } = require("../helper/staking.js"); const { pool2s } = require("../helper/pool2.js"); +const { sumTokens2, } = require('../helper/unwrapLPs'); +const ADDRESSES = require('../helper/coreAssets.json'); + +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 + +async function ethereum(_, block) { + const toa = [ + [ETH_SINGLE, ETH_LP], + [ADDRESSES.ethereum.WETH, ETH_LP], + ] + + return sumTokens2({ tokensAndOwners: toa, block, }) +} +async function bsc(_, _b, { bsc: block }) { + const chain = 'bsc' + const toa = [ + [BSC_SINGLE, BSC_LP], + [ADDRESSES.bsc.WBNB, BSC_LP], + ] + + return sumTokens2({ tokensAndOwners: toa, block, chain }) +} const config = { ethereum: { - token: "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71", - lp: "0x3c8ad34155b83ddb7f43119a19503d34ed2b5c7a", + token: ETH_SINGLE, + lp: ETH_LP, staking: [ "0x92Ec27935cE7b523cc70C2fFaf0728F1Fa6425dF", "0x1BdFAa7aFAa454F491b5de40d24d681F0F3Adb1A", @@ -13,10 +38,11 @@ const config = { "0x34fDA56b5c9Aa52DF9fa51b01666683b7b1434d6", "0xC0496C7B9D7150A81bD6fF1d015e95668BD4abeD", ], + tvl: ethereum }, bsc: { - token: "0x5f588EfAf8eB57e3837486e834fC5a4E07768D98", - lp: "0xE01eDA650632986B2E5B8167F629D7C7c759D4FD", + token: BSC_SINGLE, + lp: BSC_LP, staking: [ "0x0A3AC95445F3e02cC80267f02B9669ed75b71043", "0x121E257f4A6fa763012eF0b6b6f68905F6D4b721", @@ -26,13 +52,14 @@ const config = { "0xC948622856a40Efd50d74BA6e3624FE7100A95Ef", "0xc81632E77Ea7262137EA815DC8BA7a47A5a01ab1", ], + tvl: bsc }, }; Object.keys(config).forEach((chain) => { - const { lp, token, staking, pool2 } = config[chain]; + const { lp, token, staking, pool2, tvl } = config[chain]; module.exports[chain] = { - tvl: () => ({}), + tvl: tvl, staking: stakings(staking, token, chain), pool2: pool2s(pool2, [lp], chain), }; From 82c8bb10bdfdae5c7033100c6f68bb9837250455 Mon Sep 17 00:00:00 2001 From: jiangxiaop <87347972+jiangxiaop@users.noreply.github.com> Date: Sat, 16 Mar 2024 23:04:07 +0800 Subject: [PATCH 0751/2004] Create index.js manta lock --- projects/MantaTimeLockContract/index.js | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 projects/MantaTimeLockContract/index.js diff --git a/projects/MantaTimeLockContract/index.js b/projects/MantaTimeLockContract/index.js new file mode 100644 index 00000000000..20f6245ff0d --- /dev/null +++ b/projects/MantaTimeLockContract/index.js @@ -0,0 +1,31 @@ +const MANTA = '0x95CeF13441Be50d20cA4558CC0a27B601aC544E5'; +const STONE = '0xEc901DA9c68E90798BbBb74c11406A32A70652C3'; +const TIME_LOCK_CONTRACT = '0x8Bb6CaE3f1CADA07Dd14bA951e02886ea6bBA183'; + +async function tvl(_, _1, _2, { api }) { + const mantaBalance = await api.call({ + abi: 'erc20:balanceOf', + target: MANTA, + params: [TIME_LOCK_CONTRACT], + }); + + api.add(MANTA, mantaBalance); + + const stoneBalance = await api.call({ + abi: 'erc20:balanceOf', + target: STONE, + params: [TIME_LOCK_CONTRACT], + }); + + api.add(STONE, stoneBalance); +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: 'counts the number of (MANTA OR STONE) in the time lock contract.', + start: 1497066, + manta: { + tvl, + } +}; From 39e3bf2c9223322c6aea9f682a21e74fcc289001 Mon Sep 17 00:00:00 2001 From: PandoraBox <161485024+pandorabok@users.noreply.github.com> Date: Sun, 17 Mar 2024 16:26:58 +0200 Subject: [PATCH 0752/2004] update perfectswap (#9394) * add perfectswap * add perfectswap: change contract adrress * update contract --------- Co-authored-by: perfect-swap --- projects/perfectswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/perfectswap/index.js b/projects/perfectswap/index.js index 50a5e3d22ea..117ced4b46d 100644 --- a/projects/perfectswap/index.js +++ b/projects/perfectswap/index.js @@ -3,7 +3,7 @@ const { uniTvlExport } = require('../helper/calculateUniTvl.js') module.exports = { misrepresentedTokens: true, arbitrum: { - tvl: uniTvlExport("0x6df18f08dF448ca2336dA5Fe1db9c6Fef7D5dFD5", undefined, undefined, { + tvl: uniTvlExport("0xC7ee0B06c2d9c97589bEa593c6E9F6965451Fe93", undefined, undefined, { allPairsLength: 'uint256:allPoolsLength', allPairs: 'function allPools(uint256) view returns (address)', }, { useDefaultCoreAssets: true, hasStablePools: true, }), From c807beaadab3332fe15ef16384147ee1abf79d7b Mon Sep 17 00:00:00 2001 From: Weaver <105595435+WeaverSphere@users.noreply.github.com> Date: Sun, 17 Mar 2024 16:27:57 +0200 Subject: [PATCH 0753/2004] feat: add Base network (#9395) --- projects/dyson-money/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js index 194dfd45ede..da334764fc5 100644 --- a/projects/dyson-money/index.js +++ b/projects/dyson-money/index.js @@ -83,4 +83,7 @@ module.exports = { kava: { tvl: fetchNetworkTVL('kava'), }, + base: { + tvl: fetchNetworkTVL('base'), + }, }; From 56c0cd3000667999d16a76d7676f9f0873bfb264 Mon Sep 17 00:00:00 2001 From: Javier NFT Date: Sun, 17 Mar 2024 15:29:05 +0100 Subject: [PATCH 0754/2004] jexchange: fix cache keys (#9396) * jexchange: use new `/pools/v3` endpoint * jexchange: no longer blacklist JEX We disabled our JEX distribution system (397M JEX remaining). The TVL should be fine now. * JEX: add "locker" SC * JEX: move "locker" to staking item * JEX: remove "locker" from regular TVL * jexchange: add farms * jexchange: fix cache keys --- projects/jexchange/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/jexchange/index.js b/projects/jexchange/index.js index b5292f54dad..4042c0c7194 100644 --- a/projects/jexchange/index.js +++ b/projects/jexchange/index.js @@ -2,7 +2,7 @@ const { sumTokens } = require("../helper/chain/elrond"); const { getConfig } = require('../helper/cache') async function tvl() { - const pools = await getConfig('jexchange', 'https://api.jexchange.io/pools/v3') + const pools = await getConfig('jexchange-pools', 'https://api.jexchange.io/pools/v3') const owners = [ ...pools.map(pool => pool.sc_address), "erd1qqqqqqqqqqqqqpgqmmxzmktd09gq0hldtczerlv444ykt3pz6avsnys6m9", @@ -12,7 +12,7 @@ async function tvl() { } async function staking() { - const farms = await getConfig('jexchange', 'https://api.jexchange.io/farms') + const farms = await getConfig('jexchange-farms', 'https://api.jexchange.io/farms') const owners = [ ...farms.map(farm => farm.sc_address), "erd1qqqqqqqqqqqqqpgq05whpg29ggrrm9ww3ufsf9ud23f66msv6avs5s5xxy", From a1fb397aff9253b067cfe941e3cd03febf51ab86 Mon Sep 17 00:00:00 2001 From: SocksNFlops <91764028+SocksNFlops@users.noreply.github.com> Date: Sun, 17 Mar 2024 22:29:59 +0800 Subject: [PATCH 0755/2004] feat(buttonwood-button-wrappers): updating sdk-adapater to track arbitrum deployment (#9397) --- projects/buttonwood-button-wrappers/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/buttonwood-button-wrappers/index.js b/projects/buttonwood-button-wrappers/index.js index 3f8ae66eecc..040fb0b423a 100644 --- a/projects/buttonwood-button-wrappers/index.js +++ b/projects/buttonwood-button-wrappers/index.js @@ -24,6 +24,12 @@ const config = { ], fromBlock: 3839432 }, + arbitrum: { + buttonTokenFactories: [ + "0x06fe30a0a8e2ec5c8a9c9643f32aca8db909227f", + ], + fromBlock: 185321020 + } } Object.keys(config).forEach(chain => { From 2f9287796edb1445c384b657d1e153da5c1366bf Mon Sep 17 00:00:00 2001 From: SocksNFlops <91764028+SocksNFlops@users.noreply.github.com> Date: Sun, 17 Mar 2024 22:30:29 +0800 Subject: [PATCH 0756/2004] feat(poolside): adding arbitrum deployment to sdk-adapter tracking (#9398) --- projects/poolside/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/poolside/index.js b/projects/poolside/index.js index 523c3edfc85..7f2ae71b25d 100644 --- a/projects/poolside/index.js +++ b/projects/poolside/index.js @@ -5,6 +5,7 @@ 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 => { @@ -22,4 +23,4 @@ Object.keys(config).forEach(chain => { return sumTokens2({ api, ownerTokens, }) } } -}) \ No newline at end of file +}) From 6a4727d2b2e8e332d6be658200b820c46d2f6139 Mon Sep 17 00:00:00 2001 From: kaoyaswap Date: Sun, 17 Mar 2024 17:45:14 +0300 Subject: [PATCH 0757/2004] Kaoyaswap sdk adapter --- projects/kaoyaswap/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/kaoyaswap/index.js diff --git a/projects/kaoyaswap/index.js b/projects/kaoyaswap/index.js new file mode 100644 index 00000000000..bbf0048cb8e --- /dev/null +++ b/projects/kaoyaswap/index.js @@ -0,0 +1,17 @@ +const { staking } = require("../helper/staking"); + +const MasterChefContract = "0x21F17c2eC5741c1bEb76d50F08171138A6BA97bf"; +const KY = "0xa8a33e365D5a03c94C3258A10Dd5d6dfE686941B"; + +const { getUniTVL } = require('../helper/unknownTokens') +module.exports = { + methodology: `Uses factory(0xbFB0A989e12D49A0a3874770B1C1CdDF0d9162aA)`, + misrepresentedTokens: true, + doublecounted: false, + timetravel: true, + incentivized: true, + bsc: { + tvl: getUniTVL({ factory: '0xbFB0A989e12D49A0a3874770B1C1CdDF0d9162aA', chain: 'bsc', useDefaultCoreAssets: true }), + staking: staking(MasterChefContract, KY, "bsc"), + } +}; \ No newline at end of file From 04ac430f60a8905703640e21c3209682b5758566 Mon Sep 17 00:00:00 2001 From: picardcapt1212 Date: Mon, 18 Mar 2024 00:46:58 +0900 Subject: [PATCH 0758/2004] Update MVL staking methodology --- projects/mvl/index.js | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/projects/mvl/index.js b/projects/mvl/index.js index ae930d36fa3..1c29e26f04c 100644 --- a/projects/mvl/index.js +++ b/projects/mvl/index.js @@ -8,24 +8,6 @@ const ETH_SINGLE = "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71"; // MVL Token const BSC_LP = "0xE01eDA650632986B2E5B8167F629D7C7c759D4FD"; // BNB-bMVL LP Token const BSC_SINGLE = "0x5f588EfAf8eB57e3837486e834fC5a4E07768D98"; // bMVL Token -async function ethereum(_, block) { - const toa = [ - [ETH_SINGLE, ETH_LP], - [ADDRESSES.ethereum.WETH, ETH_LP], - ] - - return sumTokens2({ tokensAndOwners: toa, block, }) -} -async function bsc(_, _b, { bsc: block }) { - const chain = 'bsc' - const toa = [ - [BSC_SINGLE, BSC_LP], - [ADDRESSES.bsc.WBNB, BSC_LP], - ] - - return sumTokens2({ tokensAndOwners: toa, block, chain }) -} - const config = { ethereum: { token: ETH_SINGLE, @@ -38,7 +20,7 @@ const config = { "0x34fDA56b5c9Aa52DF9fa51b01666683b7b1434d6", "0xC0496C7B9D7150A81bD6fF1d015e95668BD4abeD", ], - tvl: ethereum + }, bsc: { token: BSC_SINGLE, @@ -52,15 +34,17 @@ const config = { "0xC948622856a40Efd50d74BA6e3624FE7100A95Ef", "0xc81632E77Ea7262137EA815DC8BA7a47A5a01ab1", ], - tvl: bsc + }, }; Object.keys(config).forEach((chain) => { const { lp, token, staking, pool2, tvl } = config[chain]; module.exports[chain] = { - tvl: tvl, + tvl: () => ({}), staking: stakings(staking, token, chain), pool2: pool2s(pool2, [lp], chain), + 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." }; }); \ No newline at end of file From bf220ab0f689db22f0f766bdd3753a496234c7c9 Mon Sep 17 00:00:00 2001 From: picardcapt1212 Date: Mon, 18 Mar 2024 00:48:15 +0900 Subject: [PATCH 0759/2004] Refactor adapter --- projects/mvl/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/projects/mvl/index.js b/projects/mvl/index.js index 1c29e26f04c..9e262b1c5fd 100644 --- a/projects/mvl/index.js +++ b/projects/mvl/index.js @@ -1,7 +1,5 @@ const { stakings } = require("../helper/staking.js"); const { pool2s } = require("../helper/pool2.js"); -const { sumTokens2, } = require('../helper/unwrapLPs'); -const ADDRESSES = require('../helper/coreAssets.json'); const ETH_LP = "0x3c8ad34155b83ddb7f43119a19503d34ed2b5c7a"; // ETH-MVL LP Token const ETH_SINGLE = "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71"; // MVL Token From deb28d7ffb10c60320a6105cf65387dbb224567b Mon Sep 17 00:00:00 2001 From: LtSnakePlissken Date: Sun, 17 Mar 2024 14:05:09 -0600 Subject: [PATCH 0760/2004] Added Bitgert, Metis, Wan, Neon EVM, Astar, Base, Linea, Velas, and Q chains to Elk Finance project (Uni V2) --- projects/elkfinance/index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/elkfinance/index.js b/projects/elkfinance/index.js index c320098dc54..cf3e078d857 100644 --- a/projects/elkfinance/index.js +++ b/projects/elkfinance/index.js @@ -22,7 +22,17 @@ const factories = { optimism: "0xedfad3a0F42A8920B011bb0332aDe632e552d846", arbitrum: "0xA59B2044EAFD15ee4deF138D410d764c9023E1F0", kava: "0xC012C4b3d253A8F22d5e4ADA67ea2236FF9778fc", - bittorrent: "0xc06348AEE3f3E92eE452816E0D3F25C919F6fB04" + bittorrent: "0xc06348AEE3f3E92eE452816E0D3F25C919F6fB04", + bitgert: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + metis: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + wan: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + neon_evm: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + astar: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + base: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + linea: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + velas: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", + q: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4" + } function chainTvl(chain) { From 0a10f708956a89918f0742f673e6170575e73b69 Mon Sep 17 00:00:00 2001 From: LtSnakePlissken Date: Sun, 17 Mar 2024 14:08:26 -0600 Subject: [PATCH 0761/2004] Added Bitgert, Metis, Wan, Neon EVM, Astar, Base, Linea, Velas, and Q chains to Elk Finance project (Uni V2) --- projects/elkfinance/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/elkfinance/index.js b/projects/elkfinance/index.js index cf3e078d857..b6f6026c629 100644 --- a/projects/elkfinance/index.js +++ b/projects/elkfinance/index.js @@ -32,7 +32,6 @@ const factories = { linea: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", velas: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4", q: "0xfbb4E52FEcc90924c79F980eb24a9794ae4aFFA4" - } function chainTvl(chain) { From b50b5ec3ccd3c834c9bc6049a8887546dd7bd518 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sun, 17 Mar 2024 20:20:48 +0000 Subject: [PATCH 0762/2004] weekly token move (merge once live on server) (#9401) --- projects/helper/tokenMapping.js | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 50711754e0a..44208c87df1 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,37 +34,6 @@ const ibcMappings = { } const fixBalancesTokens = { - - "naka": { - "0xDe4c4768ee70D97C044062fEC971eAE91B6aFAB7": { coingeckoId: "wrapped-bitcoin", decimals: 18 }, - "0x4F90055b8670B21d64146577152aE52975075900": { coingeckoId: "ethereum", decimals: 18 }, - "0xBD0adB3Ee21e0A75D3021384177238883D69e883": { coingeckoId: "ordinals", decimals: 18 }, - }, - astrzk: { - [ADDRESSES.astarzk.WETH]: { coingeckoId: "ethereum", decimals: 18 }, - }, - inevm: { - "0x97423a68bae94b5de52d767a17abcc54c157c0e5": { coingeckoId: "tether", decimals: 6 }, - "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147": { coingeckoId: "usd-coin", decimals: 6 }, - "0x69011706b3f6c6eaed7d2bc13801558b4fd94cbf": { coingeckoId: "injective-protocol", decimals: 18 }, - "0x4c3a213bd5e8c4bd70a8396d6f3c8302571598cd": { coingeckoId: "injective-protocol", decimals: 18 }, - }, - sapphire: { - "0x8bc2b030b299964eefb5e1e0b36991352e56d2d3": { coingeckoId: "oasis-network", decimals: 18 }, - "0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019": { coingeckoId: "oasis-network", decimals: 18 }, - "0x9ca066f00e55b90623efe323feb2a649686538b6": { coingeckoId: "tether", decimals: 6 }, - "0x013e54bee29813bd786b24f9cb08f47c4b75955c": { coingeckoId: "usd-coin", decimals: 6 }, - "0x3e4079ad76c83760e22b5c0105670ebab88b8d0e": { coingeckoId: "tether", decimals: 18 }, - }, - bfc: { - "0x7b8FAC5F29E101BaaB33c5f9c39d4F85ba2cc7C1": { coingeckoId: "wrapped-bitcoin", decimals: 8 }, - "0xd267F821F1b8344B5A63626c8c824697194A173E": { coingeckoId: "bitcoin-avalanche-bridged-btc-b", decimals: 18 }, - }, - q: { - [ADDRESSES.q.WUSDC]: { coingeckoId: "usd-coin", decimals: 6 }, - [ADDRESSES.q.WDAI]: { coingeckoId: "dai", decimals: 18 }, - [ADDRESSES.q.WBTC]: { coingeckoId: "wrapped-bitcoin", decimals: 8 }, - }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain From f855e65a70d51b62616067abb66ae1bd7774ce6e Mon Sep 17 00:00:00 2001 From: Shyngys Shynbolatov Date: Mon, 18 Mar 2024 14:05:10 +0700 Subject: [PATCH 0763/2004] Update coreAssets.json --- projects/helper/coreAssets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 69196cc2e3d..809ab35cc47 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -44,7 +44,8 @@ "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", - "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2" + "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2", + "AEVO": "0xB528edBef013aff855ac3c50b381f253aF13b997" }, "fantom": { "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", From 67afc456c5cc13741f84cf22438babf2f7af01f4 Mon Sep 17 00:00:00 2001 From: Wallet Api Date: Mon, 18 Mar 2024 14:59:11 +0700 Subject: [PATCH 0764/2004] add megalon --- projects/megalon/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/megalon/index.js diff --git a/projects/megalon/index.js b/projects/megalon/index.js new file mode 100644 index 00000000000..1b3e90a3d91 --- /dev/null +++ b/projects/megalon/index.js @@ -0,0 +1,7 @@ +const {getUniTVL} = require("../helper/unknownTokens"); + +module.exports = { + era: { + tvl: getUniTVL({ factory: "0xb618Db8D97db96f31C1eb0Fb99D9b5b372c2BdD3", useDefaultCoreAssets: true,}) + }, +}; \ No newline at end of file From 8f52ff532770fc16bb7bee444831eebabd065fa4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 18 Mar 2024 09:02:18 +0100 Subject: [PATCH 0765/2004] Update follow-redirects to version 1.15.6 --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ea51958b62..fd4d57d24b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2796,9 +2796,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", From 995c4db6b2112f42e13dc0fcdc4a8334070e0ce2 Mon Sep 17 00:00:00 2001 From: Aiden <30964272+0xaaiden@users.noreply.github.com> Date: Mon, 18 Mar 2024 08:11:07 +0000 Subject: [PATCH 0766/2004] add btt to spookyswap (#9405) --- projects/spookyswap/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/spookyswap/index.js b/projects/spookyswap/index.js index d678e8b467d..cd7b2c91901 100644 --- a/projects/spookyswap/index.js +++ b/projects/spookyswap/index.js @@ -7,4 +7,7 @@ module.exports={ eon:{ tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xa6AD18C2aC47803E193F75c3677b14BF19B94883' }), }, +bittorrent: { + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xee4bc42157cf65291ba2fe839ae127e3cc76f741' }), + } } \ No newline at end of file From 5945ddb2454bc4ea79c4334d2cbb9b04ff297970 Mon Sep 17 00:00:00 2001 From: buchaoqun Date: Mon, 18 Mar 2024 18:13:14 +0800 Subject: [PATCH 0767/2004] Statistics vault balance --- projects/solv-protocol-funds/index.js | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 8a584fabbd7..3791e9d3f9c 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -76,6 +76,9 @@ async function tvl(ts, _, _1, { api }) { await gm(api, address); await mux(api, address); + await vaultBalance(api, address); + + return api.getBalances(); } async function gm(api, address) { @@ -106,6 +109,7 @@ async function mantleTvl(ts, _, _1, { api }) { await klp(api, address); await iziswap(api, address); await lendle(api, address); + await vaultBalance(api, address); return api.getBalances(); } @@ -226,6 +230,47 @@ async function lendle(api, address) { api.add(lendleData.account.ethAddress, balance) } +async function vaultBalance(api, address) { + const network = api.chain; + const depositAddress = filterDepositAddress(network, address); + const graphData = await getGraphData(api.timestamp, network, api); + + if (graphData.pools.length > 0) { + const poolLists = graphData.pools; + + var pools = poolLists.filter((value) => { + return depositAddress.length > 0 && depositAddress.indexOf(value.vault) > -1; + }); + + const poolConcretes = await concrete(pools, api); + + const poolBaseInfos = await api.multiCall({ + abi: abi.slotBaseInfo, + calls: pools.map((index) => ({ + target: poolConcretes[index.contractAddress], + params: [index.openFundShareSlot] + })), + }) + + let vaults = {}; + for (const key in pools) { + vaults[`${poolBaseInfos[key][1].toLowerCase()}-${pools[key]["vault"].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]] + })), + }) + + for (const key in balances) { + api.add(Object.values(vaults)[key][0], balances[key]) + } + } +} + async function getGraphData(timestamp, chain, api) { let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); From 0e1dd92c16bc34575bc3bd243090a4c9160977dc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:21:43 +0100 Subject: [PATCH 0768/2004] Sym (#9413) * symbiosis adds zklink support * Add ZKLink RPC endpoint and token mapping for zklink.WETH --------- Co-authored-by: allush --- projects/helper/chains.json | 3 ++- projects/helper/coreAssets.json | 3 +++ projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 3 +++ projects/symbiosis-finance/config.js | 9 +++++++++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index ee72ece7f14..890bfec7f4e 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -287,5 +287,6 @@ "zksync", "zyx", "zeta", - "fraxtal" + "fraxtal", + "zklink" ] diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 69196cc2e3d..1bf5bc0093f 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1658,5 +1658,8 @@ "WBTC": "0xde397e6C442A3E697367DecBF0d50733dc916b79", "WDAI": "0xDeb87c37Dcf7F5197026f574cd40B3Fc8Aa126D1", "WUSDC": "0x79Cb92a2806BF4f82B614A84b6805963b8b1D8BB" + }, + "zklink": { + "WETH": "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169" } } diff --git a/projects/helper/env.js b/projects/helper/env.js index 532df877e0e..bc59f2edf8b 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -20,6 +20,7 @@ const DEFAULTS = { OZONE_RPC: "https://node1.ozonechain.io", ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", + ZKLINK_RPC: "https://rpc.zklink.io", } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 44208c87df1..156469492e6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,6 +34,9 @@ const ibcMappings = { } const fixBalancesTokens = { + zklink: { + [ADDRESSES.zklink.WETH]: { coingeckoId: "ethereum", decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 7bcc4649795..1045a417e64 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -298,5 +298,14 @@ module.exports = { '0x318C2B9a03C37702742C3d40C72e4056e430135A', // portal v2 ] }, + { + name: 'zklink', + tokens: [ + ADDRESSES.zklink.WETH, + ], + holders: [ + '0x8Dc71561414CDcA6DcA7C1dED1ABd04AF474D189', // portal v2 + ] + }, ] } \ No newline at end of file From 58afc01b47ac49b0a8695a6488bf32679a890647 Mon Sep 17 00:00:00 2001 From: Raul <42917076+elRaulito@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:28:54 +0100 Subject: [PATCH 0769/2004] Added stake --- projects/fluidtokens/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index 2bbf666f35b..4defbb270b5 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -63,6 +63,14 @@ async function tvl() { }; } +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( ts //timestamp in seconds @@ -90,6 +98,7 @@ module.exports = { cardano: { tvl, borrowed, + staking }, hallmarks: [ [Math.floor(new Date("2023-01-01") / 1e3), "Count only active loans"], From 5c658b448fdd7936c259610d276f3c00931fb5ba Mon Sep 17 00:00:00 2001 From: LeeRyanj <138840879+LeeRyanj@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:45:27 +0800 Subject: [PATCH 0770/2004] Update index.js (#9408) * Update index.js add stone on manta network * Update index.js --- projects/kiloex/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/kiloex/index.js b/projects/kiloex/index.js index 85283623f86..0ffd836d483 100644 --- a/projects/kiloex/index.js +++ b/projects/kiloex/index.js @@ -3,7 +3,8 @@ const { sumTokensExport } = require("../helper/unwrapLPs"); const owners = ["0x1c3f35F7883fc4Ea8C4BCA1507144DC6087ad0fb", "0xfE03be1b0504031e92eDA810374222c944351356"]; const opbnb_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46"]; -const manta_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46"]; +const manta_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46", "0x471C5e8Cc0fEC9aeeb7ABA6697105fD6aaaDFf99"]; +const manta_stone_token = "0xEc901DA9c68E90798BbBb74c11406A32A70652C3"; module.exports = { start: 1690971144, @@ -12,6 +13,6 @@ module.exports = { tvl: sumTokensExport({ owners: opbnb_owners, tokens: [ADDRESSES.op_bnb.USDT] }) }, manta: { - tvl: sumTokensExport({ owners: manta_owners, tokens: [ADDRESSES.manta.USDT] }) + tvl: sumTokensExport({ owners: manta_owners, tokens: [ADDRESSES.manta.USDT, manta_stone_token] }) }, -}; \ No newline at end of file +}; From 5eb86b322f84bb15f8c7b6efd181fe6a38b39e0e Mon Sep 17 00:00:00 2001 From: Denis Kostylev Date: Mon, 18 Mar 2024 11:46:48 +0000 Subject: [PATCH 0771/2004] add envelop --- projects/envelop/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/envelop/index.js diff --git a/projects/envelop/index.js b/projects/envelop/index.js new file mode 100644 index 00000000000..c575a95ff52 --- /dev/null +++ b/projects/envelop/index.js @@ -0,0 +1,25 @@ + +const { sumTokensExport } = require("../helper/unwrapLPs"); +const ADDRESSES = require('../helper/coreAssets.json'); + +const WRAPPER_ADDRESS = '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128'; + +const usdb = ADDRESSES.blast.USDB; +const weth = ADDRESSES.blast.WETH; +const _eth = '0x0000000000000000000000000000000000000000'; + +module.exports = { + hallmarks: [ + [1709667755, "Contract created"] + ], + timetravel: true, + misrepresentedTokens: false, + methodology: 'TVL is the collateral coins, tokens, NFTs wrapped in Envelop vaults.', + start: 0, + blast: { + tvl: sumTokensExport({ + owner: WRAPPER_ADDRESS, + tokens: [ _eth, weth, usdb ], + }), + } +}; From 2d6b05779c7622947dbbaa8bf26a449054aea85a Mon Sep 17 00:00:00 2001 From: Asimof <159416147+asimof@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:48:43 +0800 Subject: [PATCH 0772/2004] molend adapter (#9412) --- projects/molend/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/molend/index.js diff --git a/projects/molend/index.js b/projects/molend/index.js new file mode 100644 index 00000000000..76d4ef15a0d --- /dev/null +++ b/projects/molend/index.js @@ -0,0 +1,5 @@ +const { aaveExports } = require('../helper/aave') + +module.exports = { + mode: aaveExports("mode", "0xB6796E12ADC78993DB1a33Cedbc459a4A848ED69"), +} From 57d74a4abfcc2ba0c32fa692204395587c840289 Mon Sep 17 00:00:00 2001 From: Fry <97352567+phijfry@users.noreply.github.com> Date: Mon, 18 Mar 2024 16:18:53 +0000 Subject: [PATCH 0773/2004] [Fix]: Hyperlock tvl-ish (#9417) * fix: hyperlock tvl-ish * feat: lint * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hyperlock/index.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js index c1daf49b76c..14419218d5a 100644 --- a/projects/hyperlock/index.js +++ b/projects/hyperlock/index.js @@ -1,9 +1,12 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const v2Deposits = "0xC3EcaDB7a5faB07c72af6BcFbD588b7818c4a40e"; +const v3Deposits = "0xc28EffdfEF75448243c1d9bA972b97e32dF60d06"; // https://docs.hyperlock.finance/developers/hyperlock-contracts module.exports = { doublecounted: true, blast: { - tvl: sumTokensExport({ owners: ['0xc28EffdfEF75448243c1d9bA972b97e32dF60d06', '0xC3EcaDB7a5faB07c72af6BcFbD588b7818c4a40e'], resolveUniV3: true, }) - } -} \ No newline at end of file + tvl: sumTokensExport({ owners: [v2Deposits, v3Deposits], tokens: ["0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df"], resolveUniV3: true, resolveLP: true }), + }, +}; From 1550453f017d9ca039c9ffa86af7bd21120e6886 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 18 Mar 2024 17:40:43 +0100 Subject: [PATCH 0774/2004] Liqx (#9418) * add LiquiX * refactor using on chain data * fix eslint error * code refactor --------- Co-authored-by: danetteceola --- projects/liquix/index.js | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/liquix/index.js diff --git a/projects/liquix/index.js b/projects/liquix/index.js new file mode 100644 index 00000000000..df94aba6023 --- /dev/null +++ b/projects/liquix/index.js @@ -0,0 +1,41 @@ +const { getLogs } = require('../helper/cache/getLogs') + +const config = { + arbitrum: { + network: "arbitrum", + factory: "0x37215Af590CED3f50a4e3Af8BE903E4307C71C1F", + helper: "0x6376f97fc9bc9a0ebd03fa89eF8a653A79b41e98", + fromBlock: 145653947, + }, +}; + + +module.exports = { + doublecounted: true, + misrepresentedTokens: true, +}; + +Object.keys(config).forEach((chain) => { + const { factory, helper, fromBlock } = config[chain]; + module.exports[chain] = { + tvl: async (_, _b, _cb, { 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) + for (let i = 0; i < vaults.length; i++) { + const balances = await api.call({ abi: 'function totalUnderlying(address vault_) external view returns ((address,uint256)[] memory)', target: helper, params: vaults[i] }); + for (let j = 0; j < balances.length; j++) { + const token0 = balances[j][0]; + const balance = balances[j][1]; + api.add(token0, balance) + } + } + } + } +}); \ No newline at end of file From 3baaf3cc1fb8d4f5eb7cfc78b6a62920d0559a4b Mon Sep 17 00:00:00 2001 From: Johnny J Date: Tue, 19 Mar 2024 00:50:47 +0800 Subject: [PATCH 0775/2004] feat: add MYX-Finance adapters (#9342) * feat: add myx-finance adapters * feat: compute tvl onchain * chore: remove useless field * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/myx-finance/index.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 projects/myx-finance/index.js diff --git a/projects/myx-finance/index.js b/projects/myx-finance/index.js new file mode 100644 index 00000000000..b50a7e57ad6 --- /dev/null +++ b/projects/myx-finance/index.js @@ -0,0 +1,33 @@ +const { getLogs } = require('../helper/cache/getLogs') +const ADDRESSES = require('../helper/coreAssets.json') + + +const config = { + arbitrum: { vault: '0x8932aA60A7b5EfEFA8Ec3ee899Fd238D029d10c6', fromBlock: 175954437 }, + linea: { vault: '0x03f61a185efEEEFdd3Ba032AFa8A0259337CEd64', fromBlock: 2390784 }, +}; + +module.exports = { + misrepresentedTokens: false, + timetravel: true, +}; + +Object.keys(config).forEach((chain) => { + module.exports[chain] = { tvl }; +}); + +async function tvl(_, _b, _cb, { api, }) { + const { vault, fromBlock } = config[api.chain]; + const logs = await getLogs({ + api, + target: vault, + eventAbi: 'event PairAdded ( address indexed indexToken, address indexed stableToken, address lpToken, uint256 index)', + onlyArgs: true, + fromBlock, + }) + + const tokens = logs.map(log => log.indexToken).concat(logs.map(log => log.stableToken)) + tokens.push(ADDRESSES.null) + return api.sumTokens({ owner: vault, tokens }) + +} \ No newline at end of file From 6e379f342c284a93490a94ed6eb19b062d98bab5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 18 Mar 2024 17:55:47 +0100 Subject: [PATCH 0776/2004] minor fix --- projects/MantaTimeLockContract/index.js | 24 +++--------------------- projects/envelop/index.js | 9 +-------- projects/kaoyaswap/index.js | 8 ++------ projects/myx-finance/index.js | 9 +-------- 4 files changed, 7 insertions(+), 43 deletions(-) diff --git a/projects/MantaTimeLockContract/index.js b/projects/MantaTimeLockContract/index.js index 20f6245ff0d..48c2933078d 100644 --- a/projects/MantaTimeLockContract/index.js +++ b/projects/MantaTimeLockContract/index.js @@ -1,31 +1,13 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + const MANTA = '0x95CeF13441Be50d20cA4558CC0a27B601aC544E5'; const STONE = '0xEc901DA9c68E90798BbBb74c11406A32A70652C3'; const TIME_LOCK_CONTRACT = '0x8Bb6CaE3f1CADA07Dd14bA951e02886ea6bBA183'; -async function tvl(_, _1, _2, { api }) { - const mantaBalance = await api.call({ - abi: 'erc20:balanceOf', - target: MANTA, - params: [TIME_LOCK_CONTRACT], - }); - - api.add(MANTA, mantaBalance); - - const stoneBalance = await api.call({ - abi: 'erc20:balanceOf', - target: STONE, - params: [TIME_LOCK_CONTRACT], - }); - - api.add(STONE, stoneBalance); -} - module.exports = { - timetravel: true, - misrepresentedTokens: false, methodology: 'counts the number of (MANTA OR STONE) in the time lock contract.', start: 1497066, manta: { - tvl, + tvl: sumTokensExport({ owner: TIME_LOCK_CONTRACT, tokens: [MANTA, STONE] }), } }; diff --git a/projects/envelop/index.js b/projects/envelop/index.js index c575a95ff52..f04ced25c4b 100644 --- a/projects/envelop/index.js +++ b/projects/envelop/index.js @@ -4,22 +4,15 @@ const ADDRESSES = require('../helper/coreAssets.json'); const WRAPPER_ADDRESS = '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128'; -const usdb = ADDRESSES.blast.USDB; -const weth = ADDRESSES.blast.WETH; -const _eth = '0x0000000000000000000000000000000000000000'; - module.exports = { hallmarks: [ [1709667755, "Contract created"] ], - timetravel: true, - misrepresentedTokens: false, methodology: 'TVL is the collateral coins, tokens, NFTs wrapped in Envelop vaults.', - start: 0, blast: { tvl: sumTokensExport({ owner: WRAPPER_ADDRESS, - tokens: [ _eth, weth, usdb ], + tokens: [ADDRESSES.null, ADDRESSES.blast.WETH, ADDRESSES.blast.USDB,], }), } }; diff --git a/projects/kaoyaswap/index.js b/projects/kaoyaswap/index.js index bbf0048cb8e..2aefb519bbc 100644 --- a/projects/kaoyaswap/index.js +++ b/projects/kaoyaswap/index.js @@ -5,13 +5,9 @@ const KY = "0xa8a33e365D5a03c94C3258A10Dd5d6dfE686941B"; const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - methodology: `Uses factory(0xbFB0A989e12D49A0a3874770B1C1CdDF0d9162aA)`, misrepresentedTokens: true, - doublecounted: false, - timetravel: true, - incentivized: true, bsc: { - tvl: getUniTVL({ factory: '0xbFB0A989e12D49A0a3874770B1C1CdDF0d9162aA', chain: 'bsc', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, KY, "bsc"), + tvl: getUniTVL({ factory: '0xbFB0A989e12D49A0a3874770B1C1CdDF0d9162aA', useDefaultCoreAssets: true }), + staking: staking(MasterChefContract, KY), } }; \ No newline at end of file diff --git a/projects/myx-finance/index.js b/projects/myx-finance/index.js index b50a7e57ad6..6b2b1cc5f29 100644 --- a/projects/myx-finance/index.js +++ b/projects/myx-finance/index.js @@ -1,16 +1,10 @@ const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') - const config = { arbitrum: { vault: '0x8932aA60A7b5EfEFA8Ec3ee899Fd238D029d10c6', fromBlock: 175954437 }, linea: { vault: '0x03f61a185efEEEFdd3Ba032AFa8A0259337CEd64', fromBlock: 2390784 }, -}; - -module.exports = { - misrepresentedTokens: false, - timetravel: true, -}; +} Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl }; @@ -29,5 +23,4 @@ async function tvl(_, _b, _cb, { api, }) { const tokens = logs.map(log => log.indexToken).concat(logs.map(log => log.stableToken)) tokens.push(ADDRESSES.null) return api.sumTokens({ owner: vault, tokens }) - } \ No newline at end of file From f7290bf6b345b9b34c24fc2278d517c6436f4a14 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 18 Mar 2024 18:07:26 +0100 Subject: [PATCH 0777/2004] minor fix --- projects/cellana/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 5d2acc955e9..51799a40a45 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -39,7 +39,6 @@ async function _getCELLbalances(api) { module.exports = { timetravel: false, - misrepresentedTokens: true, methodology: "Counts the lamports in each coin container in the Cellena contract account.", aptos: { From 3a1863995b1766b128fa4d799ce744c987b82f46 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 19 Mar 2024 01:44:01 +0000 Subject: [PATCH 0778/2004] add spot --- projects/spot/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/spot/index.js diff --git a/projects/spot/index.js b/projects/spot/index.js new file mode 100644 index 00000000000..42ca6e1684f --- /dev/null +++ b/projects/spot/index.js @@ -0,0 +1,9 @@ +module.exports={ + ethereum:{ + tvl: async (_t, _b, _c, {api})=>{ + const tranches = await api.fetchList({ lengthAbi: 'deployedCount', itemAbi: 'deployedAt', target: "0x82a91a0d599a45d8e9af781d67f695d7c72869bd" }) + const bonds = await api.multiCall({ abi: 'address:bond', calls: tranches }) + return api.sumTokens({ tokens: ["0xd46ba6d942050d489dbd938a2c909a5d5039a161"], owners: [...bonds, "0x82A91a0D599A45d8E9Af781D67f695d7C72869Bd"] }) + } + } +} \ No newline at end of file From 7dd43d2274912d3897d7fdad79536fb944caec3f Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 19 Mar 2024 04:01:09 +0000 Subject: [PATCH 0779/2004] add curve's llamalend --- projects/llamalend-curve/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/llamalend-curve/index.js diff --git a/projects/llamalend-curve/index.js b/projects/llamalend-curve/index.js new file mode 100644 index 00000000000..eca60f0a275 --- /dev/null +++ b/projects/llamalend-curve/index.js @@ -0,0 +1,22 @@ + +const uniq = (arr) => Array.from(new Set(arr)) +module.exports={ + ethereum:{ + tvl: async (_t, _b, _c, {api})=>{ + const markets = await api.fetchList({ lengthAbi: 'market_count', itemAbi: 'controllers', target: "0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0" }) + 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: "0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0" }) + 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() + } + } +} \ No newline at end of file From 99c6d0b2068e11f0c30544c65a85121bf84a8ee4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 11:06:34 +0100 Subject: [PATCH 0780/2004] update iziswap --- projects/izumi-iziswap/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index ec31ff7e2fc..c7475290ef4 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -27,6 +27,10 @@ const poolHelpers = { 'base': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], 'zkfair': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], 'zeta': ['0x2db0AFD0045F3518c77eC6591a542e326Befd3D7'], + 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], + 'blast': ['0x5e7902aDf0Ea0ff827683Cc1d431F740CAD0731b'], + 'zklink': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F'], + 'mode': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], } // iziswap liquidityManager contracts const blacklistedTokens = [ From b20e396628e592554ef1b046d396a455418c2372 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 11:44:48 +0100 Subject: [PATCH 0781/2004] Amu (#9430) * add amu token * amulet: move staking --------- Co-authored-by: Alex --- projects/amulet-v2/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/amulet-v2/index.js b/projects/amulet-v2/index.js index d64c6554369..e9b556dffa6 100644 --- a/projects/amulet-v2/index.js +++ b/projects/amulet-v2/index.js @@ -101,7 +101,15 @@ async function SolanaTvl() { const tokensAndOwners = [ ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'AkkGFKVJY8o5MRqBf2St4Q8NQnfTTi2bSssMMk9zXAMr'], ['J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', '86vJYeZiXc9Uq1wmtLzERDfQzAnpoJgs2oF5Y4BirKkn'], - ['bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1', '8HpEPmkKb6T7xNDzhheWhK2P6BEdp2nGv7JbcEoDmDST'] + ['bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1', '8HpEPmkKb6T7xNDzhheWhK2P6BEdp2nGv7JbcEoDmDST'], + ] + + return sumTokens2({ tokensAndOwners }) +} + +async function staking() { + const tokensAndOwners = [ + ['AMUwxPsqWSd1fbCGzWsrRKDcNoduuWMkdR38qPdit8G8', 'NEFYtG7y49aLYbyPqQHAkzzCSms5VmVtA6bJWHJErSD'] ] return sumTokens2({ tokensAndOwners }) @@ -111,5 +119,5 @@ module.exports = { ethereum: { tvl }, polygon_zkevm: { tvl }, optimism: { tvl }, - solana: { tvl: SolanaTvl } + solana: { tvl: SolanaTvl, staking, } } \ No newline at end of file From 3f439bee722c686024171d005eab60eb4dddd7cf Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:46:16 +0800 Subject: [PATCH 0782/2004] add additional vaults to tvl calculation (#9427) --- projects/airpuff/index.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index e0f3f90dfa9..e74901a70ed 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -39,11 +39,11 @@ module.exports = { oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B", }; - // const rsETH = { - // vault: "0x65E7C3C88806FF010BB197B2577cCddA9704fA2F", - // reStakingToken: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - // oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", - // }; + const rsETH = { + vault: "0xEc69AaC84D3081aA6F4636C5DBD3D7C2c2F42a9C", + reStakingToken: "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", + }; const ezETH1x = { vault: "0xa9A57D0824a613d181e0323b0cA85fBD4E27160B", @@ -63,7 +63,7 @@ module.exports = { oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", }; - const strategies = [ezETH, weETH, ezETH1x, weETH1x, rsETH1x]; + const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x]; for (const strategy of strategies) { const bal = await api.call({ @@ -126,7 +126,24 @@ module.exports = { oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", }; - const strategies = [ezETH, weETH, rsETH]; + const ezETH1x = { + vault: "0x0bAc1a3D569c16D8AD9D3aB37f61dAF18DCfF781" /*vault*/, + reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5" /*reStakingToken*/, + oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B" /*oracle*/, + }; + const weETH1x = { + vault: "0xF528B8EA22a17000e49a914658d7E0F7d982803e" /*vault*/, + reStakingToken: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe" /*reStakingToken*/, + oracle: "0x6869f88582D049B9968A0Ef7bFCA2609D5F0123B" /*oracle*/, + }; + + const rsETH1x = { + vault: "0xe929BF8368171a76D4A828ee2cD4A50CcE31d203" /*vault*/, + reStakingToken: "0x4186BFC76E2E237523CBC30FD220FE055156b41F" /*reStakingToken*/, + oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", + }; + + const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x]; for (const strategy of strategies) { const bal = await api.call({ From 5dcc50adedf6684d6a5513749a8f1c43e5c1a78e Mon Sep 17 00:00:00 2001 From: BlastexNet <163883211+BlastexNet@users.noreply.github.com> Date: Tue, 19 Mar 2024 12:49:43 +0200 Subject: [PATCH 0783/2004] Blastex adapter created (#9419) * Blastex adapter created * all TVL is locked on the ThrusterSwap contracts * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blastex/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/blastex/index.js diff --git a/projects/blastex/index.js b/projects/blastex/index.js new file mode 100644 index 00000000000..8c5022a3838 --- /dev/null +++ b/projects/blastex/index.js @@ -0,0 +1,13 @@ +const { sumTokensExport } = require('../helper/unknownTokens') + +const main = '0xdC0C0746CA0954E6C2284D1a97cC85474B051EbB' +const token = '0x800ce05BaDE6B87E1552d0301Ea3393ccFf42F4A' +const lps = ['0x974D36201171cA8D28Cc3F46972349d24Be3A303'] + +module.exports = { + blast: { + tvl: () => ({}), + pool2: sumTokensExport({ owner: main, tokens: lps, useDefaultCoreAssets: true }), + staking: sumTokensExport({ owner: main, tokens: [token], lps, useDefaultCoreAssets: true, }) + }, +}; From 71b49a8d0e65b225787559a78ac045d036579af1 Mon Sep 17 00:00:00 2001 From: pthor11 <33623944+pthor11@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:16:23 +0700 Subject: [PATCH 0784/2004] update new staking pool for Metastrike (#9423) --- projects/metastrike/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/metastrike/index.js b/projects/metastrike/index.js index 20759fac7d7..0224756e187 100644 --- a/projects/metastrike/index.js +++ b/projects/metastrike/index.js @@ -16,12 +16,13 @@ const StakingV2Pool1 = '0xb5ec84087352463f21a7ec54d342319bb95bc351' const StakingV2Pool2 = '0xEBc4691b9e28AaE15B5439352c9e50A7b6E76B79' const StakingV2Pool3 = '0x49Ae88cc37fbcAcA51f412707BE81b933Cd4AD5e' const StakingV2Pool4 = '0x38dcC010518E266372DD574fA74a03ccb38Fd30d' +const StakingV2Pool5 = '0x6C7EbB352F92003Aa767675a7a4062ca74206e19' module.exports = { timetravel: true, 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], MTS_TOKEN, 'bsc'), + staking: stakings([StakingV1, StakingV2Pool1, StakingV2Pool2, StakingV2Pool3, StakingV2Pool4, StakingV2Pool5], MTS_TOKEN, 'bsc'), vesting: stakings([VestingCEXV1, VestingCEXV2, VestingAdvisors, VestingTeam, VestingMarketing], MTS_TOKEN, 'bsc'), tvl: () => ({}), } From 2875751e1bbd26f7914f7b8c6aafde726541be53 Mon Sep 17 00:00:00 2001 From: Philip De Smedt Date: Tue, 19 Mar 2024 12:20:34 +0100 Subject: [PATCH 0785/2004] Update arkadiko.js (#9431) Our protocol got a major upgrade (to v2.0) and our reserve contracts got changed through our migration. This is an update to reflect those changes and updates the reserves for DefiLlama. --- projects/arkadiko.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/projects/arkadiko.js b/projects/arkadiko.js index 681d706a4c1..c134a9ca8f8 100644 --- a/projects/arkadiko.js +++ b/projects/arkadiko.js @@ -4,12 +4,7 @@ async function tvl() { // https://info.arkadiko.finance/balances return sumTokens({ owners: [ - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stx-reserve-v1-1', // stacks reserve - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-sip10-reserve-v2-1', // other vaults - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-v3-1', // PoX stackers - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-2-v3-1', - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-3-v3-1', - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stacker-4-v3-1', + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-vaults-pool-active-v1-1', // STX and SIP10 tokens for vaults 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1', // swap tokens ], blacklistedTokens: [ From fba54c28b008713053f54581d0935dea01f4abf0 Mon Sep 17 00:00:00 2001 From: Ian Flexa <85500650+ianflexa@users.noreply.github.com> Date: Tue, 19 Mar 2024 07:22:25 -0400 Subject: [PATCH 0786/2004] add astar zkevm (#9432) * list upgraded contracts: keom zkevm * add isolated markets * add isolated markets * add astar zkevm --------- Co-authored-by: dlock --- projects/keom/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/keom/index.js b/projects/keom/index.js index ebdf36da631..98aa7c928c1 100644 --- a/projects/keom/index.js +++ b/projects/keom/index.js @@ -24,6 +24,12 @@ const config = { cether: "0xd773ffa79258F2D7458F1B74d075F4524Ee3CCa0", }, ], + astrzk: [ + { + comptroller: "0xcD906c5f632daFCBD23d574f85294B32E7986fD9", + cether: "0x79D7c05352a900bE30992D525f946eA939f6FA3E", + } + ] }; const data = []; From bbc5f5088819907c10e70d3d9e1b0cbae86a4429 Mon Sep 17 00:00:00 2001 From: backgroundjun <93336448+backgroundjun@users.noreply.github.com> Date: Tue, 19 Mar 2024 20:23:39 +0900 Subject: [PATCH 0787/2004] Add Gracy Staking Season 4 (#9425) --- projects/gracy-staking/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/gracy-staking/index.js b/projects/gracy-staking/index.js index 8e98c5f23b8..dd0adac97c1 100644 --- a/projects/gracy-staking/index.js +++ b/projects/gracy-staking/index.js @@ -4,6 +4,7 @@ const GRACY_TOKEN = "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"; module.exports = { ethereum: { @@ -12,6 +13,7 @@ module.exports = { STAKING_CONTRACT_SEASON_1, STAKING_CONTRACT_SEASON_2, STAKING_CONTRACT_SEASON_3, + STAKING_CONTRACT_SEASON_4, ], GRACY_TOKEN), }, -}; \ No newline at end of file +}; From 56ae2454b9207b88ff419c2a4aa0fcb30acee72f Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Tue, 19 Mar 2024 19:24:27 +0800 Subject: [PATCH 0788/2004] Changed to get all vault raise balances (#9422) * Changed to get all vault raise balances * Add judgment --- projects/solv-protocol-funds/index.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 3791e9d3f9c..cde8e2fb8f4 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -232,29 +232,26 @@ async function lendle(api, address) { async function vaultBalance(api, address) { const network = api.chain; - const depositAddress = filterDepositAddress(network, address); const graphData = await getGraphData(api.timestamp, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; - var pools = poolLists.filter((value) => { - return depositAddress.length > 0 && depositAddress.indexOf(value.vault) > -1; - }); - - const poolConcretes = await concrete(pools, api); + const poolConcretes = await concrete(poolLists, api); const poolBaseInfos = await api.multiCall({ abi: abi.slotBaseInfo, - calls: pools.map((index) => ({ + calls: poolLists.map((index) => ({ target: poolConcretes[index.contractAddress], params: [index.openFundShareSlot] })), }) let vaults = {}; - for (const key in pools) { - vaults[`${poolBaseInfos[key][1].toLowerCase()}-${pools[key]["vault"].toLowerCase()}`] = [poolBaseInfos[key][1], pools[key]["vault"]] + for (const key in poolLists) { + if (poolBaseInfos[key][1] && poolLists[key]["vault"]) { + vaults[`${poolBaseInfos[key][1].toLowerCase()}-${poolLists[key]["vault"].toLowerCase()}`] = [poolBaseInfos[key][1], poolLists[key]["vault"]] + } } const balances = await api.multiCall({ From 9b4ec28f82739a4ae13016da4125a5982dd350d6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 12:56:13 +0100 Subject: [PATCH 0789/2004] Aera (#9433) --- projects/aera/index.js | 199 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 projects/aera/index.js diff --git a/projects/aera/index.js b/projects/aera/index.js new file mode 100644 index 00000000000..50e07e7b306 --- /dev/null +++ b/projects/aera/index.js @@ -0,0 +1,199 @@ +const { cachedGraphQuery } = require("../helper/cache"); +const { sumTokens2, } = require('../helper/unwrapLPs') + +const COMPOUND_ORACLE_NAME = 'CompoundV3PositionOracle' +const AAVE_ORACLE_NAME = 'AaveV3PositionOracle' + +const config = { + polygon: { + graphUrl: 'https://api.thegraph.com/subgraphs/name/fico23/aera-subgraph-polygon', + aavePool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD', + aavePoolDataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654', + comets: [ + { + address: '0xF25212E676D1F7F89Cd72fFEe66158f541246445', + baseToken: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' + } + ], + cometReward: '0x45939657d1CA34A8FA39A924B71D28Fe8431e581' + }, + ethereum: { + graphUrl: 'https://api.thegraph.com/subgraphs/name/fico23/aera-subgraph', + aavePool: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', + aavePoolDataProvider: '0x7B4EB56E7CD4b454BA8ff71E4518426369a138a3', + comets: [ + { + address: '0xA17581A9E3356d9A858b789D68B4d866e593aE94', + baseToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' + }, + { + address: '0xc3d688B66703497DAA19211EEdff47f25384cdc3', + baseToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + } + ], + cometReward: '0x1B0e765F6224C21223AeA2af16c1C46E38885a40' + } +} + +const graphQuery = `query MyQuery($block: Int) {vaultCreateds(block: {number: $block}){ id vault assetRegistry }}` + +module.exports.methodology = 'Counts tokens held directly in vaults, as well as aave and compound positions.' +module.exports.start = 1682619377 + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (_, _b, _cb, { api, }) => { + const GRAPH_URL = config[chain].graphUrl + const AAVE_POOL = config[chain].aavePool + const AAVE_POOL_DATA_PROVIDER = config[chain].aavePoolDataProvider + const COMETS = config[chain].comets + const COMET_REWARD = config[chain].cometReward + const cacheKey = `aera/${chain}` + + const block = (await api.getBlock()) - 100 // polygon subgraph sync lags + + const { vaultCreateds } = await cachedGraphQuery(cacheKey, GRAPH_URL, graphQuery, { api, variables: { block } }) + + 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 erc4626sAndOwners = [] + const tokensAndOwners = [] + + const erc4626UnderylingMap = {} + const positions = [] + + 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] + + // position assets + if (assetInfo.asset === assetInfo.oracle) { + positions.push([assetInfo.asset, 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, tokenNames,] = 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: 'string:name', calls: positions.map(x => x[0]), permitFailure: true }), + ]) + await processLendingTvls(positions, tokenNames, api, AAVE_POOL, AAVE_POOL_DATA_PROVIDER, COMETS, vaults, COMET_REWARD) + + 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 processLendingTvls(positions, tokenNames, api, AAVE_POOL, AAVE_POOL_DATA_PROVIDER, COMETS, vaults, COMET_REWARD) { + const compoundVaults = []; + const aaveVaults = []; + for (let i = 0; i < positions.length; ++i) { + if (tokenNames[i] === COMPOUND_ORACLE_NAME) { + compoundVaults.push(positions[i][1]); + } else if (tokenNames[i] === AAVE_ORACLE_NAME) { + aaveVaults.push(positions[i][1]); + } + } + + await Promise.all([ + processAaveTvl(aaveVaults, api, AAVE_POOL, AAVE_POOL_DATA_PROVIDER), + processCompoundTvl(compoundVaults, api, COMETS, vaults, COMET_REWARD) + ]) +} + +async function processCompoundTvl(compoundVaults, api, COMETS, vaults, COMET_REWARD) { + if (compoundVaults.length) { + 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) { + 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); + } + } +} + +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))" +} \ No newline at end of file From 1c8bb6cf7ebd88270b7c65dae2514bae124bfc3b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 12:56:39 +0100 Subject: [PATCH 0790/2004] minor fix --- utils/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/package-lock.json b/utils/package-lock.json index f09ac0f8ef3..49a027d3550 100644 --- a/utils/package-lock.json +++ b/utils/package-lock.json @@ -274,9 +274,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -1275,9 +1275,9 @@ } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "fs.realpath": { "version": "1.0.0", From e355ba16e37bd27fee0386061200257f63f1dfae Mon Sep 17 00:00:00 2001 From: usr-icon-foundation <111794534+usr-icon-foundation@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:08:33 +0100 Subject: [PATCH 0791/2004] Added Archway chain to TVL tracking for projects/balanced (#9348) * Added Archway chain to TVL tracking for projects/balanced * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/balanced/index.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/projects/balanced/index.js b/projects/balanced/index.js index 03f821acb9a..04f6f884efe 100644 --- a/projects/balanced/index.js +++ b/projects/balanced/index.js @@ -1,7 +1,6 @@ const { sumTokens } = require('../helper/chain/icx'); const { getConfig } = require('../helper/cache'); const ADDRESSES = require('../helper/coreAssets.json'); -const { get } = require('../helper/http'); const balancedDexContract = 'cxa0af3165c08318e988cb30993b3048335b94af6c'; @@ -9,11 +8,6 @@ async function tvl(_, _b, _cb, { 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) return sumTokens({ api, tokens, owner: balancedDexContract }) - /* const pools = await get('https://balanced.icon.community/api/v1/pools') - pools.forEach(({ quote_liquidity, base_liquidity }) => { - api.add('tether', base_liquidity, { skipChain: true }) - api.add('tether', quote_liquidity, { skipChain: true }) - }) */ } module.exports = { @@ -21,4 +15,7 @@ module.exports = { icon: { tvl }, + archway: { + tvl: () => ({}) + }, }; From 663f89ffa3e310191a818108b462f773724570cf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:19:43 +0100 Subject: [PATCH 0792/2004] Armada (#9434) * add adapter for Armada staking TVL * code refactor --------- Co-authored-by: Taylor123 --- projects/armada-staking/idl.js | 221 +++++++++++++++++++++++++++++++ projects/armada-staking/index.js | 35 +++++ 2 files changed, 256 insertions(+) create mode 100644 projects/armada-staking/idl.js create mode 100644 projects/armada-staking/index.js diff --git a/projects/armada-staking/idl.js b/projects/armada-staking/idl.js new file mode 100644 index 00000000000..5fdcdd538b1 --- /dev/null +++ b/projects/armada-staking/idl.js @@ -0,0 +1,221 @@ +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 new file mode 100644 index 00000000000..7dd3287866e --- /dev/null +++ b/projects/armada-staking/index.js @@ -0,0 +1,35 @@ +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, + }, +}; From c3c8b77bf781204c123c48dbb4ce61d419f25db2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:38:14 +0100 Subject: [PATCH 0793/2004] Waves (#9437) * Add WX staking adapter * Add WX pools * code refactor --------- Co-authored-by: Boris Volkov --- projects/helper/chain/waves.js | 43 ++++++++++---- projects/helper/tokenMapping.js | 37 ++++++++++++ projects/neutrino/index.js | 1 - projects/pepe-bridge/index.js | 11 +--- projects/waves-exchange/index.js | 99 ++++++++++++++++++++++++++------ 5 files changed, 154 insertions(+), 37 deletions(-) diff --git a/projects/helper/chain/waves.js b/projects/helper/chain/waves.js index e1d66254aa5..cbc99b0d881 100644 --- a/projects/helper/chain/waves.js +++ b/projects/helper/chain/waves.js @@ -1,5 +1,6 @@ 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({ @@ -51,6 +52,22 @@ async function wavesBalanceDetails(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 @@ -82,11 +99,19 @@ async function data(address, key) { return response.data; } -const tokenMapping = { - '3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13': { cgId: 'ethereum', decimals: 8 }, - '2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6': { cgId: 'wrapped-bitcoin', decimals: 8 }, - '9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi': { cgId: 'tether', decimals: 6 }, - 'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW': { cgId: 'usd-coin', decimals: 6 }, +/** + * 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 = [] }) { @@ -96,12 +121,7 @@ async function sumTokens({ owners, api, includeWaves = true, blacklistedTokens = const { balances } = await get(API_HOST + `assets/balance/${owner}`); balances.forEach(({ assetId, balance }) => { if (blacklistedTokens.has(assetId)) return; - if (tokenMapping[assetId]) { - const { cgId, decimals } = tokenMapping[assetId] - api.addCGToken(cgId, balance / (10 ** decimals)) - } else { api.add(assetId, balance) - } }) }) ) @@ -112,6 +132,7 @@ async function sumTokens({ owners, api, includeWaves = true, blacklistedTokens = api.addCGToken('waves', balance / 1e8) }) ) + return transformBalances('waves', api.getBalances()) } async function call({ target, key}) { @@ -123,6 +144,8 @@ module.exports = { call, assetDetails, wavesBalanceDetails, + dataSearch, + assetBalance, scriptEvaluate, data, sumTokens, diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 156469492e6..fc1359b99f1 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -37,6 +37,43 @@ const fixBalancesTokens = { zklink: { [ADDRESSES.zklink.WETH]: { coingeckoId: "ethereum", decimals: 18 }, }, + waves: { + 'WAVES': { coingeckoId: 'waves', decimals: 8 }, + 'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7': { coingeckoId: 'waves', decimals: 8 }, + '3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13': { coingeckoId: 'ethereum', decimals: 8 }, + '2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, + '66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo': { coingeckoId: 'binancecoin', decimals: 8 }, + 'QGDb5VHmjUMfHPAvRJ4g36nmU5qYByYyYzReJN71nad': { coingeckoId: 'chainlink', decimals: 8 }, + '2x8CpnEDNw2nsuyvEptEmEbVrkxh9regRDNrqTWThJTZ': { coingeckoId: 'maker', decimals: 8 }, + '78ePJGDo2H6cZUDYsAMzqxe2iSRNgz4QBnYYg58ZxdgH': { coingeckoId: 'uniswap', decimals: 8 }, + 'AhGJvjtYmRG2pKwXvTh8N6sX1M2wNTpkjxaWKQfzJe7q': { coingeckoId: 'matic-network', decimals: 8 }, + 'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8': { coingeckoId: 'binance-bitcoin', decimals: 8 }, + 'FmsB2B21fVVetWvZm7Q48cC2Bvs2hEZtft49TBn3guV1': { coingeckoId: 'curve-dao-token', decimals: 8 }, + '5Ga8eJdR5PoBWLC2xaq6F6PAGCM5hWVNhuyycgsNn4jR': { coingeckoId: 'crvusd', decimals: 6 }, + 'Fwvk46RZ4iBg4L9GzwjQ7jwVsEScn4aPD32V6wftTLHQ': { coingeckoId: 'tron', decimals: 6 }, + + 'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC': { coingeckoId: 'tether', decimals: 6, name: 'USDT-PPT' }, + '9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi': { coingeckoId: 'tether', decimals: 6, name: 'USDT-ERC20' }, + 'A81p1LTRyoq2rDR2TNxB2dWYxsiNwCSSi8sXef2SEkwb': { coingeckoId: 'tether', decimals: 6, name: 'USDT-BEP20' }, + 'DaErMEp76HtuvbbSYxDwLovRimaAwtEyQGFeHLQ3UWwh': { coingeckoId: 'tether', decimals: 6, name: 'USDT-TRC20' }, + 'Cu6FRaNphvp1iwmnyVRAvcnyVgLEwBGwSvGQrVsThAAD': { coingeckoId: 'tether', decimals: 6, name: 'USDT-POLY' }, + + '3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-PPT' }, + 'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-ERC20' }, + '4BKKSp6NoNcrFHyorZogDyctq1fq6w7114Ym1pw6HUtC': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-BEP20' }, + 'EMGARezYjWYMvaU795eQK4jzrDZhCfdREAYXGb8UeDk1': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-TRC20' }, + '791Q1EcmnUAwRBqck7SyPbowktToCTKARsmBju4XQKd2': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDT-POLY' }, + + 'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS': { coingeckoId: 'waves-ducks', decimals: 8 }, + 'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p': { coingeckoId: 'neutrino', decimals: 6 }, + 'GAzAEjApmjMYZKPzri2g2VUXNvTiQGF7KDYZFFsP3AEq': { coingeckoId: 'pete', decimals: 8 }, + 'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on': { coingeckoId: 'waves-exchange', decimals: 8 }, + '2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21': { coingeckoId: 'power-token', decimals: 8 }, + '4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8': { coingeckoId: 'waves-enterprise', decimals: 8 }, + '6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g': { coingeckoId: 'neutrino-system-base-token', decimals: 8 }, + 'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS': { coingeckoId: 'puzzle-swap', decimals: 8 }, + 'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT': { coingeckoId: 'swop', decimals: 8 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/neutrino/index.js b/projects/neutrino/index.js index e9d538021fe..dc6a34ef7db 100644 --- a/projects/neutrino/index.js +++ b/projects/neutrino/index.js @@ -7,5 +7,4 @@ module.exports = { async function tvl(_, _b, _cb, { api, }) { return sumTokens({ owners: ['3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo',], includeWaves: true, api, blacklistedTokens: ['DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', '6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'] }) - } \ No newline at end of file diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index 5a4ecf5942a..2525488f1e7 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -1,15 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs'); -const { data } = require("../helper/chain/waves"); -const sdk = require('@defillama/sdk') +const { sumTokens } = require("../helper/chain/waves"); const wavesCoinBridgeContract = '3PFPuctNkdbwGKKUNymWw816jGPexHzGXW5'; -async function wavesTVL() { - const balances = {}; - const contractTVLInWAVES = await data(wavesCoinBridgeContract, "BALANCE"); - sdk.util.sumSingleBalance(balances, 'waves', contractTVLInWAVES.value / 1e8) - return balances; +async function wavesTVL(_, _b, _cb, { api, }) { + return sumTokens({ owners: [wavesCoinBridgeContract,], api, }) } const config = { @@ -61,7 +57,6 @@ const config = { ] ] } -module.exports = {}; Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: sumTokensExport({ ownerTokens: config[chain], logCalls: true }) } diff --git a/projects/waves-exchange/index.js b/projects/waves-exchange/index.js index 5099b26b4c4..dc4ce7152ca 100644 --- a/projects/waves-exchange/index.js +++ b/projects/waves-exchange/index.js @@ -1,26 +1,89 @@ -const { get } = require("../helper/http"); -const { toUSDTBalances } = require("../helper/balances"); - -const endpoint = - "https://waves.exchange/api/v1/investments/tvl"; - -function tvl(isStaking) { - let key = isStaking ? "wx_staking" : "liquidity_pools" - return async () => { - return toUSDTBalances( - (await get(endpoint)).products - .filter(p => p.product_id === key) - .map(p => p.tvl) - .reduce((p, c) => Number(p) + Number(c), 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(_, _b, _cb, { api, }) { + return getPoolsData(factoryContract, WXPoolsRestContract, api); } module.exports = { misrepresentedTokens: true, - timetravel: false, + timetravel: false, // Waves blockchain + methodology: "TVL of WX means the quantity of staked tokens in WX liqudity pools", waves: { - tvl: tvl(false), - staking: tvl(true), + 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 From 39a80de8de81e9ad7c584387bfbdd20d88db4af9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 17:18:13 +0100 Subject: [PATCH 0794/2004] minor fix --- projects/helper/coreAssets.json | 2 -- projects/helper/tokenMapping.js | 17 ----------------- 2 files changed, 19 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a623619fc49..06b131d7ade 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -951,7 +951,6 @@ "YFI": "BLRxWVJWaVuR2CsCoTvTw2bDZ3sQLeTbCofcJv7dP5J4", "APE": "2GBgdhqMjUPqreqPziXvZFSmDiQVrxNuGxR1z7ZVsm4Z", "CRV": "3KhNcHo4We1G5EWps7b1e5DTdLgWDzctc8S6ynu37KAb", - "USDC": "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", "LINK": "2bbGhKo5C31iEiB4CwGuqMYwjD7gCA9eXmm51fe2v8vT", "AAVE": "7TMu26hAs7B2oW6c5sfx45KSZT7GQA3TZNYuCav8Dcqt", "NSBT": "6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g", @@ -971,7 +970,6 @@ "USDN": "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", "UST": "2thtesXvnVMcCnih9iZbJL3d2NQZMfzENJo8YFj6r5jU", "LUNA": "6QUVF8nVVVvM7do7JT2eJ5o5ehnZgXUg13ysiB9JiQrZ", - "USDT": "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ", "WAVES": "WAVES" }, "songbird": { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index fc1359b99f1..a89c84c0966 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -52,27 +52,10 @@ const fixBalancesTokens = { '5Ga8eJdR5PoBWLC2xaq6F6PAGCM5hWVNhuyycgsNn4jR': { coingeckoId: 'crvusd', decimals: 6 }, 'Fwvk46RZ4iBg4L9GzwjQ7jwVsEScn4aPD32V6wftTLHQ': { coingeckoId: 'tron', decimals: 6 }, - 'G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC': { coingeckoId: 'tether', decimals: 6, name: 'USDT-PPT' }, - '9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi': { coingeckoId: 'tether', decimals: 6, name: 'USDT-ERC20' }, - 'A81p1LTRyoq2rDR2TNxB2dWYxsiNwCSSi8sXef2SEkwb': { coingeckoId: 'tether', decimals: 6, name: 'USDT-BEP20' }, - 'DaErMEp76HtuvbbSYxDwLovRimaAwtEyQGFeHLQ3UWwh': { coingeckoId: 'tether', decimals: 6, name: 'USDT-TRC20' }, - 'Cu6FRaNphvp1iwmnyVRAvcnyVgLEwBGwSvGQrVsThAAD': { coingeckoId: 'tether', decimals: 6, name: 'USDT-POLY' }, - - '3ayH3PhWMkhFsySsUVcC8BvFf1QyxGB5BZuTPyVtmP4v': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-PPT' }, - 'HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-ERC20' }, - '4BKKSp6NoNcrFHyorZogDyctq1fq6w7114Ym1pw6HUtC': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-BEP20' }, - 'EMGARezYjWYMvaU795eQK4jzrDZhCfdREAYXGb8UeDk1': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDC-TRC20' }, - '791Q1EcmnUAwRBqck7SyPbowktToCTKARsmBju4XQKd2': { coingeckoId: 'usd-coin', decimals: 6, name: 'USDT-POLY' }, - 'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS': { coingeckoId: 'waves-ducks', decimals: 8 }, - 'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p': { coingeckoId: 'neutrino', decimals: 6 }, 'GAzAEjApmjMYZKPzri2g2VUXNvTiQGF7KDYZFFsP3AEq': { coingeckoId: 'pete', decimals: 8 }, - 'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on': { coingeckoId: 'waves-exchange', decimals: 8 }, '2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21': { coingeckoId: 'power-token', decimals: 8 }, - '4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8': { coingeckoId: 'waves-enterprise', decimals: 8 }, - '6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g': { coingeckoId: 'neutrino-system-base-token', decimals: 8 }, 'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS': { coingeckoId: 'puzzle-swap', decimals: 8 }, - 'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT': { coingeckoId: 'swop', decimals: 8 }, }, // Sample Code ozone: { From 33f0ea94579e8f3f6937398c273349171641afd1 Mon Sep 17 00:00:00 2001 From: Alfred Gaillard Date: Tue, 19 Mar 2024 17:32:34 +0100 Subject: [PATCH 0795/2004] Amphor - Adding PTezETH vault, PTrsETH vault, PTweETH vault (#9435) * Added TVL * Added wstETH vault * Adding wbtc vault * Added the pt vaults --- projects/amphor/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/amphor/index.js b/projects/amphor/index.js index 186f7eb148f..c5500da73cb 100644 --- a/projects/amphor/index.js +++ b/projects/amphor/index.js @@ -5,8 +5,10 @@ const config = { lvTokens: { "ampr-LP-USD": "0x3b022EdECD65b63288704a6fa33A8B9185b5096b", "ampr-LP-ETH": "0x2791EB5807D69Fe10C02eED6B4DC12baC0701744", - "ampr-LP-BTC": "0xC4A324fDF8a2495776B4d6cA46599B5a52f96489" - + "ampr-LP-BTC": "0xC4A324fDF8a2495776B4d6cA46599B5a52f96489", + "amprPTweETH": "0xf97ecda5F9ff31d83f635a6EA70D2D3B9C8f2e00", + "amprPTrsETH": "0x0498b85FB4EC85EF5EFe82513aa9DaF767358A15", + "amprPTezETH": "0x920F17e741029D904936c58a545DFFC72f82C079" } } } From a6fd1107eb2d49db961e1208115b8e897ef39a1f Mon Sep 17 00:00:00 2001 From: Stuffy Idler Date: Tue, 19 Mar 2024 19:49:02 +0300 Subject: [PATCH 0796/2004] fix: WAVES TVL based on sWAVES balance mul by rate (#9439) --- projects/pepe-bridge/index.js | 115 +++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 38 deletions(-) diff --git a/projects/pepe-bridge/index.js b/projects/pepe-bridge/index.js index 2525488f1e7..3b575d4487d 100644 --- a/projects/pepe-bridge/index.js +++ b/projects/pepe-bridge/index.js @@ -1,16 +1,63 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport, } = require('../helper/unwrapLPs'); -const { sumTokens } = require("../helper/chain/waves"); +const sdk = require("@defillama/sdk"); -const wavesCoinBridgeContract = '3PFPuctNkdbwGKKUNymWw816jGPexHzGXW5'; +const ADDRESSES = require("../helper/coreAssets.json"); +const { nullAddress, sumTokensExport } = require("../helper/unwrapLPs"); +const { scriptEvaluate, assetBalance } = require("../helper/chain/waves"); -async function wavesTVL(_, _b, _cb, { api, }) { - return sumTokens({ owners: [wavesCoinBridgeContract,], api, }) +// 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'], + [[nullAddress], "0x882260324AD5A87bF5007904B4A8EF87023c856A"], [ [ ADDRESSES.ethereum.USDT, @@ -22,46 +69,38 @@ const config = { ADDRESSES.ethereum.LINK, ADDRESSES.ethereum.CRVUSD, ], - '0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83' - ] + "0x0de7b091A21BD439bdB2DfbB63146D9cEa21Ea83", + ], ], bsc: [ - [[nullAddress], '0xF1632012f6679Fcf464721433AFAAe9c11ad9e03'], + [[nullAddress], "0xF1632012f6679Fcf464721433AFAAe9c11ad9e03"], [ - [ - ADDRESSES.bsc.USDT, - ADDRESSES.bsc.USDC, - ADDRESSES.bsc.BTCB, - ], - '0x8DF12786EC0E34e60D4c52f9052ba4e536e9367a' - ] + [ADDRESSES.bsc.USDT, ADDRESSES.bsc.USDC, ADDRESSES.bsc.BTCB], + "0x8DF12786EC0E34e60D4c52f9052ba4e536e9367a", + ], ], polygon: [ - [[nullAddress], '0xEa3cc73165748AD1Ca76b4d1bA9ebC43fb399018'], + [[nullAddress], "0xEa3cc73165748AD1Ca76b4d1bA9ebC43fb399018"], [ - [ - ADDRESSES.polygon.USDT, - ADDRESSES.polygon.USDC, - ], - '0xF57dB884606a0ed589c06320d9004FBeD4f81e4A' - ] + [ADDRESSES.polygon.USDT, ADDRESSES.polygon.USDC], + "0xF57dB884606a0ed589c06320d9004FBeD4f81e4A", + ], ], tron: [ - [[nullAddress], 'TMsm33cUm8HuxyRqwG7xhV46cmx5NVPPGB'], + [[nullAddress], "TMsm33cUm8HuxyRqwG7xhV46cmx5NVPPGB"], [ - [ - ADDRESSES.tron.USDT, - ADDRESSES.tron.USDC - ], - 'TNN42f7dXYksBsh8hjVo8XD8aYSKcSEhJF' - ] - ] -} + [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 } +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.'; +module.exports.methodology = "All tokens locked in PepeTeam Bridge."; From 376b25626048ef5dd41ba90938e80fec561343f2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:05:52 +0100 Subject: [PATCH 0797/2004] minor fix --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index a89c84c0966..7905cb72daf 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -37,6 +37,9 @@ const fixBalancesTokens = { zklink: { [ADDRESSES.zklink.WETH]: { coingeckoId: "ethereum", decimals: 18 }, }, + stacks: { + 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wstx-token::wstx': { coingeckoId: "blockstack", decimals: 6 }, + }, waves: { 'WAVES': { coingeckoId: 'waves', decimals: 8 }, 'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7': { coingeckoId: 'waves', decimals: 8 }, From 01b90c6771735ce27b2b83de3cc884f0ac72f92e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:17:48 +0100 Subject: [PATCH 0798/2004] fix hydradx --- projects/hydradx/api.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/hydradx/api.js b/projects/hydradx/api.js index 35cb3dd8222..d415b5e3292 100644 --- a/projects/hydradx/api.js +++ b/projects/hydradx/api.js @@ -11,7 +11,9 @@ async function tvl() { const provider = new WsProvider("wss://hydradx-rpc.dwellir.com"); const api = await ApiPromise.create({ provider, }); await api.isReady - // const assetCount = +await api.query.assetRegistry.nextAssetId() // doesnt work + const assetCount = +await api.query.assetRegistry.nextAssetId() // doesnt work + console.log(assetCount, 'saibbb') + console.log(api.query.assetRegistry) const assetMetadata = [] let i = 0; let hasMore = true; From 1e21d76823c704d7dbf2f57b49385eb45e863d92 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:18:41 +0100 Subject: [PATCH 0799/2004] Fix asset count retrieval in API.js --- projects/hydradx/api.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/hydradx/api.js b/projects/hydradx/api.js index d415b5e3292..8d443e05d03 100644 --- a/projects/hydradx/api.js +++ b/projects/hydradx/api.js @@ -11,14 +11,12 @@ async function tvl() { const provider = new WsProvider("wss://hydradx-rpc.dwellir.com"); const api = await ApiPromise.create({ provider, }); await api.isReady - const assetCount = +await api.query.assetRegistry.nextAssetId() // doesnt work - console.log(assetCount, 'saibbb') - console.log(api.query.assetRegistry) + // const assetCount = +await api.query.assetRegistry.nextAssetId() // doesnt work const assetMetadata = [] let i = 0; let hasMore = true; do { - const meta = await api.query.assetRegistry.assetMetadataMap(i) + const meta = await api.query.assetRegistry.assets(i) if (meta.isNone) { hasMore = false break From ef8af44206736de4c14adc5dfd17d85846bf660f Mon Sep 17 00:00:00 2001 From: CyRto Date: Wed, 20 Mar 2024 01:27:24 +0800 Subject: [PATCH 0800/2004] feat: update fetch (#9424) --- projects/optiondance/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/optiondance/index.js b/projects/optiondance/index.js index a26f9e739d0..c5e5bdb58ee 100644 --- a/projects/optiondance/index.js +++ b/projects/optiondance/index.js @@ -5,10 +5,9 @@ const APIs = { }; async function fetch() { - return 0 - /* const resp = await get(APIs.optiondance); + const resp = await get(APIs.optiondance); const tvl = resp.data.total_value; - return parseFloat(tvl).toFixed(2); */ + return parseFloat(tvl).toFixed(2); } module.exports = { From 4c9080ce8fcf7282f17947967175e41c3939e85c Mon Sep 17 00:00:00 2001 From: Canary Dev <84072229+canarydeveloper@users.noreply.github.com> Date: Tue, 19 Mar 2024 23:16:49 +0300 Subject: [PATCH 0801/2004] Updated Pangolin Hedera graph link index.js (#9444) * Updated Pangolin Hedera graph link index.js * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pangolin/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/projects/pangolin/index.js b/projects/pangolin/index.js index f5de076000c..dce65c5454c 100644 --- a/projects/pangolin/index.js +++ b/projects/pangolin/index.js @@ -46,14 +46,13 @@ module.exports = { }, hedera: { tvl: async () => { - return {} - /* const block = await getCurrentBlock() - const data = await graphQuery('https://graph-hedera-main.pangolin.network/subgraphs/name/pangolin', `{ + const block = await getCurrentBlock() + const data = await graphQuery('https://graph-hedera-pangolin.canary.exchange/subgraphs/name/pangolin', `{ pangolinFactory(id: "1" block: { number: ${block - 1000} }) { totalLiquidityUSD } }`) - return toUSDTBalances(data.pangolinFactory.totalLiquidityUSD) */ + return toUSDTBalances(data.pangolinFactory.totalLiquidityUSD) } }, start: 1612715300, // 7th-Feb-2021 From 5339a6a31c1b387594319d41176b58a4fd054f9b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 19 Mar 2024 22:39:11 +0100 Subject: [PATCH 0802/2004] update hyperlock --- projects/hyperlock/index.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js index 14419218d5a..e1fbbea3b4e 100644 --- a/projects/hyperlock/index.js +++ b/projects/hyperlock/index.js @@ -1,4 +1,5 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); +const { sumTokens2 } = require("../helper/unwrapLPs"); +const { cachedGraphQuery } = require('../helper/cache') const v2Deposits = "0xC3EcaDB7a5faB07c72af6BcFbD588b7818c4a40e"; const v3Deposits = "0xc28EffdfEF75448243c1d9bA972b97e32dF60d06"; @@ -7,6 +8,20 @@ const v3Deposits = "0xc28EffdfEF75448243c1d9bA972b97e32dF60d06"; module.exports = { doublecounted: true, blast: { - tvl: sumTokensExport({ owners: [v2Deposits, v3Deposits], tokens: ["0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df"], resolveUniV3: true, resolveLP: true }), + tvl, }, -}; +} + + +const query = `{ + pools(where:{type: V2}) { id type } +}` + + +async function tvl(_, _b, _cb, { api, }) { + const { pools } = await cachedGraphQuery('hyperlock/v2', 'https://graph.hyperlock.finance/subgraphs/name/hyperlock/points-blast-mainnet', query) + console.log(pools) + await sumTokens2({ api, owner: v2Deposits, tokens: pools.map(i => i.id), resolveLP: true, }) + return sumTokens2({ api, owner: v3Deposits, resolveUniV3: true }) + +} \ No newline at end of file From 61825d9f3e7eb04d51d677207128e3c35daf8ee2 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 19 Mar 2024 14:42:42 -0700 Subject: [PATCH 0803/2004] Astrzk, mode, blast, flare less url (#9443) --- projects/steer/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/projects/steer/index.js b/projects/steer/index.js index 5db90bd9320..78037b01e08 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -106,6 +106,30 @@ const supportedChains = [ identifier: 'fantom' }, // { + // name: 'Flare', + // subgraphEndpoint: '', + // chainId: 14, + // identifier: 'flare' + // }, + { + name: 'Blast', + subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-blast/1.1.1/gn', + chainId: 81457, + identifier: 'blast' + }, + { + name: 'Mode', + subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-mode/1.1.1/gn', + chainId: 34443, + identifier: 'mode' + }, + { + name: 'AstarzkEVM', + subgraphEndpoint: 'https://subgraph.steer.finance/astarzkevm/subgraphs/name/steerprotocol/steer-astarzkevm', + chainId: 3776, + identifier: 'astrzk' + }, + // { // name: 'Celo', // subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/steer-test-celo', // chainId: 42220, From 9e4aace299b7d46b2ccabb2af965344f05e3585c Mon Sep 17 00:00:00 2001 From: Shivansh <102287200+Shivansh070707@users.noreply.github.com> Date: Wed, 20 Mar 2024 03:13:55 +0530 Subject: [PATCH 0804/2004] Unore-update-pool address (#9442) * add treasury * update pool address --- projects/unore/index.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/projects/unore/index.js b/projects/unore/index.js index 5c753ee175d..143ef5d2615 100644 --- a/projects/unore/index.js +++ b/projects/unore/index.js @@ -9,14 +9,14 @@ const config = { uToken: '0x474021845c4643113458ea4414bdb7fb74a01a77', tokensAndOwners: [ [nullAddress, ethSSIPEth], - [ADDRESSES.ethereum.USDT, '0x920d510d5c70c01989b66f4e24687dddb988ddae'], - [ADDRESSES.ethereum.USDC, '0xfdfaa453ef3709d2c26ecf43786a14ab8bf27e36'], + [ADDRESSES.ethereum.USDT, '0x442e9fe958202Dc29d7018c1AA47479F2159D8a0'], + [ADDRESSES.ethereum.USDC, '0xF37c0901662f39039AFBd3c2546e3141c091e014'], ], pools: [ - '0x1eECc8C8298ed9Bd46c147D44E2D7A7BfACE2034', // UNO SSRP - '0xbd3E70819A8Add92B06d6d92A06DcdA9249DF2a3', // UNO SSIP - '0x920d510d5c70c01989b66f4e24687dddb988ddae', // USDT SSIP - '0xfdfaa453ef3709d2c26ecf43786a14ab8bf27e36' // USDC SSIP + '0x076E2A501FD0DA41E5A659aB664b2B6792B80Fa2', // UNO SSRP + '0x8978d08bd89B9415eB08A4D52C1bDDf070F19fA2', // UNO SSIP + '0x442e9fe958202Dc29d7018c1AA47479F2159D8a0', // USDT SSIP + '0xF37c0901662f39039AFBd3c2546e3141c091e014' ,// USDC SSIP ], }, bsc: { @@ -25,12 +25,12 @@ const config = { [ADDRESSES.bsc.USDC, '0xEcE9f1A3e8bb72b94c4eE072D227b9c9ba4cd750'], [ADDRESSES.bsc.USDC, '0x0b5C802ecA88161B5daed08e488C83d819a0cD02'], [ADDRESSES.bsc.USDC, '0x2cd32dF1C436f8dE6e09d1A9851945c56bcEd32a'], - [ADDRESSES.bsc.USDC, '0xFC9a02a13B19F65219034AB03ADcD8CAdf275f35'], - [ADDRESSES.bsc.USDC, '0x456d60a7E2a2DA97BDb43759Cf63f7acbC3a700a'], + [ADDRESSES.bsc.USDC, '0xabb83630993984C54fd60650F5A592407C51e54b'], + [ADDRESSES.bsc.USDC, '0xeF21cB3eE91EcB498146c43D56C2Ef9Bae6B7d53'], ], pools: [ - '0xFC9a02a13B19F65219034AB03ADcD8CAdf275f35', // Zeus V2 - '0x456d60a7E2a2DA97BDb43759Cf63f7acbC3a700a' // Ares V2 + '0xabb83630993984C54fd60650F5A592407C51e54b', // Zeus V2 + '0xeF21cB3eE91EcB498146c43D56C2Ef9Bae6B7d53' // Ares V2 ], }, kava: { From 9b221702c5062d55e661f7eded38d656bc707b90 Mon Sep 17 00:00:00 2001 From: vulcandex <164081283+dexvulcan@users.noreply.github.com> Date: Wed, 20 Mar 2024 01:17:30 +0300 Subject: [PATCH 0805/2004] add vulcandex (#9445) * add vulcandex * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/vulcandex/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/vulcandex/index.js diff --git a/projects/vulcandex/index.js b/projects/vulcandex/index.js new file mode 100644 index 00000000000..19db2512732 --- /dev/null +++ b/projects/vulcandex/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('polygon', '0x293f45b6F9751316672da58AE87447d712AF85D7') \ No newline at end of file From 6015f895d9e12be5d5331b4ab32555031dc35335 Mon Sep 17 00:00:00 2001 From: Patrick Roy <126775449+patrickroyme@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:29:45 +0300 Subject: [PATCH 0806/2004] Kinetix Derivatives V2 Store contract updated. (#9454) --- projects/kinetix-derivatives-v2/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/kinetix-derivatives-v2/index.js b/projects/kinetix-derivatives-v2/index.js index 3759cc62281..8851d68a403 100644 --- a/projects/kinetix-derivatives-v2/index.js +++ b/projects/kinetix-derivatives-v2/index.js @@ -4,7 +4,7 @@ const { nullAddress } = require("../helper/unwrapLPs"); async function KavaTvl(_time, _ethBlock, _cb, { api }) { const tokens = [nullAddress, ADDRESSES.kava.USDC]; - const owners = ["0x3d520d1979beC1E2f68B20fEcdf06AC8b543B435"]; + const owners = ["0xB5CE30B6EBAA252bDEac2F768EF9b1e4Bdf8d120"]; return api.sumTokens({ owners, tokens }); } From fca3e863e9bd2b8cdcba3d528f30f0d63e86f7a1 Mon Sep 17 00:00:00 2001 From: danetteceola <100347824+danetteceola@users.noreply.github.com> Date: Wed, 20 Mar 2024 17:31:49 +0800 Subject: [PATCH 0807/2004] LiquiX: add optimism blast and polygon chain (#9453) Co-authored-by: mithrilwoodrat --- projects/liquix/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/projects/liquix/index.js b/projects/liquix/index.js index df94aba6023..d6ed756dbd9 100644 --- a/projects/liquix/index.js +++ b/projects/liquix/index.js @@ -7,6 +7,24 @@ const config = { 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, + }, }; From c2c17b299764ad39bf1b5846aa938eb2cfb0e0bd Mon Sep 17 00:00:00 2001 From: Chopin <129021714+ChopinCadence@users.noreply.github.com> Date: Wed, 20 Mar 2024 05:33:04 -0400 Subject: [PATCH 0808/2004] Cadence Protocol TVL (#9447) Co-authored-by: chopin --- projects/cadence-protocol/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/cadence-protocol/index.js diff --git a/projects/cadence-protocol/index.js b/projects/cadence-protocol/index.js new file mode 100644 index 00000000000..0a230bd81dd --- /dev/null +++ b/projects/cadence-protocol/index.js @@ -0,0 +1,19 @@ +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 From 6db938705666d535ad1541e1481fac9d7e4b1e4d Mon Sep 17 00:00:00 2001 From: SimsalaCrypto <94809733+SimsalaCrypto@users.noreply.github.com> Date: Wed, 20 Mar 2024 10:33:44 +0100 Subject: [PATCH 0809/2004] Feature/preon polygon (#9446) * - added Polygon TVL * - added formatting * - added new collateral types * - added wstETH as collateral --- projects/preon/index.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/projects/preon/index.js b/projects/preon/index.js index 3e15aa73aed..b2fb19d0728 100644 --- a/projects/preon/index.js +++ b/projects/preon/index.js @@ -7,7 +7,7 @@ const config = { [ [ ADDRESSES.null, - ADDRESSES.arbitrum.WETH, + "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "0xe50fa9b3c56ffb159cb0fca61f5c9d750e8128c8", ], "0xA2Ce28868A852f4B01903B5de07d4835feFe9086", @@ -19,6 +19,14 @@ const config = { ], "0x8AD15574A87e30061f24977faaA2d99bC45A3169", ], + [ + [ + ADDRESSES.null, + "0x5979D7b546E38E414F7E9822514be443A4800529", + "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf", + ], + "0x58F046c5374E9cF942b8Eeb056126Ce86dD63EEB", + ], ], }, polygon: { @@ -39,6 +47,14 @@ const config = { ], "0x8105Fc3487F117982Eb5A5456D8639b0353242d8", ], + [ + [ + ADDRESSES.null, + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", + ], + "0xdc4552609a3f673f0b72958f678d4a48d0e94ebd", + ], [ [ ADDRESSES.null, From 398d51660b0540a9d5c9e2f84bed9394edb7c107 Mon Sep 17 00:00:00 2001 From: 0xpropereggs <156651693+0xpropereggs@users.noreply.github.com> Date: Wed, 20 Mar 2024 17:58:06 +0800 Subject: [PATCH 0810/2004] Add tensorplex (#9455) * Add tensorplex project including stTAO TVL * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/tensorplex/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/tensorplex/index.js diff --git a/projects/tensorplex/index.js b/projects/tensorplex/index.js new file mode 100644 index 00000000000..5e669e50d20 --- /dev/null +++ b/projects/tensorplex/index.js @@ -0,0 +1,13 @@ +const st_tao = "0xB60acD2057067DC9ed8c083f5aa227a244044fD6" + +async function tvl(_, _1, _2, { 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, + }, +} From f4e8df496ab7dec5113a22f738a6b008769f7fcc Mon Sep 17 00:00:00 2001 From: Christopher Dimitri Sastropranoto Date: Wed, 20 Mar 2024 18:04:37 +0800 Subject: [PATCH 0811/2004] Fix Copra Finance TVL Calculation (#9426) * update copra tvl calc * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/copra-finance/index.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/projects/copra-finance/index.js b/projects/copra-finance/index.js index aa8b636808c..c8f3ca7f923 100644 --- a/projects/copra-finance/index.js +++ b/projects/copra-finance/index.js @@ -1,8 +1,7 @@ const { getLogs, } = require("../helper/cache/getLogs"); -const ADDRESSES = require('../helper/coreAssets.json'); async function tvl(_, _b, _cb, { api }) { - const { factory, fromBlock, tokens, } = config[api.chain]; + const { factory, fromBlock } = config[api.chain]; const logs = await getLogs({ api, @@ -11,19 +10,23 @@ async function tvl(_, _b, _cb, { api }) { eventAbi: 'event CreditAccountDeployed (address indexed creditAccount)', fromBlock, }) - const owners = logs.map((i) => i.creditAccount) - - return api.sumTokens({ owners, tokens }); + 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 tokens = (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(tokens, lenderAmounts) + api.add(tokens, borrowerAmounts) } const config = { arbitrum: { factory: "0x2eaA3A5223FCb7A9EeC3bFCD399A4c479c6008f6", - fromBlock: 166573084, - tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.WETH, ADDRESSES.null] + fromBlock: 183991616, }, } Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl } -}) \ No newline at end of file +}) From 89f452dfd22c2db83548d502975f2eee13dd7d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hi=E1=BB=87p=20Tr=E1=BA=A7n?= <69852463+lquochieu@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:01:15 +0700 Subject: [PATCH 0812/2004] Add Orchai Lending (#9450) * add Orchai Protocol * add methology * use get total_tvl msg * update methology * feat: project/orchai-lending --------- Co-authored-by: trung2891 Co-authored-by: trung2891 <62927315+trung2891@users.noreply.github.com> --- projects/orchai-lending/index.js | 32 ++++++++++++++++++++++++++++++++ projects/orchai/index.js | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 projects/orchai-lending/index.js diff --git a/projects/orchai-lending/index.js b/projects/orchai-lending/index.js new file mode 100644 index 00000000000..33f2dbbf803 --- /dev/null +++ b/projects/orchai-lending/index.js @@ -0,0 +1,32 @@ +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: { money_market_tvl: {} }, + }); + + let balances = {}; + for (let item of tokensDelegated) { + balances[`${item.token}`] = item.amount; + } + + return balances; +} + +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 index db95b2869d9..ed4a02fa65d 100644 --- a/projects/orchai/index.js +++ b/projects/orchai/index.js @@ -29,4 +29,4 @@ module.exports = { orai: { tvl: oraiTVL, }, -}; +}; \ No newline at end of file From 4a66b7180a081e32dcf82cf2bc33835a794e8afd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:02:30 +0100 Subject: [PATCH 0813/2004] minor fix --- projects/orchai-lending/index.js | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/projects/orchai-lending/index.js b/projects/orchai-lending/index.js index 33f2dbbf803..a197755fb15 100644 --- a/projects/orchai-lending/index.js +++ b/projects/orchai-lending/index.js @@ -1,26 +1,15 @@ -const { queryContract } = require("../helper/chain/cosmos"); +const { queryContract, } = require("../helper/chain/cosmos"); -const addresses = { - orai: { - tvlContract: - "orai1ez359uvv5p7l2ssgadzjk2pfuune9rrhu72ehwdsu4h2qhqf9jlsxw7e0f", - }, -}; - -// Orai -async function oraiTVL() { +async function oraiTVL(_, _1, _2, { api }) { let tokensDelegated = await queryContract({ - contract: addresses.orai.tvlContract, + contract: 'orai1ez359uvv5p7l2ssgadzjk2pfuune9rrhu72ehwdsu4h2qhqf9jlsxw7e0f', chain: "orai", data: { money_market_tvl: {} }, }); - let balances = {}; for (let item of tokensDelegated) { - balances[`${item.token}`] = item.amount; + api.add(item.token.replace('orai:', ''), item.amount) } - - return balances; } module.exports = { @@ -29,4 +18,4 @@ module.exports = { orai: { tvl: oraiTVL, }, -}; \ No newline at end of file +} \ No newline at end of file From 75dfd7836e9d9830dfdb4dae193e8e4adfe4c551 Mon Sep 17 00:00:00 2001 From: Shishir Pai <64056966+mgpai22@users.noreply.github.com> Date: Wed, 20 Mar 2024 07:02:50 -0400 Subject: [PATCH 0814/2004] Add hodlALPH (#9451) * add hodlALPH3 * fix data access --- projects/phoenixfi-app/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/projects/phoenixfi-app/index.js b/projects/phoenixfi-app/index.js index fb9fc59ce8c..2c5d0ebd91a 100644 --- a/projects/phoenixfi-app/index.js +++ b/projects/phoenixfi-app/index.js @@ -1,9 +1,25 @@ 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() + } } From f5f504a6136236284c51f2286e20fd695d32ae1a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:03:47 +0100 Subject: [PATCH 0815/2004] fix --- projects/phoenixfi-app/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/phoenixfi-app/index.js b/projects/phoenixfi-app/index.js index 2c5d0ebd91a..9e080bb117c 100644 --- a/projects/phoenixfi-app/index.js +++ b/projects/phoenixfi-app/index.js @@ -12,7 +12,6 @@ async function alephiumTvl() { } } - module.exports = { timetravel: false, methodology: 'TVL in Phoenix Hodl Protocol', @@ -20,6 +19,6 @@ module.exports = { tvl: sumTokensExport({ owner: 'TZPn3oLcgqXcSLXXguTKqW6TXsMC9brGikXUrMfygBTPdeLgbKLkWj63EQ8rUQQodcVveRjDSigJ3CVd8yjeBwY4jQLr6ZMxDXTPn7V42zNTskCp18maQwN3p4S82tezBcJnTdWoSzeQVbqhARUyNNFjKdyKc6Z49XKkQL7jktSJcG4fnFayBqPZRhQMEB1ZZ12bU2rX5SkQj5jE65N2ZFCTi6WbNeNWWZQYPtZv8fGVLmNdhxgg968LYPLNLBJVa7rUo6Nyce4CszBYq44bD14rvKMZXq1zQ6ZjkFRfmXjDFg92MsXGuENuZdPnTgKJ7Cdct3EP4UFjgZx1PQSauX8own7pPEAf9MBRdF84WNqo9cbZhvrhUVvispD6bP2AoCZWKkrppi1atoV22RPxbouC1rkpsKW287HAXxfiwP8VKVDRUi1aVjRvFP13RpyrBf9cu1z44xnJwTC9ui38XPAUjz4DWp87mGh6JC54z2Mqyk2nEaai7nBP4fPW53XSExd5AK5JC9fVyfdrRtiR5ADkcc2yqXrF', tokens: [nullAddress] }) }, alephium: { - tvl: alephiumTvl() + tvl: alephiumTvl } } From 72e8484289bfb82efaf458fa57f8a7857bbb1408 Mon Sep 17 00:00:00 2001 From: dlarrain Date: Wed, 20 Mar 2024 08:04:52 -0300 Subject: [PATCH 0816/2004] Add acai address (#9448) --- projects/arch-ethereum-web-3/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/arch-ethereum-web-3/index.js b/projects/arch-ethereum-web-3/index.js index 4d0308ef9f3..8318dc1c13d 100644 --- a/projects/arch-ethereum-web-3/index.js +++ b/projects/arch-ethereum-web-3/index.js @@ -9,7 +9,8 @@ const chambers = [ '0xE15A66b7B8e385CAa6F69FD0d55984B96D7263CF', '0x103bb3EBc6F61b3DB2d6e01e54eF7D9899A2E16B', '0x8F0d5660929cA6ac394c5c41f59497629b1dbc23', - '0x89c53B02558E4D1c24b9Bf3beD1279871187EF0B' + '0x89c53B02558E4D1c24b9Bf3beD1279871187EF0B', + '0xd1Ce69B4bDd3Dda553Ea55A2a57c21C65190F3D5' ] const polygonChambers = [ From 59998d9d27becca6113cdf24ffe9f37f33dd0151 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:28:48 +0100 Subject: [PATCH 0817/2004] refactor dxsale --- projects/dxsale/apiCache.js | 88 +---------- projects/dxsale/config.js | 303 ++++++------------------------------ projects/dxsale/index.js | 88 +---------- 3 files changed, 56 insertions(+), 423 deletions(-) diff --git a/projects/dxsale/apiCache.js b/projects/dxsale/apiCache.js index 845eec7c261..1e147f2689c 100644 --- a/projects/dxsale/apiCache.js +++ b/projects/dxsale/apiCache.js @@ -1,26 +1,5 @@ const sdk = require("@defillama/sdk"); -const { - polygonArchives, - bscArchives, - ethereumArchives, - fantomArchives, - xdaiArchives, - avaxArchives, - harmonyArchives, - arbitrumArchives, - celoArchives, - kucoinArchives, - okexchainArchives, - hecoArchives, - cronosArchives, - moonriverArchives, - milkomedaArchives, - smartbchArchives, - dogeArchives, - dexitArchives, - coreDaoArchives, - bitgertArchives, -} = require("./config"); +const config = require("./config"); const { getStorageLPLockDataV33, getLockCountPerContractV3, @@ -155,67 +134,8 @@ function getTVLTotal(args) { }; } -module.exports = { - polygon: { - tvl: getTVLTotal(polygonArchives), - }, - bsc: { - tvl: getTVLTotal(bscArchives), - }, - ethereum: { - tvl: getTVLTotal(ethereumArchives), - }, - arbitrum: { - tvl: getTVLTotal(arbitrumArchives), - }, - celo: { - tvl: getTVLTotal(celoArchives), - }, - kcc: { - tvl: getTVLTotal(kucoinArchives), - }, - harmony: { - tvl: getTVLTotal(harmonyArchives), - }, - avax: { - tvl: getTVLTotal(avaxArchives), - }, - xdai: { - tvl: getTVLTotal(xdaiArchives), - }, - fantom: { - tvl: getTVLTotal(fantomArchives), - }, - heco: { - tvl: getTVLTotal(hecoArchives), - }, - okexchain: { - tvl: getTVLTotal(okexchainArchives), - }, - cronos: { - tvl: getTVLTotal(cronosArchives), - }, - moonriver: { - tvl: getTVLTotal(moonriverArchives), - }, - milkomeda: { - tvl: getTVLTotal(milkomedaArchives), - }, - smartbch: { - tvl: getTVLTotal(smartbchArchives), - }, - dogechain: { - tvl: getTVLTotal(dogeArchives), - }, - dexit: { - tvl: getTVLTotal(dexitArchives), - }, - core: { - tvl: getTVLTotal(coreDaoArchives), - }, - bitgert: { - tvl: getTVLTotal(bitgertArchives), - } -}; +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 index 9bf4a73bdb3..9e6903ce82d 100644 --- a/projects/dxsale/config.js +++ b/projects/dxsale/config.js @@ -1,5 +1,4 @@ const LockersV3 = { - empty: ['0xEb3a9C56d963b971d320f889bE2fb8B59853e449'], bsc: [ "0xEb3a9C56d963b971d320f889bE2fb8B59853e449", "0x8655E5c4D701186D16765d1CDcef6D5287E4679a", @@ -22,7 +21,7 @@ const LockersV3 = { "0xC7065e692D2caCF7173C7BC08c6849eb9Ef48b38", // "0xdf17aC098Fa81373625e102061844C02ECCEc645", ], - kucoin: [ + kcc: [ // "0x3052b62d39624f341D44b195D2E4b865f074B656", "0xd5071536d1A2AfF6dB130917B4c1FA7b8Daf47ff", "0x1C8aB27b538b5e43c151460cBc6D271cB9EeE4aF", @@ -64,81 +63,35 @@ const LockersV3 = { ], }; -const LockerV33 = { - bsc: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - ethereum: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, +const defaultConfig = { + tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], + lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], +} - arbitrum: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - celo: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - kucoin: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - harmony: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - avax: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - xdai: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - fantom: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - polygon: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - okexchain: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - - cronos: { - 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: [ - // "0xFEE2A3f4329e9A1828F46927bD424DB2C1624985", - ], - }, - heco: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], - }, - smartbch: { - tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], - lpStorage: ["0xFEE2A3f4329e9A1828F46927bD424DB2C1624985"], + lpStorage: [], }, + heco: defaultConfig, + smartbch: defaultConfig, milkomeda: { tokenStorage: ["0x983b00a2C3d8925cEDfC9f3eb5Df1aE121Ff6B9F"], lpStorage: ["0x6E573D464416a81A9F82207F1dFD6a42e4b21066"], @@ -147,194 +100,34 @@ const LockerV33 = { tokenStorage: ["0x5AB541B972Acab91f0E5E7d30fCB4fe8e81b9Fa7"], lpStorage: ["0x16AAF57c5b3170a143A6A2DDfe897e8a2bDd8FD1"], }, - dexit: { - tokenStorage: ["0x17e8c87d4de42fc143507B7c45Da2e6F2af7F24F"], - lpStorage: ["0x0dDdD88aff5b7082BEf86923cf19BAd1ffb4EC8C"], + dexit: defaultConfig2, + core: defaultConfig2, + dogechain: defaultConfig2, + base: { + tokenStorage: ["0x0dDdD88aff5b7082BEf86923cf19BAd1ffb4EC8C"], + lpStorage: ["0x17e8c87d4de42fc143507B7c45Da2e6F2af7F24F"], }, - coreDao: { - tokenStorage: ["0x17e8c87d4de42fc143507B7c45Da2e6F2af7F24F"], - lpStorage: ["0x0dDdD88aff5b7082BEf86923cf19BAd1ffb4EC8C"], + omax: defaultConfig2, + pulse: { + tokenStorage: ["0x130628897d594630D421962A00fF1cBacE82952A"], + lpStorage: ["0x006d38268d5d503F3fc2621b44e7fEDe8AFd004f"], }, - doge: { - tokenStorage: ["0x17e8c87d4de42fc143507B7c45Da2e6F2af7F24F"], - lpStorage: ["0x0dDdD88aff5b7082BEf86923cf19BAd1ffb4EC8C"], + era: { + tokenStorage: ["0x1Ba5427BB3256b4511064eB0086E9418eC032618"], + lpStorage: ["0x12E0ebe89e86F5bfFa41b5BC22EDC079c0ff683a"], }, }; -const protocolPairs = { - sale_BNB: "0x61cA6ae520b9c9Cfab0B66aFaD78FF7127bA37B6", - sale_ETH: "0xAAe5f80BaC0c7fA0cAd6c2481771a3B17aF21455", - sale_HT: "0x4A677fF39B731861AfBA6051b95755B6704FB5eA", - sale_MATIC_sushi: "0x5a2bA689663fD35eC111676294055bd9FA47fdE8", - sale_MATIC_quick: "0xf2f46CFC363ff5554801Eb38944148cF3D40d82F", -}; - -const tokens = { - sale_BSC: "0x04F73A09e2eb410205BE256054794fB452f0D245", - sale_ETH: "0xf063fe1ab7a291c5d06a86e14730b00bf24cb589", - sale_Heco: "0x2665375a48A76BB49F6b375844eB88390840C0B8", - sale_MATIC: "0x8f6196901a4a153d8ee8f3fa779a042f6092d908", -}; - -const bscArchives = { - chain: "bsc", - locks: LockersV3.bsc, - storageTokenLocks: LockerV33.bsc.tokenStorage, - storageLiquidityLocks: LockerV33.bsc.lpStorage, -}; +const config = {} -const ethereumArchives = { - chain: "ethereum", - locks: LockersV3.ethereum, - storageTokenLocks: LockerV33.ethereum.tokenStorage, - storageLiquidityLocks: LockerV33.ethereum.lpStorage, -}; +Object.keys(LockerV33).forEach(chain => { + config[chain] = { + chain, + locks: LockersV3[chain] ?? [], + storageTokenLocks: LockerV33[chain].tokenStorage, + storageLiquidityLocks: LockerV33[chain].lpStorage, + } +}) -const polygonArchives = { - chain: "polygon", - locks: LockersV3.polygon, - storageTokenLocks: LockerV33.polygon.tokenStorage, - storageLiquidityLocks: LockerV33.polygon.lpStorage, -}; -const arbitrumArchives = { - chain: "arbitrum", - locks: LockersV3.arbitrum, - storageTokenLocks: LockerV33.arbitrum.tokenStorage, - storageLiquidityLocks: LockerV33.arbitrum.lpStorage, -}; - -const celoArchives = { - chain: "celo", - locks: LockersV3.celo, - storageTokenLocks: LockerV33.celo.tokenStorage, - storageLiquidityLocks: LockerV33.celo.lpStorage, -}; - -const kucoinArchives = { - chain: "kcc", - locks: LockersV3.kucoin, - storageTokenLocks: LockerV33.kucoin.tokenStorage, - storageLiquidityLocks: LockerV33.kucoin.lpStorage, -}; - -const harmonyArchives = { - chain: "harmony", - locks: LockersV3.harmony, - storageTokenLocks: LockerV33.harmony.tokenStorage, - storageLiquidityLocks: LockerV33.harmony.lpStorage, -}; - -const avaxArchives = { - chain: "avax", - locks: LockersV3.avax, - storageTokenLocks: LockerV33.avax.tokenStorage, - storageLiquidityLocks: LockerV33.avax.lpStorage, -}; - -const xdaiArchives = { - chain: "xdai", - locks: LockersV3.xdai, - storageTokenLocks: LockerV33.xdai.tokenStorage, - storageLiquidityLocks: LockerV33.xdai.lpStorage, -}; - -const fantomArchives = { - chain: "fantom", - locks: LockersV3.fantom, - storageTokenLocks: LockerV33.fantom.tokenStorage, - storageLiquidityLocks: LockerV33.fantom.lpStorage, -}; - -const hecoArchives = { - chain: "heco", - locks: [], - storageTokenLocks: LockerV33.heco.tokenStorage, - storageLiquidityLocks: LockerV33.heco.lpStorage, -}; - -const okexchainArchives = { - chain: "okexchain", - locks: [], - storageTokenLocks: LockerV33.okexchain.tokenStorage, - storageLiquidityLocks: LockerV33.okexchain.lpStorage, -}; - -const cronosArchives = { - chain: "cronos", - locks: [], - storageTokenLocks: LockerV33.cronos.tokenStorage, - storageLiquidityLocks: LockerV33.cronos.lpStorage, -}; - -const moonriverArchives = { - chain: "moonriver", - locks: [], - storageTokenLocks: LockerV33.moonriver.tokenStorage, - storageLiquidityLocks: LockerV33.moonriver.lpStorage, -}; - -const smartbchArchives = { - chain: "smartbch", - locks: [], - storageTokenLocks: LockerV33.smartbch.tokenStorage, - storageLiquidityLocks: LockerV33.smartbch.lpStorage, -}; - -const milkomedaArchives = { - chain: "milkomeda", - locks: [], - storageTokenLocks: LockerV33.milkomeda.tokenStorage, - storageLiquidityLocks: LockerV33.milkomeda.lpStorage, -}; - -const bitgertArchives = { - chain: "bitgert", - locks: [], - storageTokenLocks: LockerV33.bitgert.tokenStorage, - storageLiquidityLocks: LockerV33.bitgert.lpStorage, -}; - -const dexitArchives = { - chain: "dexit", - locks: [], - storageTokenLocks: LockerV33.dexit.tokenStorage, - storageLiquidityLocks: LockerV33.dexit.lpStorage, -}; - -const coreDaoArchives = { - chain: "core", - locks: [], - storageTokenLocks: LockerV33.coreDao.tokenStorage, - storageLiquidityLocks: LockerV33.coreDao.lpStorage, -}; - -const dogeArchives = { - chain: "dogechain", - locks: [], - storageTokenLocks: LockerV33.doge.tokenStorage, - storageLiquidityLocks: LockerV33.doge.lpStorage, -}; - -module.exports = { - milkomedaArchives, - smartbchArchives, - moonriverArchives, - cronosArchives, - okexchainArchives, - hecoArchives, - polygonArchives, - bscArchives, - ethereumArchives, - arbitrumArchives, - celoArchives, - kucoinArchives, - harmonyArchives, - avaxArchives, - xdaiArchives, - fantomArchives, - bitgertArchives, - dexitArchives, - coreDaoArchives, - dogeArchives, -}; +module.exports = config diff --git a/projects/dxsale/index.js b/projects/dxsale/index.js index b13f4b6ad42..37fe14d46fb 100644 --- a/projects/dxsale/index.js +++ b/projects/dxsale/index.js @@ -1,26 +1,5 @@ const sdk = require("@defillama/sdk"); -const { - polygonArchives, - bscArchives, - ethereumArchives, - fantomArchives, - xdaiArchives, - avaxArchives, - harmonyArchives, - arbitrumArchives, - celoArchives, - kucoinArchives, - okexchainArchives, - hecoArchives, - cronosArchives, - moonriverArchives, - milkomedaArchives, - smartbchArchives, - dogeArchives, - dexitArchives, - coreDaoArchives, - bitgertArchives, -} = require("./config"); +const config = require("./config"); const { getStorageLPLockDataV33, getLockCountPerContractV3, @@ -127,67 +106,8 @@ function getTVLTotal(args) { }; } -module.exports = { - polygon: { - tvl: getTVLTotal(polygonArchives), - }, - bsc: { - tvl: getTVLTotal(bscArchives), - }, - ethereum: { - tvl: getTVLTotal(ethereumArchives), - }, - arbitrum: { - tvl: getTVLTotal(arbitrumArchives), - }, - celo: { - tvl: getTVLTotal(celoArchives), - }, - kcc: { - tvl: getTVLTotal(kucoinArchives), - }, - harmony: { - tvl: getTVLTotal(harmonyArchives), - }, - avax: { - tvl: getTVLTotal(avaxArchives), - }, - xdai: { - tvl: getTVLTotal(xdaiArchives), - }, - fantom: { - tvl: getTVLTotal(fantomArchives), - }, - heco: { - tvl: getTVLTotal(hecoArchives), - }, - okexchain: { - tvl: getTVLTotal(okexchainArchives), - }, - cronos: { - tvl: getTVLTotal(cronosArchives), - }, - moonriver: { - tvl: getTVLTotal(moonriverArchives), - }, - milkomeda: { - tvl: getTVLTotal(milkomedaArchives), - }, - smartbch: { - tvl: getTVLTotal(smartbchArchives), - }, - dogechain: { - tvl: getTVLTotal(dogeArchives), - }, - dexit: { - tvl: getTVLTotal(dexitArchives), - }, - core: { - tvl: getTVLTotal(coreDaoArchives), - }, - bitgert: { - tvl: getTVLTotal(bitgertArchives), - } -}; +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl: getTVLTotal(config[chain]) } +}) module.exports.dexit.tvl = () => ({}) \ No newline at end of file From 8e947057a12ec7ce8696ca9f04785f0b7dcb0760 Mon Sep 17 00:00:00 2001 From: BlastexNet <163883211+BlastexNet@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:30:53 +0200 Subject: [PATCH 0818/2004] Blastex adapter updated (#9441) * Contract addresses updated * back to counting staked LP as pool2 --- projects/blastex/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/blastex/index.js b/projects/blastex/index.js index 8c5022a3838..90a9abd540f 100644 --- a/projects/blastex/index.js +++ b/projects/blastex/index.js @@ -1,8 +1,8 @@ const { sumTokensExport } = require('../helper/unknownTokens') -const main = '0xdC0C0746CA0954E6C2284D1a97cC85474B051EbB' -const token = '0x800ce05BaDE6B87E1552d0301Ea3393ccFf42F4A' -const lps = ['0x974D36201171cA8D28Cc3F46972349d24Be3A303'] +const main = '0x8C1DBB14c012bCCdB3477bc1625A3DCfD0F61ac2' +const token = '0x5C598E410De1214D77EBB166102471065E7b2596' +const lps = ['0xdaE375F817B465f3a226284Af0Ad5Fa2387274EA'] module.exports = { blast: { From d305962396287151595cd7aabbdd0789cd7090ee Mon Sep 17 00:00:00 2001 From: coke <118247347+cokes123@users.noreply.github.com> Date: Wed, 20 Mar 2024 19:55:05 +0800 Subject: [PATCH 0819/2004] add Staq (#9449) * add bitstaq * code refactor --------- Co-authored-by: cokes123 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bitstaq/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/bitstaq/index.js diff --git a/projects/bitstaq/index.js b/projects/bitstaq/index.js new file mode 100644 index 00000000000..26fcc99f9f4 --- /dev/null +++ b/projects/bitstaq/index.js @@ -0,0 +1,15 @@ +const ADDRESSES = require('../helper/coreAssets.json') + +async function tvl(timestamp, block, chainBlocks, { api }) { + const mapLockedAmount = await api.call({ + target: "0x000000000000000000000000000000000000d011", + abi: "function getAccountTotalLockedGold(address) view returns (uint256)", + params: ["0x2Ef75B32C26bC92977998C6D19e527E49fAD0D9B"], + }); + + api.add(ADDRESSES.map.WMAPO, mapLockedAmount) +} + +module.exports = { + map: { tvl, } +}; From 53cc6a6188e89e14665d2572c2503655c0f1b2d5 Mon Sep 17 00:00:00 2001 From: Ivan <3238603+ivivanov@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:55:42 +0200 Subject: [PATCH 0820/2004] refactoring: use built in functions and prices (#9411) --- projects/nolus/index.js | 162 ++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 97 deletions(-) diff --git a/projects/nolus/index.js b/projects/nolus/index.js index 504ea20629c..edec5c14c5d 100644 --- a/projects/nolus/index.js +++ b/projects/nolus/index.js @@ -1,25 +1,67 @@ +const sdk = require("@defillama/sdk"); +const { transformBalances } = require("../helper/portedTokens"); const { queryContract, queryManyContracts, queryContracts } = require('../helper/chain/cosmos') -const chain = 'nolus' -const _6Zeros = 1000000 -const _8Zeros = 100000000 -const _12Zeros = 1000000000000 -const _18Zeros = 1000000000000000000 - // Osmosis const osmosisLeaserAddr = 'nolus1wn625s4jcmvk0szpl85rj5azkfc6suyvf75q6vrddscjdphtve8s5gg42f' -const osmosisOracleAddr = 'nolus1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgsv3wzl4' const osmosisLppAddr = 'nolus1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sqaa3c5' // Neutron (Astroport) const neutronLeaserAddr = 'nolus1et45v5gepxs44jxewfxah0hk4wqmw34m8pm4alf44ucxvj895kas5yrxd8' -const neutronOracleAddr = 'nolus1jew4l5nq7m3xhkqzy8j7cc99083m5j8d9w004ayyv8xl3yv4h0dql2dd4e' const neutronLppAddr = 'nolus1qqcr7exupnymvg6m63eqwu8pd4n5x6r5t3pyyxdy7r97rcgajmhqy3gn94' +const _6Zeros = 1000000 +const denomsMapping = { + "neutron": { + "ATOM": "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", + "DYDX": "ibc/2CB87BCE0937B1D1DFCEE79BE4501AAF3C265E923509AEAC410AD85D27F35130", + "NLS": "ibc/6C9E6701AC217C0FC7D74B0F7A6265B9B4E3C3CDA6E80AADE5F950A8F52F9972", + "NTRN": "neutron:untrn", + "ST_ATOM": "ibc/B7864B03E1B9FD4F049243E92ABD691586F682137037A9F3FCA5222815620B3C", + "ST_TIA": "ibc/6569E05DEE32B339D9286A52BE33DFCEFC97267F23EF9CFDE0C055140967A9A5", + "STK_ATOM": "ibc/3649CE0C8A2C79048D8C6F31FF18FA69C9BC7EB193512E0BD03B733011290445", + "TIA": "ibc/773B4D0A3CD667B2275D5A4A7A2F0909C0BA0F4059C0B9181E680DDF4965DCC7", + "USDC_AXELAR": "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349", + "USDC_NOBLE": "ibc/B559A80D62249C8AA07A380E2A2BEA6E5CA9A6F079C912C3A9E9B494105E4F81" + }, + "osmosis": { + "AKT": "ibc/1480B8FD20AD5FCAE81EA87584D269547DD4D436843C1D20F15E00EB64743EF4", + "ATOM": "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2", + "AXL": "ibc/903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E", + "CRO": "ibc/E6931F78057F7CC5DA0FD6CEF82FF39373A6E0452BF1FD76910B93292CF356C1", + "DYM": "ibc/9A76CDF0CBCEF37923F32518FA15E5DC92B9F56128292BC4D63C4AEA76CBB110", + "EVMOS": "ibc/6AE98883D4D5D5FF9E50D7130F1305DA2FFA0C652D1DD9C123657C6B4EB2DF8A", + "INJ": "ibc/64BA6E31FE887D66C6F8F31C7B1A80C7CA179239677B4088BB55F5EA07DBE273", + "JKL": "ibc/8E697BDABE97ACE8773C6DF7402B2D1D5104DD1EEABE12608E3469B7F64C15BA", + "JUNO": "ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED", + "LVN": "factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn", + "MARS": "ibc/573FCD90FACEE750F55A8864EF7D38265F07E5A9273FA0E8DAFD39951332B580", + "MILK_TIA": "factory/osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0/umilkTIA", + "NLS": "ibc/D9AFCECDD361D38302AA66EB3BAC23B95234832C51D12489DC451FA2B7C72782", + "OSMO": "osmosis:uosmo", + "PICA": "ibc/56D7C03B8F6A07AD322EEE1BEF3AE996E09D1C1E34C27CF37E0D4A0AC5972516", + "Q_ATOM": "ibc/FA602364BEC305A696CBDF987058E99D8B479F0318E47314C49173E8838C5BAC", + "QSR": "ibc/1B708808D372E959CD4839C594960309283424C775F4A038AAEBE7F83A988477", + "SCRT": "ibc/0954E1C28EB7AF5B72D24F3BC2B47BBB2FDF91BDDFD57B74B99E133AED40972A", + "ST_ATOM": "ibc/C140AFD542AE77BD7DCC83F13FDD8C5E5BB8C4929785E6EC2F4C636F98F17901", + "ST_OSMO": "ibc/D176154B0C63D1F9C6DCFB4F70349EBF2E2B5A87A05902F57A6AE92B863E9AEC", + "ST_TIA": "ibc/698350B8A61D575025F3ED13E9AC9C0F45C89DEFE92F76D5838F1D3C1A7FF7C9", + "STARS": "ibc/987C17B11ABC2B20019178ACE62929FE9840202CE79498E29FE8E5CB02B7C0A4", + "STK_ATOM": "ibc/CAA179E40F0266B0B29FB5EAA288FB9212E628822265D4141EBD1C47C3CBFCBC", + "STRD": "ibc/A8CA5EE328FA10C9519DF6057DA1F69682D28F7D0F5CCC7ECB72E3DCA2D157A4", + "TIA": "ibc/D79E7D83AB399BFFF93433E54FAA480C191248FC556924A2A8351AE2638B3877", + "USDC": "ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858", + "USDC_AXELAR": "ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858", + "USDC_NOBLE": "ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4", + "WBTC": "ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F", + "WETH": "ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5" + } +} + async function getLeaseCodeId(leaserAddress) { const leaserContract = await queryContract({ contract: leaserAddress, - chain: chain, + chain: "nolus", data: { config: {} } }) @@ -33,7 +75,7 @@ async function getLeaseCodeId(leaserAddress) { async function getLeaseContracts(leaseCodeId) { return await queryContracts({ - chain: chain, + chain: "nolus", codeId: leaseCodeId, }) } @@ -42,50 +84,15 @@ async function getLeases(leaseAddresses) { return await queryManyContracts({ permitFailure: true, contracts: leaseAddresses, - chain: chain, + chain: "nolus", data: {} }) } -async function getPrices(oracleAddr) { - const oracle = await queryContract({ - contract: oracleAddr, - chain: chain, - data: { prices: {} } - }) - - const prices = {} - oracle.prices.forEach(p => { - let price = 0 - switch (p.amount.ticker) { - case "WBTC": - case "CRO": - price = (p.amount_quote.amount / (p.amount.amount / _8Zeros)) / _6Zeros - break - case "PICA": - price = (p.amount_quote.amount / (p.amount.amount / _12Zeros)) / _6Zeros - break - case "WETH": - case "EVMOS": - case "INJ": - case "DYDX": - case "DYM": - price = (p.amount_quote.amount / (p.amount.amount / _18Zeros)) / _6Zeros - break - default: - price = p.amount_quote.amount / p.amount.amount - break - } - prices[p.amount.ticker] = price - }) - - return prices -} - async function getLppTvl(lppAddresses) { const lpps = await queryManyContracts({ contracts: lppAddresses, - chain: chain, + chain: "nolus", data: { "lpp_balance": [] }, }) @@ -97,60 +104,25 @@ async function getLppTvl(lppAddresses) { return totalLpp / _6Zeros } -function sumAssests(leases) { - let assets = {} +function sumAssests(chain, leases) { + let balances = {} leases.forEach(v => { if (v.opened) { const ticker = v.opened.amount.ticker - const amount = BigInt(v.opened.amount.amount) - - if (ticker in assets) { - assets[ticker] += amount - } else { - assets[ticker] = amount - } + const amount = parseInt(v.opened.amount.amount, 10) + const denom = denomsMapping[chain][ticker] + sdk.util.sumSingleBalance(balances, denom, amount) } }) - return assets -} - -function getAssetsTvl(assets, prices) { - let totalTvl = 0 - for (const ticker in assets) { - if (Object.hasOwnProperty.call(assets, ticker)) { - let amount = 0 - switch (ticker) { - case "WBTC": - case "CRO": - amount = Number(assets[ticker]) / _8Zeros - break - case "PICA": - amount = Number(assets[ticker]) / _12Zeros - break - case "WETH": - case "EVMOS": - case "INJ": - case "DYDX": - case "DYM": - amount = Number(assets[ticker]) / _18Zeros - break - default: - amount = Number(assets[ticker]) / _6Zeros - break - } - totalTvl += amount * prices[ticker] - } - } - return totalTvl + return balances } -async function tvl(leaserAddr, oracleAddr) { +async function tvl(chain, leaserAddr) { const leaseCodeId = await getLeaseCodeId(leaserAddr) const leaseContracts = await getLeaseContracts(leaseCodeId) const leases = await getLeases(leaseContracts) - const assets = sumAssests(leases) - const prices = await getPrices(oracleAddr) - return getAssetsTvl(assets, prices) + const balances = sumAssests(chain, leases) + return transformBalances("nolus", balances); } module.exports = { @@ -164,16 +136,12 @@ module.exports = { }, neutron: { tvl: async () => { - return { - 'axlusdc': await tvl(neutronLeaserAddr, neutronOracleAddr) - } + return await tvl("neutron", neutronLeaserAddr) } }, osmosis: { tvl: async () => { - return { - 'axlusdc': await tvl(osmosisLeaserAddr, osmosisOracleAddr) - } + return await tvl("osmosis", osmosisLeaserAddr) } } } From 80a792a6516ee186787e7f2246d90b3c137308dc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:06:59 +0100 Subject: [PATCH 0821/2004] Hiyield * feat: add hiyield tvl * code refactor --- projects/hiyield/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/hiyield/index.js diff --git a/projects/hiyield/index.js b/projects/hiyield/index.js new file mode 100644 index 00000000000..940b21478ec --- /dev/null +++ b/projects/hiyield/index.js @@ -0,0 +1,32 @@ +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 (_, _b, _cb, { 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 From ae4a536e2a3f5206f7c27e36f95715bbbb8202b9 Mon Sep 17 00:00:00 2001 From: Hakura-io <154793957+Hakura-io@users.noreply.github.com> Date: Wed, 20 Mar 2024 20:33:48 +0800 Subject: [PATCH 0822/2004] Add files via upload (#9452) * Add files via upload * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hakura/index.js | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 projects/hakura/index.js diff --git a/projects/hakura/index.js b/projects/hakura/index.js new file mode 100644 index 00000000000..b1c2b6daf60 --- /dev/null +++ b/projects/hakura/index.js @@ -0,0 +1,61 @@ +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 (_, _1, _2, { 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), + } + } +]) From 30b442e73ca1eed4126558be0b161613a7ef7fa9 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 20 Mar 2024 18:17:12 +0000 Subject: [PATCH 0823/2004] export staking --- projects/unilend/index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/projects/unilend/index.js b/projects/unilend/index.js index e29c2370588..a5a6f89a867 100644 --- a/projects/unilend/index.js +++ b/projects/unilend/index.js @@ -1,13 +1,20 @@ 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, + ethereum: { + tvl, + staking: staking(UnilendContract,"0x0202Be363B8a4820f3F4DE7FaF5224fF05943AB1") + }, polygon: tvl, - bsc: tvl, + bsc: { + tvl, + staking: staking(UnilendContract,"0x2645d5f59D952ef2317C8e0AaA5A61c392cCd44d","bsc") + }, methodology: "We count liquidity on the Pools through UnilendFlashLoansCore Contract", }; From f9d7f52ee6431df6dd73f486d66253434fe9f24f Mon Sep 17 00:00:00 2001 From: kulikov-yldr <161155762+kulikov-yldr@users.noreply.github.com> Date: Thu, 21 Mar 2024 01:25:54 +0400 Subject: [PATCH 0824/2004] Update index.js (#9459) --- projects/yldr/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/yldr/index.js b/projects/yldr/index.js index 760ff5eb755..b626c228833 100644 --- a/projects/yldr/index.js +++ b/projects/yldr/index.js @@ -9,6 +9,7 @@ module.exports = { const config = { ethereum: { v3Wrapper: '0x13f4dc963ddd2ec0160f6473c69b704b0e8674fc', factory: '0xd7b1C5afc105e0E70F78B66CdFE977aEf80540bA', fromBlock: 18808612, }, arbitrum: { v3Wrapper: '0x07B99965dBEdf38322ADFe48623e042Aa0656283', factory: '0x88959bebbce33d75227633d5114e3c3fd0fb9a6d', fromBlock: 155897900, }, + polygon: { v3Wrapper: '0x27b3E5fD3E2C03Ac02Ee2a90E7B0C52Dac179dAe', factory: '0xf336D4687937C109e51e0266663689Da5ad637C3', fromBlock: 54456800 }, } const eventAbi = 'event ReserveInitialized (address indexed asset, address indexed yToken, address variableDebtToken, address interestRateStrategyAddress)' @@ -39,4 +40,4 @@ Object.keys(config).forEach(chain => { return api.getBalances() }, } -}) \ No newline at end of file +}) From 365331269eda787ef43b1128ff279789e66021d0 Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Thu, 21 Mar 2024 04:48:41 +0700 Subject: [PATCH 0825/2004] DackieSwap update inEVM chain (#9464) * update staking dackie * update arbitrum * update blast * update blast factory * update inevm factory --------- Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 7 +++++++ projects/dackieswap/index.js | 1 + 2 files changed, 8 insertions(+) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index e7043afc964..13d96e3f729 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -38,5 +38,12 @@ module.exports = { useDefaultCoreAssets: true, fetchBalances: true }) + }, + inevm: { + tvl: getUniTVL({ + factory: "0x507940c2469e6E3B33032F1d4FF8d123BDDe2f5C", + useDefaultCoreAssets: true, + fetchBalances: true + }) } }; \ No newline at end of file diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index f1960c087f7..71aec8d493b 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -5,4 +5,5 @@ module.exports = uniV3Export({ optimism: { factory: "0xc2BC7A73613B9bD5F373FE10B55C59a69F4D617B", fromBlock: 115172042 }, arbitrum: { factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", fromBlock: 180722131 }, blast: { factory: "0xd1575B2e0C82fba9Eddc3de9c9AAF923AFA670cC", fromBlock: 286237 }, + inevm: { factory: "0xf79A36F6f440392C63AD61252a64d5d3C43F860D", fromBlock: 291933 }, }); \ No newline at end of file From 917528c279d3f8ec72d71912bdb80709bb265f70 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Wed, 20 Mar 2024 14:50:39 -0700 Subject: [PATCH 0826/2004] Update Adapter (#9460) --- projects/visor/config.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/visor/config.js b/projects/visor/config.js index 7035fc01bad..e50c153d9fa 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -29,7 +29,8 @@ const HYPE_REGISTRY = { ["0x7b9c2f68f16c3618bb45616fb98d83f94fd7062e", 44933860], // Ascent ], polygon_zkevm: [ - ["0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", 152596], // Quickswap + ["0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", 152596], // Quickswap Algebra + ["0xf9aDaa55014242c1005dB307C4e41c541f26bAAA", 10725633], // Quickswap UniV3 ], optimism: [ ["0xF5BFA20F4A77933fEE0C7bB7F39E7642A070d599", 6538026], // Uniswap @@ -56,6 +57,7 @@ const HYPE_REGISTRY = { ["0x0F548d7AD1A0CB30D1872b8C18894484d76e1569", 14032548], // Uniswap ], avax: [ + ["0xbF145c5239B1327909f3e37CA0cF890d014105E2", 43083367], // Uniswap ["0x71ea9545ED7f8662a8B461d7cb0899745E3fb3E6", 39225125], // Pharaoh ], fantom: [ @@ -63,7 +65,7 @@ const HYPE_REGISTRY = { ], mantle: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 1000], // FusionX - ["0xa5E9006C17740Cb9e4898657721c4dFE103d8456", 58580400], // Celo + ["0xa5E9006C17740Cb9e4898657721c4dFE103d8456", 58580400], // Cleopatra ], rollux: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 1435083], // PegaSys @@ -97,6 +99,12 @@ const HYPE_REGISTRY = { xdai: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 31760496], // Swapr ], + astrzk: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 306151], // Quickswap + ], + blast: [ + ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster + ], }; Object.keys(HYPE_REGISTRY).forEach(chain => { From 786084cfe7b2e3093029093cff2cf5fdc304e117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Wed, 20 Mar 2024 22:52:37 +0100 Subject: [PATCH 0827/2004] Add new factory for Nostra Pools (#9462) * Add new factory for Nostra Pools * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/nostra-pools/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/nostra-pools/index.js b/projects/nostra-pools/index.js index 2846ee38042..21d97f0e83d 100644 --- a/projects/nostra-pools/index.js +++ b/projects/nostra-pools/index.js @@ -4,7 +4,9 @@ const { getCache, setCache } = require("../helper/cache"); const abi = require("./abi"); const { transformDexBalances } = require("../helper/portedTokens"); -const factory = "0x352e14b9bdc0138e48b55d45914b059f0388284c77a23a97776e6197852f050"; +const factory = + "0x02a93ef8c7679a5f9b1fcf7286a6e1cadf2e9192be4bcb5cb2d1b39062697527"; +const cacheKey = `nostra-pools/${factory}`; async function tvl() { let all_pairs = await call({ @@ -13,7 +15,7 @@ async function tvl() { }); const calls = all_pairs.map((i) => parseAddress(i)); - const cache = (await getCache("nostra-pools", "starknet")) ?? {}; + const cache = (await getCache(cacheKey, "starknet")) ?? {}; if (!cache.token0s) { cache.token0s = []; @@ -31,7 +33,7 @@ async function tvl() { cache.token1s.push(..._token1s.map((i) => addAddressPadding(i))); if (cache.token0s.length > oldCacheLength) { - await setCache("nostra-pools", "starknet", cache); + await setCache(cacheKey, "starknet", cache); } const data = []; From e2dd0a5093cb1cb494c7c4868f301c9807854ed7 Mon Sep 17 00:00:00 2001 From: SolidZK <130356406+SolidZK@users.noreply.github.com> Date: Thu, 21 Mar 2024 03:23:40 +0530 Subject: [PATCH 0828/2004] Added adapter for soildblast (#9463) Co-authored-by: LaazyPotaato --- projects/solidblast/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/solidblast/index.js diff --git a/projects/solidblast/index.js b/projects/solidblast/index.js new file mode 100644 index 00000000000..c8d28e993a8 --- /dev/null +++ b/projects/solidblast/index.js @@ -0,0 +1,13 @@ +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", + fetchBalances: true, + useDefaultCoreAssets: true, + }), + }, +}; \ No newline at end of file From 11608b4784ea5147723b8a695a800722ef1203d5 Mon Sep 17 00:00:00 2001 From: Nick Paris Date: Wed, 20 Mar 2024 18:08:34 -0400 Subject: [PATCH 0829/2004] add treasury and token for bitsCrunch (#9465) Co-authored-by: Nick Paris --- projects/treasury/bitsCrunch.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/treasury/bitsCrunch.js diff --git a/projects/treasury/bitsCrunch.js b/projects/treasury/bitsCrunch.js new file mode 100644 index 00000000000..be12526a2f3 --- /dev/null +++ b/projects/treasury/bitsCrunch.js @@ -0,0 +1,13 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const bitsCrunchTreasury = "0xf42c74D82a42a7BEC7565c5a866Baca11260F0AF"; + +const BCUT = "0xBEF26Bd568e421D6708CCA55Ad6e35f8bfA0C406"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [nullAddress], + owners: [bitsCrunchTreasury], + ownTokens: [BCUT], + }, +}); From 8a837d18cd1e0d9a810eb0bee2c82c4add99e77b Mon Sep 17 00:00:00 2001 From: melegaswap <164246914+melegaswap@users.noreply.github.com> Date: Thu, 21 Mar 2024 01:27:18 +0300 Subject: [PATCH 0830/2004] add melegaswap adapter (#9468) * add melegaswap adapter * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/melegaswap/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/melegaswap/index.js diff --git a/projects/melegaswap/index.js b/projects/melegaswap/index.js new file mode 100644 index 00000000000..479efb34700 --- /dev/null +++ b/projects/melegaswap/index.js @@ -0,0 +1,5 @@ +const { uniTvlExport } = require('../helper/unknownTokens'); + +module.exports = uniTvlExport('bsc', '0xb7E5848e1d0CB457f2026670fCb9BbdB7e9E039C', { useDefaultCoreAssets: true, blacklistedTokens: [ + '0x1a515bf4e35AA2DF67109281DE6B3b00Ec37675E', '0x963556de0eb8138e97a85f0a86ee0acd159d210b', +] }) From cacdef4c0a63a080ae28f7b6acc2ba2cec8bceb6 Mon Sep 17 00:00:00 2001 From: DegenApeDev Date: Wed, 20 Mar 2024 15:27:42 -0700 Subject: [PATCH 0831/2004] created degendex adapter for tracking on defillama (#9467) * created degendex adapter for tracking on defillama * Update index.js --------- Co-authored-by: degen Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/DegenDex/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/DegenDex/index.js diff --git a/projects/DegenDex/index.js b/projects/DegenDex/index.js new file mode 100644 index 00000000000..7cb423ed3c6 --- /dev/null +++ b/projects/DegenDex/index.js @@ -0,0 +1,15 @@ +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, fetchBalances: true, }) + } +}) From b30002646bd6ff97f4adee147aec57e60fef7c9f Mon Sep 17 00:00:00 2001 From: Evan | zkLink Labs Date: Thu, 21 Mar 2024 07:47:55 +0800 Subject: [PATCH 0832/2004] Created zkLink Nova adapter (#9469) * created zkLink Nova adapter * Update index.js --------- Co-authored-by: Define101 <93603962+Define101@users.noreply.github.com> --- projects/zkLink/index.js | 110 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 projects/zkLink/index.js diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js new file mode 100644 index 00000000000..d261e315ef1 --- /dev/null +++ b/projects/zkLink/index.js @@ -0,0 +1,110 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); +const ADDRESSES = require("../helper/coreAssets.json"); +const ETH_DEFAULT_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; +const ERA_ETH_BALANCE_OF_ABI = + "function balanceOf(uint256) view returns (uint256)"; +const ERA_ETH_ADDRESS = "0x000000000000000000000000000000000000800A"; +async function getEraEthBalance(api, addr) { + return await api.call({ + abi: ERA_ETH_BALANCE_OF_ABI, + target: ERA_ETH_ADDRESS, + params: [addr], + }); +} +module.exports = { + ethereum: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0x5fD9F73286b7E8683Bab45019C94553b93e015Cf", + "0xAd16eDCF7DEB7e90096A259c81269d811544B6B6", + ], + fetchCoValentTokens: true, + }), + }, + arbitrum: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A", + "0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585", + ], + fetchCoValentTokens: true, + }), + }, + linea: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05", + "0x62cE247f34dc316f93D3830e4Bf10959FCe630f8", + ], + fetchCoValentTokens: true, + }), + }, + + era: { + tvl: async (_, _b, _c, { api }) => { + const balances = {}; + balances[`era:${ERA_ETH_ADDRESS}`] = await getEraEthBalance( + api, + "0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A" + ); + + return sumTokens2({ + api, + owners: ["0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08"], + balances: balances, + blacklistedTokens: [ERA_ETH_ADDRESS], + }); + }, + }, + + mantle: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", + "0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2", + ], + tokens: ["0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8", //mnt + "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE", //usdt + "0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111" ,//weth + "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9" , //usdc + ], + }), + }, + manta: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", + "0x44a65dc12865A1e5249b45b4868f32b0E37168FF", + ], + tokens: [ + ...Object.values(ADDRESSES.manta), + ETH_DEFAULT_ADDRESS, + "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", //MANTA + "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", //STONE + "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07", //WUSDM + ], + fetchCoValentTokens: false, + }), + }, + blast: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD", + "0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b", + ], + tokens: [ETH_DEFAULT_ADDRESS], + }), + }, +}; From a20b2162d7b8dd962b624a3db9ec0e4a58842a4e Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 21 Mar 2024 00:05:48 +0000 Subject: [PATCH 0833/2004] fix era tokens (#9470) --- projects/zkLink/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index d261e315ef1..db005d5e5a5 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -58,6 +58,11 @@ module.exports = { api, owners: ["0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08"], balances: balances, + tokens: [ + "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", //btc + "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" , //usdc + "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", //usdt + ], blacklistedTokens: [ERA_ETH_ADDRESS], }); }, From 77c5bd71787f4c96c1a8e4d7f600f6b1ae7a6f1a Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 21 Mar 2024 04:16:53 +0000 Subject: [PATCH 0834/2004] fix blast bridge --- projects/blast-bridge/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/projects/blast-bridge/index.js b/projects/blast-bridge/index.js index f022a4c84a2..9df9236fe00 100644 --- a/projects/blast-bridge/index.js +++ b/projects/blast-bridge/index.js @@ -1,9 +1,14 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); +const ADDRESSES = require('../helper/coreAssets.json'); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => - sumTokens2({ + tvl: async (_, _b, _c, { api }) =>{ + const balances = { + [ADDRESSES.ethereum.DAI]: await api.call({target: "0xa230285d5683c74935ad14c446e137c8c8828438", abi:"uint:totalValue"}) + }; + return sumTokens2({ + balances, api, owners: [ "0xa230285d5683C74935aD14c446e137c8c8828438", @@ -11,6 +16,7 @@ module.exports = { "0x5F6AE08B8AeB7078cf2F96AFb089D7c9f51DA47d", ], fetchCoValentTokens: true, - }), + }) + }, }, }; From 0033ae3106ace63cf329a263dcb69cfe735ac585 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 09:24:51 +0100 Subject: [PATCH 0835/2004] minor fix --- projects/blast-bridge/index.js | 2 +- projects/zkLink/index.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/projects/blast-bridge/index.js b/projects/blast-bridge/index.js index 9df9236fe00..6a36c4d02f4 100644 --- a/projects/blast-bridge/index.js +++ b/projects/blast-bridge/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json'); module.exports = { ethereum: { - tvl: async (_, _b, _c, { api }) =>{ + tvl: async (api) =>{ const balances = { [ADDRESSES.ethereum.DAI]: await api.call({target: "0xa230285d5683c74935ad14c446e137c8c8828438", abi:"uint:totalValue"}) }; diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index db005d5e5a5..87276725251 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -13,7 +13,7 @@ async function getEraEthBalance(api, addr) { } module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ @@ -24,7 +24,7 @@ module.exports = { }), }, arbitrum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ @@ -35,7 +35,7 @@ module.exports = { }), }, linea: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ @@ -47,7 +47,7 @@ module.exports = { }, era: { - tvl: async (_, _b, _c, { api }) => { + tvl: async (api) => { const balances = {}; balances[`era:${ERA_ETH_ADDRESS}`] = await getEraEthBalance( api, @@ -69,7 +69,7 @@ module.exports = { }, mantle: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ @@ -84,7 +84,7 @@ module.exports = { }), }, manta: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ @@ -102,7 +102,7 @@ module.exports = { }), }, blast: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ From f9f37f8d82936bdc63bbc93ac0262fa29a2c8988 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 09:26:53 +0100 Subject: [PATCH 0836/2004] Tvl-v2 (#9466) * use tvl function v2 * refactor addFundsInMasterChef * replace usage of timestamp field * more refactoring * more refactoring --- projects/0xDAO/index.js | 2 +- projects/1beam/index.js | 2 +- projects/1inch.js | 2 +- projects/1swap/index.js | 2 +- projects/3a-dao/index.js | 2 +- projects/88mph/index.js | 2 +- projects/AnonSocial/index.js | 2 +- projects/ArchimedesFinance/index.js | 2 +- projects/AxiaProtocol/index.js | 2 +- projects/BankofCronos-Loans/index.js | 2 +- projects/CofferCity/index.js | 2 +- projects/CreampanFinance/index.js | 2 +- projects/CthulhuFinance/index.js | 2 +- projects/DigiFT/index.js | 5 +- projects/DropCopy/index.js | 2 +- projects/E3/index.js | 2 +- projects/El-Dorado-Exchange/index.js | 6 +- projects/Guru/index.js | 6 +- projects/HoneyFarm/index.js | 69 +-- projects/Hono/index.js | 2 +- projects/KyborgExchange/index.js | 2 +- projects/Lockless/index.js | 2 +- projects/MFIL/index.js | 2 +- projects/MantisSwap/index.js | 2 +- projects/Match-Finance/index.js | 4 +- projects/MellowProtocol/index.js | 2 +- projects/MeowProtocol/index.js | 4 +- projects/MineFi/index.js | 2 +- projects/MyTrade/index.js | 3 +- projects/NEKO/index.js | 3 +- projects/OT/index.js | 2 +- projects/SecuredFinance/index.js | 2 +- projects/SharpeLabs/index.js | 2 +- projects/aark/index.js | 2 +- projects/aave/index.js | 5 +- projects/abc-pool/index.js | 2 +- projects/abex-finance/index.js | 2 +- projects/abracadabra/index.js | 2 +- projects/acala-euphrates/index.js | 3 +- projects/accumulated-finance/index.js | 2 +- projects/accumulator/index.js | 2 +- projects/across/index.js | 9 +- projects/adamantfinance/index.js | 2 +- projects/aelin/index.js | 6 +- projects/aequinox/index.js | 2 +- projects/aera/index.js | 2 +- projects/aeria/index.js | 2 +- projects/aerie/index.js | 2 +- projects/affine-defi/index.js | 4 +- projects/aftermath-fi/index.js | 2 +- projects/agave.js | 7 - projects/agilitylsd/index.js | 2 +- projects/airpuff/index.js | 4 +- projects/ajira-pay-finance-v2/index.js | 2 +- projects/ajira-pay-finance/index.js | 2 +- projects/ajna-v2/index.js | 4 +- projects/ajna/index.js | 4 +- projects/alchemist/index.js | 2 +- projects/alchemix/index.js | 2 +- projects/alexar/index.js | 2 +- projects/algebra/index.js | 2 +- projects/algodex.js | 2 +- projects/alienbase-stableswap/index.js | 2 +- projects/allbridge-core/index.js | 4 +- projects/alongside/index.js | 2 +- projects/alpaca-finance-lend/lend.js | 4 +- projects/alpha-homora/v1.js | 2 +- projects/alta-finance/index.js | 4 +- projects/altitude/index.js | 2 +- projects/ambient-finance/index.js | 2 +- projects/ambit-finance/index.js | 4 +- projects/amet-finance/index.js | 2 +- projects/amphora/index.js | 2 +- projects/amulet-v2/index.js | 2 +- projects/amun/index.js | 2 +- projects/anchorswap/index.js | 44 +- projects/angle/index.js | 4 +- projects/ankr/index.js | 2 +- projects/antex.js | 2 +- projects/antimatterDAO/index.js | 2 +- projects/anyhedge/index.js | 2 +- projects/anyswap/index.js | 2 +- projects/anzen/index.js | 4 +- projects/apeCoinStaking/index.js | 2 +- projects/apebond/index.js | 4 +- projects/api3/index.js | 2 +- projects/apollodao/index.js | 4 +- projects/aptoslaunch/index.js | 6 +- projects/arbitrove/index.js | 2 +- projects/arbitrum/index.js | 2 +- projects/arbitrumNova/index.js | 2 +- projects/arbor-finance/index.js | 4 +- projects/arbswap-stableswap/index.js | 2 +- projects/arcade-xyz/index.js | 8 +- projects/arcadia-finance/helper/index.js | 2 +- projects/arch-ethereum-web-3/index.js | 4 +- projects/archi-finance/index.js | 4 +- projects/arcx.js | 18 +- projects/arenaswap/index.js | 62 +- projects/argofinance/index.js | 2 +- projects/arpa-staking/index.js | 2 +- projects/arrakis-v2/index.js | 2 +- projects/artdefinance-seeding/index.js | 2 +- projects/aspida/index.js | 2 +- projects/astaria/index.js | 4 +- projects/astra-dao/index.js | 10 +- projects/astralfarm/index.js | 31 +- projects/astrolescent/index.js | 4 +- projects/astrovault/index.js | 2 +- projects/asymmetry-fi/index.js | 2 +- projects/athenafinance-io/index.js | 2 +- projects/atlas-fi/index.js | 2 +- projects/atmossoft.js | 16 +- projects/atomic/index.js | 2 +- projects/auctus/index.js | 283 ++++------ projects/augmented-finance/index.js | 2 +- projects/aura-finance/index.js | 8 +- projects/aurelius/index.js | 3 +- projects/autocoreDefi/index.js | 2 +- projects/autofarm.js | 2 +- projects/avatr/index.js | 2 +- projects/avax/index.js | 2 +- projects/avely-finance-staking/index.js | 3 +- projects/axial/index.js | 2 +- projects/azuro/index.js | 4 +- projects/babypigfinance/index.js | 29 +- projects/backbonelabs/index.js | 2 +- projects/backed/index.js | 2 +- projects/baker-guild-finance/index.js | 64 +-- projects/bakerfi/index.js | 2 +- projects/baklava-space/index.js | 8 +- projects/balanced-bnUSD/index.js | 3 +- projects/balanced/index.js | 2 +- projects/bank-of-chain/index.js | 2 +- projects/bao-baskets/index.js | 2 +- projects/barnbridge/index.js | 2 +- projects/bas3d/index.js | 4 +- projects/base/index.js | 2 +- projects/base3d/index.js | 2 +- projects/basedfarm/index.js | 4 +- projects/baseline/index.js | 4 +- projects/basetasm/index.js | 2 +- projects/baseyield/index.js | 2 +- projects/bassexhcnage/index.js | 2 +- projects/baton/index.js | 2 +- projects/beamswap-stableswap/index.js | 2 +- projects/beethovenx-sftmx/index.js | 2 +- projects/beglobal/index.js | 35 +- projects/bella.js | 6 +- projects/beluga-dex/index.js | 2 +- projects/beluga/index.js | 2 +- projects/benddao-ape-staking/index.js | 2 +- projects/benddao/helper/index.js | 4 +- projects/beta-finance-v2/index.js | 4 +- projects/betafinance/index.js | 4 +- projects/betswirl/index.js | 2 +- projects/bifi/index.js | 2 +- projects/bifrost-staking/index.js | 2 +- projects/bigdataprotocol/index.js | 34 +- projects/binance-beth/index.js | 4 +- projects/binaryx-platform/index.js | 2 +- projects/biswap-v3/index.js | 2 +- projects/bitBTC.js | 91 ++- projects/bitcoinswap/index.js | 2 +- projects/bitstaq/index.js | 2 +- projects/blackbird-finance/index.js | 40 +- projects/blackpanther/index.js | 2 +- projects/blackpool.js | 4 +- projects/blackrock-fund/index.js | 2 +- projects/bladeswap/index.js | 2 +- projects/blazestake/index.js | 2 +- projects/blindex/index.js | 2 +- projects/blizzard/index.js | 2 +- projects/blockswap/index.js | 2 +- projects/bloom/index.js | 2 +- projects/bluefin/index.js | 3 +- projects/blueshift/index.js | 4 +- projects/boba/index.js | 2 +- projects/bond-protocol/index.js | 2 +- projects/bonqdao/index.js | 2 +- projects/boofinance/index.js | 8 +- projects/borgswap/index.js | 31 +- projects/bow-leverage/index.js | 2 +- projects/bracketX/index.js | 2 +- projects/brewlabs/index.js | 4 +- projects/brickken/index.js | 2 +- projects/bril-finance/index.js | 2 +- projects/brokkr/index.js | 2 +- projects/bt-finance.js | 2 +- projects/btcfi/index.js | 2 +- projects/bucket-protocol/index.js | 2 +- projects/bunni/index.js | 2 +- projects/bunny/index.js | 4 +- projects/buttonwood-button-wrappers/index.js | 2 +- projects/buttonwood-tranche/index.js | 2 +- projects/cakepie/index.js | 2 +- projects/carbondefi/index.js | 2 +- projects/carmine-options/api.js | 2 +- projects/cashcow/index.js | 4 +- projects/cashcowprotocol/index.js | 32 +- projects/cavel-re/index.js | 2 +- projects/caviar-v2/index.js | 2 +- projects/caviar/index.js | 4 +- projects/caviarnine-lsu/index.js | 2 +- projects/caviarnine-orderbook/index.js | 2 +- projects/caviarnine-shapeliquidity/index.js | 2 +- projects/cdc-eth/index.js | 5 +- projects/cega/evm.js | 4 +- projects/cellana/index.js | 2 +- projects/cemetery/index.js | 40 +- projects/cennz-bridge.js | 21 +- projects/cetus/index.js | 6 +- projects/chaingpt/index.js | 2 +- projects/changex/index.js | 2 +- projects/charm-fi-vaults-v2/index.js | 2 +- projects/chickenswap/index.js | 2 +- projects/chromatic-protocol/index.js | 2 +- projects/cian-automation/index.js | 2 +- projects/cian-lst/index.js | 2 +- projects/citadao/index.js | 2 +- projects/ckbtc/index.js | 2 +- projects/cketh/index.js | 2 +- projects/claimswap-v2/index.js | 2 +- projects/claystack-matic/index.js | 2 +- projects/claystack/index.js | 2 +- projects/clearpool/index.js | 4 +- projects/clever/index.js | 2 +- projects/clip-finance/index.js | 2 +- projects/clipper/index.js | 2 +- projects/clober/index.js | 2 +- projects/coffin/index.js | 53 +- projects/cog-finance/index.js | 4 +- projects/coinscope/index.js | 2 +- projects/collectionxyz/index.js | 2 +- projects/comb/index.js | 2 +- projects/concentrator/index.js | 3 +- projects/concordex-io/index.js | 2 +- projects/config/onx/ethereum/index.js | 7 +- projects/conic-omnipool/index.js | 2 +- projects/connext/index.js | 2 +- projects/contango-v2/index.js | 4 +- projects/contango/index.js | 4 +- projects/contrax-finance/index.js | 2 +- projects/copra-finance/index.js | 2 +- projects/counterstake/index.js | 2 +- projects/coupon-finance/index.js | 2 +- projects/cozy-v2/index.js | 2 +- projects/creamswap/index.js | 3 +- projects/credix/index.js | 4 +- projects/creo/index.js | 2 +- projects/cron-fi/index.js | 2 +- projects/croswap/index.js | 2 +- projects/crowdswap/index.js | 2 +- projects/crv-usd/index.js | 2 +- projects/cryptex-finance/index.js | 2 +- projects/cryptex-pi/index.js | 2 +- projects/cryptex-v2/index.js | 2 +- projects/cryptoyieldfocus/index.js | 38 +- projects/csix/index.js | 2 +- projects/cupid/index.js | 32 +- projects/curve/index.js | 7 +- projects/cvi/index.js | 6 +- projects/cybertime/index.js | 4 +- projects/cyclefinance/index.js | 2 +- projects/cygnus-finance/index.js | 2 +- projects/cygnusdao/index.js | 4 +- projects/d8x/index.js | 2 +- projects/daolama/borrowed.js | 2 +- projects/darkcrypto/index.js | 2 +- projects/darkmatter/index.js | 34 +- projects/debtdao/index.js | 4 +- projects/deepbook-sui/index.js | 2 +- projects/defi-basket/api.js | 2 +- projects/defiedge/index.js | 3 +- projects/defimaster/index.js | 2 +- projects/definitive/index.js | 2 +- projects/defiplaza.js | 4 +- projects/defisaver.js | 2 +- projects/defiverse/index.js | 2 +- projects/defrost/index.js | 4 +- projects/degate/index.js | 2 +- projects/deltafi/index.js | 2 +- projects/deltaprime/index.js | 4 +- projects/deltatheta/index.js | 2 +- projects/depth/index.js | 563 +++---------------- projects/deri-v4/index.js | 2 +- projects/deri/index.js | 2 +- projects/derivio/index.js | 2 +- projects/desyn/index.js | 2 +- projects/detto-finance/index.js | 4 +- projects/dexilla/index.js | 2 +- projects/dexter-tezos/index.js | 6 +- projects/dexter/index.js | 2 +- projects/dextf/v2.js | 5 +- projects/dforce/index.js | 2 +- projects/dfx-v3/index.js | 2 +- projects/dfx/index.js | 2 +- projects/dhedge.js | 10 +- projects/diamond-unibot-v2/index.js | 2 +- projects/dinari/index.js | 2 +- projects/dinero/index.js | 2 +- projects/dinosaur-finance/index.js | 2 +- projects/dip-exchange/index.js | 2 +- projects/dodo/index.js | 2 +- projects/dojoswap-lsd/index.js | 2 +- projects/dolomite/index.js | 4 +- projects/dopex-clamm/index.js | 2 +- projects/dopex/index.js | 2 +- projects/drachma/index.js | 2 +- projects/dracoforce/index.js | 32 +- projects/dradex/index.js | 2 +- projects/drift.js | 2 +- projects/dsf-finance/index.js | 2 +- projects/dubble-exchange/index.js | 2 +- projects/duet/arbitrum.js | 2 +- projects/duet/bsc.js | 2 +- projects/dungeonswap/index.js | 33 +- projects/dvol/index.js | 4 +- projects/ease/index.js | 2 +- projects/edebase/index.js | 2 +- projects/edgeprotocol.js | 4 +- projects/eigenlayer/index.js | 2 +- projects/eigenpie/index.js | 2 +- projects/ekubo/index.js | 2 +- projects/elasticswap/index.js | 21 +- projects/electrikfinance/index.js | 2 +- projects/elektrik/index.js | 2 +- projects/elementfi/index.js | 3 +- projects/ellipsis/index.js | 4 +- projects/elysia/index.js | 4 +- projects/emiswap/index.js | 2 +- projects/ennead/index.js | 4 +- projects/ensuro/index.js | 2 +- projects/enzyme/index.js | 2 +- projects/equation-v2/index.js | 2 +- projects/equation/index.js | 2 +- projects/ester/abi.json | 8 +- projects/ester/index.js | 122 +--- projects/ether-fi/index.js | 4 +- projects/etherberry/index.js | 2 +- projects/ethos/index.js | 4 +- projects/euler/index.js | 4 +- projects/everrise/index.js | 2 +- projects/evolutionland/index.js | 2 +- projects/exactly/index.js | 4 +- projects/extra/index.js | 2 +- projects/factor-leverage-vault/index.js | 2 +- projects/factor-v2/index.js | 2 +- projects/factor/index.js | 2 +- projects/fantompup/index.js | 33 +- projects/ferro/index.js | 2 +- projects/filet/index.js | 8 +- projects/flamincome.js | 2 +- projects/flamingo.js | 18 +- projects/flashstake-old/index.js | 2 +- projects/flashstake/index.js | 2 +- projects/flokifi-locker/index.js | 2 +- projects/florence-finance/index.js | 4 +- projects/fluid/index.js | 2 +- projects/fluidity-money/index.js | 6 +- projects/fluidtokens/index.js | 4 +- projects/fluxbeam-xyz/index.js | 2 +- projects/fortube/index.js | 2 +- projects/fortunafi-fbill/index.js | 2 +- projects/fortunafi-ifbill/index.js | 2 +- projects/fpi/index.js | 2 +- projects/fractal-protocol/index.js | 4 +- projects/fractional-art.js | 4 +- projects/frankencoin/index.js | 2 +- projects/fraxfinance/index.js | 2 +- projects/fraxlend/index.js | 4 +- projects/freebie/index.js | 2 +- projects/fringe/utils.js | 4 +- projects/frostfinance/index.js | 91 +-- projects/fujidao-v2/index.js | 4 +- projects/fulcrom/index.js | 2 +- projects/funbear/index.js | 2 +- projects/fundex/index.js | 2 +- projects/furucombo/index.js | 2 +- projects/future-swap/index.js | 2 +- projects/fx-Protocol/index.js | 40 +- projects/fyde/index.js | 2 +- projects/gable/index.js | 2 +- projects/gainsNetwork.js | 4 +- projects/gammaswap/index.js | 2 +- projects/garbi/index.js | 2 +- projects/garuda-staking/index.js | 2 +- projects/gasline/index.js | 2 +- projects/gearbox/index.js | 3 +- projects/gemmine/index.js | 31 +- projects/genesis-lrt/index.js | 2 +- projects/genesys/index.js | 38 +- projects/genius/index.js | 4 +- projects/ggpVault/index.js | 2 +- projects/ghast/index.js | 4 +- projects/ghost/index.js | 4 +- projects/glif/index.js | 2 +- projects/gnd-protocol/index.js | 2 +- projects/gogopool/index.js | 2 +- projects/goldfinch/index.js | 16 +- projects/gomble/index.js | 2 +- projects/goober/index.js | 2 +- projects/good-ghosting/index.js | 2 +- projects/goodentry/index.js | 2 +- projects/goose.js | 2 +- projects/graphene/index.js | 2 +- projects/grappa-finance/grappa-ethereum.js | 5 +- projects/gravita-protocol/index.js | 2 +- projects/gravity-bridge/index.js | 2 +- projects/greenhouse/index.js | 17 +- projects/gridex/index.js | 2 +- projects/grim/index.js | 2 +- projects/grizzlyfi/index.js | 2 +- projects/groprotocol/index.js | 4 +- projects/gryphon-staking/index.js | 2 +- projects/gumball/index.js | 2 +- projects/gyroscope/index.js | 2 +- projects/gysr/index.js | 2 +- projects/hadouken-fi-dex/index.js | 2 +- projects/hai/index.js | 2 +- projects/haiko/index.js | 2 +- projects/hakura/index.js | 2 +- projects/handlefi-fxpreps/index.js | 6 +- projects/harbor-protocol.js | 2 +- projects/hard.js | 4 +- projects/harvest.js | 2 +- projects/hashdaofinance/index.js | 2 +- projects/hashking/index.js | 2 +- projects/hashmix/index.js | 6 +- projects/hashnote/index.js | 2 +- projects/hashstack/index.js | 4 +- projects/hatom-booster/index.js | 2 +- projects/hatom-lending/index.js | 2 +- projects/hats-v2/index.js | 2 +- projects/hats/index.js | 2 +- projects/hector/index.js | 2 +- projects/hedgefarm/index.js | 2 +- projects/hedgehog/index.js | 2 +- projects/helmetinsure/index.js | 2 +- projects/helper/aave.js | 4 +- projects/helper/balancer.js | 4 +- projects/helper/cache/compound.js | 4 +- projects/helper/cache/uniswap.js | 7 +- projects/helper/chain/aptos.js | 2 +- projects/helper/chain/bitcoin.js | 1 + projects/helper/chain/brc20.js | 2 +- projects/helper/chain/hbar.js | 1 + projects/helper/chain/icx.js | 2 +- projects/helper/chain/obyte.js | 1 + projects/helper/chain/radixdlt.js | 2 +- projects/helper/chain/sui.js | 2 +- projects/helper/chain/ton.js | 2 +- projects/helper/compound.js | 2 +- projects/helper/compoundV3.js | 4 +- projects/helper/erc4626.js | 2 +- projects/helper/getUniSubgraphTvl.js | 2 +- projects/helper/gmx.js | 4 +- projects/helper/heroku-api.js | 1 + projects/helper/historicalApi.js | 1 + projects/helper/http.js | 2 + projects/helper/iziswap.js | 2 +- projects/helper/liquity.js | 2 +- projects/helper/pool2.js | 2 +- projects/helper/saddle.js | 2 +- projects/helper/sumTokens.js | 2 +- projects/helper/uniswapV3.js | 4 +- projects/helper/unknownTokens.js | 13 +- projects/helper/unwrapLPs.js | 2 +- projects/helper/yieldHelper.js | 6 +- projects/hi-market/index.js | 4 +- projects/hidden-hand/index.js | 2 +- projects/hiyield/index.js | 2 +- projects/hodlify/index.js | 2 +- projects/holdstation/index.js | 2 +- projects/hopr/index.js | 2 +- projects/hummus/index.js | 2 +- projects/hunnyfinance/index.js | 8 +- projects/hydradex.js | 2 +- projects/hydradex/getHydraV3SubgraphTvl.js | 1 + projects/hydradx/api.js | 3 +- projects/hydro-protocol/index.js | 4 +- projects/hydt/index.js | 2 +- projects/hyfi.js | 2 +- projects/hyperlock/index.js | 2 +- projects/ibcx/index.js | 3 +- projects/ichifarm/index.js | 2 +- projects/idex/index.js | 4 +- projects/idle/index.js | 2 +- projects/ilend/index.js | 4 +- projects/ilend_v2/index.js | 4 +- projects/illuminate-fi/index.js | 2 +- projects/illuvium/index.js | 7 +- projects/imonswap/index.js | 2 +- projects/impermax/impermaxHelper.js | 4 +- projects/implsfinance/index.js | 4 +- projects/inception-lrt/index.js | 2 +- projects/indexcoop/index.js | 2 +- projects/indexed/index.js | 2 +- projects/infinitypad/index.js | 2 +- projects/init-capital/index.js | 4 +- projects/insrt_finance/index.js | 2 +- projects/insurace/index.js | 2 +- projects/insuredao/index.js | 2 +- projects/intentx.js | 2 +- projects/interport-finance/index.js | 2 +- projects/intswap/index.js | 2 +- projects/inverse-finance-firm/index.js | 2 +- projects/iotabee/index.js | 2 +- projects/iotube/index.js | 2 +- projects/ip/index.js | 2 +- projects/ipor/index.js | 6 +- projects/jaguarswap.js | 25 +- projects/jarvis/index.js | 4 +- projects/jediswap-v2/index.js | 4 +- projects/jetmine/index.js | 31 +- projects/jewelswap-lev-farming/index.js | 3 +- projects/jewelswap-liq-staking/index.js | 2 +- projects/jewelswap-nft/index.js | 3 +- projects/jones-dao/index.js | 4 +- projects/jpeg-d/helper/index.js | 4 +- projects/juice-finance/index.js | 2 +- projects/jupiter-perpetual.js | 2 +- projects/kagla/index.js | 2 +- projects/kai/index.js | 2 +- projects/kalata/index.js | 2 +- projects/kaleidoswap/index.js | 2 +- projects/kannagi-finance/index.js | 4 +- projects/kassandra/index.js | 4 +- projects/kava-boost/index.js | 2 +- projects/kava-earn/index.js | 2 +- projects/kava-liquid/index.js | 2 +- projects/kava.js | 2 +- projects/kebab-finance/index.js | 50 +- projects/keeper-dao/index.js | 3 +- projects/kelp-dao/index.js | 2 +- projects/key/index.js | 4 +- projects/keysea/index.js | 2 +- projects/kimberlite/index.js | 2 +- projects/kinetix-derivatives-v2/index.js | 2 +- projects/kingdefi/index.js | 58 +- projects/klayswap-v3/index.js | 2 +- projects/klayswap/index.js | 2 +- projects/kleva-lend/index.js | 4 +- projects/knightsfantom/index.js | 31 +- projects/koala-defi/index.js | 48 +- projects/kogefarm/index.js | 6 +- projects/kokonut-swap/index.js | 4 +- projects/konverter/index.js | 2 +- projects/kordfi/index.js | 2 +- projects/krav/index.js | 2 +- projects/kriya-dex/index.js | 2 +- projects/kromatika/index.js | 2 +- projects/kryptonite/index.js | 4 +- projects/kuma/index.js | 2 +- projects/kurrency/index.js | 2 +- projects/l2finance/index.js | 2 +- projects/landx/index.js | 2 +- projects/lava/index.js | 3 +- projects/lavafall/index.js | 32 +- projects/lazyotter/index.js | 2 +- projects/leNFT/index.js | 2 +- projects/leech-protocol/index.js | 2 +- projects/lemuriafinance.js | 2 +- projects/lend-lord/index.js | 4 +- projects/lendexe/index.js | 4 +- projects/lendflare/convexBooster.js | 8 +- projects/lendflare/supplyBooster.js | 4 +- projects/lessgas/index.js | 2 +- projects/letsfil/index.js | 2 +- projects/levana/index.js | 2 +- projects/level/index.js | 4 +- projects/lighter/index.js | 2 +- projects/lila-finance/index.js | 2 +- projects/line/index.js | 4 +- projects/linea/index.js | 2 +- projects/linear/index.js | 2 +- projects/liquid-collective/index.js | 2 +- projects/liquid-finance-arch/index.js | 2 +- projects/liquiddriver/index.js | 10 +- projects/liquis/index.js | 6 +- projects/liquix/index.js | 2 +- projects/liqwid/index.js | 4 +- projects/llama-airforce/index.js | 2 +- projects/llamalend/index.js | 4 +- projects/lockon/index.js | 2 +- projects/logium/index.js | 4 +- projects/logx/index.js | 2 +- projects/lolik/index.js | 2 +- projects/loop-finance/index.js | 2 +- projects/loopring/index.js | 2 +- projects/love/index.js | 2 +- projects/lsdFil/index.js | 2 +- projects/lsdx/index.js | 2 +- projects/lst-optimizer/index.js | 2 +- projects/luminous/index.js | 3 +- projects/luxs.fi/index.js | 2 +- projects/lyra/index.js | 16 +- projects/lyve/index.js | 2 +- projects/maffin/index.js | 2 +- projects/magicfox-vault/index.js | 2 +- projects/magicland/index.js | 47 +- projects/magik-farm/index.js | 2 +- projects/magpiexyz/index.js | 2 +- projects/mahadao/ethereum.js | 2 +- projects/maker-rwa/index.js | 3 +- projects/maker/index.js | 3 +- projects/mango-farmers-club/index.js | 2 +- projects/mango-markets-v4/deposits.js | 3 +- projects/manta-pacific/index.js | 2 +- projects/mantle-meth/index.js | 2 +- projects/mantle/index.js | 2 +- projects/mantleswap/index.js | 2 +- projects/maple-rwa/index.js | 2 +- projects/maple/index.js | 7 +- projects/marginly/index.js | 2 +- projects/marginx/index.js | 2 +- projects/marinade-native/index.js | 2 +- projects/market.xyz/index.js | 1 - projects/marshamallowdefi/index.js | 106 +--- projects/matrix-farm/index.js | 2 +- projects/matrixdock/index.js | 3 +- projects/maverick/index.js | 2 +- projects/mayachain/index.js | 2 +- projects/mayfair/index.js | 2 +- projects/mcdex/index.js | 4 +- projects/mellow/index.js | 2 +- projects/mercurity/index.js | 8 +- projects/merkle-trade/index.js | 2 +- projects/meshswap/index.js | 2 +- projects/metacoin/index.js | 2 +- projects/metapool-eth/index.js | 2 +- projects/metastreet-v2/index.js | 4 +- projects/metavault-derivatives-v2/index.js | 2 +- projects/metavisor/index.js | 2 +- projects/meter-Liquid-Staking/index.js | 2 +- projects/methlab-xyz/index.js | 2 +- projects/metis/index.js | 2 +- projects/metisBridge/index.js | 2 +- projects/metropolis/index.js | 2 +- projects/meveth/index.js | 2 +- projects/milkomeda-macc/index.js | 2 +- projects/milky-way/index.js | 3 +- projects/mint-club-v2/index.js | 2 +- projects/mintswap/index.js | 32 +- projects/mito/index.js | 2 +- projects/mobiusfinance/index.js | 4 +- projects/mochifi/index.js | 2 +- projects/mockingbird/index.js | 31 +- projects/mode/index.js | 2 +- projects/mole/index.js | 4 +- projects/moneymates/index.js | 2 +- projects/moneyrainfinance/index.js | 32 +- projects/monolith/index.js | 2 +- projects/monopoly-finance/index.js | 4 +- projects/monroeprotocol/index.js | 2 +- projects/moonpot/index.js | 2 +- projects/moremoney/index.js | 6 +- projects/morpheusswap/index.js | 12 +- projects/morpho-aaveV3/index.js | 2 +- projects/morpho-blue/index.js | 4 +- projects/mountain-protocol/index.js | 2 +- projects/mozaic/index.js | 2 +- projects/mugen-fi/index.js | 2 +- projects/muito-finance/index.js | 4 +- projects/multibit/index.js | 4 +- projects/mushrooms.js | 2 +- projects/muuu/tvl.js | 2 +- projects/mymine/index.js | 31 +- projects/myso-v2/index.js | 2 +- projects/myso/index.js | 3 +- projects/myswap-cl/index.js | 2 +- projects/myx-finance/index.js | 2 +- projects/native/index.js | 2 +- projects/navi/index.js | 6 +- projects/neptune-finance/index.js | 4 +- projects/neptune-mutual/index.js | 3 +- projects/nervenetworkbridge/index.js | 5 +- projects/neuron/index.js | 2 +- projects/neutra-finance/index.js | 2 +- projects/neutrino/index.js | 2 +- projects/nexus/index.js | 2 +- projects/nft20.js | 2 +- projects/nftx/index.js | 2 +- projects/nightmare/index.js | 40 +- projects/ninjaroll/index.js | 2 +- projects/ninjavault/index.js | 2 +- projects/node-dao/index.js | 2 +- projects/nostra-alpha/index.js | 4 +- projects/nostra-staked-strk/index.js | 2 +- projects/nostra/index.js | 4 +- projects/notional-v3/index.js | 2 +- projects/notional/index.js | 2 +- projects/nucleon/index.js | 2 +- projects/numoen/index.js | 2 +- projects/nutbox/index.js | 2 +- projects/oakfarm.js | 4 +- projects/oceanos/index.js | 2 +- projects/ociswap/index.js | 2 +- projects/octolsd/index.js | 2 +- projects/okc-liquid-staking/index.js | 2 +- projects/olivecash/index.js | 2 +- projects/olympus/index.js | 6 +- projects/omax-swap/index.js | 2 +- projects/omm/index.js | 4 +- projects/omni/index.js | 2 +- projects/omnibtc/index.js | 6 +- projects/omnipool/index.js | 2 +- projects/ondofinance/index.js | 2 +- projects/one-ring-tools/index.js | 2 +- projects/oneswap/index.js | 2 +- projects/onx.js | 2 +- projects/ooki/index.js | 4 +- projects/openbook/index.js | 2 +- projects/openeden-tbill/index.js | 2 +- projects/openleverage/index.js | 2 +- projects/opensky/index.js | 4 +- projects/opium.js | 2 +- projects/optimism/index.js | 2 +- projects/opulous/index.js | 2 +- projects/opyn-convexity/index.js | 2 +- projects/opyn-gamma/gamma_ethereum.js | 4 +- projects/opyn-squeeth/index.js | 5 +- projects/oraichain.js | 2 +- projects/orange-finance/index.js | 2 +- projects/orbitbridge/index.js | 2 +- projects/orca-kujira/index.js | 2 +- projects/orchai-lending/index.js | 2 +- projects/osmosis.js | 2 +- projects/oswap/index.js | 4 +- projects/ottopia/index.js | 2 +- projects/overnight-usdPlus/index.js | 2 +- projects/oxygen/index.js | 4 +- projects/pacman/index.js | 2 +- projects/pacoca/index.js | 4 +- projects/paladinfinance-dullahan/index.js | 2 +- projects/paladinfinance-warlord/index.js | 2 +- projects/pancake-swap-stableswap/index.js | 2 +- projects/pancake-swap/index.js | 4 +- projects/pandachef/index.js | 2 +- projects/papr-wtf/index.js | 2 +- projects/parallax/index.js | 6 +- projects/paraspace-ape-staking-v2/index.js | 2 +- projects/paraspace-ape-staking/index.js | 2 +- projects/paraspace-v2/helper/index.js | 4 +- projects/paraspace/helper/index.js | 4 +- projects/paraswap.js | 4 +- projects/parrotegg/index.js | 92 +-- projects/particle-money/index.js | 2 +- projects/pawnfi-ape-staking/index.js | 2 +- projects/pawnfi-lending/index.js | 4 +- projects/pawnfi-nft/index.js | 2 +- projects/paycashswap/index.js | 6 +- projects/peakdefi/index.js | 2 +- projects/peapods-finance/index.js | 4 +- projects/pegasusdao.js | 2 +- projects/pendle/v2.js | 2 +- projects/penpie/index.js | 2 +- projects/percent/index.js | 4 +- projects/perennial-v2/index.js | 2 +- projects/perp88/index.js | 2 +- projects/perseid-finance/index.js | 2 +- projects/phantom-finance/index.js | 43 +- projects/phase/index.js | 4 +- projects/phuture/index.js | 2 +- projects/pickle/index.js | 2 +- projects/piedao/index.js | 2 +- projects/pine-protocol/index.js | 4 +- projects/pinjam/index.js | 4 +- projects/pinkpea/index.js | 2 +- projects/pirex/index.js | 2 +- projects/planet-finance/index.js | 2 +- projects/platypus-finance/index.js | 4 +- projects/pnetwork.js | 16 +- projects/poison-finance/index.js | 2 +- projects/polkamarkets/index.js | 2 +- projects/pollyfinance/index.js | 4 +- projects/polygonZk/index.js | 2 +- projects/polymarket.js | 23 +- projects/polyquail/index.js | 92 +-- projects/polysynth/index.js | 2 +- projects/polywhale/index.js | 65 +-- projects/poolshark/index.js | 2 +- projects/poolside/index.js | 2 +- projects/pooltogether/v3.js | 2 +- projects/pooltogether/v4.js | 2 +- projects/pooltogether/v5.js | 2 +- projects/popcorn/index.js | 2 +- projects/popsicle/index.js | 2 +- projects/poseidollar/index.js | 3 +- projects/possumLabs/index.js | 2 +- projects/potluckprotocol/index.js | 31 +- projects/powerindex/index.js | 4 +- projects/prePo/index.js | 2 +- projects/predy-v3/index.js | 2 +- projects/predy-v320/index.js | 2 +- projects/predy-v5/index.js | 4 +- projects/premia-v3/index.js | 2 +- projects/premia/index.js | 2 +- projects/prime-protocol/index.js | 4 +- projects/prime-staked/index.js | 2 +- projects/primex-finance/index.js | 2 +- projects/primitive/v1.js | 5 +- projects/prisma-lrt/index.js | 2 +- projects/prisma/index.js | 2 +- projects/promethium/index.js | 2 +- projects/prxy/index.js | 2 +- projects/pstake/index.js | 2 +- projects/psy/index.js | 2 +- projects/puffer/index.js | 2 +- projects/pulsarswap/index.js | 2 +- projects/pythagorean/index.js | 2 +- projects/qian/index.js | 2 +- projects/quadrat/index.js | 2 +- projects/quasar/index.js | 3 +- projects/quickswap-v3/index.js | 2 +- projects/quipuswap-stableswap/index.js | 4 +- projects/quoll/index.js | 2 +- projects/rabbitfinance/index.js | 2 +- projects/radiate-protocol/index.js | 2 +- projects/radpie/index.js | 2 +- projects/raft/index.js | 2 +- projects/ragetrade/index.js | 2 +- projects/raidshift/index.js | 3 +- projects/railgun/index.js | 2 +- projects/rain/index.js | 4 +- projects/ramp/index.js | 2 +- projects/range/index.js | 2 +- projects/rangers/index.js | 2 +- projects/rari/index.js | 4 +- projects/reaper.farm/index.js | 2 +- projects/renzo/index.js | 4 +- projects/repl/index.js | 2 +- projects/reserve/index.js | 6 +- projects/reservoir/index.js | 2 +- projects/resonatefinance/index.js | 2 +- projects/restake-finance/index.js | 2 +- projects/revault/index.js | 2 +- projects/revest/index.js | 4 +- projects/reyield-finance/index.js | 4 +- projects/ribbon-lend/index.js | 7 +- projects/ribbon/solana.js | 3 +- projects/rift-finance/index.js | 2 +- projects/rigoblock/index.js | 4 +- projects/ring-few/index.js | 2 +- projects/risk-harbor/index.js | 4 +- projects/risq.js | 76 +-- projects/rivrkitty.js | 2 +- projects/roaring-lion/index.js | 2 +- projects/robovault/index.js | 2 +- projects/rocifi-v2/index.js | 4 +- projects/rocifiv1/index.js | 4 +- projects/rodeo/index.js | 4 +- projects/roguex/index.js | 2 +- projects/rollup-fi-pools/index.js | 2 +- projects/rosswap/index.js | 2 +- projects/rubicon/index.js | 2 +- projects/rumi/index.js | 2 +- projects/rysk/index.js | 2 +- projects/sablier-v2/index.js | 4 +- projects/sablier/index.js | 4 +- projects/saffron/index.js | 2 - projects/sagebet/index.js | 2 +- projects/sailingprotocol/index.js | 2 +- projects/salem/index.js | 106 +--- projects/salsa/index.js | 2 +- projects/sandclock/index.js | 3 +- projects/sapphire/index.js | 67 +-- projects/sashimiswap/index.js | 4 +- projects/satsat/index.js | 2 +- projects/savvy/index.js | 2 +- projects/scallop/index.js | 6 +- projects/scanto/index.js | 2 +- projects/scarecrow-raven/index.js | 2 +- projects/scarecrow/index.js | 32 +- projects/scaryswap/index.js | 2 +- projects/scientixfinance/index.js | 4 +- projects/scroll/index.js | 2 +- projects/scrubinvest/index.js | 2 +- projects/seamless/index.js | 2 +- projects/sector-fi/index.js | 2 +- projects/seeder/index.js | 2 +- projects/seneca/index.js | 2 +- projects/sense/index.js | 3 +- projects/sentiment/index.js | 2 +- projects/serum.js | 2 +- projects/sft-protocol/index.js | 2 +- projects/shadeprotocol-derivatives/index.js | 2 +- projects/shadeprotocol-lend/index.js | 2 +- projects/shadeprotocol-silk/index.js | 2 +- projects/shadeprotocol-swap/index.js | 2 +- projects/shadeswap/index.js | 2 +- projects/sharedstake/index.js | 2 +- projects/sharky/helper/index.js | 6 +- projects/shipyard-finance/index.js | 2 +- projects/shoebillFinance/index.js | 4 +- projects/shprd/index.js | 2 +- projects/shui/index.js | 2 +- projects/sienna-lend/index.js | 6 +- projects/sienna/index.js | 2 +- projects/sigmafi/index.js | 2 +- projects/silo/index.js | 4 +- projects/silostake/index.js | 2 +- projects/simps/index.js | 2 +- projects/singularfarm/index.js | 3 - projects/singularityDAO/masterchef.js | 48 -- projects/siren/index.js | 2 +- projects/size/index.js | 2 +- projects/skydex/index.js | 2 +- projects/sleepearn/index.js | 2 +- projects/slsd/index.js | 2 +- projects/smartcredit.js | 6 +- projects/smurfmoney/index.js | 32 +- projects/snowball/index.js | 2 +- projects/snowswap.js | 4 +- projects/solid-world/index.js | 4 +- projects/solv-protocol-funds/index.js | 8 +- projects/solv-protocol-rwa/index.js | 6 +- projects/solv-protocol/index.js | 3 +- projects/sommelier/index.js | 13 +- projects/songtech/index.js | 2 +- projects/sonicooo/index.js | 2 +- projects/sora.js | 2 +- projects/sovryn-dex/index.js | 2 +- projects/sovryn-lending/index.js | 4 +- projects/spacebar/index.js | 2 +- projects/spadefinance/index.js | 33 +- projects/sparkswap/index.js | 2 +- projects/specfinance.js | 3 +- projects/spectrefi/index.js | 32 +- projects/sperax-demeter/index.js | 2 +- projects/sperax/index.js | 3 +- projects/spice-finance/index.js | 2 +- projects/spiral-dao/index.js | 2 +- projects/spiral-finance/index.js | 8 +- projects/spool-fi-sreth/index.js | 2 +- projects/spool-v2/index.js | 2 +- projects/spool/index.js | 2 +- projects/squidstake/index.js | 83 +-- projects/stUSDT/index.js | 4 +- projects/stability/index.js | 2 +- projects/stabilizefi/index.js | 2 +- projects/stablebase.js | 2 +- projects/stablecomp/index.js | 2 +- projects/stablz/index.js | 2 +- projects/stackswap/api.js | 2 +- projects/stader/index.js | 2 +- projects/stakedao/index.js | 8 +- projects/stakedotlink-index/index.js | 2 +- projects/stakedotlink/index.js | 4 +- projects/stakerz-io/index.js | 2 +- projects/stakesteak/index.js | 43 +- projects/stakestone/index.js | 4 +- projects/stakewise/index.js | 2 +- projects/standard-mode/index.js | 2 +- projects/standard-smart-vaults/index.js | 2 +- projects/starfish-finance/index.js | 2 +- projects/starfish-liq-staking/index.js | 2 +- projects/stargatefinance/index.js | 4 +- projects/starknet/index.js | 2 +- projects/steadefi/index.js | 4 +- projects/steakHut-lb/index.js | 4 +- projects/steakHut/index.js | 2 +- projects/stealthpad/index.js | 2 +- projects/steer/index.js | 2 +- projects/stellaswap.js | 2 +- projects/stellaxyz-io/index.js | 2 +- projects/steroids/index.js | 2 +- projects/strater/index.js | 2 +- projects/stratumexchange/index.js | 2 +- projects/stream/index.js | 2 +- projects/streamflow/index.js | 4 +- projects/struct-finance/index.js | 2 +- projects/sturdy-v2/index.js | 4 +- projects/sudo-finance/index.js | 2 +- projects/sudoswap-v2/index.js | 2 +- projects/sudoswap/index.js | 4 +- projects/sui-pearl/index.js | 3 +- projects/suilend/index.js | 6 +- projects/summer-fi/index.js | 2 +- projects/sun/index.js | 3 +- projects/sunswap-v3/index.js | 2 +- projects/superstate/index.js | 4 +- projects/surfone/index.js | 2 +- projects/surfswap-stableswap/index.js | 2 +- projects/surge/index.js | 4 +- projects/sushiswap-kashi/kashi-lending.js | 2 +- projects/sushiswap-trident/trident.js | 2 +- projects/sushiswap-v3/index.js | 2 +- projects/sushiswap/api.js | 4 +- projects/swaap/index.js | 22 +- projects/swapline/index.js | 2 +- projects/swapmatic/index.js | 2 +- projects/swarm-markets/index.js | 4 +- projects/sweep-n-flip/index.js | 2 +- projects/sweep/index.js | 2 +- projects/swell-restaking/index.js | 2 +- projects/swell/index.js | 2 +- projects/synclub-staked-bnb/index.js | 2 +- projects/syncswap/index.js | 2 +- projects/synfutures-v1/index.js | 2 +- projects/synfutures-v2/index.js | 2 +- projects/synfutures-v3/index.js | 2 +- projects/synonym-finance/index.js | 4 +- projects/t-protocol-v2/index.js | 2 +- projects/tai-money/index.js | 2 +- projects/tangible-caviar/index.js | 2 +- projects/tangible/index.js | 8 +- projects/tangleswap/index.js | 2 +- projects/tarot/tarotHelper.js | 4 +- projects/teahouse-v3/index.js | 2 +- projects/teahouse/index.js | 2 +- projects/tegro/index.js | 2 +- projects/teller/index.js | 4 +- projects/tenderize-v2/index.js | 2 +- projects/tenderize/index.js | 2 +- projects/tenet/abi.json | 3 - projects/tenet/index.js | 93 +-- projects/tensorplex/index.js | 2 +- projects/term-finance/index.js | 4 +- projects/terraswap/factoryTvl.js | 2 +- projects/tetu-pawnshop/index.js | 2 +- projects/tetu/index.js | 2 +- projects/thales/index.js | 14 +- projects/thedragonslair/abi.json | 4 - projects/thedragonslair/index.js | 30 +- projects/thegoblins/index.js | 2 +- projects/themis-exchange/index.js | 4 +- projects/tholgar/index.js | 2 +- projects/thorchain/index.js | 2 +- projects/tigris/index.js | 4 +- projects/timeless/index.js | 2 +- projects/timeswap-v2/index.js | 2 +- projects/timeswap/index.js | 2 +- projects/tokemak/index.js | 4 +- projects/tokenlon/index.js | 2 +- projects/tokensfarm/index.js | 4 +- projects/toros/index.js | 3 +- projects/toupee-tech/index.js | 4 +- projects/traderjoe-lb-v2-1/index.js | 2 +- projects/traderjoe-lb/index.js | 2 +- projects/tranchess-ETH/index.js | 2 +- projects/treasury/beefy.js | 4 +- projects/treasury/benqi.js | 2 +- projects/treasury/betswirl.js | 4 +- projects/treasury/exactly.js | 2 +- projects/treasury/gnosis-dao.js | 4 +- projects/treasury/jpegd.js | 2 +- projects/treasury/mantadao.js | 4 +- projects/treasury/nns.js | 2 +- projects/treasury/ooki.js | 4 +- projects/treasury/silo-finance.js | 2 +- projects/treasury/sns.js | 2 +- projects/treasury/spiral-dao.js | 2 +- projects/treasury/thellamas.js | 2 +- projects/treasury/wonderland.js | 2 +- projects/treedefi/abi.json | 4 - projects/treedefi/index.js | 29 +- projects/trickortreat/index.js | 25 +- projects/truefi/index.js | 4 +- projects/trufin-trustake/index.js | 2 +- projects/trufin/index.js | 2 +- projects/tsunami-fi/index.js | 2 +- projects/ttswap/index.js | 2 +- projects/turbos/index.js | 2 +- projects/tutellus/index.js | 2 +- projects/txBridge/index.js | 2 +- projects/typus-finance/index.js | 2 +- projects/uma/index.js | 14 +- projects/umamifinance/index.js | 31 +- projects/umbria/index.js | 92 +-- projects/unamano/index.js | 2 +- projects/undeadfinance/index.js | 32 +- projects/unicrypt-v3/index.js | 2 +- projects/unieth/index.js | 2 +- projects/uniiotx/index.js | 2 +- projects/unilend-v2/index.js | 4 +- projects/union-finance/index.js | 6 +- projects/unipilot/index.js | 2 +- projects/unirexfinance/index.js | 32 +- projects/uniswap/index.js | 4 +- projects/uniswap/v1.js | 3 +- projects/uniswap/v3/index.js | 2 +- projects/universeftm/index.js | 32 +- projects/unlimited-trade/index.js | 2 +- projects/unlockd/helper/index.js | 4 +- projects/uno-farm/index.js | 4 +- projects/unore/index.js | 4 +- projects/unsheth/index.js | 2 +- projects/v3s-finance/index.js | 53 +- projects/vaultka/index.js | 2 +- projects/veax/index.js | 2 +- projects/vector/index.js | 2 +- projects/vectorreserve/index.js | 2 +- projects/vega-protocol/index.js | 2 +- projects/vela-exchange/index.js | 6 +- projects/velocore-v2/index.js | 2 +- projects/velvet-capital-v2/index.js | 2 +- projects/velvet-capital/index.js | 2 +- projects/vendor-finance-v2/index.js | 2 +- projects/vendor-finance/index.js | 5 +- projects/venofinance/index.js | 4 +- projects/venus-isolated-pools/index.js | 4 +- projects/veritable.js | 35 +- projects/vesta/index.js | 35 +- projects/vesync/index.js | 2 +- projects/vires/index.js | 4 +- projects/virtuswap/index.js | 2 +- projects/visor/index.js | 2 +- projects/vivaleva/index.js | 2 +- projects/vmex-fi/index.js | 4 +- projects/void/index.js | 2 +- projects/volta-finance/index.js | 2 +- projects/voltage-liquidstaking/index.js | 2 +- projects/voltz/index.js | 2 +- projects/warp/index.js | 2 +- projects/wasabi/index.js | 2 +- projects/waterfallfinance/index.js | 32 +- projects/waves-exchange/index.js | 2 +- projects/wbtc.js | 2 +- projects/weave/index.js | 2 +- projects/weft-finance/index.js | 4 +- projects/wemix-liquid-staking/index.js | 2 +- projects/wemix-staking/index.js | 2 +- projects/westater/index.js | 2 +- projects/whalegame/index.js | 2 +- projects/wildcat-fi/index.js | 4 +- projects/wildcredit/index.js | 43 +- projects/wise-lending/index.js | 2 +- projects/wombat-exchange/index.js | 2 +- projects/wombex/index.js | 2 +- projects/words/index.js | 2 +- projects/wyndao-lsd/index.js | 2 +- projects/x2y2/index.js | 2 +- projects/xWinFinance/index.js | 4 +- projects/xave-finance/index.js | 2 +- projects/xbanking/index.js | 4 +- projects/xdai/index.js | 2 +- projects/xdefi/index.js | 2 +- projects/xena/index.js | 2 +- projects/xensa/index.js | 2 +- projects/xfai/index.js | 2 +- projects/xmaspast/index.js | 32 +- projects/xtoken/index.js | 2 +- projects/y2b-finance/index.js | 2 +- projects/y2k-finance/index.js | 2 +- projects/y2k-v2/index.js | 2 +- projects/y2r/index.js | 2 +- projects/yama-finance/index.js | 2 +- projects/yaxis/index.js | 6 +- projects/yearn-ether/index.js | 2 +- projects/yearn/index.js | 2 +- projects/yfx-v3/index.js | 2 +- projects/yiedl-vaults/index.js | 4 +- projects/yieldbank/index.js | 2 +- projects/yieldflow/index.js | 2 +- projects/yieldhubfinance/index.js | 2 +- projects/yieldis/index.js | 2 +- projects/yieldyak-staked-avax/index.js | 2 +- projects/yieldyak/index.js | 4 +- projects/yldr/index.js | 4 +- projects/yslio/index.js | 2 +- projects/yup/index.js | 6 +- projects/zapper-channels/index.js | 2 +- projects/zenlink/index.js | 2 +- projects/zeroliquid/index.js | 2 +- projects/zeta/index.js | 2 +- projects/zetaEarn/index.js | 2 +- projects/zeus-finance/index.js | 32 +- projects/zilch/index.js | 2 +- projects/zircon-gamma/index.js | 4 +- projects/zk-swap-dex/index.js | 6 +- projects/zkBoost/index.js | 3 +- projects/zklend/index.js | 4 +- projects/zkswap/index.js | 2 +- projects/zksync-lite/index.js | 2 +- projects/zksynth/index.js | 2 +- projects/zoodao/index.js | 4 +- projects/zookeeper.js | 4 +- projects/zunami/index.js | 2 +- projects/zyberswap-stableswap/index.js | 2 +- test.js | 11 +- 1181 files changed, 2362 insertions(+), 5005 deletions(-) delete mode 100644 projects/singularityDAO/masterchef.js delete mode 100644 projects/tenet/abi.json delete mode 100644 projects/thedragonslair/abi.json delete mode 100644 projects/treedefi/abi.json diff --git a/projects/0xDAO/index.js b/projects/0xDAO/index.js index ccefe527e4f..4da9614f574 100644 --- a/projects/0xDAO/index.js +++ b/projects/0xDAO/index.js @@ -22,7 +22,7 @@ const xTAROT = "0x74D1D2A851e339B8cB953716445Be7E8aBdf92F4" const fBEET = "0xfcef8a994209d6916EB2C86cDD2AFD60Aa6F54b1" -async function tvl(time, ethBlock, chainBlocks) { +async function tvl(_, __, chainBlocks) { // 0xDAO Master Chef const balances = {} const chain = 'fantom' diff --git a/projects/1beam/index.js b/projects/1beam/index.js index 2b7cb074955..9d1240d5c6d 100644 --- a/projects/1beam/index.js +++ b/projects/1beam/index.js @@ -9,7 +9,7 @@ const Contracts = { } } -const moonbeamTvl = async (timestamp, ethBlock, chainBlocks, { api }) => { +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 }) diff --git a/projects/1inch.js b/projects/1inch.js index 442942b3f6a..af8fcfc369b 100644 --- a/projects/1inch.js +++ b/projects/1inch.js @@ -8,7 +8,7 @@ module.exports = {} Object.keys(config).forEach(chain => { const { blacklistedTokens = [], factories } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _2, { api }) => { + tvl: async (api) => { const ownerTokens = [] for (const { MooniswapFactory, fromBlock} of factories) { const logs = await getLogs({ diff --git a/projects/1swap/index.js b/projects/1swap/index.js index 83a9a0a0207..c4ca453970a 100644 --- a/projects/1swap/index.js +++ b/projects/1swap/index.js @@ -16,7 +16,7 @@ const Contracts = { }; -const tvl = async (timestamp, ethBlock, chainBlocks, { api }) => { +const tvl = async (api) => { const ownerTokens = [] const poolTvl = async (pool) => { ownerTokens.push([await api.call({ target: pool, abi: abiMoonriver.getTokens, }), pool]) diff --git a/projects/3a-dao/index.js b/projects/3a-dao/index.js index 1f6246acce6..d229ba553b8 100644 --- a/projects/3a-dao/index.js +++ b/projects/3a-dao/index.js @@ -7,7 +7,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/88mph/index.js b/projects/88mph/index.js index 989901f0748..215d749e081 100644 --- a/projects/88mph/index.js +++ b/projects/88mph/index.js @@ -72,7 +72,7 @@ const tvlExports = {}; Object.keys(config).forEach(chain => { const { dpools, vPools = [], } = config[chain] tvlExports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} const logs = await graphQuery(dpools, dPoolQuery) diff --git a/projects/AnonSocial/index.js b/projects/AnonSocial/index.js index 81a044b0fef..134fb8399f2 100644 --- a/projects/AnonSocial/index.js +++ b/projects/AnonSocial/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0x76192E7cD69bb6F7992E4d996790942653b9F704"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/ArchimedesFinance/index.js b/projects/ArchimedesFinance/index.js index 04e532b2819..329e378caca 100644 --- a/projects/ArchimedesFinance/index.js +++ b/projects/ArchimedesFinance/index.js @@ -6,7 +6,7 @@ const POOL_INDEX_3CRV = 1; const ARCHIMEDES_VAULT_OUSD = "0x4c12c57C37Ff008450A2597e810B51B2BbA0383A"; const ERC20_TOKEN_OUSD = "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86"; -async function tvl(_, _1, _2, { api }) { +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 }); diff --git a/projects/AxiaProtocol/index.js b/projects/AxiaProtocol/index.js index 92d392856b3..d8e9eff8ffc 100644 --- a/projects/AxiaProtocol/index.js +++ b/projects/AxiaProtocol/index.js @@ -15,7 +15,7 @@ const defiFundLPEth = '0x4833e8b56fc8e8a777fcc5e37cb6035c504c9478' const oracleFundEth = '0x152959A2f50D716707fEa4897e72C554272dC584' const oracleFundLPEth = '0xbf11db4e63c72c5dffde0f5831d667817c9e9ad5' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const balances = {} await Promise.all([ diff --git a/projects/BankofCronos-Loans/index.js b/projects/BankofCronos-Loans/index.js index 0ab09ade2a2..46c8641f59f 100644 --- a/projects/BankofCronos-Loans/index.js +++ b/projects/BankofCronos-Loans/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); // Active Pool holds total system collateral value(deposited collateral) const ACTIVE_POOL_ADDRESS = "0xa86Ba8b60Aa4d943D15FF2894964da4C2A8F1B03"; -async function tvl(_, _b, _cb, { api, }) { +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 }) } diff --git a/projects/CofferCity/index.js b/projects/CofferCity/index.js index f811c52b127..f69ddf12ef1 100644 --- a/projects/CofferCity/index.js +++ b/projects/CofferCity/index.js @@ -14,7 +14,7 @@ module.exports = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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]) diff --git a/projects/CreampanFinance/index.js b/projects/CreampanFinance/index.js index 6b3839fa097..96fbc4c79a5 100644 --- a/projects/CreampanFinance/index.js +++ b/projects/CreampanFinance/index.js @@ -9,7 +9,7 @@ const accounts = Object.values({ account5: 'cro1hhfh6xaflg8zwhwvrs7sgur2pyfunjqeu8wsd6', }) -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const data = await Promise.all(accounts.map(account => queryV1Beta1({ chain: 'cronos', url: `/staking/v1beta1/delegations/${account}`, }))); const factroy_contract_address = '0x66f5997b7810723aceeeb8a880846fc117081bd0'; data.map(i => i.delegation_responses).flat().forEach(i => api.add(ADDRESSES.cronos.WCRO, i.balance.amount * 1e10)) diff --git a/projects/CthulhuFinance/index.js b/projects/CthulhuFinance/index.js index 7d293df098b..84776a175e1 100644 --- a/projects/CthulhuFinance/index.js +++ b/projects/CthulhuFinance/index.js @@ -1,7 +1,7 @@ const { sumUnknownTokens } = require("../helper/unknownTokens") function vaultTvl(vaults) { - return async (_, _b, _cb, { api, }) => { + return async (api) => { const [tokens, bals] = await Promise.all([ api.multiCall({ abi: 'address:want', calls: vaults }), api.multiCall({ abi: 'uint256:balance', calls: vaults }), diff --git a/projects/DigiFT/index.js b/projects/DigiFT/index.js index ea8b17b6af5..752e4c5ffb3 100644 --- a/projects/DigiFT/index.js +++ b/projects/DigiFT/index.js @@ -12,9 +12,8 @@ async function getTokenList(tokenAPI, chainId) { module.exports = { ethereum: { - tvl: async (...args) => { - const tokenAPI = new sdk.ChainApi({ chain: 'polygon' }); - const { api } = args[3]; + 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}) api.addTokens(tokens, tokenSupplies) diff --git a/projects/DropCopy/index.js b/projects/DropCopy/index.js index 465ad743a39..6e11175d702 100644 --- a/projects/DropCopy/index.js +++ b/projects/DropCopy/index.js @@ -13,7 +13,7 @@ const predictionTokens = [ DROP, PYTH ] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { // get the total tokens deposited in the games const tokensInAccount = await getOwnerAllAccount(PARIMUTUEL_WALLET); diff --git a/projects/E3/index.js b/projects/E3/index.js index 2d06fcabe1b..c70c70fe648 100644 --- a/projects/E3/index.js +++ b/projects/E3/index.js @@ -6,7 +6,7 @@ const factories = { base: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B' ///zkevm: tbd } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const pools = await api.fetchList({ target: factories[api.chain], itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', diff --git a/projects/El-Dorado-Exchange/index.js b/projects/El-Dorado-Exchange/index.js index 6ed3b8f5093..fca374b3aad 100644 --- a/projects/El-Dorado-Exchange/index.js +++ b/projects/El-Dorado-Exchange/index.js @@ -7,7 +7,7 @@ module.exports = { tvl: sdk.util.sumChainTvls([ gmxExports({ vault: '0x7f90C8De425e2E21F6d152e881713DE5Fe37dEAB', }), gmxExports({ vault: '0x2c7077cF9bd07C3BC45B4E5b8C27f8B95c6550B3', }), - async (_, _1, _2, { api }) => { + async (api) => { const vault = '0xF1D7e3f06aF6EE68E22baFd37E6a67b1757c35a9' const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) return sumTokens2({ api, owner: vault, tokens, }) @@ -16,12 +16,12 @@ module.exports = { }, arbitrum: { tvl: sdk.util.sumChainTvls([ - async (_, _1, _2, { api }) => { + async (api) => { const vault = '0xfc36be177868b05f966e57bfc01617501b1f6926' const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) return sumTokens2({ api, owner: vault, tokens, }) }, - async (_, _1, _2, { api }) => { + async (api) => { const vault = '0x24b6137A5fe9d058baf654bb73aB857F57DF8BB4' const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: vault}) return sumTokens2({ api, owner: vault, tokens, }) diff --git a/projects/Guru/index.js b/projects/Guru/index.js index f94151f65a2..96b7bfe0246 100644 --- a/projects/Guru/index.js +++ b/projects/Guru/index.js @@ -24,9 +24,9 @@ module.exports = { Object.entries(tvlGuru).forEach(([chain, target]) => { module.exports[chain] = { - // pool2: async (_, _b, _c, { api, }) => ({ tether: ((await api.call({ target, abi: ITVL.pool2 }))) / 1e18 }), - // staking: async (_, _b, _c, { api, }) => ({ tether: ((await api.call({ target, abi: ITVL.staking}))) / 1e18 }), - tvl: async (_, _b, _c, { api, }) => ({ tether: ((await api.call({ target, abi: ITVL.tvl }))) / 1e18 }), + // 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 }), } }) diff --git a/projects/HoneyFarm/index.js b/projects/HoneyFarm/index.js index 30d1f7cd715..f0fe12fc76e 100644 --- a/projects/HoneyFarm/index.js +++ b/projects/HoneyFarm/index.js @@ -1,55 +1,16 @@ -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require("../helper/utils"); -async function avax(timestamp, _, {avax: block}) { - let balances = {}; - const transform = addr => 'avax:'+addr - - await addFundsInMasterChef( - {}, - "0x757490104fd4C80195D3C56bee4dc7B1279cCC51", - block, - "avax", - transform, - undefined, - ["0xB669c71431bc4372140bC35Aa1962C4B980bA507"] - ); - return balances; -} - -async function bsc(timestamp, _, {bsc: block}) { - let balances = {}; - const transform = addr => 'bsc:'+addr - - await addFundsInMasterChef( - {}, - "0x88E21dedEf04cf24AFe1847B0F6927a719AA8F35", - block, - "bsc", - transform, - undefined, - ["0x1A8d7AC01d21991BF5249A3657C97b2B6d919222"] - ); - return balances; -} - -module.exports = { - methodology: - "Only staked LP is counted as TVL. Excluded in TVL : Locked BEE in the RoyalJelly, NFT Jelly, value of BNB & xJOE which aren't on CoinGecko yet.", - avax:{ - tvl: avax, - staking: staking( - "0x757490104fd4C80195D3C56bee4dc7B1279cCC51", - "0xB669c71431bc4372140bC35Aa1962C4B980bA507", - "avax" - ), - }, - bsc: { - tvl: bsc, - staking: staking( - "0x88E21dedEf04cf24AFe1847B0F6927a719AA8F35", - "0x1A8d7AC01d21991BF5249A3657C97b2B6d919222", - "bsc" - ), - }, -}; // node test.js projects/HoneyFarm/index.js +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 index e56c9d4eac8..69b900baca1 100644 --- a/projects/Hono/index.js +++ b/projects/Hono/index.js @@ -4,7 +4,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const HONO = '0x8F5ac7F3cfeFfB6EB638A8aDd2d32661F82C03FD' const uniV3LP = '0xc4824156785be733d9b98ac4813da0c7bc1b7a44' -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { await api.sumTokens({ owner: HONO, tokens: [nullAddress]}) return sumTokens2({ api, owner: uniV3LP, resolveUniV3: true, blacklistedTokens: [HONO]}) diff --git a/projects/KyborgExchange/index.js b/projects/KyborgExchange/index.js index bf26c8fa31c..ce604dec3b5 100644 --- a/projects/KyborgExchange/index.js +++ b/projects/KyborgExchange/index.js @@ -15,7 +15,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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()}) } diff --git a/projects/Lockless/index.js b/projects/Lockless/index.js index 1640ef60f07..7a20de3edfa 100644 --- a/projects/Lockless/index.js +++ b/projects/Lockless/index.js @@ -1,7 +1,7 @@ const swkava = '0x9d9682577CA889c882412056669bd936894663fd' const swech = '0x86e4D91800c03e803d4c8FA3293d1C7d612A7300' -async function tvl(timestamp, ethBlock, { kava: block }, { api }) { +async function tvl(api) { const pooledCoin = await api.call({ target: api.chain === 'kava' ? swkava : swech, diff --git a/projects/MFIL/index.js b/projects/MFIL/index.js index c071cd8ff0d..2e22783e52b 100644 --- a/projects/MFIL/index.js +++ b/projects/MFIL/index.js @@ -2,7 +2,7 @@ const MFILPOOLCONTRACT = '0x8aF827CDa3b7Eee9720496A30595D7Ee89A27ee2'; const MFILREGULARPOOLCONTRACT = '0xD4f7c1A09ed5f50a3eC2F1e9fcF8B1bc2d1d3d70' const ADDRESSES = require('../helper/coreAssets.json') -async function mfilTvl(_, _1, _2, { api }) { +async function mfilTvl(api) { const mfilPoolStakeMfil = await api.call({ target: MFILPOOLCONTRACT, abi: "erc20:totalSupply", diff --git a/projects/MantisSwap/index.js b/projects/MantisSwap/index.js index 9431558c4a1..5da24c50c01 100644 --- a/projects/MantisSwap/index.js +++ b/projects/MantisSwap/index.js @@ -11,7 +11,7 @@ const MAX_LP_TOKENS = 3 Object.keys(config).forEach(chain => { const { vaults } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const calls = vaults.map(vault => { let res = [] for (let i = 0; i < MAX_LP_TOKENS; i++) diff --git a/projects/Match-Finance/index.js b/projects/Match-Finance/index.js index a598ede4bee..38df1d80ed2 100644 --- a/projects/Match-Finance/index.js +++ b/projects/Match-Finance/index.js @@ -9,7 +9,7 @@ const VLMATCH_STAKING_CONTRACT = '0x7D027083e55724A1082b8cDC51eE90781f41Ff14'; const totalSuppliedAbi = 'function depositedAsset(address) external view returns (uint256)' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const [ totalSTETHSupplied, lpStaked, @@ -24,7 +24,7 @@ async function tvl(_, _1, _2, { api }) { return api.getBalances() } -async function staking(_, _b, _cb, { api, }) { +async function staking(api) { const vlMatchStaked = await api.call({ abi: 'uint256:totalStaked', target: VLMATCH_STAKING_CONTRACT }) api.add(MATCH_TOKEN, vlMatchStaked) } diff --git a/projects/MellowProtocol/index.js b/projects/MellowProtocol/index.js index 0debd336b04..18d002f1c01 100644 --- a/projects/MellowProtocol/index.js +++ b/projects/MellowProtocol/index.js @@ -27,7 +27,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { registry, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} const logs = await getLogs({ api, diff --git a/projects/MeowProtocol/index.js b/projects/MeowProtocol/index.js index efc81a40e07..73cb3303687 100644 --- a/projects/MeowProtocol/index.js +++ b/projects/MeowProtocol/index.js @@ -8,11 +8,11 @@ const config = { Object.keys(config).forEach(chain => { const lendingPoolCore = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens = await api.call({ abi: 'address[]:getReserves', target: lendingPoolCore }) return sumTokens2({api, tokens, owner: lendingPoolCore }) }, - borrowed: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/MineFi/index.js b/projects/MineFi/index.js index d853f5d55e0..3fd019b40d5 100644 --- a/projects/MineFi/index.js +++ b/projects/MineFi/index.js @@ -2,7 +2,7 @@ const sdk = require('@defillama/sdk'); const ADDRESSES = require('../helper/coreAssets.json') const MINEFI_CONTRACT = "0xeCa50369cb0cDBaE173C9c81c1B48212adc4b501"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const collateralBalance = await api.call({ abi: 'function getTvl() external view returns (uint256)', diff --git a/projects/MyTrade/index.js b/projects/MyTrade/index.js index 6eaa5528f8c..c58fc532e56 100644 --- a/projects/MyTrade/index.js +++ b/projects/MyTrade/index.js @@ -13,7 +13,8 @@ module.exports = {}; Object.keys(config).forEach(chain => { const {orderBook, factory } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, chain, block }) => { + 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 }) diff --git a/projects/NEKO/index.js b/projects/NEKO/index.js index 3391212e6e4..6abfc0ce68b 100644 --- a/projects/NEKO/index.js +++ b/projects/NEKO/index.js @@ -1,7 +1,6 @@ const { call } = require("../helper/chain/near") -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { const NEKOStakedInFactory = await call("cookie.nekotoken.near", "get_total_staked", {}); api.add('coingecko:neko', NEKOStakedInFactory / 1e24, { skipChain: true, }) } diff --git a/projects/OT/index.js b/projects/OT/index.js index f34567b5e2f..ecb676193f0 100644 --- a/projects/OT/index.js +++ b/projects/OT/index.js @@ -18,7 +18,7 @@ const config = { Object.keys(config).forEach(chain => { const { OSD, OETH, swapContracts, futureContracts } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens = (await api.multiCall({ abi: 'address[]:getPoolTokenList', calls: swapContracts })).flat() return api.sumTokens({ tokensAndOwners: [[ADDRESSES.null, OETH]], diff --git a/projects/SecuredFinance/index.js b/projects/SecuredFinance/index.js index 1daa4296a04..927411c5dd1 100644 --- a/projects/SecuredFinance/index.js +++ b/projects/SecuredFinance/index.js @@ -14,7 +14,7 @@ Object.keys(config).forEach(chain => { currencyController = '0x7dca6b6BF30cd28ADe83e86e21e82e3F852bF2DC', } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const bytes = await api.call({ abi: 'function getCurrencies() view returns (bytes32[])', target: currencyController, diff --git a/projects/SharpeLabs/index.js b/projects/SharpeLabs/index.js index 43097a1a4a4..3651cf4babb 100644 --- a/projects/SharpeLabs/index.js +++ b/projects/SharpeLabs/index.js @@ -3,7 +3,7 @@ const sdk = require('@defillama/sdk'); const StEthVaultContract = '0xfc85db895e070017ab9c84cb65b911d56b729ee9'; // function to return TVL of magnum -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const balances = {}; // get balance of eth diff --git a/projects/aark/index.js b/projects/aark/index.js index 9973bcb6873..b587b7fd42c 100644 --- a/projects/aark/index.js +++ b/projects/aark/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const VAULT_CONTRACT_ADDRESS = '0x7A5df878e195D09F1C0bbba702Cfdf0ac9d0a835' return api.sumTokens({ owner: VAULT_CONTRACT_ADDRESS, tokens: [ diff --git a/projects/aave/index.js b/projects/aave/index.js index ce351ed5ee4..2878ada8926 100644 --- a/projects/aave/index.js +++ b/projects/aave/index.js @@ -10,8 +10,9 @@ const methodologies = require('../helper/methodologies'); const addressesProviderRegistryETH = "0x52D306e36E3B6B02c153d0266ff0f85d18BCD413"; function ethereum(borrowed) { - return async (timestamp, block, _, { api })=> { + return async (api)=> { const balances = api.getBalances() + const { block } = api // V2 TVLs if (block >= 11360925) { @@ -32,7 +33,7 @@ function ethereum(borrowed) { const aaveTokenAddress = ADDRESSES.ethereum.AAVE; -async function stakingBalancerTvl(timestamp, block, _, { api }) { +async function stakingBalancerTvl(api) { return unwrapBalancerToken({ api, owner: '0xa1116930326d21fb917d5a27f1e9943a9595fb47', balancerToken: '0x41a08648c3766f9f9d85598ff102a08f4ef84f84', isV2: false, }) } diff --git a/projects/abc-pool/index.js b/projects/abc-pool/index.js index d6d00cd5f71..e358ef7546f 100644 --- a/projects/abc-pool/index.js +++ b/projects/abc-pool/index.js @@ -24,7 +24,7 @@ const poolSummaryResponse = (rpc, method, contract, state) => { } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { // this result has to be multiplied by 1000, // as you can stake minimum 1000 tokens const core_poolSummaryResponse = await poolSummaryResponse( diff --git a/projects/abex-finance/index.js b/projects/abex-finance/index.js index 11224bdd483..1552c03a435 100644 --- a/projects/abex-finance/index.js +++ b/projects/abex-finance/index.js @@ -3,7 +3,7 @@ const sui = require("../helper/chain/sui"); const DEPOSIT_VAULT_REGISTRY = "0x3c6595e543c4766dd63b5b2fa918516bac2920bc1944da068be031dced46a18d"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const depositVaultFields = await sui.getDynamicFieldObjects({ parent: DEPOSIT_VAULT_REGISTRY, }); diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js index 4df67b0a513..4f7a1084c52 100644 --- a/projects/abracadabra/index.js +++ b/projects/abracadabra/index.js @@ -45,7 +45,7 @@ const liquidityLaunchEvents = { }, }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { chain } = api const marketsArray = []; diff --git a/projects/acala-euphrates/index.js b/projects/acala-euphrates/index.js index 279ab36b1fd..1d3c3ca66c9 100644 --- a/projects/acala-euphrates/index.js +++ b/projects/acala-euphrates/index.js @@ -3,8 +3,7 @@ const euphrates = '0x7Fe92EC600F15cD25253b421bc151c51b0276b7D'; const ldotAddr = ADDRESSES.acala.LDOT; const wtdotAddr = '0xe1bD4306A178f86a9214c39ABCD53D021bEDb0f9'; -async function tvl(timestamp) { - const { api } = arguments[3] +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 }), diff --git a/projects/accumulated-finance/index.js b/projects/accumulated-finance/index.js index e99c169da8e..2e74baff3d9 100644 --- a/projects/accumulated-finance/index.js +++ b/projects/accumulated-finance/index.js @@ -86,7 +86,7 @@ const transformedConfig = transformConfig(config); Object.entries(transformedConfig).forEach(([chain, configs]) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { let totalSupply = 0; for (const { LST, baseToken, token } of configs) { const supply = await api.call({ abi: 'uint256:totalSupply', target: LST }); diff --git a/projects/accumulator/index.js b/projects/accumulator/index.js index 6aad32c9da6..4f13448db26 100644 --- a/projects/accumulator/index.js +++ b/projects/accumulator/index.js @@ -12,7 +12,7 @@ module.exports = { Object.keys(config).forEach(chain => { const chainKey = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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'}) diff --git a/projects/across/index.js b/projects/across/index.js index 0544de93ad0..80ef76095f6 100644 --- a/projects/across/index.js +++ b/projects/across/index.js @@ -16,7 +16,7 @@ let pools = [ [ADDRESSES.ethereum.DAI, "0x43f133fe6fdfa17c417695c476447dc2a449ba5b"], ] -async function tvl(_, block, _1, { api }) { +async function tvl(api) { const v2Logs = await getLogs({ api, target: hubPoolAddress, @@ -30,14 +30,13 @@ async function tvl(_, block, _1, { api }) { if (pools.some(i => i[1] === pool)) return; pools.push([i[0], pool]) }) - const { output: supplies } = await sdk.api.abi.multiCall({ + const supplies = await api.multiCall({ abi: 'erc20:totalSupply', - calls: pools.map(i => ({ target: i[1] })), - block, + calls: pools.map(i => i[1]), }) const balances = {} - supplies.forEach(({ output }, i) => sdk.util.sumSingleBalance(balances, pools[i][0], output, 'ethereum')) + supplies.forEach((output, i) => sdk.util.sumSingleBalance(balances, pools[i][0], output, 'ethereum')) return balances } diff --git a/projects/adamantfinance/index.js b/projects/adamantfinance/index.js index a39b082817e..a99662b26a2 100644 --- a/projects/adamantfinance/index.js +++ b/projects/adamantfinance/index.js @@ -58,7 +58,7 @@ const lpAddresses_cronos = [ ]; -async function pool2Polygon(timestamp, block, chainBlocks, { api }) { +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) diff --git a/projects/aelin/index.js b/projects/aelin/index.js index 4c80253b309..ce32d40dc98 100644 --- a/projects/aelin/index.js +++ b/projects/aelin/index.js @@ -31,7 +31,7 @@ const aelin_data = { } function tvl(chain) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + return async (api) => { const { logConfig } = aelin_data[chain] const logs = (await Promise.all(logConfig.map(({ target, fromBlock }) => getLogs({ api, @@ -62,12 +62,12 @@ function stakingTVL(chain) { } function pool2TVL(chain) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + 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)(timestamp, ethBlock, chainBlocks, { api }) + 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 diff --git a/projects/aequinox/index.js b/projects/aequinox/index.js index 93ea5de7eb8..47fa39eda05 100644 --- a/projects/aequinox/index.js +++ b/projects/aequinox/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const vault = '0xee1c8dbfbf958484c6a4571f5fb7b99b74a54aa7' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = await getLogs({ api, target: vault, diff --git a/projects/aera/index.js b/projects/aera/index.js index 50e07e7b306..e8a9f4d0558 100644 --- a/projects/aera/index.js +++ b/projects/aera/index.js @@ -42,7 +42,7 @@ module.exports.start = 1682619377 Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const GRAPH_URL = config[chain].graphUrl const AAVE_POOL = config[chain].aavePool const AAVE_POOL_DATA_PROVIDER = config[chain].aavePoolDataProvider diff --git a/projects/aeria/index.js b/projects/aeria/index.js index a531de18e9f..2858de46b7a 100644 --- a/projects/aeria/index.js +++ b/projects/aeria/index.js @@ -2,7 +2,7 @@ const { nullAddress } = require("../helper/tokenMapping"); const FACTORY = "0x649b80892ef773bd64cc3c663950dea3a604f660"; -async function tvl(timestamp, _1, _2, { api }) { +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 }) diff --git a/projects/aerie/index.js b/projects/aerie/index.js index 2740ae30835..8edf0b6db66 100644 --- a/projects/aerie/index.js +++ b/projects/aerie/index.js @@ -1,6 +1,6 @@ const { sumUnknownTokens } = require('../helper/unknownTokens') -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/affine-defi/index.js b/projects/affine-defi/index.js index 89e0a356ed7..3932a5c9957 100644 --- a/projects/affine-defi/index.js +++ b/projects/affine-defi/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { getConfig } = require('../helper/cache') const BTC_ETH_VAULT = '0x1F9b1057cd93fb2d07d18810903B791b56acc2E1'.toLowerCase() -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { await getBasketTvl(api) const ownerTokens = [ [[ADDRESSES.polygon.WETH_1, ADDRESSES.polygon.WBTC], BTC_ETH_VAULT] @@ -11,7 +11,7 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, ownerTokens }) } -async function ethTvl(_, _b, _cb, { api, }) { +async function ethTvl(api) { return getBasketTvl(api) } diff --git a/projects/aftermath-fi/index.js b/projects/aftermath-fi/index.js index e2b4bbb4dcf..f91c6ebc50f 100644 --- a/projects/aftermath-fi/index.js +++ b/projects/aftermath-fi/index.js @@ -3,7 +3,7 @@ const sui = require("../helper/chain/sui"); const MAINNET_PROTOCOL_ID = "0x0625dc2cd40aee3998a1d6620de8892964c15066e0a285d8b573910ed4c75d50"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const pools = await sui.queryEvents({ eventType: '0xefe170ec0be4d762196bedecd7a065816576198a6527c99282a2551aaa7da38c::events::CreatedPoolEvent', transform: i => i.pool_id}) const poolData = await sui.getObjects(pools) diff --git a/projects/agave.js b/projects/agave.js index d3a43b18839..77ccffb174e 100644 --- a/projects/agave.js +++ b/projects/agave.js @@ -13,12 +13,6 @@ const protocolDataHelper = '0x24dCbd376Db23e4771375092344f5CbEA3541FC0' const addressesProviderRegistryXDAI_old = "0xa5E80AEAa020Ae41b1cBEe75dE7826297F7D803E" const protocolDataHelper_old = '0xa874f66342a04c24b213BF0715dFf18818D24014' -async function oldBorrowedTvl(timestamp, _, chainBlocks) { - if (timestamp > 1647302400) // Consider all borrowed tvl after re-entrancy attack to be lost - return {} - return (aaveChainTvl("xdai", addressesProviderRegistryXDAI_old, addr => `xdai:${addr}`, [protocolDataHelper_old], true))(timestamp, _, chainBlocks) -} - module.exports = { hallmarks: [ [1647302400, "Reentrancy attack"] @@ -31,7 +25,6 @@ module.exports = { ]), borrowed: sdk.util.sumChainTvls([ aaveChainTvl("xdai", addressesProviderRegistryXDAI, addr => `xdai:${addr}`, [protocolDataHelper], true), - oldBorrowedTvl, ]), staking: staking(agaveStakingContract, agaveTokenAddress, "xdai") } diff --git a/projects/agilitylsd/index.js b/projects/agilitylsd/index.js index 55392b9089f..f2f739def76 100644 --- a/projects/agilitylsd/index.js +++ b/projects/agilitylsd/index.js @@ -8,7 +8,7 @@ const WETH_ADDRESS = ADDRESSES.ethereum.WETH; const AGI_ETH_LP_ADDRESS = "0x498c00E1ccC2AFFf80F6Cc6144EAEB95c46cc3B5"; const AGI_ETH_STAKING_POOL = "0xC8187048f7Ab0db0774b674fEf3f4F4285A01bF4"; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: FACTORY_CONTRACT, diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index e74901a70ed..11ee15c4ebf 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -19,7 +19,7 @@ module.exports = { misrepresentedTokens: true, ethereum: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const lendingMain = { eth: "0xdeF3AA48bad043e53207d359dcDFdE46F50b6C02", //ETH }; @@ -85,7 +85,7 @@ module.exports = { }, arbitrum: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { //lending const lendingArb = { usdc_e: "0xa2e4cab1F6f9f1163bCe937517f1935BEc4a0A7c", diff --git a/projects/ajira-pay-finance-v2/index.js b/projects/ajira-pay-finance-v2/index.js index fc70752ffea..db504713e8e 100644 --- a/projects/ajira-pay-finance-v2/index.js +++ b/projects/ajira-pay-finance-v2/index.js @@ -17,7 +17,7 @@ Object.keys(config).forEach(chain => { } function tvl(isVesting) { - return async (_, _1, _2, { api }) => { + 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})}) } diff --git a/projects/ajira-pay-finance/index.js b/projects/ajira-pay-finance/index.js index c41f8488f85..09557d2a85a 100644 --- a/projects/ajira-pay-finance/index.js +++ b/projects/ajira-pay-finance/index.js @@ -17,7 +17,7 @@ Object.keys(config).forEach(chain => { } function tvl(isVesting) { - return async (_, _1, _2, { api }) => { + 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 index 100b4e9cc37..f4cfaf18945 100644 --- a/projects/ajna-v2/index.js +++ b/projects/ajna-v2/index.js @@ -29,8 +29,8 @@ async function getBorrowed(poolFactory, api) { module.exports = Object.keys(poolFactories).reduce((acc, chain) => { acc[chain] = { - tvl: (_, _b, _cb, { api }) => getTvl(poolFactories[chain], api), - borrowed: (_, _b, _cb, { api }) => getBorrowed(poolFactories[chain], api) + tvl: (api) => getTvl(poolFactories[chain], api), + borrowed: (api) => getBorrowed(poolFactories[chain], api) }; return acc; }, { misrepresentedTokens: true }); \ No newline at end of file diff --git a/projects/ajna/index.js b/projects/ajna/index.js index 70070aee1f4..0cd290b6031 100644 --- a/projects/ajna/index.js +++ b/projects/ajna/index.js @@ -1,7 +1,7 @@ const sdk = require("@defillama/sdk") const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +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}) @@ -9,7 +9,7 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ ownerTokens, api}) } -async function borrowed(_, _b, _cb, { 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}) diff --git a/projects/alchemist/index.js b/projects/alchemist/index.js index 31f97a134d6..5a183744659 100644 --- a/projects/alchemist/index.js +++ b/projects/alchemist/index.js @@ -3,7 +3,7 @@ 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(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0xF016fa84D5f3a252409a63b5cb89B555A0d27Ccf', diff --git a/projects/alchemix/index.js b/projects/alchemix/index.js index f2d1cc54418..53b41fc787d 100644 --- a/projects/alchemix/index.js +++ b/projects/alchemix/index.js @@ -3,7 +3,7 @@ const { staking } = require("../helper/staking.js"); const contracts = require("./contracts"); function tvl(chain) { - return async (timestamp, block, chainBlocks, { api }) => { + return async (api) => { 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() diff --git a/projects/alexar/index.js b/projects/alexar/index.js index 08698f7dbd4..d58c0311cda 100644 --- a/projects/alexar/index.js +++ b/projects/alexar/index.js @@ -16,7 +16,7 @@ const chainListTotal = ['avax', 'bsc', 'moonbeam', 'polygon', 'fantom', 'arbitru chainListSupply.concat(chainListTotal).forEach(chain => { module.exports[chain] = { tvl }; - async function tvl(_, _b, _cb, { api }) { + async function tvl(api) { const config = await getConfig('alexar', 'https://api.axelarscan.io/cross-chain/tvl') const tokensAndOwners = [] const owners = [] diff --git a/projects/algebra/index.js b/projects/algebra/index.js index af4a08b6b1e..76d59b71c42 100644 --- a/projects/algebra/index.js +++ b/projects/algebra/index.js @@ -9,7 +9,7 @@ const startBlocks = { } function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + return async (api) => { const START_BLOCK = startBlocks[chain] const logs = await getLogs({ api, diff --git a/projects/algodex.js b/projects/algodex.js index a065d3cc294..d95a9398f97 100644 --- a/projects/algodex.js +++ b/projects/algodex.js @@ -7,7 +7,7 @@ const asaOrderbookId = 354073834 module.exports = { timetravel: false, algorand: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { await searchAccountsAll({appId: algoOrderbookId, api, sumTokens: true, }) await searchAccountsAll({appId: asaOrderbookId, api, sumTokens: true, }) }, diff --git a/projects/alienbase-stableswap/index.js b/projects/alienbase-stableswap/index.js index 1dd439f910d..78cab6a8c54 100644 --- a/projects/alienbase-stableswap/index.js +++ b/projects/alienbase-stableswap/index.js @@ -3,7 +3,7 @@ const pools = Object.values({ 'USDC-Dai': '0x410d28fbcd00c677bae1cce2261546c8db4f6a2d', }) -async function tvl(_, _b, _cb, { api, }) { +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]]) }) } diff --git a/projects/allbridge-core/index.js b/projects/allbridge-core/index.js index 316225e9ab4..69df45c9ca2 100644 --- a/projects/allbridge-core/index.js +++ b/projects/allbridge-core/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/solana"); const data = require("./contracts.json"); -const solanaTvl = async (_, _b, _cb, { api, }) => { +const solanaTvl = async (api) => { const tokens = data['solana'].tokens; return sumTokens2({ tokensAndOwners: tokens.map(i => [i.tokenAddress, i.poolAddress])}) } @@ -10,7 +10,7 @@ const solanaTvl = async (_, _b, _cb, { api, }) => { function getTVLFunction(chain) { if (chain === 'solana') return solanaTvl; - return async function evmTvl(timestamp, ethBlock, { [chain]: block }, { api, }) { + return async function evmTvl(api) { const tokensData = data[chain].tokens; const tokensAndOwners = tokensData.map(t => [t.tokenAddress, t.poolAddress]); return api.sumTokens({ tokensAndOwners, }) diff --git a/projects/alongside/index.js b/projects/alongside/index.js index 6ef3b93a8b2..5b9d8f81f66 100644 --- a/projects/alongside/index.js +++ b/projects/alongside/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs") const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, block, _cb, { api }) { +async function tvl(api) { const aSTETH = "0x27C2B9fd547EAd2c05C305BeE2399A55811257c2" const vault = "0xf3bCeDaB2998933c6AAD1cB31430D8bAb329dD8C" const astBal = await api.call({ abi: 'erc20:balanceOf', target: aSTETH, params: vault }) diff --git a/projects/alpaca-finance-lend/lend.js b/projects/alpaca-finance-lend/lend.js index 31131b70b9a..dfbfb327741 100644 --- a/projects/alpaca-finance-lend/lend.js +++ b/projects/alpaca-finance-lend/lend.js @@ -2,13 +2,13 @@ const { getProcolAddresses } = require("../alpaca-finance/lyf"); const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +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(_, _b, _cb, { api, }) { +async function borrowed(api) { /// @dev Getting all addresses from Github const addresses = await getProcolAddresses(api.chain); diff --git a/projects/alpha-homora/v1.js b/projects/alpha-homora/v1.js index 0715bfe4d1e..3e8ed453dd8 100644 --- a/projects/alpha-homora/v1.js +++ b/projects/alpha-homora/v1.js @@ -9,7 +9,7 @@ module.exports = { tvlV1Bsc } -async function tvlV1Eth(timestamp, block) { +async function tvlV1Eth({timestamp}, block) { const startTimestamp = 1602054167; const startBlock = 11007158; diff --git a/projects/alta-finance/index.js b/projects/alta-finance/index.js index 8f55f67b182..d13a729abab 100644 --- a/projects/alta-finance/index.js +++ b/projects/alta-finance/index.js @@ -10,10 +10,10 @@ const config = { Object.keys(config).forEach(chain => { const { investments, debts, token } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { return api.sumTokens({ owners: investments.concat(debts), tokens: [token] }) }, - borrowed: async (_, _b, _cb, { api, }) => { + 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])) diff --git a/projects/altitude/index.js b/projects/altitude/index.js index 4c762b3f587..ede6cd4d199 100644 --- a/projects/altitude/index.js +++ b/projects/altitude/index.js @@ -19,7 +19,7 @@ let output = {}; CHAINS.forEach(chain => { output[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { // Define a function to fetch tokens given a contract address const fetchTokens = async (contract) => { const tokens = []; diff --git a/projects/ambient-finance/index.js b/projects/ambient-finance/index.js index 351eace028d..4ac8955c98f 100644 --- a/projects/ambient-finance/index.js +++ b/projects/ambient-finance/index.js @@ -16,7 +16,7 @@ const subgraphs = { ethereum: `https://api.thegraph.com/subgraphs/name/crocswap/croc-mainnet` } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { let pools if (subgraphs[api.chain].includes("gcgo")) { const data = await getConfig(`ambient-finance/${api.chain}`, subgraphs[api.chain]) diff --git a/projects/ambit-finance/index.js b/projects/ambit-finance/index.js index 2a476cf1494..1992c4d32eb 100644 --- a/projects/ambit-finance/index.js +++ b/projects/ambit-finance/index.js @@ -35,7 +35,7 @@ const ABI = { const AUSD = "0xf328ed974e586b6eea7997a87ea2ab1de149b186"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokensAndOwners = [] const [storage, depositorVault] = await api.call({ abi: ABI["IAddressRegistry"]["getAddresses"], @@ -54,7 +54,7 @@ async function tvl(_, _1, _2, { api }) { return sumTokens2({ api, tokensAndOwners, blacklistedTokens: [AUSD] }); } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { const [depositorVault, market] = await api.call({ abi: ABI["IAddressRegistry"]["getAddresses"], target: REGISTRY, diff --git a/projects/amet-finance/index.js b/projects/amet-finance/index.js index 904e1f7fc9b..4ac1b07bf00 100644 --- a/projects/amet-finance/index.js +++ b/projects/amet-finance/index.js @@ -16,7 +16,7 @@ const config = { } }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { issuer, fromBlock } = config[api.chain]; const logs = await getLogs({ api, target: issuer, fromBlock, eventAbi: issuerEventABI, onlyArgs: true }); diff --git a/projects/amphora/index.js b/projects/amphora/index.js index e817aed611b..f0048386eab 100644 --- a/projects/amphora/index.js +++ b/projects/amphora/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs'); -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const ownerAddress = "0xA905f9f0b525420d4E5214E73d70dfFe8438D8C8"; const tokensAndOwners = [ ["0xb2f30a7c980f052f02563fb518dcc39e6bf38175", "0xD842D9651F69cEBc0b2Cffc291fC3D3Fe7b5D226"], diff --git a/projects/amulet-v2/index.js b/projects/amulet-v2/index.js index e9b556dffa6..e59256cc229 100644 --- a/projects/amulet-v2/index.js +++ b/projects/amulet-v2/index.js @@ -89,7 +89,7 @@ const getERC4626IdleVaultFundsByChain = async (api) => { }); } -async function tvl(_, block, _cb, { api, }) { +async function tvl(api) { await getERC4626VaultFundsByChain(api); if (idleCdos[api.chain]) await getERC4626IdleVaultFundsByChain(api); diff --git a/projects/amun/index.js b/projects/amun/index.js index 4928b94df7b..ed95afa5c10 100644 --- a/projects/amun/index.js +++ b/projects/amun/index.js @@ -1,6 +1,6 @@ const solana = require('../helper/solana'); -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return solana.sumTokens2({ tokenAccounts: ['GprM9vgGpUbNU4N5SbDAigL1JYCvQiDop28cmEQ7Bw2w'] }) } diff --git a/projects/anchorswap/index.js b/projects/anchorswap/index.js index 2b152ad0f9b..acea53f5872 100644 --- a/projects/anchorswap/index.js +++ b/projects/anchorswap/index.js @@ -1,39 +1,7 @@ -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef.js"); -const abi = require("../helper/abis/masterchef.json"); +const { masterchefExports, } = require('../helper/unknownTokens') -const anchorToken = "0x4aac18De824eC1b553dbf342829834E4FF3F7a9F"; -const masterchef = "0x23f7F3119d1b5b6c94a232680e2925703C4ebbF5"; - -async function tvl(timestamp, chain, chainBlocks) { - let balances = {}; - - await addFundsInMasterChef(balances, masterchef, chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`, abi.poolInfo, [anchorToken], true); - - return balances; -} - -async function staking(timestamp, chain, chainBlocks) { - let balances = {}; - - let { output: balance } = await sdk.api.erc20.balanceOf({ - target: anchorToken, - owner: masterchef, - block: chainBlocks.bsc, - chain: "bsc" - }); - - sdk.util.sumSingleBalance(balances, `bsc:${anchorToken}`, balance); - - return balances; -} - - -module.exports = { - methodology: `Uses the masterchef addresss() to find the tokens locked within, excludes the $ANCHOR token which is separated and added under the "staking" label`, - bsc: { - tvl, - staking - }, - -} +module.exports = masterchefExports({ + chain: 'bsc', + masterchef: '0x23f7F3119d1b5b6c94a232680e2925703C4ebbF5', + nativeToken: '0x4aac18De824eC1b553dbf342829834E4FF3F7a9F', +}) diff --git a/projects/angle/index.js b/projects/angle/index.js index 855b9e7dbb3..955628e87be 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -38,7 +38,7 @@ async function getVaultManagersFromAPI(api) { return calls; } -async function tvl(timestamp, _1, _2, { api }) { +async function tvl(api) { const chain = api.chain; const balances = {}; @@ -117,7 +117,7 @@ async function tvl(timestamp, _1, _2, { api }) { sdk.util.sumSingleBalance(balances, EUROC, eurocBalance); // Transmuter - if (timestamp > 1691656362) { + if (api.timestamp > 1691656362) { let collaterals = await api.call({ abi: transmuter_abi["getCollateralList"], target: agEUR.transmuter, diff --git a/projects/ankr/index.js b/projects/ankr/index.js index d7e61cc2c5d..edef9332469 100644 --- a/projects/ankr/index.js +++ b/projects/ankr/index.js @@ -47,7 +47,7 @@ async function getFantomTvl() { } } -async function getGnosisTvl(timestamp, block, chainBlocks, { api}) { +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" diff --git a/projects/antex.js b/projects/antex.js index 1f156578adc..4db28d81ff0 100644 --- a/projects/antex.js +++ b/projects/antex.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require('./helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const owner = '0xCe43E857c92195BeB417a167B777a11720e6E355' const tokens = [ '0xf6088cbd287c4d5ab226aaa9b437b27f5dbb5207', diff --git a/projects/antimatterDAO/index.js b/projects/antimatterDAO/index.js index 62468dc7f70..e2cdb3c530f 100644 --- a/projects/antimatterDAO/index.js +++ b/projects/antimatterDAO/index.js @@ -47,7 +47,7 @@ chains.forEach(chain => { module.exports.ethereum.staking = staking(antimatterStakingContract, '0x9b99cca871be05119b2012fd4474731dd653febe') -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { let toa = [] const usdToken = usdTokens[api.chain] if (usdToken) { diff --git a/projects/anyhedge/index.js b/projects/anyhedge/index.js index 79947df67f5..a53a8e2d9cd 100644 --- a/projects/anyhedge/index.js +++ b/projects/anyhedge/index.js @@ -17,7 +17,7 @@ async function getTVLAnyHedge(timestamp) { return await GetDailyHistory(day); } -async function tvl(timestamp) { +async function tvl({timestamp}) { let tvlAnyHedge, testDataSource // tvl data lags by contract duration since contracts are secret until settled diff --git a/projects/anyswap/index.js b/projects/anyswap/index.js index 963bdec5905..37786730951 100644 --- a/projects/anyswap/index.js +++ b/projects/anyswap/index.js @@ -76,7 +76,7 @@ const EXECUTOR = '0x2A038e100F8B85DF21e4d44121bdBfE0c288A869' const NEW_ADDR = '0x1eed63efba5f81d95bfe37d82c8e736b974f477b' function fetchChain(chain) { - return async (_, _1, _2, { api }) => { + return async (api) => { const data = await getChainData() const protocolsInChain = chain === null ? data : data.filter(p => p.srcChainId.toString() === chain.toString()) const tokensAndOwners = [] diff --git a/projects/anzen/index.js b/projects/anzen/index.js index 022376d7b70..dd57f790afe 100644 --- a/projects/anzen/index.js +++ b/projects/anzen/index.js @@ -4,7 +4,7 @@ const ADDRESSES = require('../helper/coreAssets.json') // minted by depositing USDC const SPCT = '0xEf5AAcB3c38a5Be7785a361008e27fb0328a62B5'; -async function tvl(_, _1, _2, { api }) { +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) @@ -12,7 +12,7 @@ async function tvl(_, _1, _2, { api }) { return api.getBalances() } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { // Borrowed amount in shares of pool const executedShares = await api.call({ target: SPCT, diff --git a/projects/apeCoinStaking/index.js b/projects/apeCoinStaking/index.js index b4204b00cdf..f7063ab230b 100644 --- a/projects/apeCoinStaking/index.js +++ b/projects/apeCoinStaking/index.js @@ -1,7 +1,7 @@ const sdk = require("@defillama/sdk"); const config = require("./config"); -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const balances = {}; const totalAssets = await api.call({ diff --git a/projects/apebond/index.js b/projects/apebond/index.js index 4167a17988b..8779ecc87ea 100644 --- a/projects/apebond/index.js +++ b/projects/apebond/index.js @@ -31,7 +31,7 @@ Object.keys(config).forEach(chain => { return api.getBalances() } - const poolManagerTvl = (isStaking) => async (_, _b, _cb, { api, }) => { + 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 }) @@ -44,7 +44,7 @@ Object.keys(config).forEach(chain => { return getTvl(api, isStaking) } - const logTvl = (isStaking) => async (_, _b, _cb, { api, }) => { + const logTvl = (isStaking) => async (api) => { const { factory, fromBlock } = _config const logs = await getLogs({ api, diff --git a/projects/api3/index.js b/projects/api3/index.js index c94505487dd..3e436e04251 100644 --- a/projects/api3/index.js +++ b/projects/api3/index.js @@ -5,7 +5,7 @@ const api3_token = '0x0b38210ea11411557c13457d4da7dc6ea731b88a' const api3_dao_pool = '0x6dd655f10d4b9e242ae186d9050b68f725c76d76' const api3CirculatingSupply = "0xcD34bC5B03C954268d27c9Bc165a623c318bD0a8" -const stakingTVL = async (timestamp, ethBlock, chainBlocks, { api }) => { +const stakingTVL = async (api) => { const balances = {} const locked_and_vested = await api.call({ target: api3CirculatingSupply, diff --git a/projects/apollodao/index.js b/projects/apollodao/index.js index 14ece94054d..e66bc58b102 100644 --- a/projects/apollodao/index.js +++ b/projects/apollodao/index.js @@ -23,7 +23,7 @@ const contractAddresses = { akt_osmo: "osmo122ryl7pez7yjprtvjckltu2uvjxrq3kqt4nvclax2la7maj6757qg054ga", }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { if (api.chain != "osmosis") return {} for (const contractName in contractAddresses) { let contractAddress = contractAddresses[contractName]; @@ -88,7 +88,7 @@ const neutronVaults = { pcl_wstETH_NTRN: "neutron17vedy2clhctw0654k93m375ud7h5jsy8nj9gnlkjnyd4mcfnfrdql226al", }; -async function neutronTvl(_, _1, _2, { api }) { +async function neutronTvl(api) { if (api.chain != "neutron") return {} for (const contractName in neutronVaults) { let contractAddress = neutronVaults[contractName]; diff --git a/projects/aptoslaunch/index.js b/projects/aptoslaunch/index.js index 1e23042dfa5..19e0fb3f22f 100644 --- a/projects/aptoslaunch/index.js +++ b/projects/aptoslaunch/index.js @@ -117,17 +117,17 @@ const moveIbo = async (api, tvlType) => { api.addTokens(acceptCoinArr, bals) }; -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { await moveIbo(api, 'tvl'); return api.getBalances() }; -const pool2 = async (_, _1, _2, { api }) => { +const pool2 = async (api) => { await moveIbo(api, 'pool2'); await cakeLPsltStaking(api); return api.getBalances() }; -const staking = async (_, _1, _2, { api }) => { +const staking = async (api) => { await moveIbo(api, 'staking'); await moveStaking(api); await altLockBond(api) diff --git a/projects/arbitrove/index.js b/projects/arbitrove/index.js index 86f30965c9d..b46df466974 100644 --- a/projects/arbitrove/index.js +++ b/projects/arbitrove/index.js @@ -6,7 +6,7 @@ const GMLP_ORACLE = "0x4997916792decbF5DAcbaFc47CF2071AD9Fe6456"; const GMLP_TOKEN = "0xc16ce97d04de6c5e0391e308dbc17a397183067b"; const getAmountAcrossStrategies = "function getAmountAcrossStrategies(address coin) view returns (uint256)"; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: ALP_TOKEN, diff --git a/projects/arbitrum/index.js b/projects/arbitrum/index.js index 62a1a0bee61..d59dd9f85cc 100644 --- a/projects/arbitrum/index.js +++ b/projects/arbitrum/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/arbitrumNova/index.js b/projects/arbitrumNova/index.js index f78593c37f3..fd8b47632b6 100644 --- a/projects/arbitrumNova/index.js +++ b/projects/arbitrumNova/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/arbor-finance/index.js b/projects/arbor-finance/index.js index 9cddd90bf19..f47256c6de6 100644 --- a/projects/arbor-finance/index.js +++ b/projects/arbor-finance/index.js @@ -3,7 +3,7 @@ const { getLogs } = require('../helper/cache/getLogs') const bondFactory = '0x1533eb8c6cc510863b496d182596ab0e9e77a00c' -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, @@ -13,7 +13,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { target: bondFactory, }) const toa = logs.map(i => ([i.topics[3], i.args.newBond])) - return sumTokens2({ block, tokensAndOwners: toa, }) + return sumTokens2({ api, tokensAndOwners: toa, }) } module.exports = { diff --git a/projects/arbswap-stableswap/index.js b/projects/arbswap-stableswap/index.js index bd2f0fe3274..c9f7622baa5 100644 --- a/projects/arbswap-stableswap/index.js +++ b/projects/arbswap-stableswap/index.js @@ -1,7 +1,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { factory, fromBlock, } = config[api.chain] const logs = await getLogs({ api, diff --git a/projects/arcade-xyz/index.js b/projects/arcade-xyz/index.js index 0f987c26db6..2316eeca675 100644 --- a/projects/arcade-xyz/index.js +++ b/projects/arcade-xyz/index.js @@ -14,9 +14,9 @@ const { // 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(_, block, _cb, { api }) { +async function tvl(api) { // Get list of all vaults - const vaults = await fetchVaults(block+'') + const vaults = await fetchVaults(api.block) const balances = {} const artBlockOwners = [] @@ -45,8 +45,8 @@ async function tvl(_, block, _cb, { api }) { } // Fetches all active loans, their payable curency and amount borrowed then sums it up. -async function borrowed(_, block, _cb, { api }) { - const loans = await fetchLoans(block); +async function borrowed(api) { + const loans = await fetchLoans(api.block); // Iterate over each loan to sum up principal by currency for (const loan of loans) { diff --git a/projects/arcadia-finance/helper/index.js b/projects/arcadia-finance/helper/index.js index cc4aaaf409a..604e67f18b5 100644 --- a/projects/arcadia-finance/helper/index.js +++ b/projects/arcadia-finance/helper/index.js @@ -19,7 +19,7 @@ const config = { } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { chain } = api let { factory, pools } = config[chain] pools = Object.values(pools) diff --git a/projects/arch-ethereum-web-3/index.js b/projects/arch-ethereum-web-3/index.js index 8318dc1c13d..460da42b518 100644 --- a/projects/arch-ethereum-web-3/index.js +++ b/projects/arch-ethereum-web-3/index.js @@ -21,7 +21,7 @@ const setAbi = 'address[]:getComponents' const chamberAbi = 'address[]:getConstituentsAddresses' -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const setsTokens = await api.multiCall({ abi: setAbi, calls: sets }) const chambersTokens = await api.multiCall({ abi: chamberAbi, calls: chambers }) const toa = [] @@ -31,7 +31,7 @@ async function tvl(timestamp, block, _, { api }) { return balances } -async function polygonTvl(timestamp, block, _, { api }) { +async function polygonTvl(api) { const chambersTokens = await api.multiCall({ abi: chamberAbi, calls: polygonChambers }) const toa = [] chambersTokens.forEach((o, i) => toa.push([o, polygonChambers[i]])) diff --git a/projects/archi-finance/index.js b/projects/archi-finance/index.js index 8173203939f..c0c99a5f2b9 100644 --- a/projects/archi-finance/index.js +++ b/projects/archi-finance/index.js @@ -23,7 +23,7 @@ const addresses = { ] } -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: addresses.vaults }) const tokensAndOwners = tokens.map((v, i) => [v, addresses.vaults[i]]) addresses.fsGlpHolders.forEach(i => tokensAndOwners.push([addresses.fsGlpAddress, i])) @@ -31,7 +31,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { return sumTokens2({ api, tokensAndOwners}) } -async function borrowed(timestamp, block, chainBlocks, { api }) { +async function borrowed(api) { const borrowedBalance = await api.call({ target: addresses.vaultInfo, abi: ABI.borrowedBalance, params: [addresses.vaults] }); api.addTokens(borrowedBalance[0], borrowedBalance[1]); } diff --git a/projects/arcx.js b/projects/arcx.js index e7c3178e933..c317213bebb 100644 --- a/projects/arcx.js +++ b/projects/arcx.js @@ -1,25 +1,11 @@ -const sdk = require("@defillama/sdk") const stakingContract = '0x9bffad7a6d5f52dbc51cae33e419793c72fd7d9d' const ARCx = '0x1321f1f1aa541a56c31682c57b80ecfccd9bb288' - -async function staking(timestamp, ethBlock, chainBlocks) { - const stakedARCx = (await sdk.api.abi.call({ - target: ARCx, - params: stakingContract, - abi: 'erc20:balanceOf', - block: ethBlock, - chain: 'ethereum' - })).output - const balances = { - [ARCx]: stakedARCx - } - return balances -} +const { staking } = require('../helper/staking') module.exports = { methodology: "ARCx can be staked in the protocol", ethereum: { - staking, + staking: staking(stakingContract, ARCx), tvl: () => ({}) }, } diff --git a/projects/arenaswap/index.js b/projects/arenaswap/index.js index 021ed932cc8..c36d793355e 100644 --- a/projects/arenaswap/index.js +++ b/projects/arenaswap/index.js @@ -1,53 +1,19 @@ -const sdk = require("@defillama/sdk"); -const {addFundsInMasterChef} = require("../helper/masterchef"); const arena = "0x2A17Dc11a1828725cdB318E0036ACF12727d27a2"; -const arenaMasterChef = "0xbEa60d145747a66CF27456ef136B3976322b7e77"; const pyram = "0xedeCfB4801C04F3EB394b89397c6Aafa4ADDa15B"; -const pyramMasterChef = "0x3e91B21ddE13008Aa73f07BdE26970322Fe5D533"; const poolInfo = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accArenaPerShare, uint16 depositFeeBP, uint256 harvestInterval)' -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, arenaMasterChef, chainBlocks.bsc, "bsc", addr => `bsc:${addr}`, poolInfo, [arena], true, false, arena); - await addFundsInMasterChef(balances, pyramMasterChef, chainBlocks.bsc, "bsc", addr => `bsc:${addr}`, poolInfo, [pyram], true, false, pyram); - return balances; -} +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require('../helper/utils'); -async function staking(timestamp, block, chainBlocks) { - let balances = {}; - let arenaStakingBalance = (await sdk.api.erc20.balanceOf({ - target: arena, - owner: arenaMasterChef, - block: chainBlocks.bsc, - chain: "bsc" - })).output; - sdk.util.sumSingleBalance(balances, `bsc:${arena}`, arenaStakingBalance); - let pyramStakingBalances = (await sdk.api.abi.multiCall({ - calls: [ - { - target: arena, - params: pyramMasterChef - }, - { - target: pyram, - params: pyramMasterChef - } - ], - abi: "erc20:balanceOf", - block: chainBlocks.bsc, - chain: "bsc" - })).output; - for (let i in pyramStakingBalances) { - sdk.util.sumSingleBalance(balances, `bsc:${pyramStakingBalances[i].input.target}`, pyramStakingBalances[i].output); - } - return balances; -} - - -module.exports = { - methodology: "Counts value locked in farms and pools", - bsc: { - tvl, - staking - }, -} \ No newline at end of file +module.exports = mergeExports([ + masterchefExports({ + chain: 'bsc', + masterchef: '0xbEa60d145747a66CF27456ef136B3976322b7e77', + nativeTokens: [arena, pyram], + }), + masterchefExports({ + chain: 'bsc', + masterchef: '0x3e91B21ddE13008Aa73f07BdE26970322Fe5D533', + nativeTokens: [arena, pyram], + }) +]) diff --git a/projects/argofinance/index.js b/projects/argofinance/index.js index 00991a7c652..065d7c9e99f 100644 --- a/projects/argofinance/index.js +++ b/projects/argofinance/index.js @@ -9,7 +9,7 @@ async function tvl() { return balances } -async function staking(timestamp, _, _1, { api }) { +async function staking(api) { const xargoBalance = await api.call({ target: '0x1dE93ce995d1bC763c2422ba30b1E73dE4A45a01', abi: 'erc20:totalSupply' }) let balance = { "cronos:0x47A9D630dc5b28F75d3AF3be3AAa982512Cd89Aa": xargoBalance diff --git a/projects/arpa-staking/index.js b/projects/arpa-staking/index.js index e079e77122b..358a6aad2df 100644 --- a/projects/arpa-staking/index.js +++ b/projects/arpa-staking/index.js @@ -1,7 +1,7 @@ const STAKING_CONTRACT = "0xee710f79aa85099e200be4d40cdf1bfb2b467a01"; const ARPA = "0xBA50933C268F567BDC86E1aC131BE072C6B0b71a"; -const staking = async (_, _1, _2, { api }) => { +const staking = async (api) => { const val = await api.call({ target: STAKING_CONTRACT, abi: 'uint256:getTotalCommunityStakedAmount', }); api.add(ARPA, val) return api.getBalances() diff --git a/projects/arrakis-v2/index.js b/projects/arrakis-v2/index.js index d1c40930165..a80adc8c913 100644 --- a/projects/arrakis-v2/index.js +++ b/projects/arrakis-v2/index.js @@ -27,7 +27,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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([ diff --git a/projects/artdefinance-seeding/index.js b/projects/artdefinance-seeding/index.js index 765c79ffde2..b534a39df5a 100644 --- a/projects/artdefinance-seeding/index.js +++ b/projects/artdefinance-seeding/index.js @@ -1,7 +1,7 @@ const ADFSeedingContract = "0x2f6f2DBF7d7Cc69e676b3647543fC8E1e3D9Dd6f" const ADF = "0x6bd10299f4f1d31b3489dc369ea958712d27c81b" -async function staking(ts, block, _, { api }) { +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) diff --git a/projects/aspida/index.js b/projects/aspida/index.js index 226edae5e3f..ea3ff2f547f 100644 --- a/projects/aspida/index.js +++ b/projects/aspida/index.js @@ -1,6 +1,6 @@ module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const totalSupply = await api.call({ target: "0xFC87753Df5Ef5C368b5FBA8D4C5043b77e8C5b39", abi: "uint256:totalSupply" }); api.addGasToken(totalSupply) } diff --git a/projects/astaria/index.js b/projects/astaria/index.js index 6e3539ff3b1..2409a8a2383 100644 --- a/projects/astaria/index.js +++ b/projects/astaria/index.js @@ -8,7 +8,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, ACT } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, @@ -33,7 +33,7 @@ Object.keys(config).forEach(chain => { tokens.forEach((t, i) => tokensAndOwners.push([t, vaults[i]])) return sumTokens2({ api, tokensAndOwners }) }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/astra-dao/index.js b/projects/astra-dao/index.js index e943da45ecf..77686b6e358 100644 --- a/projects/astra-dao/index.js +++ b/projects/astra-dao/index.js @@ -1,14 +1,10 @@ const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs'); -// Constants for Ethereum chain -const ASTRA_TOKEN_CONTRACT_ETHEREUM = '0x7E9c15C43f0D6C4a12E6bdfF7c7D55D0f80e3E23'; -const ASTRA_STAKING_CONTRACT_ETHEREUM = '0xDFE672C671943411fc16197fb8E328662B57CE2C'; - -// Constants for Arbitrum chain const ASTRA_TOKEN_CONTRACT_ARBITRUM = '0xd3188e0df68559c0B63361f6160c57Ad88B239D8'; const ASTRA_STAKING_CONTRACT_ARBITRUM = '0x6fE79b531b2b1d5378631B3Ab33B0994E297355E'; -async function tvl(_, _b, _cb, { api, chain }) { +async function tvl(api) { + const chain = api.chain let gotError = false; const indexAddr = chain === 'ethereum' ? '0x17b9B197E422820b3e28629a2BB101949EE7D12B' : '0x8e265fF847CC660Cd89786D4308076a9f921428f'; const stableCoin = await api.call({ abi: 'address:baseStableCoin', target: indexAddr }); @@ -31,8 +27,6 @@ module.exports = { start: 17243078, ethereum: { tvl, - // pool2: sumTokensExport({ owner: ASTRA_STAKING_CONTRACT_ETHEREUM, resolveUniV3: true }), - // staking: sumTokensExport({ owner: ASTRA_STAKING_CONTRACT_ETHEREUM, tokens: [ASTRA_TOKEN_CONTRACT_ETHEREUM] }), }, arbitrum: { tvl, diff --git a/projects/astralfarm/index.js b/projects/astralfarm/index.js index 5373b10cb83..59af1672df7 100644 --- a/projects/astralfarm/index.js +++ b/projects/astralfarm/index.js @@ -1,26 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking, stakingPricedLP } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x13E5A680606aB4965d09B1997486C715dE225EBE" -const astral = "0xd95322C0D069B51a41ed2D94A39617C2ACbcE636" -const astralFtmLP = "0x93E7752e611B2cD808E546E7FdA5512a89A91d4D" - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [astral, astralFtmLP],true,true,astral); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: stakingPricedLP(chef, astral, "fantom",astralFtmLP, "fantom"), - pool2: pool2Exports(chef, [astralFtmLP], "fantom"), - }, - -} // node test.js projects/astralfarm/index.js \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x13E5A680606aB4965d09B1997486C715dE225EBE', + nativeToken: '0xd95322C0D069B51a41ed2D94A39617C2ACbcE636', +}) \ No newline at end of file diff --git a/projects/astrolescent/index.js b/projects/astrolescent/index.js index 1e0c381024d..6621c379822 100644 --- a/projects/astrolescent/index.js +++ b/projects/astrolescent/index.js @@ -6,12 +6,12 @@ const STAKING_COMPONENT_ADDRESS = 'component_rdx1cz6ed6wksa2u4a3da5qfeg4tg453tcz 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 (_, _1, _2, { api }) => { + 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 (_, _1, _2, { 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 }); diff --git a/projects/astrovault/index.js b/projects/astrovault/index.js index 21383daea90..793056b5ee6 100644 --- a/projects/astrovault/index.js +++ b/projects/astrovault/index.js @@ -6,7 +6,7 @@ const STABLE_FACTORY_ARCHWAY = "archway19yzx44k7w7gsjjhumkd4sh9r0z6lscq583hgpu9s const STANDARD_FACTORY_ARCHWAY = "archway1cq6tgc32az7zpq5w7t2d89taekkn9q95g2g79ka6j46ednw7xkkq7n55a2"; const HYBRID_FACTORY_ARCHWAY = "archway1zlc00gjw4ecan3tkk5g0lfd78gyfldh4hvkv2g8z5qnwlkz9vqmsdfvs7q"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { chain } = api for (const factory of [STABLE_FACTORY_ARCHWAY, STANDARD_FACTORY_ARCHWAY, HYBRID_FACTORY_ARCHWAY]) { let allPools = []; diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js index aa9a4b5ec0e..646e21aea3c 100644 --- a/projects/asymmetry-fi/index.js +++ b/projects/asymmetry-fi/index.js @@ -11,7 +11,7 @@ const AFETH = '0x0000000016E6Cb3038203c1129c8B4aEE7af7a11' const CVX = ADDRESSES.ethereum.CVX const VOTIUM = '0x00000069aBbB0B1Ad6975bcF753eEe15D318A0BF' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const tokensAndOwners = [ // safETH Balances diff --git a/projects/athenafinance-io/index.js b/projects/athenafinance-io/index.js index b5b66e3400e..3f773728ac6 100644 --- a/projects/athenafinance-io/index.js +++ b/projects/athenafinance-io/index.js @@ -2,7 +2,7 @@ const { unwrapLPsAuto, nullAddress, sumTokensExport } = require('../helper/unwra const masterchef = '0x652a63c4df14e29080Ab058d6f151aBa61F86c10' -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/atlas-fi/index.js b/projects/atlas-fi/index.js index ae5bc8a97cc..f3c59e9c9f5 100644 --- a/projects/atlas-fi/index.js +++ b/projects/atlas-fi/index.js @@ -4,7 +4,7 @@ const { sumTokensExport } = require("../helper/unknownTokens") const VAULT = '0x3A93FCCcD2769579eFE03d6DeF2C4468F5F0bd38' const FARM_PROXY = '0xca6aca5eabd9fac29404974e1a69a0b69c7f1ea2' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens2({ api, ownerTokens: [ diff --git a/projects/atmossoft.js b/projects/atmossoft.js index 9461ed5bae9..4e64729f300 100644 --- a/projects/atmossoft.js +++ b/projects/atmossoft.js @@ -1,33 +1,25 @@ -const ADDRESSES = require('./helper/coreAssets.json') const { sumUnknownTokens } = require('./helper/unknownTokens') - -async function bsc(timestamp, ethBlock, chainBlocks) { +async function bsc(api) { const pools = [{ 'pool2Address': '0xaF18cde26fdd22561df2a02958CbA092f41875d8', - 'pairToken': 'bsc:' + ADDRESSES.bsc.USDT, 'stakingContract': '0x282FFbE782F903340A14955649032302e8020b9C' }, { 'pool2Address': '0xdf825e486d9d15848a36c113b7725d7923e886a4', - 'pairToken': ADDRESSES.bsc.WBNB, 'stakingContract': '0xa65d60e8a71dBDbb14B6eE7073522546FE73CFE4' }]; const tokensAndOwners = pools.map(i => ([i.pool2Address, i.stakingContract])) - const coreAssets = pools.map(i => i.pairToken) - - return sumUnknownTokens({ tokensAndOwners, coreAssets, chain: 'bsc', block: chainBlocks.bsc }) + return sumUnknownTokens({ tokensAndOwners, api, useDefaultCoreAssets: true, }) } -async function ftm(timestamp, ethBlock, chainBlocks) { +async function ftm(api) { const pools = [{ 'pool2Address': '0x662db0c6fa77041fe4901149558cc70ca1c8e874', - 'pairToken': ADDRESSES.ethereum.FTM, 'stakingContract': 'f043f876d3d220acce029ca76c9572f0449e5e71' }]; const tokensAndOwners = pools.map(i => ([i.pool2Address, i.stakingContract])) - const coreAssets = pools.map(i => i.pairToken) - return sumUnknownTokens({ tokensAndOwners, coreAssets, chain: 'fantom', block: chainBlocks.fantom }) + return sumUnknownTokens({ tokensAndOwners, api, useDefaultCoreAssets: true, }) } module.exports = { diff --git a/projects/atomic/index.js b/projects/atomic/index.js index 2df5412b647..f26f00cbece 100644 --- a/projects/atomic/index.js +++ b/projects/atomic/index.js @@ -4,7 +4,7 @@ const Lendings = [ "0xc1b677039892C048f2eFb7E9C5da1B51fDE92504" ]; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const balances = {}; const collateralBalance = await api.multiCall({ diff --git a/projects/auctus/index.js b/projects/auctus/index.js index 300b5f3d750..abba97069da 100644 --- a/projects/auctus/index.js +++ b/projects/auctus/index.js @@ -1,184 +1,99 @@ -const ADDRESSES = require('../helper/coreAssets.json') -/*================================================== - Modules - ==================================================*/ - - const sdk = require('@defillama/sdk'); - - const abi = require('./abi.json'); - const { default: BigNumber } = require('bignumber.js'); - const { getLogs } = require('../helper/cache/getLogs') - - const START_BLOCK = 10104891; - const FACTORY = '0x176b98ab38d1aE8fF3F30bF07f9B93E26F559C17'; - const POOLS_FACTORY = '0xe28520DDB1b419Ac37eCDBB2c0F97c8Cf079CCC3'; - const VAULTS = '0x2Ce43b4570Ad9DEAb8CFE6258B42DB7301e3b6C0'; - const ETHER_ADDRESS = ADDRESSES.null; - -/*================================================== - TVL - ==================================================*/ - - 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(timestamp, block, _, { 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 sdk.api.abi.multiCall({ - block, - calls: acoOptionsAddresses.map((option) => ({ - target: option - })), - abi: abi.collateral, - }); - - let collateralAddressMap = {} - - collateralResult.output.forEach((result) => { - collateralAddressMap[result.input.target] = result.output; - }); - - let totalCollateralResult = await sdk.api.abi.multiCall({ - block, - calls: acoOptionsAddresses.map((option) => ({ - target: option - })), - abi: abi.totalCollateral, - }); - - let balances = {} - balances[ETHER_ADDRESS] = "0" - - totalCollateralResult.output.forEach((result) => { - var colateralAddress = collateralAddressMap[result.input.target].toLowerCase() - if (!balances[colateralAddress]) { - balances[colateralAddress] = "0" - } - const existingBalance = new BigNumber(balances[colateralAddress]); - balances[colateralAddress] = existingBalance.plus(new BigNumber(result.output)).toFixed() - }); - - const newAcoPoolLogs = logsPromises[2]; - - let acoPools = {}; - newAcoPoolLogs.forEach((log) => { - const address = getPoolAddressFromNewAcoPoolLogData(log.data).toLowerCase(); - const underlyingAddress = getUnderlyingAddressFromNewAcoPoolLogData(log.topics[1]).toLowerCase(); - const strikeAssetAddress = getStrikeAssetAddressFromNewAcoPoolLogData(log.topics[2]).toLowerCase(); - acoPools[address] = {underlying: underlyingAddress, strikeAsset: strikeAssetAddress} - }); - - let poolCallsMap = Object.entries(acoPools).map(([poolAddress, poolData]) => ({ - target: poolData.underlying, - params: poolAddress, - })) - - poolCallsMap = poolCallsMap.concat(Object.entries(acoPools).map(([poolAddress, poolData]) => ({ - target: poolData.strikeAsset, - params: poolAddress, - }))) - - let erc20CallsMap = poolCallsMap.filter((f) => f.target !== ETHER_ADDRESS) - - let poolBalances = await sdk.api.abi.multiCall({ - block, - calls: erc20CallsMap, - abi: 'erc20:balanceOf', - }); - sdk.util.sumMultiBalanceOf(balances, poolBalances); - - let ethCallsMap = poolCallsMap.filter((f) => f.target === ETHER_ADDRESS) - await ( - Promise.all(ethCallsMap.map(async (ethCall) => { - const balance = (await sdk.api.eth.getBalance({target: ethCall.params, block})).output; - balances[ETHER_ADDRESS] = BigNumber(balances[ETHER_ADDRESS]).plus(new BigNumber(balance)).toFixed(); - })) - ); - - const setVaultLog = logsPromises[3]; - - let acoVaultsAddresses = []; - setVaultLog.forEach((log) => { - const address = getVaultAddressFromSetAcoVaultLogData(log.topics[1]); - acoVaultsAddresses.push(address) - }); - - let balancesResult = await sdk.api.abi.multiCall({ - block, - calls: acoVaultsAddresses.map((vault) => ({ - target: vault - })), - abi: abi.balance, - }); - - let tokensResult = await sdk.api.abi.multiCall({ - block, - calls: acoVaultsAddresses.map((vault) => ({ - target: vault - })), - abi: abi.token, - }); - - balancesResult.output.forEach((result, index) => { - var token = tokensResult.output[index].output.toLowerCase() - var balance = result.output; - balances[token] = BigNumber(balances[token]).plus(new BigNumber(balance)).toFixed(); - }); - - return balances; - } - -/*================================================== - Exports - ==================================================*/ - - module.exports = { - start: 1590014400, // 05/20/2020 @ 08:10:40pm (UTC) - ethereum: { tvl } - } +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: 1590014400, // 05/20/2020 @ 08:10:40pm (UTC) + ethereum: { tvl } +} diff --git a/projects/augmented-finance/index.js b/projects/augmented-finance/index.js index d98cb1356d9..a849bc956e3 100644 --- a/projects/augmented-finance/index.js +++ b/projects/augmented-finance/index.js @@ -16,7 +16,7 @@ Object.keys(config).forEach(chain => { const provider = config[chain] module.exports[chain] = { borrowed: () => ({}), // project abandoned? - tvl: async (_, _1, _2, { api }) => { + 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]}) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index 12ca29ebce3..35a31a7a561 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -16,7 +16,7 @@ const addresses = { bal80eth20: "0x5c6Ee304399DBdB9C8Ef030aB642B10820DB8F56", }; -async function tvl(_, block, _1, { api }) { +async function tvl(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) @@ -36,8 +36,8 @@ async function tvl(_, block, _1, { api }) { const poolTokensInfo = await api.multiCall({ calls: poolIds.map(poolId => ({ target: BALANCER_VAULT, params: poolId })), abi: abi.getPoolTokens, }) const balancesinStaking = await api.multiCall({ calls: pools.map(pool => ({ target: pool.token, params: pool.crvRewards })), abi: 'erc20:balanceOf', }) const totalSupplies = await api.multiCall({ calls: pools.map(pool => pool.lptoken), abi: 'erc20:totalSupply', }) - const { output: veBalTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veBal, block }) - const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veBal, owner: addresses.auraDelegate, block }) + const { output: veBalTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veBal, block: api.block }) + const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veBal, owner: addresses.auraDelegate, block: api.block }) const ratio = veBalance / veBalTotalSupply const ratios = balancesinStaking.map((v, i) => +totalSupplies[i] > 0 ? v / totalSupplies[i] : 0) const bal = await unwrapBalancerToken({ api, balancerToken: addresses.bal80eth20, owner: addresses.veBal, }) @@ -80,7 +80,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, voterProxy, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/aurelius/index.js b/projects/aurelius/index.js index 9a27de22e8b..3c39ed0d673 100644 --- a/projects/aurelius/index.js +++ b/projects/aurelius/index.js @@ -16,8 +16,7 @@ const strategiesVersioned = { const MONEY_MARKET_DATA_PROVIDER = '0xedB4f24e4b74a6B1e20e2EAf70806EAC19E1FA54'; -async function getCdpTvl() { - const { api } = arguments[3] +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 }) diff --git a/projects/autocoreDefi/index.js b/projects/autocoreDefi/index.js index 2569487a270..9386e3da0a6 100644 --- a/projects/autocoreDefi/index.js +++ b/projects/autocoreDefi/index.js @@ -28,7 +28,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { vaults } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/autofarm.js b/projects/autofarm.js index aec56e503b8..c27ac3639de 100644 --- a/projects/autofarm.js +++ b/projects/autofarm.js @@ -31,7 +31,7 @@ const config = { Object.keys(config).forEach(chain => { const masterchef = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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, }) diff --git a/projects/avatr/index.js b/projects/avatr/index.js index e73fd8cec0b..574576b8472 100644 --- a/projects/avatr/index.js +++ b/projects/avatr/index.js @@ -6,7 +6,7 @@ const { staking } = require("../helper/staking"); const FACTORY_CONTRACT = "0x498B8f1E767E2A32ab68C1301F1e98b59a34dA94"; const WETH_ADDRESS = ADDRESSES.ethereum.WETH; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: FACTORY_CONTRACT, diff --git a/projects/avax/index.js b/projects/avax/index.js index 9ebf3699299..9dd7d44aecc 100644 --- a/projects/avax/index.js +++ b/projects/avax/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owner: "0x8EB8a3b98659Cce290402893d0123abb75E3ab28", diff --git a/projects/avely-finance-staking/index.js b/projects/avely-finance-staking/index.js index 032a81e5c0a..611306f6b79 100644 --- a/projects/avely-finance-staking/index.js +++ b/projects/avely-finance-staking/index.js @@ -17,8 +17,7 @@ const tvlFields = { 'zilliqa': 'totalstakeamount', } -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { const query = prepareQuery(tvlFields) const data = await call(query) diff --git a/projects/axial/index.js b/projects/axial/index.js index 14d1bc103b2..b80afaa166f 100644 --- a/projects/axial/index.js +++ b/projects/axial/index.js @@ -4,7 +4,7 @@ const { sumTokensExport, sumTokens2 } = require("../helper/unwrapLPs"); const AXIAL_JLP_TOKEN = "0x5305A6c4DA88391F4A9045bF2ED57F4BF0cF4f62"; const AXIAL_MASTERCHEF_V3 = "0x958C0d0baA8F220846d3966742D4Fb5edc5493D3"; -async function tvl(_timestamp, _ethereumBlock, chainBlocks, { api }) { +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,] diff --git a/projects/azuro/index.js b/projects/azuro/index.js index 3a7033c73fc..300286103d5 100644 --- a/projects/azuro/index.js +++ b/projects/azuro/index.js @@ -10,7 +10,7 @@ const config = { }, } -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { return sumTokens2({ api, ...config[api.chain] }) } @@ -23,7 +23,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, tokensAndOwners = [] } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/babypigfinance/index.js b/projects/babypigfinance/index.js index 5d99c59023c..352af3a4703 100644 --- a/projects/babypigfinance/index.js +++ b/projects/babypigfinance/index.js @@ -1,24 +1,7 @@ -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2 } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x7f8ECcC1437aaCEFE533A6f1BfE2144b1d0d7D35" -const fbabypig = "0x3a76b1b3e827cc7350e66a854eced871a81a3527" -const fbabypigFtmLP = "0xc56a420486f547a5adc1dd64b4a13051baa4a8e0" - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, undefined, [fbabypig, fbabypigFtmLP]) - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom:{ - staking: staking(chef, fbabypig, "fantom"), - pool2: pool2(chef, fbabypigFtmLP, "fantom"), - tvl - }, -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x7f8ECcC1437aaCEFE533A6f1BfE2144b1d0d7D35', + nativeToken: '0x3a76b1b3e827cc7350e66a854eced871a81a3527', +}) \ No newline at end of file diff --git a/projects/backbonelabs/index.js b/projects/backbonelabs/index.js index f64d5459414..cd09b2040c6 100644 --- a/projects/backbonelabs/index.js +++ b/projects/backbonelabs/index.js @@ -28,7 +28,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { hub, token } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { if (!hub) return {} const { total_native } = await queryContractCosmos({ contract: hub, chain, data: { state: {} } }); api.add(token, total_native) diff --git a/projects/backed/index.js b/projects/backed/index.js index e75e61a0e92..97e5d428bae 100644 --- a/projects/backed/index.js +++ b/projects/backed/index.js @@ -18,7 +18,7 @@ const blacklistedOwners = [ '0x43624c744A4AF40754ab19b00b6f681Ca56F1E5b', // treasury/cold wallet ] -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { let tokens = [...contracts] if (api.chain === 'base') { tokens.push('0xC3cE78B037DDA1B966D31EC7979d3f3a38571A8E') diff --git a/projects/baker-guild-finance/index.js b/projects/baker-guild-finance/index.js index a1e3eb4c5ad..d7228b5ed11 100644 --- a/projects/baker-guild-finance/index.js +++ b/projects/baker-guild-finance/index.js @@ -1,59 +1,7 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const {addFundsInMasterChef} = require("../helper/masterchef"); -const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); -const {staking} = require("../helper/staking"); +const { masterchefExports, } = require('../helper/unknownTokens') -const token = "0xfe27133f2e8c8539363883d914bccb4b21ebd28a"; -const masterchef = "0x81A9A4e95443B505ee6b10227E61b74D39CDeBc0"; - -const wMEMO = "0x0da67235dd5787d67955420c84ca1cecd4e5bb3b" -const time = "avax:0xb54f16fb19478766a268f172c9480f8da1a7c9c3"; - -const wsSPA= "0x89346b51a54263cf2e92da79b1863759efa68692"; -const spa = "fantom:0x5602df4a94eb6c680190accfa2a475621e0ddbdc"; - -const translate = { - [ADDRESSES.fantom.DAI]:ADDRESSES.ethereum.DAI, - "0x9879abdea01a879644185341f7af7d8343556b7a":ADDRESSES.ethereum.TUSD, - "0x9f47f313acfd4bdc52f4373b493eae7d5ac5b765":"avax:" + ADDRESSES.avax.JOE, - "0x511d35c52a3c244e7b8bd92c0c297755fbd89212":"avax:" + ADDRESSES.avax.WAVAX -} - -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, masterchef, chainBlocks.fantom, "fantom", addr=> { - addr = addr.toLowerCase(); - if (translate[addr] !== undefined) { - return translate[addr]; - } - return `fantom:${addr}` - }, undefined, [token], true, true, token); - const memo = (await sdk.api.abi.call({ - target: wMEMO, - params: [balances["fantom:0xddc0385169797937066bbd8ef409b5b3c0dfeb52"]], - abi:'function wMEMOToMEMO(uint256 _amount) view returns (uint256)', - block: chainBlocks.avax, - chain: "avax", - })).output; - balances[time] = memo - delete balances["fantom:0xddc0385169797937066bbd8ef409b5b3c0dfeb52"]; - const sSPA = (await sdk.api.abi.call({ - target: wsSPA, - params:[balances["fantom:0x89346b51a54263cf2e92da79b1863759efa68692"]], - abi: 'function wOHMTosOHM(uint256 _amount) view returns (uint256)', - block: chainBlocks.fantom, - chain: "fantom" - })).output; - balances[spa] = sSPA; - delete balances["fantom:0x89346b51a54263cf2e92da79b1863759efa68692"]; - return balances; -} - -module.exports = { - fantom: { - tvl, - pool2: pool2BalanceFromMasterChefExports(masterchef, token, "fantom", addr=>`fantom:${addr}`), - staking: staking(masterchef, token, "fantom") - } -} \ No newline at end of file +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 index 809145849e6..2df658e5c05 100644 --- a/projects/bakerfi/index.js +++ b/projects/bakerfi/index.js @@ -16,6 +16,6 @@ module.exports = { Object.keys(config).forEach(chain => { const { vaults = [] } = config[chain] module.exports[chain] = { - tvl: async (_, _1, _2, { api }) => await getVaultTVL(api, vaults), + tvl: async (api) => await getVaultTVL(api, vaults), } }) diff --git a/projects/baklava-space/index.js b/projects/baklava-space/index.js index 8446eff2244..5dd0a92c962 100644 --- a/projects/baklava-space/index.js +++ b/projects/baklava-space/index.js @@ -57,7 +57,7 @@ module.exports = { bsc: { tvl: bscTvl } }; -async function fxTvl(_, _1, _2, { api }) { +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 }) @@ -65,7 +65,7 @@ async function fxTvl(_, _1, _2, { api }) { return sumTokens2({ api, resolveLP: true, }) } -async function baseTvl(_, _1, _2, { api }) { +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 }) @@ -73,7 +73,7 @@ async function baseTvl(_, _1, _2, { api }) { return sumTokens2({ api, resolveLP: true, }) } -async function bscTvl(_, _1, _2, { api }) { +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 }) @@ -83,7 +83,7 @@ async function bscTvl(_, _1, _2, { api }) { const { vaults, pgVaults, tjVaults, } = config.avax module.exports.avax = { - tvl: async (_, _b, _cb, { api, }) => { + 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() }) diff --git a/projects/balanced-bnUSD/index.js b/projects/balanced-bnUSD/index.js index c008a2e1d92..7fd8c430fa6 100644 --- a/projects/balanced-bnUSD/index.js +++ b/projects/balanced-bnUSD/index.js @@ -4,8 +4,7 @@ const { call, sumTokens } = require('../helper/chain/icx.js') const balancedLoansContract = 'cx66d4d90f5f113eba575bf793570135f9b10cece1'; const stabilityFundContract = 'cxa09dbb60dcb62fffbd232b6eae132d730a2aafa6'; -async function tvl() { - const { api } = arguments[3] +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 }) diff --git a/projects/balanced/index.js b/projects/balanced/index.js index 04f6f884efe..07078125586 100644 --- a/projects/balanced/index.js +++ b/projects/balanced/index.js @@ -4,7 +4,7 @@ const ADDRESSES = require('../helper/coreAssets.json'); const balancedDexContract = 'cxa0af3165c08318e988cb30993b3048335b94af6c'; -async function tvl(_, _b, _cb, { api, }) { +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) return sumTokens({ api, tokens, owner: balancedDexContract }) diff --git a/projects/bank-of-chain/index.js b/projects/bank-of-chain/index.js index d55917c7d96..bb3cbafa61b 100644 --- a/projects/bank-of-chain/index.js +++ b/projects/bank-of-chain/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const RISK_OFF_USD_VAULT = "0x30D120f80D60E7b58CA9fFaf1aaB1815f000B7c3" const RISK_OFF_ETH_VAULT = "0x8f0Cb368C63fbEDF7a90E43fE50F7eb8B9411746" -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const assets = await api.multiCall({ abi: 'uint256:totalAssets', calls: [RISK_OFF_USD_VAULT]}) api.add(ADDRESSES.ethereum.USDT, assets[0] / 1e12) const tokens = await api.call({ abi: 'address[]:getTrackedAssets', target: RISK_OFF_ETH_VAULT}) diff --git a/projects/bao-baskets/index.js b/projects/bao-baskets/index.js index ac8e32cc50e..648acd30efe 100644 --- a/projects/bao-baskets/index.js +++ b/projects/bao-baskets/index.js @@ -6,7 +6,7 @@ const { staking } = require("../helper/staking.js"); const veBaoAddress = "0x8Bf70DFE40F07a5ab715F7e888478d9D3680a2B6"; const baoAddress = "0xCe391315b414D4c7555956120461D21808A69F3A"; -const basketTvl = async (_, _1, _2, { api }) => { +const basketTvl = async (api) => { const baskets = [ "0x5ee08f40b637417bcC9d2C51B62F4820ec9cF5D8", // bSTBL ] diff --git a/projects/barnbridge/index.js b/projects/barnbridge/index.js index 2115149ee74..20a1724817b 100644 --- a/projects/barnbridge/index.js +++ b/projects/barnbridge/index.js @@ -13,7 +13,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/bas3d/index.js b/projects/bas3d/index.js index 8fe6c882087..87a1de65699 100644 --- a/projects/bas3d/index.js +++ b/projects/bas3d/index.js @@ -17,14 +17,14 @@ const vaults = [ ]; /*** Staking of native token BAS3D and BAS3D/ETH LP TVL Portion ***/ -const pool2 = async (timestamp, ethBlock, chainBlocks, { api }) => { +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 (timestamp, ethBlock, chainBlocks, { api }) => { +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) diff --git a/projects/base/index.js b/projects/base/index.js index ad9e944aba1..8758a738d6b 100644 --- a/projects/base/index.js +++ b/projects/base/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/base3d/index.js b/projects/base3d/index.js index 22d91dfb350..938d138e4cf 100644 --- a/projects/base3d/index.js +++ b/projects/base3d/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const BASE3D_MAIN_CONTRACT = '0xa73fab6e612aaf9125bf83a683aadcdd6511d3f0'; -async function tvl(_, __, ___, { api }) { +async function tvl(api) { return api.sumTokens({ owner: BASE3D_MAIN_CONTRACT, tokens: [ADDRESSES.null] }); } diff --git a/projects/basedfarm/index.js b/projects/basedfarm/index.js index 7bdc676dbcd..190371b908b 100644 --- a/projects/basedfarm/index.js +++ b/projects/basedfarm/index.js @@ -3,7 +3,7 @@ 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(_, _b, _cb, { api, }) { +async function tvl(api) { const tokens = [] let gotError = false let i = 0 @@ -19,7 +19,7 @@ async function tvl(_, _b, _cb, { api, }) { return api.sumTokens({ owner: GENESIS_REWARD_POOL, tokens }) } -async function pool2(timestamp, ethBlock, chainBlocks, { api }) { +async function pool2(api) { const pools = [ { // BasedRewardPool 'pool2Address': '0x5F45e48F9C053286cE9Ca08Db897f8b7eb3f7992', diff --git a/projects/baseline/index.js b/projects/baseline/index.js index 2cde2fd7c39..fa6eddf3d53 100644 --- a/projects/baseline/index.js +++ b/projects/baseline/index.js @@ -1,6 +1,6 @@ const BASELINE_CONTRACT = "0x14eB8d9b6e19842B5930030B18c50B0391561f27"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { //floor, anchor, discovery const positions = [0, 1, 2]; @@ -12,7 +12,7 @@ async function tvl(_, _1, _2, { api }) { api.addGasToken(baselinePositionBalances.map(i => i.reserves)) } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { const lentReserves = await api.call({ abi: abi.totalLentReserves, target: BASELINE_CONTRACT, }); api.addGasToken(lentReserves) } diff --git a/projects/basetasm/index.js b/projects/basetasm/index.js index 87d9b745c80..99f7277a05d 100644 --- a/projects/basetasm/index.js +++ b/projects/basetasm/index.js @@ -18,7 +18,7 @@ const Contracts = { }, }; -async function calcBaseStakingTvl(timestamp, ethBlock, chainBlocks, { api }) { +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, }) diff --git a/projects/baseyield/index.js b/projects/baseyield/index.js index 79b336b1577..e4205a2d144 100644 --- a/projects/baseyield/index.js +++ b/projects/baseyield/index.js @@ -8,7 +8,7 @@ const abis = { module.exports = { base: { - tvl: async (_, _b, _c, { api }) => { + 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 }) diff --git a/projects/bassexhcnage/index.js b/projects/bassexhcnage/index.js index 4f5519878c7..02afb7f36b7 100644 --- a/projects/bassexhcnage/index.js +++ b/projects/bassexhcnage/index.js @@ -9,7 +9,7 @@ const stakingContracts = [ ] const bass = '0x1F23B787053802108fED5B67CF703f0778AEBaD8' -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { +async function tvl(api) { const tokensAndOwners = await api.call({ target: asssets, abi: "function getAssets() view returns (address[][])", diff --git a/projects/baton/index.js b/projects/baton/index.js index a2a897c610b..9338d62f649 100644 --- a/projects/baton/index.js +++ b/projects/baton/index.js @@ -1,7 +1,7 @@ const { getLogs } = require("../helper/cache/getLogs"); const { nullAddress } = require("../helper/tokenMapping"); -async function tvl(timestamp, blockHeight, _2, { api }) { +async function tvl(api) { const batonFactory = "0xEB8D09235255b37fBC810df41Fa879225c04639a"; // get all the farms from the factory diff --git a/projects/beamswap-stableswap/index.js b/projects/beamswap-stableswap/index.js index fa5a101ca18..d89524257b4 100644 --- a/projects/beamswap-stableswap/index.js +++ b/projects/beamswap-stableswap/index.js @@ -4,7 +4,7 @@ const abi = { getTokens: "address[]:getTokens", } -async function tvl(_, _b, _2, { api }) { +async function tvl(api) { const pools = [ '0xE3f59aB3c37c33b6368CDF4f8AC79644011E402C', // New 3 pool (axlUSDC, whUSDC, xcUSDT) '0x09A793cCa9D98b14350F2a767Eb5736AA6B6F921', // nomad 3 pool diff --git a/projects/beethovenx-sftmx/index.js b/projects/beethovenx-sftmx/index.js index a4e6fe4451a..9d02242bdb6 100644 --- a/projects/beethovenx-sftmx/index.js +++ b/projects/beethovenx-sftmx/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const liquidStakingContract = "0xB458BfC855ab504a8a327720FcEF98886065529b"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supply = await api.call({ abi: "uint256:totalFTMWorth", target: liquidStakingContract, diff --git a/projects/beglobal/index.js b/projects/beglobal/index.js index 14e044847e0..3f604b4ae0c 100644 --- a/projects/beglobal/index.js +++ b/projects/beglobal/index.js @@ -1,30 +1,7 @@ -const sdk = require("@defillama/sdk"); -const {addFundsInMasterChef} = require("../helper/masterchef"); +const { masterchefExports, } = require('../helper/unknownTokens') -const token = "0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3"; -const masterchef = "0x7883aD0e83ce50f4820a862EdB56f756599A3248"; - -async function tvl(timestamp, chain, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, masterchef, chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`, undefined, [token]); - return balances; -} - -async function staking(timestamp, chain, chainBlocks) { - let balances = {}; - let balance = (await sdk.api.erc20.balanceOf({ - target: token, - owner: masterchef, - block: chainBlocks.bsc, - chain: "bsc" - })).output; - sdk.util.sumSingleBalance(balances, `bsc:${token}`, balance); - return balances; -} - -module.exports = { - bsc: { - tvl, - staking - } -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'bsc', + masterchef: '0x7883aD0e83ce50f4820a862EdB56f756599A3248', + nativeToken: '0xcF958B53EC9340886d72bb4F5F2977E8C2aB64D3', +}) \ No newline at end of file diff --git a/projects/bella.js b/projects/bella.js index 5e9a98bead1..55e063a1cbb 100644 --- a/projects/bella.js +++ b/projects/bella.js @@ -51,7 +51,7 @@ module.exports = { pool2, }, manta: { - pool2: async (_, _1, _2, { api }) => { + pool2: async (api) => { const STONE = '0xEc901DA9c68E90798BbBb74c11406A32A70652C3' const WUSDM = '0xbdAd407F77f44F7Da6684B416b1951ECa461FB07' const IZI = '0x91647632245cabf3d66121f86c387ae0ad295f9a' @@ -71,7 +71,7 @@ module.exports = { } }, mantle: { - pool2: async (_, _1, _2, { api }) => { + pool2: async (api) => { const swapPool = '0xC865dd3421a6DD706688955fe727C802A98c1df9'; const miningPool = '0xBF2b951Ae6af066A03Dbfa52b1329704D923980c'; @@ -113,7 +113,7 @@ module.exports = { }, }, era: { - pool2: async (_, _1, _2, { api }) => { + pool2: async (api) => { const pool2s = [ '0x9FB6Ca27D20E569E5c8FeC359C9d33D468d2803C', '0x3bd7a1D8c760d8be1bC57A3205cbFfBaDFB74D94' diff --git a/projects/beluga-dex/index.js b/projects/beluga-dex/index.js index 258f7c6442c..a3d9e608203 100644 --- a/projects/beluga-dex/index.js +++ b/projects/beluga-dex/index.js @@ -2,7 +2,7 @@ const { staking } = require("../helper/staking"); const { sumTokens2 } = require('../helper/unwrapLPs') const asssetsContract = "0xF6Eb0eE167e3b8a43E74999C47720140A9431448" -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { +async function tvl(api) { const tokensAndOwners = await api.call({ target: asssetsContract, abi: "function getAssets() view returns (address[][])", diff --git a/projects/beluga/index.js b/projects/beluga/index.js index e107317fb81..5a0737dfd0c 100644 --- a/projects/beluga/index.js +++ b/projects/beluga/index.js @@ -19,7 +19,7 @@ module.exports = {}; Object.keys(config).forEach(chain => { const { factory, fromBlock, topic, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} const data = await getLogs({ api, diff --git a/projects/benddao-ape-staking/index.js b/projects/benddao-ape-staking/index.js index 5c6cde163c1..52ddfa46cce 100644 --- a/projects/benddao-ape-staking/index.js +++ b/projects/benddao-ape-staking/index.js @@ -4,7 +4,7 @@ const sdk = require("@defillama/sdk"); module.exports = { ethereum: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const balances = {}; const addressMap = address[api.chain]; diff --git a/projects/benddao/helper/index.js b/projects/benddao/helper/index.js index d40d088365d..13b7c47d942 100644 --- a/projects/benddao/helper/index.js +++ b/projects/benddao/helper/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require("../../helper/unwrapLPs"); const abi = require("./abis"); const address = require("./address"); -async function tvl(chain, timestamp, chainBlocks, { api }) { +async function tvl(api) { const addressMap = address[api.chain]; const [simpleReservesData, bnftAssetList] = await Promise.all([ @@ -56,7 +56,7 @@ async function tvl(chain, timestamp, chainBlocks, { api }) { return balances; } -async function borrowed(chain, timestamp, chainBlocks, { api }) { +async function borrowed(api) { const balances = {}; const addressMap = address[api.chain]; diff --git a/projects/beta-finance-v2/index.js b/projects/beta-finance-v2/index.js index 33aec7913a4..b4578abb80c 100644 --- a/projects/beta-finance-v2/index.js +++ b/projects/beta-finance-v2/index.js @@ -23,12 +23,12 @@ 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 (_, _b, _cb, { api, }) => { + 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 (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/betafinance/index.js b/projects/betafinance/index.js index 93005f6d264..46cd9e775d9 100644 --- a/projects/betafinance/index.js +++ b/projects/betafinance/index.js @@ -62,7 +62,7 @@ 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 (_, _b, _cb, { api, }) => { + tvl: async (api) => { // const logs = await _getLogs(api) const logs = markets const underlyingTokens = logs.map(log => log.underlying) @@ -71,7 +71,7 @@ Object.keys(config).forEach(chain => { underlyingTokens.push(...underlyingTokens) return api.sumTokens({ tokensAndOwners2: [underlyingTokens, bTokens] }) }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { // const logs = await _getLogs(api) const logs = markets const underlyingTokens = logs.map(log => log.underlying) diff --git a/projects/betswirl/index.js b/projects/betswirl/index.js index 3cae7d5da13..7566436dd5c 100644 --- a/projects/betswirl/index.js +++ b/projects/betswirl/index.js @@ -18,6 +18,6 @@ module.exports = { }, ethereum: { tvl: () => ({}), - pool2: (_, __, ___, { api }) => sumTokens2({ api, owners: ['0xaeaF7948C38973908fFA97c92F3384595d057135'], tokens: ['0x26cc136e9b8fd65466f193a8e5710661ed9a9827'] }), + pool2: (api) => sumTokens2({ api, owners: ['0xaeaF7948C38973908fFA97c92F3384595d057135'], tokens: ['0x26cc136e9b8fd65466f193a8e5710661ed9a9827'] }), }, }; diff --git a/projects/bifi/index.js b/projects/bifi/index.js index 7adad78d2d1..ef8d29484af 100644 --- a/projects/bifi/index.js +++ b/projects/bifi/index.js @@ -61,7 +61,7 @@ module.exports = { Object.keys(chainPools).forEach(chain => { const pools = chainPools[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { return sumTokens2({ api, tokensAndOwners: Object.values(pools).map(({ pool, token }) => ([token, pool,])) }) } } diff --git a/projects/bifrost-staking/index.js b/projects/bifrost-staking/index.js index e5f7bfe87d6..c8f7390c9f5 100644 --- a/projects/bifrost-staking/index.js +++ b/projects/bifrost-staking/index.js @@ -18,7 +18,7 @@ module.exports = { }, }, ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const vETH = await api.call({ target: "0x4bc3263eb5bb2ef7ad9ab6fb68be80e43b43801f", abi: "uint256:totalSupply", diff --git a/projects/bigdataprotocol/index.js b/projects/bigdataprotocol/index.js index 0d3246080de..d9781cde695 100644 --- a/projects/bigdataprotocol/index.js +++ b/projects/bigdataprotocol/index.js @@ -1,30 +1,10 @@ const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const BDPMasterContract = "0x0De845955E2bF089012F682fE9bC81dD5f11B372"; -const BDP = "0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e"; +const { masterchefExports, } = require('../helper/unknownTokens') -const chain = 'ethereum' - -const ethTvl = async (_, block, _1, { api }) => { - const balances = {}; - /*** BDP Seed Pools (Data Vault seccion) TVL portion ***/ - await addFundsInMasterChef( - balances, - BDPMasterContract, - block, - chain, - addr => addr, - abi.poolInfo, - ); - return balances -}; - -module.exports = { - ethereum: { - staking: staking(BDPMasterContract, BDP), - tvl: ethTvl, - }, - methodology: `Counts liquidity in masterchef` -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'ethereum', + masterchef: '0x0De845955E2bF089012F682fE9bC81dD5f11B372', + nativeToken: '0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e', + poolInfoABI: abi.poolInfo, +}) \ No newline at end of file diff --git a/projects/binance-beth/index.js b/projects/binance-beth/index.js index 48188c8f664..a0d92a446fd 100644 --- a/projects/binance-beth/index.js +++ b/projects/binance-beth/index.js @@ -4,11 +4,11 @@ const sdk = require('@defillama/sdk') module.exports = { ethereum: { - tvl: async (timestamp) => { + 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'}) + [nullAddress]: await api.call({ target: ADDRESSES.bsc.BETH, abi: 'uint256:totalSupply' }) } } } diff --git a/projects/binaryx-platform/index.js b/projects/binaryx-platform/index.js index 20125421aae..d0d1f63e48b 100644 --- a/projects/binaryx-platform/index.js +++ b/projects/binaryx-platform/index.js @@ -7,7 +7,7 @@ const priceOracleAddress = '0x551C261eFcf109378D101de9A2741FB8078Abf45'; const excludedTokens = ['0xC478d5C1E7F19D035Ad330bE09cb84eB9582D7F1', '0xd2198dBB407f5405284d0A00eA6624D087b7098b', '0x228ce2B019B5a54C545E61490E5ba66E40915868'].map(i => i.toLowerCase()) -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const assets = (await api.call({ target: propertyFactoryAddress, abi: 'address[]:getAssets', })).filter(address => !excludedTokens.includes(address.toLowerCase())); const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: assets }) const prices = await api.multiCall({ abi: 'function latestPrice(address asset) view returns (uint256)', calls: assets, target: priceOracleAddress, }) diff --git a/projects/biswap-v3/index.js b/projects/biswap-v3/index.js index 21c99a28924..12ff31f5817 100644 --- a/projects/biswap-v3/index.js +++ b/projects/biswap-v3/index.js @@ -8,7 +8,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/bitBTC.js b/projects/bitBTC.js index 3dd7eecf91c..b8f05c16626 100644 --- a/projects/bitBTC.js +++ b/projects/bitBTC.js @@ -1,79 +1,52 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); +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 - } + { + 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 - } + { + address: '0x03bBa86E68c7DD733703cbCD44072082aF702d85', // farmV2 + token: bitANT + }, { + address: '0xEcbaFFaa5c4e94219f4C166DaC9D4A1520CAd827', // farmV3 + token: bitANT + }, { + address: '0x03bBa86E68c7DD733703cbCD44072082aF702d85', // farmV2 + token: bitBTC + }, { + address: '0xEcbaFFaa5c4e94219f4C166DaC9D4A1520CAd827', // farmV3 + token: bitBTC + } ]; -async function findBalances(contracts, block) { - const transform = i => `optimism:${i}`; - const balances = {}; - - const balanceOfs = (await sdk.api.abi.multiCall({ - calls: contracts.map((c) => ({ - target: c.token, - params: c.address - })), - abi: "erc20:balanceOf", - block, - chain: 'optimism' - })).output; - - for (let i = 0; i < contracts.length; i++) { - if (contracts[i].token == bitBTC) { - sdk.util.sumSingleBalance( - balances, - transform(WBTC), - balanceOfs[i].output / 10 ** 16 - ); - } else { - sdk.util.sumSingleBalance( - balances, - transform(contracts[i].token), - balanceOfs[i].output - ); - } - } - return balances; +async function findBalances(contracts, api) { + const tokensAndOwners = contracts.map(i => ([i.token, i.address])); + return sumTokens2({ api, tokensAndOwners }); } -async function tvl(timestamp, block, chainBlocks) { - return await findBalances(tvlContracts, chainBlocks.optimism); +async function tvl(api) { + return await findBalances(tvlContracts, api); } -async function staking(timestamp, block, chainBlocks) { - return await findBalances(stakingContracts, chainBlocks.optimism); +async function staking(api) { + return await findBalances(stakingContracts, api); } module.exports = { - optimism: { - tvl, - staking - } + optimism: { + tvl, + staking + } }; \ No newline at end of file diff --git a/projects/bitcoinswap/index.js b/projects/bitcoinswap/index.js index f30d07fec75..7ba6e1c7ae3 100644 --- a/projects/bitcoinswap/index.js +++ b/projects/bitcoinswap/index.js @@ -8,7 +8,7 @@ const poolHelpers = { 'ethereum': '0x2BDE204066a8994357Fe84BFa2a92DA013bfAbdb', } -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { const chain = api.chain const toa = [] const chunkSize = 10 diff --git a/projects/bitstaq/index.js b/projects/bitstaq/index.js index 26fcc99f9f4..fec86a8fc66 100644 --- a/projects/bitstaq/index.js +++ b/projects/bitstaq/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const mapLockedAmount = await api.call({ target: "0x000000000000000000000000000000000000d011", abi: "function getAccountTotalLockedGold(address) view returns (uint256)", diff --git a/projects/blackbird-finance/index.js b/projects/blackbird-finance/index.js index 439f241e909..4f928392c37 100644 --- a/projects/blackbird-finance/index.js +++ b/projects/blackbird-finance/index.js @@ -1,35 +1,7 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {addFundsInMasterChef} = require("../helper/masterchef"); -const {stakingUnknownPricedLP} = require("../helper/staking"); -const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); +const { masterchefExports, } = require('../helper/unknownTokens') -const bird = "0x9A3d8759174f2540985aC83D957c8772293F8646"; -const masterchef = "0xDF937094C6f2B757Dfd1265e5e1550Ea0055b27A"; - -const translate = { - [ADDRESSES.cronos.SHIB]: ADDRESSES.ethereum.INU, - [ADDRESSES.shiden.ETH]: "avax:" + ADDRESSES.avax.WAVAX, - [ADDRESSES.moonriver.USDT]: "fantom:" + ADDRESSES.fantom.WFTM, - "0x9b8077c6590b560f1a9d60512648277d29b35a3b": "polygon:0x8a953cfe442c5e8855cc6c61b1293fa648bae472", - [ADDRESSES.kcc.DAI]: "polygon:" + ADDRESSES.polygon.WMATIC_2, -} - -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, masterchef, chainBlocks.cronos, "cronos", addr=>{ - addr = addr.toLowerCase(); - if (translate[addr] !== undefined) { - return translate[addr] - } - return `cronos:${addr}` - }, undefined, [bird], true, true, bird); - return balances; -} - -module.exports = { - cronos: { - tvl, - staking: stakingUnknownPricedLP(masterchef, bird, "cronos", "0xa970c3B154dE5dbf0054f3dBF18AE2f92Fb937ae"), - pool2: pool2BalanceFromMasterChefExports(masterchef, bird, "cronos", addr=>`cronos:${addr}`) - } -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'cronos', + masterchef: '0xDF937094C6f2B757Dfd1265e5e1550Ea0055b27A', + nativeToken: '0x9A3d8759174f2540985aC83D957c8772293F8646', +}) \ No newline at end of file diff --git a/projects/blackpanther/index.js b/projects/blackpanther/index.js index 022a6256494..b7f3c8f6f38 100644 --- a/projects/blackpanther/index.js +++ b/projects/blackpanther/index.js @@ -28,7 +28,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { farms } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { await Promise.all(farms.map(farm => farm2Tvl(chain, farm, api))) return api.getBalances() } diff --git a/projects/blackpool.js b/projects/blackpool.js index d3557784848..4cd060fc108 100644 --- a/projects/blackpool.js +++ b/projects/blackpool.js @@ -17,7 +17,7 @@ const BPT_MUST_LP_cometh = '0xc8978a3de5ce54e1a2fe88d2036e2cc972238126' const BPT_WETH_LP_staking = '0xe3ae080d6a4f1ac5ababf514f871428342135877' const BPT_MUST_LP_staking = '0xe29544a8145978a2355e44fbac61f4748f0ecca6' -async function mainnetStaking(timestamp, ethBlock, chainBlocks, { api }) { +async function mainnetStaking(api) { return api.sumTokens({ tokensAndOwners: [ [BPT_mainnet, xBPT_mainnet], @@ -26,7 +26,7 @@ async function mainnetStaking(timestamp, ethBlock, chainBlocks, { api }) { }) } -async function polygonStaking(timestamp, ethBlock, chainBlocks, { api }) { +async function polygonStaking(api) { return sumTokens2({ api, resolveLP: true, tokensAndOwners: [ [BPT_WETH_LP_cometh, BPT_WETH_LP_staking], diff --git a/projects/blackrock-fund/index.js b/projects/blackrock-fund/index.js index 3ab987bde7f..7f9497e3071 100644 --- a/projects/blackrock-fund/index.js +++ b/projects/blackrock-fund/index.js @@ -5,7 +5,7 @@ const LP_TOKEN_CONTRACT = '0x4b398fCd7841412610b653B34E89c9b19a42EbFc'; const BTC_STAKING_CONTRACT = '0x1FDe0d2F44539789256D94D1784a86bF77D66DD0'; const LP_STAKING_CONTRACT = '0x1e4A10d18698E4450E13b4E8EF361a5841850611'; -async function staking(_, _1, _2, { api }) { +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, })); diff --git a/projects/bladeswap/index.js b/projects/bladeswap/index.js index 7fa3ee5ee3d..338edac24da 100644 --- a/projects/bladeswap/index.js +++ b/projects/bladeswap/index.js @@ -18,7 +18,7 @@ const cannonicalPoolsAbi = "function canonicalPools(address user, uint256 begin, Object.keys(config).forEach(chain => { const { factory, blacklistedTokens, vault, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let a let size = 20 diff --git a/projects/blazestake/index.js b/projects/blazestake/index.js index 6ddaf5ad9e5..44d2d23beef 100644 --- a/projects/blazestake/index.js +++ b/projects/blazestake/index.js @@ -1,6 +1,6 @@ const { getTokenSupply } = require("../helper/solana") -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const bSOL = 'bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1' const supply = await getTokenSupply(bSOL) api.add(bSOL, supply * 1e9) diff --git a/projects/blindex/index.js b/projects/blindex/index.js index 198be0ab88c..a75d4ea8a06 100644 --- a/projects/blindex/index.js +++ b/projects/blindex/index.js @@ -8,7 +8,7 @@ const chains = { }, }; -async function tvl(chainName, block,_, { api }) { +async function tvl(api) { const bdstables = await api.fetchList({ lengthAbi: abi.getBdStablesLength, itemAbi: abi.getBDStable, target: chains.rsk.bdxTokenAddress }) console.log(bdstables) await Promise.all(bdstables.map(async bdstable => { diff --git a/projects/blizzard/index.js b/projects/blizzard/index.js index e5c2d9a5056..c09e91d562e 100644 --- a/projects/blizzard/index.js +++ b/projects/blizzard/index.js @@ -11,7 +11,7 @@ const lpVaults = [ "0x336e16b1f3A10048F38367B16808CF70e9e34E50", ]; -const tvl = async (timestamp, ethBlock, chainBlocks, { api }) => { +const tvl = async (api) => { const balances = {}; const wantTokens = await api.multiCall({ abi: abi.want, calls: lpVaults}) diff --git a/projects/blockswap/index.js b/projects/blockswap/index.js index f821deda7b1..2c07aa45c83 100644 --- a/projects/blockswap/index.js +++ b/projects/blockswap/index.js @@ -9,7 +9,7 @@ const lsd_subgraph = 'https://lsd-subgraph.joinstakehouse.com' const stakehouse_subgraph = 'https://stakehouse-subgraph.joinstakehouse.com' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { let balances = {}; let query let results diff --git a/projects/bloom/index.js b/projects/bloom/index.js index 72a1e727116..9f6e6d01ea4 100644 --- a/projects/bloom/index.js +++ b/projects/bloom/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs'); const REGISTRY = '0xBbBe37FE58e9859b6943AC53bDf4d0827f7F0034'; -async function tvl(timestamp, block, chainBlocks, { api }) { +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]; diff --git a/projects/bluefin/index.js b/projects/bluefin/index.js index 7eb50ce7a16..a7e6f02c7a4 100644 --- a/projects/bluefin/index.js +++ b/projects/bluefin/index.js @@ -9,8 +9,7 @@ const Arbitrum_Config = { "endpoint": "0x52b5471d04487fb85B39e3Ae47307f115fe8733F", } -async function suiTvl() { - const { api } = arguments[3]; +async function suiTvl(api) { const object = await sui.getObject(SUI_BANK_ID); // div by 1e6 as usdc coin has 6 precision diff --git a/projects/blueshift/index.js b/projects/blueshift/index.js index fd9b3427f85..2903fd21474 100644 --- a/projects/blueshift/index.js +++ b/projects/blueshift/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const abi = require('./abi.json'); const { registry, manualPool, blueschain, } = require("./config.json"); -async function staking(_, _1, _2, { api }) { +async function staking(api) { const chain = api.chain if (!manualPool[chain]) return {} const value = await api.call({ abi: abi.BlueshiftEarning.getAccDeposit, target: manualPool[chain], }) @@ -12,7 +12,7 @@ async function staking(_, _1, _2, { api }) { return api.getBalances() } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const chain = api.chain const { reserve, tokens } = blueschain[chain] ?? {} diff --git a/projects/boba/index.js b/projects/boba/index.js index c340a42e4d4..e04c31c408e 100644 --- a/projects/boba/index.js +++ b/projects/boba/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/bond-protocol/index.js b/projects/bond-protocol/index.js index c305b25ee8b..cd1da4515f0 100644 --- a/projects/bond-protocol/index.js +++ b/projects/bond-protocol/index.js @@ -12,7 +12,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, tellerFactory, tellerBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tellerLogs = await getLogs({ api, target: tellerFactory, diff --git a/projects/bonqdao/index.js b/projects/bonqdao/index.js index a3633567f4f..45c4a562486 100644 --- a/projects/bonqdao/index.js +++ b/projects/bonqdao/index.js @@ -42,7 +42,7 @@ async function getPairTVL(balances, contract, api) { sdk.util.sumSingleBalance(balances, token1, uBals[1] * ratio, api.chain) } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const balances = {}; const tokenUnderlying = await api.multiCall({ diff --git a/projects/boofinance/index.js b/projects/boofinance/index.js index e63245dba66..3be9d7d35d2 100644 --- a/projects/boofinance/index.js +++ b/projects/boofinance/index.js @@ -74,12 +74,12 @@ async function calcTvl(block, chain, pool2, api) { return balances; } -async function tvl(timestamp, block, chainBlocks, { api }) { - return await calcTvl(chainBlocks.avax, "avax", false, api); +async function tvl(api) { + return await calcTvl(api.block, "avax", false, api); } -async function pool2(timestamp, block, chainBlocks, { api }) { - return await calcTvl(chainBlocks.avax, "avax", true, api); +async function pool2(api) { + return await calcTvl(api.block, "avax", true, api); } module.exports = { diff --git a/projects/borgswap/index.js b/projects/borgswap/index.js index 473f37c670c..e26643d27f6 100644 --- a/projects/borgswap/index.js +++ b/projects/borgswap/index.js @@ -1,32 +1,17 @@ const abi = require("./abi.json"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { unwrapLPsAuto } = require('../helper/unwrapLPs') const MASTERCHEF = "0x4de6c2de6b9eBD974738686C9be7a31597146Ac6"; const MASTERCHEF2 = "0x92eEd89eeC81d992FF9135Ee451008E93b83dD86"; const MASTERCHEF3 = "0xC8FF977ee4e5EdA2D650C0e2706995a1DbB4926b"; const MASTERCHEF4 = "0xaDb6C60f0D62d6e7583e4b7B3697aAAd723d4a85"; -const masterchefTvl = async (timestamp, ethBlock, { fantom: block }) => { - const chain = 'fantom' - const balances = {}; - const promises = [MASTERCHEF, MASTERCHEF2, MASTERCHEF3, MASTERCHEF4].map(currentMasterchef => addFundsInMasterChef( - balances, currentMasterchef, block, chain, undefined, - currentMasterchef === MASTERCHEF4 ? abi.masterFarmerPoolInfo : abi.poolInfo - )) +const { uniTvlExport, masterchefExports } = require('../helper/unknownTokens'); +const { mergeExports } = require("../helper/utils"); - await Promise.all(promises) - return unwrapLPsAuto({ balances, block, chain, }); -}; +const mcExports = [MASTERCHEF, MASTERCHEF2, MASTERCHEF3, MASTERCHEF4].map(masterchef => masterchefExports({ + chain: 'fantom', + masterchef, + poolInfoABI: masterchef === MASTERCHEF4 ? abi.masterFarmerPoolInfo : abi.poolInfo, +})) -const { uniTvlExport } = require('../helper/unknownTokens') -const chain = 'bsc' -const factory = '0x40dFC2f530469452D5A9bB33356B071Be0758c4c' // v2 factory address - -module.exports = { - methodology: 'MasterChef Contents plus tokens in dex pools', - fantom: { - tvl: masterchefTvl, - }, - ...uniTvlExport(chain, factory), -}; +module.exports = mergeExports([uniTvlExport('bsc', '0x40dFC2f530469452D5A9bB33356B071Be0758c4c'), ...mcExports]) \ No newline at end of file diff --git a/projects/bow-leverage/index.js b/projects/bow-leverage/index.js index ebe2726cde2..8148cc1777e 100644 --- a/projects/bow-leverage/index.js +++ b/projects/bow-leverage/index.js @@ -2,7 +2,7 @@ const { queryContract } = require("../helper/chain/cosmos"); const { getConfig } = require("../helper/cache"); const { fetchURL } = require("../helper/utils"); -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const chain = api.chain; const contracts = await getConfig( "kujira/contracts", diff --git a/projects/bracketX/index.js b/projects/bracketX/index.js index 3cff05b71cc..3d87f941d76 100644 --- a/projects/bracketX/index.js +++ b/projects/bracketX/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const WETH_ARBITRUM = ADDRESSES.arbitrum.WETH; const BRACKETX_PROXY_ARBITRUM = '0x12625Af4248E8137c6C58aed6eE804f8854669a6'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const collateralBalance = await api.call({ abi: 'erc20:balanceOf', target: WETH_ARBITRUM, diff --git a/projects/brewlabs/index.js b/projects/brewlabs/index.js index 0f7c826de5e..d6ab643eb46 100644 --- a/projects/brewlabs/index.js +++ b/projects/brewlabs/index.js @@ -53,7 +53,7 @@ chainsList.forEach(chain => { } }) -async function staking(_, _b, _cb, { api, }) { +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}) @@ -61,7 +61,7 @@ async function staking(_, _b, _cb, { api, }) { const poolInfoAbi = "function poolInfo(uint256) view returns (address lpToken, uint256, uint256, uint256, uint256, uint256, uint16, uint16)" -async function pool2(_, _b, _cb, { api, }) { +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/brickken/index.js b/projects/brickken/index.js index b1dce2e7a47..06ef14fd461 100644 --- a/projects/brickken/index.js +++ b/projects/brickken/index.js @@ -1,6 +1,6 @@ const ESCROW_LATEST_PRICE_ABI = "function issuances(uint256) view returns(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"; -async function tvl(_, _1, _2, { api }) { +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 }) diff --git a/projects/bril-finance/index.js b/projects/bril-finance/index.js index 4c1abadb624..ed98f63aaab 100644 --- a/projects/bril-finance/index.js +++ b/projects/bril-finance/index.js @@ -13,7 +13,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/brokkr/index.js b/projects/brokkr/index.js index 3078c2b8a5f..e78615b3ee6 100644 --- a/projects/brokkr/index.js +++ b/projects/brokkr/index.js @@ -25,7 +25,7 @@ const DCA_PORTFOLIO_CONTRACTS = { ] } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const indexTokens = INDEX_TOKEN_CONTRACT[api.chain] const dcas = DCA_PORTFOLIO_CONTRACTS[api.chain] const ownerTokens = [] diff --git a/projects/bt-finance.js b/projects/bt-finance.js index 2523f84577c..eb4282176ea 100644 --- a/projects/bt-finance.js +++ b/projects/bt-finance.js @@ -1,7 +1,7 @@ const { sumTokensExport } = require('./helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return api.sumTokens({ tokensAndOwners: [ ['0xd662908ada2ea1916b3318327a97eb18ad588b5d', '0xa7971b65d86020366e4b9a28e4089bc5b12481af'], diff --git a/projects/btcfi/index.js b/projects/btcfi/index.js index e9b5348d22c..6891155d9bf 100644 --- a/projects/btcfi/index.js +++ b/projects/btcfi/index.js @@ -11,7 +11,7 @@ const chainPools = { Object.keys(chainPools).forEach(chain => { const pools = chainPools[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { return sumTokens2({ api, tokensAndOwners: Object.values(pools).map(({ pool, token }) => ([token, pool,])) }) } } diff --git a/projects/bucket-protocol/index.js b/projects/bucket-protocol/index.js index 131f369b3d7..3e1f1899d54 100644 --- a/projects/bucket-protocol/index.js +++ b/projects/bucket-protocol/index.js @@ -50,7 +50,7 @@ const CETABLE_PSM = const STAPEARL_PSM = "0xccdaf635eb1c419dc5ab813cc64c728a9f5a851202769e254f348bff51f9a6dc"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const protocolFields = await sui.getDynamicFieldObjects({ parent: MAINNET_PROTOCOL_ID, }); diff --git a/projects/bunni/index.js b/projects/bunni/index.js index a27e1140f1c..3bf1f6cc3dc 100644 --- a/projects/bunni/index.js +++ b/projects/bunni/index.js @@ -37,7 +37,7 @@ const eventAbi = 'event NewBunni (address indexed token, bytes32 indexed bunni Object.keys(config).forEach(chain => { const { lens, fromBlock, factory } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} const logs = await getLogs({ api, diff --git a/projects/bunny/index.js b/projects/bunny/index.js index 15f82e56ebd..1d7bdefcc44 100644 --- a/projects/bunny/index.js +++ b/projects/bunny/index.js @@ -158,8 +158,8 @@ async function bsc(timestamp, ethBlock, chainBlock) { } } -async function polygon(timestamp, ethBlock, chainBlock, { api }) { - const block = chainBlock.polygon +async function polygon(api) { + const block = api.block const total = (await sdk.api.abi.multiCall({ calls: poolsPolygon.map( address => ({ target: dashboardPolygon, diff --git a/projects/buttonwood-button-wrappers/index.js b/projects/buttonwood-button-wrappers/index.js index 040fb0b423a..ec031553df1 100644 --- a/projects/buttonwood-button-wrappers/index.js +++ b/projects/buttonwood-button-wrappers/index.js @@ -35,7 +35,7 @@ const config = { Object.keys(config).forEach(chain => { const { buttonTokenFactories, unbuttonTokenFactories } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { // Collecting all the wrapper tokens const calls = []; diff --git a/projects/buttonwood-tranche/index.js b/projects/buttonwood-tranche/index.js index 0b5355811f7..10306a1f57f 100644 --- a/projects/buttonwood-tranche/index.js +++ b/projects/buttonwood-tranche/index.js @@ -30,7 +30,7 @@ async function getAllBondsFromBondFactory(api, bondFactory, fromBlock) { Object.keys(config).forEach(chain => { const { bondFactories, fromBlock } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { // Collecting all the bonds const allBonds = await Promise.all( diff --git a/projects/cakepie/index.js b/projects/cakepie/index.js index b453a3d7ae1..8ae73718456 100644 --- a/projects/cakepie/index.js +++ b/projects/cakepie/index.js @@ -4,7 +4,7 @@ const config = require("./config") const { sumTokens2, PANCAKE_NFT_ADDRESS } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const { PancakeStaking, CakepieReader, MasterCakepieAddress, CakeAddress, } = config[api.chain]; const masterChefV3 = await api.call({ abi: CakepieReaderAbi.masterChefv3, target: CakepieReader }) const mCake = await api.call({ abi: CakepieReaderAbi.mCake, target: CakepieReader }) diff --git a/projects/carbondefi/index.js b/projects/carbondefi/index.js index ad46c9f01e5..2d365672677 100644 --- a/projects/carbondefi/index.js +++ b/projects/carbondefi/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const controller = '0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: controller, diff --git a/projects/carmine-options/api.js b/projects/carmine-options/api.js index 82e5977750e..2c6718b5ccc 100644 --- a/projects/carmine-options/api.js +++ b/projects/carmine-options/api.js @@ -4,7 +4,7 @@ const abi = require("./abi"); const legacyAmm = "0x076dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa"; const amm = "0x047472e6755afc57ada9550b6a3ac93129cc4b5f98f51c73e0644d129fd208d9"; -async function tvl(_, _1, _2, { api }) { +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(',')) diff --git a/projects/cashcow/index.js b/projects/cashcow/index.js index 19bb4b5cf0b..c59fa600be4 100644 --- a/projects/cashcow/index.js +++ b/projects/cashcow/index.js @@ -9,7 +9,7 @@ const WBNBEquivalent = ADDRESSES.bsc.WBNB; const stakingChef = "0xbfcaB1627c4fB86A055DE4B8a56D46e625F51C0B"; -const stakingPools = async (timestamp, ethBlock, chainBlocks) => { +const stakingPools = async (_ts, _b, chainBlocks) => { const balances = {}; let transformAddress = i => `bsc:${i}`; @@ -26,8 +26,6 @@ const stakingPools = async (timestamp, ethBlock, chainBlocks) => { }; module.exports = { - timetravel: true, - doublecounted: false, bsc: { staking: stakingPools, ...compoundExports(comptroller, diff --git a/projects/cashcowprotocol/index.js b/projects/cashcowprotocol/index.js index f97730ffcc9..2b1bc848ffb 100644 --- a/projects/cashcowprotocol/index.js +++ b/projects/cashcowprotocol/index.js @@ -1,27 +1,7 @@ -const { addFundsInMasterChef } = require("../helper/masterchef"); +const { masterchefExports, } = require('../helper/unknownTokens') -const MasterChef = "0x94098E24FCf4701237CF58ef2A222C1cF5003c86"; - -const bscTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - let transformAddress = i => `bsc:${i}`; - - await addFundsInMasterChef( - balances, - MasterChef, - chainBlocks["bsc"], - "bsc", - transformAddress - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: bscTvl, - }, - methodology: - "We count liquidity on the Farms (LP Piars) through MasterChef Contract", -}; +module.exports = masterchefExports({ + chain: 'bsc', + masterchef: '0x94098E24FCf4701237CF58ef2A222C1cF5003c86', + nativeToken: '0xf823f18d13df1ffdced206708d389dd455bb802b' +}) \ No newline at end of file diff --git a/projects/cavel-re/index.js b/projects/cavel-re/index.js index 6d31e108064..70dfa68047d 100644 --- a/projects/cavel-re/index.js +++ b/projects/cavel-re/index.js @@ -6,7 +6,7 @@ const config = { Object.keys(config).forEach(chain => { const { pools } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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]])}) } diff --git a/projects/caviar-v2/index.js b/projects/caviar-v2/index.js index 798bffd0ba7..e0a0e4dd63d 100644 --- a/projects/caviar-v2/index.js +++ b/projects/caviar-v2/index.js @@ -1,7 +1,7 @@ const { getLogs, } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory = '0xa16be8d32934a9aab272102ac4bb890481f4074e' const logs = await getLogs({ api, diff --git a/projects/caviar/index.js b/projects/caviar/index.js index d9e7879574e..7128c19383b 100644 --- a/projects/caviar/index.js +++ b/projects/caviar/index.js @@ -2,7 +2,7 @@ const { getLogs, } = require('../helper/cache/getLogs') const sdk = require('@defillama/sdk') const { getUniqueAddresses } = require('../helper/utils') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory = '0xa964d6e8d90e5cd12592a8ef2b1735dae9ba0840' const logs = await getLogs({ api, @@ -14,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) { }) 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: _b, targets: getUniqueAddresses(pools) }) + 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, diff --git a/projects/caviarnine-lsu/index.js b/projects/caviarnine-lsu/index.js index 603ab6d06f5..c623ce996cd 100644 --- a/projects/caviarnine-lsu/index.js +++ b/projects/caviarnine-lsu/index.js @@ -1,6 +1,6 @@ const { get } = require('../helper/http') -async function tvl(_, _b, _cb, { api, }) { +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 diff --git a/projects/caviarnine-orderbook/index.js b/projects/caviarnine-orderbook/index.js index 309452ead68..87f7497cd39 100644 --- a/projects/caviarnine-orderbook/index.js +++ b/projects/caviarnine-orderbook/index.js @@ -1,6 +1,6 @@ const { get } = require('../helper/http') -async function tvl(_, _b, _cb, { api, }) { +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 diff --git a/projects/caviarnine-shapeliquidity/index.js b/projects/caviarnine-shapeliquidity/index.js index 7eeaa011035..9ef72f94c43 100644 --- a/projects/caviarnine-shapeliquidity/index.js +++ b/projects/caviarnine-shapeliquidity/index.js @@ -1,6 +1,6 @@ const { get } = require('../helper/http') -async function tvl(_, _b, _cb, { api, }) { +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 diff --git a/projects/cdc-eth/index.js b/projects/cdc-eth/index.js index 22c5caf4fee..26e8bbf19e2 100644 --- a/projects/cdc-eth/index.js +++ b/projects/cdc-eth/index.js @@ -1,10 +1,9 @@ -const sdk = require("@defillama/sdk") const token = '0x7a7c9db510ab29a2fc362a4c34260becb5ce3446' module.exports = { cronos: { - tvl: async (_, block, chainBlocks, { api }) => ({ - ["cronos:" + token]: (await sdk.api.erc20.totalSupply({ target: token, chain:"cronos", block: chainBlocks.cronos})).output + tvl: async (api) => ({ + ["cronos:" + token]: (await api.call({ target: token, abi: "erc20:totalSupply", })) }) } } \ No newline at end of file diff --git a/projects/cega/evm.js b/projects/cega/evm.js index 888dd78d52f..0adad778419 100644 --- a/projects/cega/evm.js +++ b/projects/cega/evm.js @@ -61,7 +61,7 @@ async function getSumLOVProductQueuedDeposits(lovProducts, api) { return await api.multiCall({ target: CEGA_PRODUCT_VIEWER, abi: abi.getLOVProductQueuedDeposits, calls }) } -async function getEthereumTvl(_, _1, _2, { api }) { +async function getEthereumTvl(api) { const { usdcAddress } = config[api.chain] const lovProducts = await getProducts(api); const calls = [ @@ -79,7 +79,7 @@ async function getEthereumTvl(_, _1, _2, { api }) { return api.getBalances() } -async function getBorrowedTvl(_, _1, _2, { api }) { +async function getBorrowedTvl(api) { const { usdcAddress } = config[api.chain] const results = await Promise.all([ getSumFCNProductDeposits(FCN_BOND_AND_OPTIONS_ADDRESSES, api) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 51799a40a45..640767ecb3f 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -42,7 +42,7 @@ module.exports = { methodology: "Counts the lamports in each coin container in the Cellena contract account.", aptos: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const data = await _getResources() const coinContainers = data.filter(reserveContrainerFilter) .map((i) => ({ diff --git a/projects/cemetery/index.js b/projects/cemetery/index.js index 76ffc87efa7..2658153249c 100644 --- a/projects/cemetery/index.js +++ b/projects/cemetery/index.js @@ -1,31 +1,11 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') - - -const hauntchef = "0xe5483461a024524e0a76B935A56B8D161E3F0D82" -const haunt = "0x8bD04EE83a6076d1216237C8B91f7EeE3AccaB35" -const hauntFtmLP = "0xd366d2af991755c0bd4f18ec13a3169a3d8a027e" -const hauntUsdcLP = "0x95b70d9ed25ffe2560b8ab182ec71bc712f55c72"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, hauntchef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [haunt, hauntFtmLP, hauntUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - hallmarks: [ - [1646524800,"Rug Pull"] - ], - fantom: { - tvl, - staking: staking(hauntchef, haunt, "fantom"), - pool2: pool2Exports(hauntchef, [hauntFtmLP, hauntUsdcLP], "fantom"), - }, - -} +const { masterchefExports, } = require('../helper/unknownTokens') + +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xe5483461a024524e0a76B935A56B8D161E3F0D82', + nativeToken: '0x8bD04EE83a6076d1216237C8B91f7EeE3AccaB35' +}) +module.exports.hallmarks = [ + [1646524800,"Rug Pull"] +] diff --git a/projects/cennz-bridge.js b/projects/cennz-bridge.js index f766ef72c61..076c7a10ec4 100644 --- a/projects/cennz-bridge.js +++ b/projects/cennz-bridge.js @@ -1,17 +1,8 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const target = '0x76BAc85e1E82cd677faa2b3f00C4a2626C4c6E32'; -const WETH = ADDRESSES.ethereum.WETH; - -async function tvl(timestamp, block, _) { - return { [ WETH ]: - (await sdk.api.eth.getBalance({ target, block })).output - }; -} +const { sumTokensExport, nullAddress } = require('./helper/unwrapLPs'); module.exports = { - methodology: "Tracks funds locked in the ERC20Peg contract on Ethereum", - ethereum: { - tvl - } -}; // node test.js projects/cennz-bridge.js \ No newline at end of file + 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/cetus/index.js b/projects/cetus/index.js index a0b12ea35e8..4fb1c536ab5 100644 --- a/projects/cetus/index.js +++ b/projects/cetus/index.js @@ -29,8 +29,7 @@ async function tvl() { } } -async function suiTVL() { - const { api } = arguments[3] +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) @@ -42,8 +41,7 @@ async function suiTVL() { }) } -async function staking() { - const { api } = arguments[3] +async function staking(api) { const xCetusManager = '0x838b3dbade12b1e602efcaf8c8b818fae643e43176462bf14fd196afa59d1d9d' const xCetusManagerInfo = await sui.getObject(xCetusManager) const xCetusPool = { diff --git a/projects/chaingpt/index.js b/projects/chaingpt/index.js index c60dc704433..ea926804928 100644 --- a/projects/chaingpt/index.js +++ b/projects/chaingpt/index.js @@ -6,7 +6,7 @@ const cgpt = "0x9840652DC04fb9db2C43853633f0F62BE6f00f98"; const stakingpool1 = "0x765a6ee976137801F2661c3644E1fde369A8ED18"; const stakingpool2 = "0x62A402DEf6Ca37E9CA7a544bE34954748088CCEE"; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory0 = '0xfb8c571f7152d2e092b0e650731c4d599cd514e1' const factory = '0xc263365D628568C23d61BDDa24C8EB27CEF4E917' const logs = await getLogs({ diff --git a/projects/changex/index.js b/projects/changex/index.js index 708be7af618..58a3e4988df 100644 --- a/projects/changex/index.js +++ b/projects/changex/index.js @@ -7,7 +7,7 @@ const CHANGEX_TOKEN_CONTRACT_HYDRA = "bd3c617d271b3467bd9b83dda73c9288de2fb0c9"; const CHANGEX_TOKEN_STAKING_CONTRACT_HYDRA = "72c9a79baa83e698bf1dbf44d26e5bdca2d2bab1"; -async function tvl(_, _1, _2, { api }) { +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 diff --git a/projects/charm-fi-vaults-v2/index.js b/projects/charm-fi-vaults-v2/index.js index 6cb5ed7814d..9eb56af75a7 100644 --- a/projects/charm-fi-vaults-v2/index.js +++ b/projects/charm-fi-vaults-v2/index.js @@ -14,7 +14,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory = '0x5B7B8b487D05F77977b7ABEec5F922925B9b2aFa' } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/chickenswap/index.js b/projects/chickenswap/index.js index f7faa40a38a..a26158a4c6d 100644 --- a/projects/chickenswap/index.js +++ b/projects/chickenswap/index.js @@ -18,7 +18,7 @@ const kfcVaults = [ /*** Vaults TVL Portion ***/ -const ethTvl = async (timestamp, block, chainBlocks) => { +const ethTvl = async (_ts, block, chainBlocks) => { const balances = {}; await addFundsInMasterChef( diff --git a/projects/chromatic-protocol/index.js b/projects/chromatic-protocol/index.js index 56a44a83938..3ad34354adb 100644 --- a/projects/chromatic-protocol/index.js +++ b/projects/chromatic-protocol/index.js @@ -31,7 +31,7 @@ const config = { Object.keys(config).forEach(chain => { const { tokens, vault, pools, marketFactory, lpRegistry } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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() diff --git a/projects/cian-automation/index.js b/projects/cian-automation/index.js index a556f2d03b3..66e63f06680 100644 --- a/projects/cian-automation/index.js +++ b/projects/cian-automation/index.js @@ -34,7 +34,7 @@ const config = { Object.keys(config).forEach(chain => { const { factories, tokens } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const owners = [] for (const { factory, fromBlock, } of factories) { const mainAccounts = await getLogs({ diff --git a/projects/cian-lst/index.js b/projects/cian-lst/index.js index b068f2392e9..426b6bedf83 100644 --- a/projects/cian-lst/index.js +++ b/projects/cian-lst/index.js @@ -16,7 +16,7 @@ module.exports = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { return api.erc4626Sum({ calls: config[chain], isOG4626: true }) } } diff --git a/projects/citadao/index.js b/projects/citadao/index.js index 9c0a27bb4e2..021b7922986 100644 --- a/projects/citadao/index.js +++ b/projects/citadao/index.js @@ -1,7 +1,7 @@ const { staking } = require('../helper/staking') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens2({ api, resolveUniV3: true, diff --git a/projects/ckbtc/index.js b/projects/ckbtc/index.js index 8e6b96f0198..94bca327672 100644 --- a/projects/ckbtc/index.js +++ b/projects/ckbtc/index.js @@ -1,7 +1,7 @@ const { get } = require('../helper/http') async function tvl(ts) { - var end = 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() diff --git a/projects/cketh/index.js b/projects/cketh/index.js index 091b61176d0..d9e7d0c8baa 100644 --- a/projects/cketh/index.js +++ b/projects/cketh/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0xb25eA1D493B49a1DeD42aC5B1208cC618f9A9B80"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/claimswap-v2/index.js b/projects/claimswap-v2/index.js index cbd65db719e..b4c15c97080 100644 --- a/projects/claimswap-v2/index.js +++ b/projects/claimswap-v2/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require("../helper/unwrapLPs") -async function tvl(_, _b, _cb, { api, }) { +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]]) diff --git a/projects/claystack-matic/index.js b/projects/claystack-matic/index.js index 07692049e37..8f781780c46 100644 --- a/projects/claystack-matic/index.js +++ b/projects/claystack-matic/index.js @@ -5,7 +5,7 @@ const clayAddresses = { clayMatic: "0x91730940DCE63a7C0501cEDfc31D9C28bcF5F905", }; -async function getTvlOnEthereum(_, block, _1, { api }) { +async function getTvlOnEthereum(api) { const maticDeposits = await api.call({ target: clayAddresses.clayMatic, abi: abi.funds, }) api.add(ADDRESSES.ethereum.MATIC, maticDeposits.currentDeposit) diff --git a/projects/claystack/index.js b/projects/claystack/index.js index f77c1f98800..bb3372f299f 100644 --- a/projects/claystack/index.js +++ b/projects/claystack/index.js @@ -5,7 +5,7 @@ const clayAddresses = { clayEth: "0x331312DAbaf3d69138c047AaC278c9f9e0E8FFf8" }; -async function getTvlOnEthereum(_, block, _1, { api }) { +async function getTvlOnEthereum(api) { const ethDeposits = await api.call({ target: clayAddresses.clayEth, abi: abi.funds, }) api.add(ADDRESSES.null, ethDeposits.currentDeposit) diff --git a/projects/clearpool/index.js b/projects/clearpool/index.js index ba907582d00..10d4e7da3bd 100644 --- a/projects/clearpool/index.js +++ b/projects/clearpool/index.js @@ -23,7 +23,7 @@ const config = { Object.keys(config).forEach(chain => { const { fromBlock, factory } = config[chain] - const tvl = async (timestamp, block, chainBlocks, { api }) => { + const tvl = async (api) => { const { pools, tokens } = await _getLogs(api) return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) } @@ -41,7 +41,7 @@ Object.keys(config).forEach(chain => { return { pools, tokens } } - const borrowed = async (timestamp, block, _, { api }) => { + const borrowed = async (api) => { const { pools, tokens } = await _getLogs(api) const bals = await api.multiCall({ abi: abi.borrows, calls: pools }) api.addTokens(tokens, bals) diff --git a/projects/clever/index.js b/projects/clever/index.js index 06279aee253..fd44aec88b7 100644 --- a/projects/clever/index.js +++ b/projects/clever/index.js @@ -29,7 +29,7 @@ async function getClevers(balances, api) { }) } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { let balances = {} const [totalLockedGlobal] = await Promise.all([ api.call({ diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js index 0edfbbf5c60..82d65f0912a 100644 --- a/projects/clip-finance/index.js +++ b/projects/clip-finance/index.js @@ -7,7 +7,7 @@ const config = { }, } -const tvl = async (_, _b, _cb, { api }) => { +const tvl = async (api) => { const { vaultRegistry } = config[api.chain]; const vaultDatas = await api.call({ abi: abis.getVaults, target: vaultRegistry }) const vaults = vaultDatas.map(i => i.vault) diff --git a/projects/clipper/index.js b/projects/clipper/index.js index 2268de0bb18..4636aeaa1d9 100644 --- a/projects/clipper/index.js +++ b/projects/clipper/index.js @@ -1,7 +1,7 @@ const { getConfig } = require('../helper/cache') const { nullAddress } = require('../helper/tokenMapping') -async function tvl(time, _block, chainBlocks, { api }) { +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] diff --git a/projects/clober/index.js b/projects/clober/index.js index 7e7cf68b7e6..92233ff2855 100644 --- a/projects/clober/index.js +++ b/projects/clober/index.js @@ -31,7 +31,7 @@ async function fetchTokenAddressesV1_1(api, chainId){ }) } -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const chainId = await api.getChainId() let tokenAddresses = [...await fetchTokenAddressesV1_0(api, chainId), ...await fetchTokenAddressesV1_1(api, chainId)] tokenAddresses = tokenAddresses.flat() diff --git a/projects/coffin/index.js b/projects/coffin/index.js index fac91276594..e7a07d12c91 100644 --- a/projects/coffin/index.js +++ b/projects/coffin/index.js @@ -1,54 +1,15 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); -const { addFundsInMasterChef } = require("../helper/masterchef"); +const { masterchefExports } = require('../helper/unknownTokens'); +const { mergeExports } = require('../helper/utils'); const MasterChefV1Contract = "0x155482Bd4e5128082D61a2384935D4BBDcb0E7a7"; const MasterChefV2Contract = "0x2447115E9Ba73bd2877821BF69E09259664a2bd5"; const stakingContract = "0x61Befe6E5f20217960bD8659cd3113CC1ca67d2F"; -const WFTM = ADDRESSES.fantom.WFTM; -const ftmTvl = async (timestamp, ethBlock, chainBlocks) => { - - const balances = {}; - - let transformAddress = i => `fantom:${i}`; - - await addFundsInMasterChef( - balances, - MasterChefV1Contract, - chainBlocks["fantom"], - "fantom", - transformAddress - ); - - - - return balances; -}; - -const v2TVL = async (timestamp, ethBlock, chainBlocks) => { - let balances = {}; - let transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef( - balances, - MasterChefV2Contract, - chainBlocks["fantom"], - "fantom", - transformAddress - ); - - return balances; -} - - - -module.exports = { - misrepresentedTokens: true, - fantom: { - staking: staking(stakingContract, WFTM, "fantom"), - tvl: sdk.util.sumChainTvls([ftmTvl, v2TVL]), - }, - methodology: "We count liquidity on the Farms through MasterChef and MasterChefv2 Contract", -}; +module.exports = mergeExports([ + masterchefExports({ chain: 'fantom', masterchef: MasterChefV1Contract, }), + masterchefExports({ chain: 'fantom', masterchef: MasterChefV2Contract, }), + { fantom: { staking: staking(stakingContract, ADDRESSES.fantom.WFTM) } }, +]) diff --git a/projects/cog-finance/index.js b/projects/cog-finance/index.js index ee3fa02c5af..696722fea84 100644 --- a/projects/cog-finance/index.js +++ b/projects/cog-finance/index.js @@ -21,7 +21,7 @@ async function _getLogs(api, factory, fromBlock,) { Object.keys(config).forEach(chain => { const factories = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = [] for (const { factory, fromBlock, } of factories) { const _logs = await _getLogs(api, factory, fromBlock,) @@ -30,7 +30,7 @@ Object.keys(config).forEach(chain => { const ownerTokens = logs.map(i => [[i.asset, i.collateral], i.pair]) return sumTokens2({ api, ownerTokens, }) }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const logs = [] for (const { factory, fromBlock, } of factories) { const _logs = await _getLogs(api, factory, fromBlock,) diff --git a/projects/coinscope/index.js b/projects/coinscope/index.js index fef26fb8afa..f3755f8283f 100644 --- a/projects/coinscope/index.js +++ b/projects/coinscope/index.js @@ -21,7 +21,7 @@ const lockerFactories = { Object.keys(lockerFactories).forEach(chain => { const factory = lockerFactories[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let fetchLength = 100 let page = 0 const tokensAndOwners = [] diff --git a/projects/collectionxyz/index.js b/projects/collectionxyz/index.js index ad8c08cfbbc..17c0ddd6bdf 100644 --- a/projects/collectionxyz/index.js +++ b/projects/collectionxyz/index.js @@ -19,7 +19,7 @@ async function getPoolLogs(api, factory, startBlock) { }); } -async function getTotalValueLocked(_, _b, _cb, { api }) { +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]; diff --git a/projects/comb/index.js b/projects/comb/index.js index d8150e82c11..785d90d58a3 100644 --- a/projects/comb/index.js +++ b/projects/comb/index.js @@ -9,7 +9,7 @@ const vaults = [ '0x77ce0b0e9e629474c69a5d8d5fd9c3e6113dd058', ] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const balances = {} let pools = await get('https://comb-breakdown.herokuapp.com/pools'); const prices = {} diff --git a/projects/concentrator/index.js b/projects/concentrator/index.js index dc7ef51a1c9..47e722850ca 100644 --- a/projects/concentrator/index.js +++ b/projects/concentrator/index.js @@ -53,7 +53,8 @@ async function getFarmLpTvl(balances, block) { sdk.util.sumSingleBalance(balances, farmData.addresses.lpToken, ctrLpTotalSupply, chain) } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { + const block = api.block let balances = {} await Promise.all([ getBalancerLpTvl(balances, block), diff --git a/projects/concordex-io/index.js b/projects/concordex-io/index.js index 39ab729a2a7..fa568826f73 100644 --- a/projects/concordex-io/index.js +++ b/projects/concordex-io/index.js @@ -1,6 +1,6 @@ const { post } = require('../helper/http') -async function tvl(_, _b, _cb, { api, }) { +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 { diff --git a/projects/config/onx/ethereum/index.js b/projects/config/onx/ethereum/index.js index c757e25111d..64d49959e7e 100644 --- a/projects/config/onx/ethereum/index.js +++ b/projects/config/onx/ethereum/index.js @@ -5,12 +5,11 @@ const ADDRESSES = require('../../../helper/coreAssets.json') const getEthereumStaking = staking(tokenAddresses.sOnx, tokenAddresses.onx) -const getEthereumBorrows = async (_, _1, _2, { api }) => { +const getEthereumBorrows = async (api) => { api.add(ADDRESSES.null, await api.call({ target: tokenAddresses.pool, abi: 'uint256:totalBorrow' })) } -async function getEthereumPoolTvl() { - const { api } = arguments[3] +async function getEthereumPoolTvl(api) { const pools = ['0xAdb6d1cB866a52C5E8C1e79Ff8e0559c12F4D7a3'] const tokens = ['0x0652687e87a4b8b5370b05bc298ff00d205d9b5f'] const bals = await api.multiCall({ abi: 'uint256:underlyingBalanceWithInvestment', calls: pools }) @@ -18,7 +17,7 @@ async function getEthereumPoolTvl() { return api.sumTokens({ owners: [tokenAddresses.onxFarm, tokenAddresses.onxTripleFarm], tokens: ['0x0652687e87a4b8b5370b05bc298ff00d205d9b5f', tokenAddresses.onxWethSushiPair] }) } -async function ethTvl(_, _b, _cb, { api, }) { +async function ethTvl(api) { await Promise.all([addFarmTvl, addOnePoolTvl, addVaultTvl, addOneVaultTvl, ethStakeTvl ].map(i => i())) async function ethStakeTvl() { diff --git a/projects/conic-omnipool/index.js b/projects/conic-omnipool/index.js index b232389e09d..91b8b097b84 100644 --- a/projects/conic-omnipool/index.js +++ b/projects/conic-omnipool/index.js @@ -6,7 +6,7 @@ module.exports = { [1689937200,"ETH Omnipool Hacked"] ], ethereum: { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} const poolsV1 = (await api.call({ abi: 'address[]:listPools', target: '0x013A3Da6591d3427F164862793ab4e388F9B587e' })).filter(i => i !== '0xb652710eab40B6Ed32D6c32053fC37eF234562c2') const poolsV2 = (await api.call({ abi: 'address[]:listPools', target: '0x2790EC478f150a98F5D96755601a26403DF57EaE' })) diff --git a/projects/connext/index.js b/projects/connext/index.js index 5fc14139b1d..848b6c3e4a8 100644 --- a/projects/connext/index.js +++ b/projects/connext/index.js @@ -30,7 +30,7 @@ async function getAssetIds(chainId) { function chainTvl(chain) { - return async (time, ethBlock,_, { api }) => { + return async (api) => { const chainId = api.chainId const owners = await getDeployedContractAddress(chainId) diff --git a/projects/contango-v2/index.js b/projects/contango-v2/index.js index 7df8d7d6c82..8cd411efc68 100644 --- a/projects/contango-v2/index.js +++ b/projects/contango-v2/index.js @@ -46,14 +46,14 @@ module.exports = { Object.keys(config).forEach((chain) => { const { contango, contango_lens, grapUrl } = config[chain]; module.exports[chain] = { - tvl: async (_1, _2, _3, { api }) => { + tvl: async (api) => { await Promise.all([ positionsTvl(api, contango_lens, grapUrl, false), vaultTvl(api, contango, grapUrl), ]); return api.getBalances(); }, - borrowed: async (_1, _2, _3, { api }) => + borrowed: async (api) => positionsTvl(api, contango_lens, grapUrl, true), }; }); diff --git a/projects/contango/index.js b/projects/contango/index.js index 76f24a1a036..546dd90a853 100644 --- a/projects/contango/index.js +++ b/projects/contango/index.js @@ -16,8 +16,8 @@ const config = { Object.keys(config).forEach(chain => { const { ladle, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (timestamp, _b, chainBlocks, { api }) => { - const block = chainBlocks[chain] + tvl: async (api) => { + const block = api.block const cauldron = await sdk.api2.abi.call({ target: ladle, abi: 'address:cauldron', diff --git a/projects/contrax-finance/index.js b/projects/contrax-finance/index.js index 6c3906e8f32..02bcc9d650e 100644 --- a/projects/contrax-finance/index.js +++ b/projects/contrax-finance/index.js @@ -41,7 +41,7 @@ async function getGMXData(api) { api.add(GMX, balance); } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { let tokens = await api.multiCall({ abi: "address:token", calls: Vaults }); // Controllers let bals = await api.multiCall({ diff --git a/projects/copra-finance/index.js b/projects/copra-finance/index.js index c8f3ca7f923..60e2c24e517 100644 --- a/projects/copra-finance/index.js +++ b/projects/copra-finance/index.js @@ -1,6 +1,6 @@ const { getLogs, } = require("../helper/cache/getLogs"); -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const { factory, fromBlock } = config[api.chain]; const logs = await getLogs({ diff --git a/projects/counterstake/index.js b/projects/counterstake/index.js index 00162062ab8..0c534232f2b 100644 --- a/projects/counterstake/index.js +++ b/projects/counterstake/index.js @@ -72,7 +72,7 @@ async function totalObyteTvl(timestamp) { } } -const totalTVLByEVMNetwork = async (_, _1, _2, { api }) => { +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); diff --git a/projects/coupon-finance/index.js b/projects/coupon-finance/index.js index 01878bd7245..203f4943404 100644 --- a/projects/coupon-finance/index.js +++ b/projects/coupon-finance/index.js @@ -28,7 +28,7 @@ const CONTRACT_INFOS = { } } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const chain = api.chain const CONTRACT_INFO = CONTRACT_INFOS[chain] const [registerEvents, setLoanConfigurationEvents] = await Promise.all([ diff --git a/projects/cozy-v2/index.js b/projects/cozy-v2/index.js index 48aa5410dcf..ae9f72887c5 100644 --- a/projects/cozy-v2/index.js +++ b/projects/cozy-v2/index.js @@ -11,7 +11,7 @@ module.exports = { Object.keys(config).forEach(chain => { const {factory, fromBlock} = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/creamswap/index.js b/projects/creamswap/index.js index dcbbe23f00d..7c8d5f64de6 100644 --- a/projects/creamswap/index.js +++ b/projects/creamswap/index.js @@ -31,7 +31,8 @@ function isCrToken(address) { return crTokens.includes(address); } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { + const block = api.block let balances = { [ADDRESSES.null]: '0', // ETH }; diff --git a/projects/credix/index.js b/projects/credix/index.js index 8557b9ccd38..65a5c31e172 100644 --- a/projects/credix/index.js +++ b/projects/credix/index.js @@ -56,7 +56,7 @@ module.exports = { }, }; -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const provider = getProvider(); const program = constructProgram(provider); @@ -67,7 +67,7 @@ async function borrowed(_, _b, _cb, { api, }) { }) } -async function tvl1(_, _b, _cb, { api, }) { +async function tvl1(api) { const provider = getProvider(); const program = constructProgram(provider); diff --git a/projects/creo/index.js b/projects/creo/index.js index 157444149bd..8c6cb9029b0 100644 --- a/projects/creo/index.js +++ b/projects/creo/index.js @@ -2,7 +2,7 @@ const STAKING = "0x077bd3104413c555Aa985a585CE9D2174349ddc3"; const TOKEN = "0x9521728bF66a867BC65A93Ece4a543D817871Eb7"; -async function staking(time, ethBlock, _b, { api }) { +async function staking(api) { return api.sumTokens({ tokens: [TOKEN], owner: STAKING }); } diff --git a/projects/cron-fi/index.js b/projects/cron-fi/index.js index d3fd46320d2..02728bb5ccb 100644 --- a/projects/cron-fi/index.js +++ b/projects/cron-fi/index.js @@ -10,7 +10,7 @@ module.exports = {}; Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/croswap/index.js b/projects/croswap/index.js index 983df3793d2..ca89dbd73b3 100644 --- a/projects/croswap/index.js +++ b/projects/croswap/index.js @@ -7,7 +7,7 @@ module.exports = { misrepresentedTokens: true, } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { factory, fromBlock } = config[api.chain] let pools diff --git a/projects/crowdswap/index.js b/projects/crowdswap/index.js index 700cf23a608..137ec6330b3 100644 --- a/projects/crowdswap/index.js +++ b/projects/crowdswap/index.js @@ -6,7 +6,7 @@ const bscStakingContracts = '0x21224834612ecaC194c4b877b49e7794f193d2A2'; const CROWD = "0x483dd3425278C1f79F377f1034d9d2CaE55648B6"; const BscCROWD = "0xA5d4B64a639d93b660cdA04D331374dA1108F8f5"; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { factories } = config[api.chain] const ownerTokens = [] diff --git a/projects/crv-usd/index.js b/projects/crv-usd/index.js index a0deab1cbdf..cf6e1654147 100644 --- a/projects/crv-usd/index.js +++ b/projects/crv-usd/index.js @@ -19,7 +19,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { pools} = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await Promise.all(pools.map(getLogs_)) return sumTokens2({ api, tokensAndOwners: logs.flat().map(i => [i.collateral, i.amm]) }) diff --git a/projects/cryptex-finance/index.js b/projects/cryptex-finance/index.js index 6b64a2ac244..bdfe2ae662c 100755 --- a/projects/cryptex-finance/index.js +++ b/projects/cryptex-finance/index.js @@ -61,7 +61,7 @@ module.exports = { } }; -async function staking_(_, _b, _cb, { api, }) { +async function staking_(api) { const logs = await getLogs({ api, target: factory, diff --git a/projects/cryptex-pi/index.js b/projects/cryptex-pi/index.js index 479bb32efbd..bd6476b9ae1 100644 --- a/projects/cryptex-pi/index.js +++ b/projects/cryptex-pi/index.js @@ -10,7 +10,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { vaultFactory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 index 518f779f4cf..ad23e81b799 100644 --- a/projects/cryptex-v2/index.js +++ b/projects/cryptex-v2/index.js @@ -16,7 +16,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { collateralContract, products, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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/cryptoyieldfocus/index.js b/projects/cryptoyieldfocus/index.js index d41be93634c..cda28d3fcec 100644 --- a/projects/cryptoyieldfocus/index.js +++ b/projects/cryptoyieldfocus/index.js @@ -1,34 +1,12 @@ -const abi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCyfPerShare, uint16 depositFeeBP)'; -const {addFundsInMasterChef} = require('../helper/masterchef') -const STAKING_CONTRACT = "0xaB0141F81b3129f03996D0679b81C07F6A24c435"; -const cyf = "0x411491859864797792308723Fc417f11BbA18D1b" -const pool2s = [ - "0x8dcb95A8CD13A734A470A1808a2472bD6B3A7A56", - "0x3437Bf22e261c79328e3B91a1F299e057fA12Cb6", - "0x0e79B2F73461D682174b00e676b68237eF8583F7", - "0x60ef780FB54373088b93db6600BbBAA90Eb14243" -] +const { masterchefExports, } = require('../helper/unknownTokens') -const avaxTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; +module.exports = masterchefExports({ + chain: 'avax', + masterchef: '0xaB0141F81b3129f03996D0679b81C07F6A24c435', + nativeToken: '0x411491859864797792308723Fc417f11BbA18D1b' +}) - const transformAddress = addr => 'avax:'+addr; - await addFundsInMasterChef(balances, STAKING_CONTRACT, chainBlocks.avax, 'avax', transformAddress, abi, [ - cyf, - ...pool2s - ]) - - return balances; -}; - -module.exports = { - hallmarks: [ +module.exports.hallmarks = [ [1631318400, "Rug Pull"] - ], - avax:{ - tvl: avaxTvl, - }, - methodology: - "We add the tvl from the farming pools fetching from StakingContract", -}; + ] diff --git a/projects/csix/index.js b/projects/csix/index.js index 8794252628a..66a0fb885aa 100644 --- a/projects/csix/index.js +++ b/projects/csix/index.js @@ -3,7 +3,7 @@ const STAKING_CONTRACT_V1 = "0xadc743298F6339Cd8ebC0Dc58D4E19C2065D6b4f"; const STAKING_CONTRACT_V2 = "0xA4f55D251b8fa8e0C291CC539F020c5Cbe4a9FA8"; const STAKING_CONTRACT_V3 = "0x7c7C76e4D47872A7B73FA15306A9Ebb673796dDc"; -async function staking(_, _1, _2, { api }) { +async function staking(api) { const staked = await api.multiCall({ abi: "uint256:totalStaked", calls: [STAKING_CONTRACT_V1, STAKING_CONTRACT_V2, STAKING_CONTRACT_V3], diff --git a/projects/cupid/index.js b/projects/cupid/index.js index cf7ae0a3bef..ea8928eba42 100644 --- a/projects/cupid/index.js +++ b/projects/cupid/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const cupidchef = "0xBCec0e5736614D8Bd05502A240526836bA0bBFc5" -const cupid = "0xD4C000c09bfeF49ABBd5c3728fcec3a42c68eBa1" -const cupidFtmLP = "0x5853da628f4655d7d80f80501ab6b6faa241e38b" -const cupidUsdcLP = "0xd30ce73f7294be94f9d76d308d5400f3483e369f"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, cupidchef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [cupid, cupidFtmLP, cupidUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(cupidchef, cupid, "fantom"), - pool2: pool2Exports(cupidchef, [cupidFtmLP, cupidUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xBCec0e5736614D8Bd05502A240526836bA0bBFc5', + nativeToken: '0xD4C000c09bfeF49ABBd5c3728fcec3a42c68eBa1' +}) \ No newline at end of file diff --git a/projects/curve/index.js b/projects/curve/index.js index d0377005b56..f2e4e63c6b1 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -97,7 +97,7 @@ async function getPools(block, chain) { .filter(r => r.output.addr !== nullAddress) .forEach(({ input: { params: [registryId] }, output: { addr } }) => registriesMapping[getRegistryType(registryId)] = addr) } - if(contracts[chain].CurveStableswapFactoryNG){ + if (contracts[chain].CurveStableswapFactoryNG) { registriesMapping.CurveStableswapFactoryNG = contracts[chain].CurveStableswapFactoryNG } const poolList = {} @@ -156,7 +156,7 @@ async function unwrapPools({ poolList, registry, chain, block }) { 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'].includes(registry) ) + if (!['cryptoFactory', 'triCryptoFactory'].includes(registry)) nCoins = (await sdk.api.abi.multiCall({ ...callParams, abi: abi.get_n_coins[registry] })).output let { wrapped = '', metapoolBases = {}, blacklist = [] } = contracts[chain] @@ -210,7 +210,8 @@ async function addPlainFactoryConfig({ api, tokensAndOwners, plainFactoryConfig function tvl(chain) { const { plainFactoryConfig = [] } = config[chain] ?? {} - return async (_t, _e, { [chain]: block }, { api }) => { + return async (api) => { + const { block } = api let balances = {}; const transform = await getChainTransform(chain); const poolLists = await getPools(block, chain); diff --git a/projects/cvi/index.js b/projects/cvi/index.js index 3f671fcd395..dfa09b7c3e2 100644 --- a/projects/cvi/index.js +++ b/projects/cvi/index.js @@ -37,7 +37,7 @@ const platformLiquidityContracts_polygon = [ const stakingContract_arbitrum = "0xDb3e7deAb380B43189A7Bc291fa2AFeAA938dCc3"; const GOVI_arbitrum = "0x07e49d5de43dda6162fa28d24d5935c151875283"; -async function ethTvl(timestamp, block, _, { api }) { +async function ethTvl(api) { const ethPlatforms = [ "0x5005e8Dc0033E78AF80cfc8d10f5163f2FcF0E79", "0xe0437BeB5bb7Cf980e90983f6029033d710bd1da", //USDTPlatform @@ -53,11 +53,11 @@ async function ethTvl(timestamp, block, _, { api }) { return api.sumTokens({ tokensAndOwners2: [tokens, owners] }) } -async function polygonTvl(timestamp, block, chainBlocks, { api }) { +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(_, _b, _cb, { api, }) { +async function arbiTvl(api) { const vaults = [ // '0xfdeb59a2b4891ea17610ee38665249acc9fcc506', '0xAf7a27b1291Bff85aCaf0A90078d81468A705E58', diff --git a/projects/cybertime/index.js b/projects/cybertime/index.js index a75765238fb..51ad4a45285 100644 --- a/projects/cybertime/index.js +++ b/projects/cybertime/index.js @@ -75,7 +75,7 @@ const Staking = async (chainBlocks) => { return balances; }; -const bscTvl = async (chainBlocks) => { +const bscTvl = async (api) => { const balances = {}; let transformAddress = i => `bsc:${i}`; @@ -83,7 +83,7 @@ const bscTvl = async (chainBlocks) => { await addFundsInMasterChef( balances, farm, - chainBlocks["bsc"], + api.bsc, "bsc", transformAddress, abi.poolInfo, diff --git a/projects/cyclefinance/index.js b/projects/cyclefinance/index.js index 3ebec8e7a93..09c2499da21 100644 --- a/projects/cyclefinance/index.js +++ b/projects/cyclefinance/index.js @@ -87,7 +87,7 @@ const vaults = [ ]; /*** Staking of native token CYCLE and CYCLE/AVAX LP TVL Portion ***/ -const staking = async (timestamp, ethBlock, chainBlocks, { api }) => { +const staking = async (api) => { const staking_lpToken = await api.call({ abi: abi.stakingToken, diff --git a/projects/cygnus-finance/index.js b/projects/cygnus-finance/index.js index 4f0da0efb16..f8ea66b6118 100644 --- a/projects/cygnus-finance/index.js +++ b/projects/cygnus-finance/index.js @@ -1,7 +1,7 @@ const CGUSD_CONTRACT = "0xCa72827a3D211CfD8F6b00Ac98824872b72CAb49"; const START_TIME = 1708351200; -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { await api.erc4626Sum({ calls: [CGUSD_CONTRACT], balanceAbi: 'getTotalPooledAssets', tokenAbi: "asset" }); } diff --git a/projects/cygnusdao/index.js b/projects/cygnusdao/index.js index 3aa5ed0655b..fa267b64cdc 100644 --- a/projects/cygnusdao/index.js +++ b/projects/cygnusdao/index.js @@ -3,7 +3,7 @@ const vaultAbi = require('../charmfinance/vaultAbi.json') const { getLogs } = require('../helper/cache/getLogs'); const { getUniqueAddresses } = require("@defillama/sdk/build/generalUtil"); -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { let fromBlock = 0; switch (api.chain) { case 'polygon': fromBlock = 49831226; break @@ -42,7 +42,7 @@ async function tvl(timestamp, block, _, { api }) { }) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { api.addCGToken('tether', (await api.call({ abi: 'uint256:cygnusTotalBorrows', target: FACTORY_CONTRACT }))/1e6) return api.getBalances() } diff --git a/projects/d8x/index.js b/projects/d8x/index.js index 79b02d08ff5..4acc89d80f5 100644 --- a/projects/d8x/index.js +++ b/projects/d8x/index.js @@ -2,7 +2,7 @@ const abi = require("./abi-poolInfo.json"); const D8X_PERPETUALS_CONTRACT = "0xaB7794EcD2c8e9Decc6B577864b40eBf9204720f"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const exchangeInfo = await api.call({ abi: abi.getPoolStaticInfo, target: D8X_PERPETUALS_CONTRACT, diff --git a/projects/daolama/borrowed.js b/projects/daolama/borrowed.js index ac273577018..cad75fd016c 100644 --- a/projects/daolama/borrowed.js +++ b/projects/daolama/borrowed.js @@ -5,7 +5,7 @@ const ADDRESSES = require('../helper/coreAssets.json'); const { BASE_API_URL } = require("./constants"); const nullAddress = ADDRESSES.null; -async function borrowed(chain, timestamp, chainBlocks, { api }) { +async function borrowed(api) { const balances = {}; const result = await get(`${BASE_API_URL}/api/v1/analytics/borrowed`); sdk.util.sumSingleBalance(balances, nullAddress, result.value, api.chain); diff --git a/projects/darkcrypto/index.js b/projects/darkcrypto/index.js index f746a0f20e9..0ba25a6e1ab 100644 --- a/projects/darkcrypto/index.js +++ b/projects/darkcrypto/index.js @@ -29,7 +29,7 @@ async function pool2(timestamp, block, chainBlocks) { return balances; } -async function vault(timestamp, block, chainBlocks, { api }){ +async function vault(api){ return vaultUtils.vaultLocked(api) } diff --git a/projects/darkmatter/index.js b/projects/darkmatter/index.js index a6002c66fa4..c63819027c5 100644 --- a/projects/darkmatter/index.js +++ b/projects/darkmatter/index.js @@ -1,26 +1,8 @@ -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { unwrapLPsAuto } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); -const { pool2 } = require('../helper/pool2') - - -const chef = "0x7C36c64811219CF9B797C5D9b264d9E7cdade7a4" -const dmd = "0x90E892FED501ae00596448aECF998C88816e5C0F" -const dmdFtmLP = "0xF10F0EeB144Eb223DD8Ae7d5dd7f3327E63A3C94" - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, undefined, [dmd, dmdFtmLP]) - await unwrapLPsAuto({ balances, block: chainBlocks.fantom, chain: 'fantom', transformAddress}) - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom:{ - staking: staking(chef, dmd, "fantom"), - pool2: pool2(chef, dmdFtmLP, "fantom"), - tvl - }, -} \ No newline at end of file +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/debtdao/index.js b/projects/debtdao/index.js index 8f7d5ae3f6e..6ff48020f39 100644 --- a/projects/debtdao/index.js +++ b/projects/debtdao/index.js @@ -22,7 +22,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { moduleFactory, moduleFactoryStart, lineFactory, lineFactoryStart, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const ownerTokens = [] const escrowLogs = await getLogs({ api, @@ -64,7 +64,7 @@ Object.keys(config).forEach(chain => { })) return sumTokens2({ api, ownerTokens }) }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const lineLogs = await getLogs({ api, target: lineFactory, diff --git a/projects/deepbook-sui/index.js b/projects/deepbook-sui/index.js index 505c7a72228..f09f1fb55a9 100644 --- a/projects/deepbook-sui/index.js +++ b/projects/deepbook-sui/index.js @@ -5,7 +5,7 @@ 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)); + return toUSDTBalances(findClosestTvl(data, ts.timestamp)); } module.exports = { diff --git a/projects/defi-basket/api.js b/projects/defi-basket/api.js index 35559f2bb62..9e78f6adbe5 100644 --- a/projects/defi-basket/api.js +++ b/projects/defi-basket/api.js @@ -5,7 +5,7 @@ const blacklistedTokens = [ '0x0b91b07beb67333225a5ba0259d55aee10e3a578', // MNEP ] -async function tvl(_, _1,_2, { api }) { +async function tvl(api) { const wallets = await api.multiCall({ itemAbi: abis.walletOf, lengthAbi: abis.tokenCounter, diff --git a/projects/defiedge/index.js b/projects/defiedge/index.js index 53def20c3e5..3b6dcf6465d 100644 --- a/projects/defiedge/index.js +++ b/projects/defiedge/index.js @@ -10,8 +10,7 @@ const query = /* GraphQL */ ` } `; -async function getTvl() { - const { api } = arguments[3]; +async function getTvl(api) { const { network } = config[api.chain]; const results = await graphQuery(endpoint, query, { network: [network] }); diff --git a/projects/defimaster/index.js b/projects/defimaster/index.js index b9f286e6f70..7060cc7fc79 100644 --- a/projects/defimaster/index.js +++ b/projects/defimaster/index.js @@ -6,7 +6,7 @@ const abi = { "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTimestamp, uint256 accSushiPerShare, bool isVault)" } -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/definitive/index.js b/projects/definitive/index.js index cfd4e73daca..fe3304bf773 100644 --- a/projects/definitive/index.js +++ b/projects/definitive/index.js @@ -72,7 +72,7 @@ const CommunityVaultsLLSD = { ], } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { /** Hyperstaking Community Vaults */ const LLSDs = CommunityVaultsLLSD[api.chain] /** LP Community Vaults */ diff --git a/projects/defiplaza.js b/projects/defiplaza.js index addac9e2bb8..930c5ba11a4 100644 --- a/projects/defiplaza.js +++ b/projects/defiplaza.js @@ -9,14 +9,14 @@ const graphUrl = 'https://api.thegraph.com/subgraphs/name/omegasyndicate/defipla module.exports = { ethereum: { - tvl: async (timestamp, block, _, { api }) => { + 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 (_, _1, _2, { api }) => { + tvl: async (api) => { const pools = await getConfig('defiplaza-radixdlt', null, { fetcher: async () => { let items = []; diff --git a/projects/defisaver.js b/projects/defisaver.js index d0ab1328703..5d832ce6746 100644 --- a/projects/defisaver.js +++ b/projects/defisaver.js @@ -1,4 +1,4 @@ -async function tvl(_0, _1, _2, { api }) { +async function tvl(api) { const block = await api.getBlock(); const chainId = api.chainId; diff --git a/projects/defiverse/index.js b/projects/defiverse/index.js index 1f08d250599..944869a75b4 100644 --- a/projects/defiverse/index.js +++ b/projects/defiverse/index.js @@ -9,7 +9,7 @@ const TOKENS = [ ADDRESSES.defiverse.OAS, ]; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const tokenAddesses = TOKENS.map((x) => x.address); return sumTokens2({ api, owner: VAULT_CONTRACT, tokens: TOKENS }); } diff --git a/projects/defrost/index.js b/projects/defrost/index.js index 2dda30ff1a8..9759ed21a67 100644 --- a/projects/defrost/index.js +++ b/projects/defrost/index.js @@ -2,7 +2,7 @@ const sdk = require('@defillama/sdk'); const { sumTokens2, nullAddress } = require('../helper/unwrapLPs'); -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const balances = await tvlV1(api) return tvlV2(api, balances) } @@ -47,7 +47,7 @@ async function tvlV2(api, balances = {}) { return sumTokens2({ balances, tokensAndOwners: collateralTokens.map((t, i) => ([t, leveragePools[i]])), api }) } -async function staking(_, _b, _cb, { api, }) { +async function staking(api) { const stk = await api.call({ target: "0x1e93b54AC156Ac2FC9714B91Fa10f1b65e2daFD9", abi: "uint256:totalStaked" diff --git a/projects/degate/index.js b/projects/degate/index.js index 68a2e869a2d..f7190b1feb5 100644 --- a/projects/degate/index.js +++ b/projects/degate/index.js @@ -5,7 +5,7 @@ const DEGATE_EXCHANGE_CONTRACT = '0x9C07A72177c5A05410cA338823e790876E79D73B'; const START_BLOCK = 18552105; -async function tvl(timestamp, block, _1, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: DEGATE_EXCHANGE_CONTRACT, diff --git a/projects/deltafi/index.js b/projects/deltafi/index.js index b3862541661..480cacd6672 100644 --- a/projects/deltafi/index.js +++ b/projects/deltafi/index.js @@ -6,7 +6,7 @@ const wwemixAddr = ADDRESSES.wemix.WWEMIX; const dwemixAddr = "0x531e6Abe1ad0c8313ad7c8f7ad96b8e70c56164E"; const controllerAddr = "0x334f696FE78623861733444d8476C36B0e9CdfC5"; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { // master vault wemix const masterVaultWemix = await api.call({ abi: 'function balanceOf(address) public view returns (uint256 amount)', diff --git a/projects/deltaprime/index.js b/projects/deltaprime/index.js index f6e151c5845..6799e5e6a93 100644 --- a/projects/deltaprime/index.js +++ b/projects/deltaprime/index.js @@ -30,7 +30,7 @@ const DAI_POOL_TUP_ARBI_CONTRACT = '0xd5E8f691756c3d7b86FD8A89A06497D38D362540'; const SMART_LOANS_FACTORY_TUP_ARBITRUM = '0xFf5e3dDaefF411a1dC6CcE00014e4Bca39265c20'; -async function tvlAvalanche(timestamp, block, chainBlocks, { api }) { +async function tvlAvalanche(api) { const tokensAndOwners = [ [assetToAddressMappingAvalanche.USDC, USDC_POOL_TUP_CONTRACT], [assetToAddressMappingAvalanche.USDT, USDT_POOL_TUP_CONTRACT], @@ -82,7 +82,7 @@ async function tvlAvalanche(timestamp, block, chainBlocks, { api }) { return balances; } -async function tvlArbitrum(timestamp, block, chainBlocks, { api }) { +async function tvlArbitrum(api) { const tokensAndOwners = [ [assetToAddressMappingArbitrum.USDC, USDC_POOL_TUP_ARBI_CONTRACT], [assetToAddressMappingArbitrum.ETH, ETH_POOL_TUP_ARBI_CONTRACT], diff --git a/projects/deltatheta/index.js b/projects/deltatheta/index.js index 39df1c05ef6..a73f30d9451 100644 --- a/projects/deltatheta/index.js +++ b/projects/deltatheta/index.js @@ -6,7 +6,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs'); const FACTORY_ADDRESS = '0x000000000092126dc1bcec881165f92169733106'; // TVL function generator (for BSC & POLYGON chains) -async function tvl(_, __, chainBlocks, { api }) { +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 }); } diff --git a/projects/depth/index.js b/projects/depth/index.js index 0012181abac..9527b8482bf 100644 --- a/projects/depth/index.js +++ b/projects/depth/index.js @@ -1,511 +1,98 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); - -const formalDeposit = { - "coins": { - "name": "coins", - "outputs": [{ "type": "address", "name": "out" }], - "inputs": [{ "type": "int128", "name": "arg0" }], - "constant": true, - "payable": false, - "type": "function", - "gas": 1680 - }, - "curve": { - "name": "curve", - "outputs": [{ "type": "address", "name": "out" }], - "inputs": [], - "constant": true, - "payable": false, - "type": "function", - "gas": 1541 - }, - "underlying_coins": { - "name": "underlying_coins", - "outputs": [{ "type": "address", "name": "out" }], - "inputs": [{ "type": "int128", "name": "arg0" }], - "constant": true, - "payable": false, - "type": "function", - "gas": 1710 - } -}; -const formalSwapPool = { - "balances": { - "name": "balances", - "outputs": [{ "type": "uint256", "name": "out" }], - "inputs": [{ "type": "int128", "name": "arg0" }], - "constant": true, - "payable": false, - "type": "function", - "gas": 2430 - } -}; -const erc20 = { - "decimals": { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "payable": false, - "stateMutability": "view", - "type": "function" - } -}; -const cToken = { - "exchangeRateStored": { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - } -}; -const mdexRouter = { - "getAmountsOut": { - "inputs": [{ - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, { "internalType": "address[]", "name": "path", "type": "address[]" }], - "name": "getAmountsOut", - "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], - "stateMutability": "view", - "type": "function" - }, - "getAmountsIn": { - "inputs": [{ - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, { "internalType": "address[]", "name": "path", "type": "address[]" }], - "name": "getAmountsIn", - "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], - "stateMutability": "view", - "type": "function" - } -}; - -const vaultAbi = { - "getSelfUnderlying":{"inputs":[],"name":"getSelfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}, - "balance":{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"} -} -const daoAbi={"sharesAndRewardsInfo":{"inputs":[],"name":"sharesAndRewardsInfo","outputs":[{"internalType":"uint256","name":"activeShares","type":"uint256"},{"internalType":"uint256","name":"pendingSharesToAdd","type":"uint256"},{"internalType":"uint256","name":"pendingSharesToReduce","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"},{"internalType":"uint256","name":"claimedRewards","type":"uint256"},{"internalType":"uint256","name":"lastUpdatedEpochFlag","type":"uint256"}],"stateMutability":"view","type":"function"}} - -const swapPoolAbiV2 ={ - "balances":{"name":"balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2220}, - "coins":{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2190} -} +const { createIncrementArray } = require('../helper/utils') const channels = '0x11bFEE9D8625ac4cDa6Ce52EeBF5caC7DC033d15'; const filda = '0xE796c55d6af868D8c5E4A92e4fbCF8D8F88AcDED'; const lendhub = '0xdA0519AA3F097A3A5b1325cb1D380C765d8F1D70'; const lendhubeth = '0x15155042F8d13Db274224AF4530397f640f69274'; -const fildaSwapV2Address="0xa7a0EA0C5D2257e44Ad87d10DB90158c9c5c54b3" - -const vaultGroup=[ - { - "IsHUSD": false, - "Vaults": [ - { - "Name": "Filda", - "ContractAddress": "0x6FF92A0e4dA9432a79748A15c5B8eCeE6CF0eE66", - "TokenName": "dfUSDT" - }, - { - "Name": "Channels", - "ContractAddress": "0x95c258E41f5d204426C33628928b7Cc10FfcF866", - "TokenName": "dcUSDT" - }, - { - "Name": "Lendhub", - "ContractAddress": "0x70941A63D4E24684Bd746432123Da1fE0bFA1A35", - "TokenName": "dlUSDT" - }, - { - "Name": "Back", - "ContractAddress": "0x22BAd7190D3585F6be4B9fCed192E9343ec9d5c7", - "TokenName": "dbUSDT" - }, - { - "Name": "Pilot", - "ContractAddress": "0xB567bd78A4Ef08EE9C08762716B1699C46bA5ea3", - "TokenName": "plUSDT" - }, - { - "Name": "CoinWind", - "ContractAddress": "0xd96e3FeDbF4640063F2B20Bd7B646fFbe3c774FF", - "TokenName": "cwUSDT" - } - ] - }, - { - "IsHUSD": true, - "Vaults": [ - { - "Name": "Lendhub", - "ContractAddress": "0x80Da2161a80f50fea78BE73044E39fE5361aC0dC", - "TokenName": "dlHUSD" - }, - { - "Name": "Filda", - "ContractAddress": "0xE308880c215246Fa78753DE7756F9fc814D1C186", - "TokenName": "dfHUSD" - }, - { - "Name": "Channels", - "ContractAddress": "0x9213c6269Faed1dE6102A198d05a6f9E9D70e1D0", - "TokenName": "dcHUSD" - }, - { - "Name": "Back", - "ContractAddress": "0x996a0e31508E93EB53fd27d216E111fB08E22255", - "TokenName": "dbHUSD" - }, - { - "Name": "Pilot", - "ContractAddress": "0x9bd25Ed64F55f317d0404CCD063631CbfC4fc90b", - "TokenName": "plHUSD" - }, - { - "Name": "CoinWind", - "ContractAddress": "0x7e1Ac905214214c1E339aaFBA72E2Ce29a7bEC22", - "TokenName": "cwHUSD" - } - ] - } +const fildaSwapV2Address = "0xa7a0EA0C5D2257e44Ad87d10DB90158c9c5c54b3" + +const vaultGroup = [ + "0x6FF92A0e4dA9432a79748A15c5B8eCeE6CF0eE66", + "0x95c258E41f5d204426C33628928b7Cc10FfcF866", + "0x70941A63D4E24684Bd746432123Da1fE0bFA1A35", + "0x22BAd7190D3585F6be4B9fCed192E9343ec9d5c7", + "0xB567bd78A4Ef08EE9C08762716B1699C46bA5ea3", + "0xd96e3FeDbF4640063F2B20Bd7B646fFbe3c774FF", + "0x80Da2161a80f50fea78BE73044E39fE5361aC0dC", + "0xE308880c215246Fa78753DE7756F9fc814D1C186", + "0x9213c6269Faed1dE6102A198d05a6f9E9D70e1D0", + "0x996a0e31508E93EB53fd27d216E111fB08E22255", + "0x9bd25Ed64F55f317d0404CCD063631CbfC4fc90b", + "0x7e1Ac905214214c1E339aaFBA72E2Ce29a7bEC22", ] -const VaultGroupBsc= [ - { - "CoinName": "USDT", - "Vaults": [ - { - "Name": "Alpaca", - "ContractAddress": "0xcB08DA2339d562b66b314d2bBfB580CB87FFBD76", - "TokenName": "alUSDT", - "Pid": 11 - }, - { - "Name": "Venus", - "ContractAddress": "0x3253041F27416c975FFb0100b08734187F82c8A2", - "TokenName": "vUSDT", - "Pid": 10 - }, - { - "Name": "Coinwind", - "ContractAddress": "0x0B28a55dbBd6c5DdD4D1d7157361e9D6D0CcEfC0", - "TokenName": "cwUSDT", - "Pid": 8 - } - ] - }, - { - "CoinName": "BUSD", - "Vaults": [ - { - "Name": "Alpaca", - "ContractAddress": "0xAf996B5E33007ed5EB33eaAe817ad8E1310CCebc", - "TokenName": "alBUSD", - "Pid": 5 - }, - { - "Name": "Venus", - "ContractAddress": "0x2E128EB2EE787428307A7B246d02C1801788e1A6", - "TokenName": "vBUSD", - "Pid": 4 - }, - { - "Name": "Coinwind", - "ContractAddress": "0x9F4198C4a73c103Bc9b1c34D1f680d4E43D901AF", - "TokenName": "cwBUSD", - "Pid": 7 - } - ] - }, - { - "CoinName": "BNB", - "Vaults": [ - { - "Name": "Alpaca", - "ContractAddress": "0x024F05c70F203fb77f27b00422534cC33E1FB69d", - "TokenName": "alBNB", - "Pid": 12 - }, - { - "Name": "Coinwind", - "ContractAddress": "0xcd8EF3E3A7b25741cE5B8C728F582cF748b60b1A", - "TokenName": "cwBNB", - "Pid": 9 - } - ] - } - ] -async function exchangeRateStored(depositContractAddress, coinId) { - const coinAddress = await sdk.api.abi.call({ - target: depositContractAddress, - abi: formalDeposit['coins'], - chain: "heco", - params: coinId, - }); - const rate = await sdk.api.abi.call({ - target: coinAddress.output, - abi: cToken['exchangeRateStored'], - chain: 'heco', - }); - return rate.output -} - -async function getBalance(contractAddress, coinId) { - const swapContract = await sdk.api.abi.call({ - target: contractAddress, - abi: formalDeposit['curve'], - chain: "heco", - }); - const balance = await sdk.api.abi.call({ - target: swapContract.output, - abi: formalSwapPool['balances'], - chain: "heco", - params: coinId, - - }); - return balance.output -} - -async function getDecimals(contractAddress, coinId) { - const underlyingCoinsAddress = await sdk.api.abi.call({ - target: contractAddress, - abi: formalDeposit['underlying_coins'], - chain: "heco", - params: coinId, - }); - const decimals = await sdk.api.abi.call({ - target: underlyingCoinsAddress.output, - abi: erc20['decimals'], - chain: "heco", - }); - return decimals.output -} - -async function swapV2GetBalance(contractAddress, coinId) { - const balance = await sdk.api.abi.call({ - target: contractAddress, - abi: swapPoolAbiV2['balances'], - chain: "heco", - params: coinId, - - }); - return balance.output -} - -async function swapV2GetDecimals(contractAddress, coinId) { - const underlyingCoinsAddress = await sdk.api.abi.call({ - target: contractAddress, - abi: swapPoolAbiV2['coins'], - chain: "heco", - params: coinId, - }); - const decimals = await sdk.api.abi.call({ - target: underlyingCoinsAddress.output, - abi: erc20['decimals'], - chain: "heco", - }); - return decimals.output -} -async function getTokenPrice(contractAddress) { - const underlyingCoinsAddress = await sdk.api.abi.call({ - target: contractAddress, - abi: formalDeposit['underlying_coins'], - chain: "heco", - params: 0, - }); - - const getAmountsIn = await sdk.api.abi.call({ - target: "0xED7d5F38C79115ca12fe6C0041abb22F0A06C300", - abi: mdexRouter['getAmountsIn'], - chain: "heco", - params: [1e8, [ADDRESSES.heco.USDT, underlyingCoinsAddress.output]], - }); - - return getAmountsIn.output[0] / Math.pow(10, 26 - 18) -} - -async function poolUnderlyingCoinBalance(contractAddress, coinId) { - const rate = await exchangeRateStored(contractAddress, coinId) - const balance = await getBalance(contractAddress, coinId) - const decimals = await getDecimals(contractAddress, coinId) - const tvlPool = rate * balance / 1e18 / Math.pow(10, decimals) - return tvlPool -} -async function swapV2PoolUnderlyingCoinBalance(contractAddress, coinId) { - const balance = await swapV2GetBalance(contractAddress, coinId) - const decimals = await swapV2GetDecimals(contractAddress, coinId) - const tvlPool = balance / Math.pow(10, decimals) - return tvlPool -} - -/* - dc18 := decimal.NewFromFloat(1e18) - dc8 := decimal.NewFromFloat(1e8) - activeShares := decimal.NewFromBigInt(out.ActiveShares, 0).Div(dc18) - pendingSharesToAdd := decimal.NewFromBigInt(out.PendingSharesToAdd, 0).Div(dc18) - pendingSharesToReduce := decimal.NewFromBigInt(out.PendingSharesToReduce, 0).Div(dc18) - rewards := decimal.NewFromBigInt(out.Rewards, 0).Div(dc8) - return activeShares, pendingSharesToAdd, pendingSharesToReduce, rewards, nil - */ - -async function getPrice(contractAddress,dc) { - - const getAmountsIn = await sdk.api.abi.call({ - target: "0xED7d5F38C79115ca12fe6C0041abb22F0A06C300", - abi: mdexRouter['getAmountsOut'], - chain: "heco", - params: [1e8, [contractAddress,ADDRESSES.heco.USDT]], - }); - - return getAmountsIn.output[1] / Math.pow(10, 26 - dc) -} - - -async function getDaoSharesAndRewards() { - const out= await sdk.api.abi.call({ - target: "0xfbac8c66d9b7461eefa7d8601568887c7b6f96ad", - abi: daoAbi['sharesAndRewardsInfo'], - chain: "heco", - }); - const price=await getPrice("0x48C859531254F25e57D1C1A8E030Ef0B1c895c27",18) - let dao=out.output.activeShares/ Math.pow(10, 18)+out.output.pendingSharesToAdd/ Math.pow(10, 18)-out.output.pendingSharesToReduce/ Math.pow(10, 18) - return dao*price -} - -async function getVaultTotalDeposit(){ - let totalSelfUnderlying=0 - for(let i=0;i e * bals[i] / 1e18)) } -async function getVaultTotalDepositBsc(){ - let totalSelfUnderlying=0 - for(let i=0;i 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) } -//bsc tvl -async function fetchBsc() { - const swapTvl=await swapV2PoolUnderlyingCoinBalanceBsc("0xc57220b65dd9200562aa73b850c06be7bd632b57") - const vaultTvl=await getVaultTotalDepositBsc() - return swapTvl+vaultTvl -} - - module.exports = { - heco:{ - fetch: fetchHeco - }, - bsc:{ - fetch: fetchBsc - }, - fetch: async ()=>{return (await fetchHeco())+(await fetchBsc())} + doublecounted: true, + heco: { + tvl: hecoTvl, + // staking, + }, + bsc: { + tvl + }, } diff --git a/projects/deri-v4/index.js b/projects/deri-v4/index.js index 6e2cb99e8b1..adca15cd19f 100644 --- a/projects/deri-v4/index.js +++ b/projects/deri-v4/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require('../helper/cache/getLogs') const { transformBalances } = require('../helper/portedTokens') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { factory, fromBlock, } = config[api.chain] const logs = await getLogs({ api, diff --git a/projects/deri/index.js b/projects/deri/index.js index b652431cbae..ac0dd390b12 100644 --- a/projects/deri/index.js +++ b/projects/deri/index.js @@ -43,7 +43,7 @@ async function v3Pool(api, pool, bToken) { Object.keys(config).forEach(chain => { const contracts = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokensAndOwners = [] for (let { pool, bTokenSymbol, v3, lite } of Object.values(contracts)) { if (lite) diff --git a/projects/derivio/index.js b/projects/derivio/index.js index f1b02f9bfd9..653bd21e428 100644 --- a/projects/derivio/index.js +++ b/projects/derivio/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); function tvl({ pool }) { - return async (ts, _block, _, { api }) => { + return async (api) => { const tokenAddresses = await api.call({ target: pool, abi: 'function getAssetWhitelist() view returns (address[] memory)', diff --git a/projects/desyn/index.js b/projects/desyn/index.js index 9a6f2cd0419..a7d43249a7f 100644 --- a/projects/desyn/index.js +++ b/projects/desyn/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const {factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/detto-finance/index.js b/projects/detto-finance/index.js index 5d993934ad0..691df70ac07 100644 --- a/projects/detto-finance/index.js +++ b/projects/detto-finance/index.js @@ -15,12 +15,12 @@ async function getTvl(api, isStaking,farmAddress) { } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { await getTvl(api,false,DETTO_FARM_ADDRESS) return await getTvl(api,false,DETTO_FARM_ADDRESS_2) } -async function staking(_, _1, _2, { api }) { +async function staking(api) { return getTvl(api, true,DETTO_FARM_ADDRESS) } diff --git a/projects/dexilla/index.js b/projects/dexilla/index.js index b9587960d3d..40d509ca58a 100644 --- a/projects/dexilla/index.js +++ b/projects/dexilla/index.js @@ -57,7 +57,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { exchanges } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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/dexter-tezos/index.js b/projects/dexter-tezos/index.js index 0140e5b3a09..a4333aaad93 100644 --- a/projects/dexter-tezos/index.js +++ b/projects/dexter-tezos/index.js @@ -1,7 +1,7 @@ const { get } = require('../helper/http') -async function tvl(ts, _b, _cb, { api, }) { - const tsString = new Date(ts * 1000).toISOString() +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}`) @@ -15,7 +15,7 @@ async function tvl(ts, _b, _cb, { api, }) { 'KT1PDrBE59Zmxnb8vXRgRAG1XmvTMTs5EDHU', ] - if (ts < 1613861579 && ts > 1612738379) + if (api.timestamp < 1613861579 && api.timestamp > 1612738379) owners.push('KT1Xf2Cwwwh67Ycu7E9yd3UhsABQC4YZPkab') diff --git a/projects/dexter/index.js b/projects/dexter/index.js index b9a8ad8224a..35108c2f45b 100644 --- a/projects/dexter/index.js +++ b/projects/dexter/index.js @@ -1,7 +1,7 @@ const { queryContract } = require("../helper/chain/cosmos"); const { transformDexBalances } = require("../helper/portedTokens"); -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const contract = 'persistence1k8re7jwz6rnnwrktnejdwkwnncte7ek7gt29gvnl3sdrg9mtnqkstujtpg' const chain = api.chain const config = await queryContract({ chain, contract, data: { config: {} }, }); diff --git a/projects/dextf/v2.js b/projects/dextf/v2.js index 33203e31467..4f0a2b258b1 100644 --- a/projects/dextf/v2.js +++ b/projects/dextf/v2.js @@ -7,10 +7,7 @@ const config = { era: { factory: '0x44E12D14b63806A817B1AA6886215caA6aa136a7', }, } -module.exports = async function tvl(timestamp, block, _, { api }) { - if (block <= START_BLOCK) - return {}; - +module.exports = async function tvl(api) { const { factory } = config[api.chain] const sets = await api.call({ diff --git a/projects/dforce/index.js b/projects/dforce/index.js index c28969c88c7..7041ab53d46 100644 --- a/projects/dforce/index.js +++ b/projects/dforce/index.js @@ -154,7 +154,7 @@ async function getTVLOfdToken(api) { } function getTVLByChain(chain) { - return async (time, ethBlock, chainBlocks, { api }) => { + return async (api) => { if (chain == "ethereum") { const ownerTokens = [[usdxReservedTokens, usdxPool], [[goldxReserve], goldxProtocol]] await api.sumTokens({ ownerTokens }) diff --git a/projects/dfx-v3/index.js b/projects/dfx-v3/index.js index c724cd47ab8..f02f0e5f77c 100644 --- a/projects/dfx-v3/index.js +++ b/projects/dfx-v3/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const configs = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = [] for (const { factory, fromBlock } of configs) { logs.push(await getLogs({ diff --git a/projects/dfx/index.js b/projects/dfx/index.js index 28451809cfb..6a196150ca1 100644 --- a/projects/dfx/index.js +++ b/projects/dfx/index.js @@ -14,7 +14,7 @@ const config = { Object.keys(config).forEach(chain => { const configs = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = [] for (const { factory, fromBlock } of configs) { logs.push(await getLogs({ diff --git a/projects/dhedge.js b/projects/dhedge.js index c8b9b02e8c9..cd97e0a8cb9 100644 --- a/projects/dhedge.js +++ b/projects/dhedge.js @@ -18,7 +18,8 @@ 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, chain }) => { +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, }); @@ -35,7 +36,8 @@ const DHEDGE_V2_VAULTS_ABI = const DHEDGE_V2_VAULT_SUMMARY_ABI = "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; -const tvl = async (_, __, ___, { api, chain }) => { +const tvl = async (api) => { + const { chain } = api const target = DHEDGE_FACTORY_PROXIES[chain]; const vaults = await api.call({ abi: DHEDGE_V2_VAULTS_ABI, target, }) let chunkSize = chain === 'optimism' ? 42 : 51 // Optimism has a lower gas limit @@ -55,7 +57,7 @@ const tvl = async (_, __, ___, { api, chain }) => { const DHT_STAKING_V1_PROXY = "0xEe1B6b93733eE8BA77f558F8a87480349bD81F7f"; const DHT_ON_MAINNET = "0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84"; -const getV1StakingTotalAmount = async (_, __, ___, { api }) => ({ +const getV1StakingTotalAmount = async (api) => ({ [DHT_ON_MAINNET]: await api.call({ abi: "erc20:balanceOf", target: DHT_ON_MAINNET, @@ -69,7 +71,7 @@ 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 }) => ({ +const getV2StakingTotalAmount = async (api) => ({ [DHT_ON_OPTIMISM]: await api.call({ abi: DHT_STAKED_ABI, target: DHT_STAKING_V2_PROXY, diff --git a/projects/diamond-unibot-v2/index.js b/projects/diamond-unibot-v2/index.js index 4680f5ec6e0..b8c1917d23c 100644 --- a/projects/diamond-unibot-v2/index.js +++ b/projects/diamond-unibot-v2/index.js @@ -53,7 +53,7 @@ const config = { } } -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const { balanceVault, lendingPools, fromBlock, proxyDeployer } = config[api.chain] const logs = await getLogs({ api, fromBlock, diff --git a/projects/dinari/index.js b/projects/dinari/index.js index c865b105406..76fbbd368ee 100644 --- a/projects/dinari/index.js +++ b/projects/dinari/index.js @@ -14,7 +14,7 @@ const config = { Object.keys(config).forEach(chain => { const tokens = Object.values(config[chain]).map(v => v.token) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) api.add(tokens, bals) } diff --git a/projects/dinero/index.js b/projects/dinero/index.js index bf006be27fc..e5f80edc313 100644 --- a/projects/dinero/index.js +++ b/projects/dinero/index.js @@ -2,7 +2,7 @@ const { nullAddress } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const totalSupply = await api.call({ target: '0x04C154b66CB340F3Ae24111CC767e0184Ed00Cc6', abi: 'uint256:totalSupply'}); return { diff --git a/projects/dinosaur-finance/index.js b/projects/dinosaur-finance/index.js index ee0068e0121..d468024e948 100644 --- a/projects/dinosaur-finance/index.js +++ b/projects/dinosaur-finance/index.js @@ -6,7 +6,7 @@ const vaults = [ "0x1A53a7C19b29df3e94c0559Ea41BDF5A8e9A88DD", ] -async function tvl(_, _b, _c, { api }) { +async function tvl(api) { const balances = {} const tokens = await api.multiCall({ abi: "uint256:balance", calls: vaults, }) diff --git a/projects/dip-exchange/index.js b/projects/dip-exchange/index.js index 568b53bc430..f1824218c92 100644 --- a/projects/dip-exchange/index.js +++ b/projects/dip-exchange/index.js @@ -14,7 +14,7 @@ const Contracts = { DIP_ETH_LP: "0x0BE2EF4a1CC597dDd2a354505E08d7934802029d" } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens2({ api, owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }) } diff --git a/projects/dodo/index.js b/projects/dodo/index.js index e2f33a090a8..518429908e8 100644 --- a/projects/dodo/index.js +++ b/projects/dodo/index.js @@ -117,7 +117,7 @@ const config = { Object.keys(config).forEach(chain => { const { dvmFactory, fromBlock, dspFactory, dppFactory, dodoBirthFactory, blacklistedTokens, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const ownerTokens = [] const funcs = []; const builder = (factorys, event) => { diff --git a/projects/dojoswap-lsd/index.js b/projects/dojoswap-lsd/index.js index d17514c8d28..79597de42b2 100644 --- a/projects/dojoswap-lsd/index.js +++ b/projects/dojoswap-lsd/index.js @@ -6,7 +6,7 @@ const ADDRESSES = { MULTICAL_CONTRACT: 'inj1578zx2zmp46l554zlw5jqq3nslth6ss04dv0ee' } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const data = await queryContract({chain: api.chain, contract: ADDRESSES.LSD_CONTRACT, data: { state: {} }}) return { diff --git a/projects/dolomite/index.js b/projects/dolomite/index.js index 08e20b2dd43..929a92f3251 100644 --- a/projects/dolomite/index.js +++ b/projects/dolomite/index.js @@ -25,11 +25,11 @@ async function getTokensAndBalances(api, supplyOrBorrow) { }) } -async function tvl(timestamp, ethereumBlock, blocksToKeys, { api }) { +async function tvl(api) { return getTokensAndBalances(api, "supply"); } -async function borrowed(timestamp, ethereumBlock, blocksToKeys, { api }) { +async function borrowed(api) { return getTokensAndBalances(api, "borrow"); } diff --git a/projects/dopex-clamm/index.js b/projects/dopex-clamm/index.js index 1c9f41eaf6c..1ef388f526a 100644 --- a/projects/dopex-clamm/index.js +++ b/projects/dopex-clamm/index.js @@ -21,7 +21,7 @@ const query = (skip = 0, limit = 1000) => `query ($block: Int) { } }` -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const allData = [] let hasMore = true let skip = 0 diff --git a/projects/dopex/index.js b/projects/dopex/index.js index 51a17a20f97..1fa89502417 100644 --- a/projects/dopex/index.js +++ b/projects/dopex/index.js @@ -24,7 +24,7 @@ const SSOVS = [ "0x32449DF9c617C59f576dfC461D03f261F617aD5a", ]; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: SSOVS}) return api.sumTokens({ tokensAndOwners2: [tokens, SSOVS]}) } diff --git a/projects/drachma/index.js b/projects/drachma/index.js index a4fa920a2a9..fb70373e02a 100644 --- a/projects/drachma/index.js +++ b/projects/drachma/index.js @@ -13,7 +13,7 @@ const { tvl: drachmaTvl, borrowed: drachmaBorrowed } = compoundExports( //tvl for drachma app function tvl(chain) { - return async (timestamp, block, chainBlocks, { api }) => { + 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]))) diff --git a/projects/dracoforce/index.js b/projects/dracoforce/index.js index 637a3eba322..2d94752ac7a 100644 --- a/projects/dracoforce/index.js +++ b/projects/dracoforce/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x3D45191668dC53FFD60ea86F664716F4b320c372" -const draco = "0x8d05B42749428C26613deB12f8989Cb8D1f5c17f" -const dracoFtmLP = "0xe6d47e140385bbdb3aac60b87b5f51e0d6340871" -const dracoUsdcLP = "0x8562e3032753edf3edf5f4d11bc079b43c9b224c"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [draco, dracoFtmLP, dracoUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, draco, "fantom"), - pool2: pool2Exports(chef, [dracoFtmLP, dracoUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x3D45191668dC53FFD60ea86F664716F4b320c372', + nativeToken: '0x8d05B42749428C26613deB12f8989Cb8D1f5c17f' +}) \ No newline at end of file diff --git a/projects/dradex/index.js b/projects/dradex/index.js index a9f3e0d0c0f..c528127ae70 100644 --- a/projects/dradex/index.js +++ b/projects/dradex/index.js @@ -7,7 +7,7 @@ module.exports = { }, } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const provider = getProvider() const programId = 'dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph' const idl = await Program.fetchIdl(programId, provider) diff --git a/projects/drift.js b/projects/drift.js index bc0d8dc90df..1f560432316 100644 --- a/projects/drift.js +++ b/projects/drift.js @@ -12,7 +12,7 @@ module.exports = { }, }; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const legacyVaults = [ '6W9yiHDCW9EpropkFV8R3rPiL8LVWUHSiys3YeW6AT6S', // legacy usdc vault diff --git a/projects/dsf-finance/index.js b/projects/dsf-finance/index.js index 1088d2dfbaa..d8bd94fe0e8 100644 --- a/projects/dsf-finance/index.js +++ b/projects/dsf-finance/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const DSF_Contract_usdLP = "0x22586ea4fdaa9ef012581109b336f0124530ae69"; const DSF_Contract_Old_contract = "0x68837EefaA5852775928E9695079bF6444e99253"; -async function ethTvl(timestamp, block, _, { api }) { +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, })) } diff --git a/projects/dubble-exchange/index.js b/projects/dubble-exchange/index.js index 90f0e199ce4..7b29b8c03e2 100644 --- a/projects/dubble-exchange/index.js +++ b/projects/dubble-exchange/index.js @@ -1,7 +1,7 @@ const VAULT_CONTRACT = "0xD522395dfD017F47a932D788eC7CB058aDBbc783"; const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const bal = await api.call({ abi: 'uint256:checkBalance', target: VAULT_CONTRACT }) api.add(ADDRESSES.arbitrum.USDC, bal) } diff --git a/projects/duet/arbitrum.js b/projects/duet/arbitrum.js index 8e43d214688..041dfce728e 100644 --- a/projects/duet/arbitrum.js +++ b/projects/duet/arbitrum.js @@ -1,7 +1,7 @@ const proPoolABI = require("./abis/pro-pool.json"); const PRO_POOL_CONTRACT = "0xdE57c591de8B3675C43fB955725b62e742b1c0B4"; -async function fetch(_, _1, _2, { api }) { +async function fetch(api) { const proPoolTvl = await api.call({ abi: proPoolABI.liquidity, target: PRO_POOL_CONTRACT }) return { 'usd-coin': proPoolTvl / 1e18 }; } diff --git a/projects/duet/bsc.js b/projects/duet/bsc.js index 6d5a49769d6..c833afef31a 100644 --- a/projects/duet/bsc.js +++ b/projects/duet/bsc.js @@ -21,7 +21,7 @@ async function getEBCakeTvl(api) { api.add('0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', ret.allEbStacked) } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const ret = await getConfig("duet-fi", TOKEN_LIST_URL); const vaultList = []; for (const token of ret) { diff --git a/projects/dungeonswap/index.js b/projects/dungeonswap/index.js index 82fca6f1a36..7df5bf08716 100644 --- a/projects/dungeonswap/index.js +++ b/projects/dungeonswap/index.js @@ -1,29 +1,8 @@ -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const MasterChefContract = "0x3720F1F9a02BFB4dD6afb9030eB826B4392D321F"; +const { masterchefExports, } = require('../helper/unknownTokens') -const bscTvl = async (chainBlocks) => { - const balances = {}; - - let transformAddress = i => `bsc:${i}`; - - await addFundsInMasterChef( - balances, - MasterChefContract, - chainBlocks["bsc"], - "bsc", - transformAddress, - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: bscTvl, - }, - methodology: - "We count liquidity on the Farms and Pools seccions through MasterChef Contract", -}; +module.exports = masterchefExports({ + chain: 'bsc', + masterchef: '0x3720F1F9a02BFB4dD6afb9030eB826B4392D321F', + nativeToken: '0x14c358b573a4ce45364a3dbd84bbb4dae87af034' +}) \ No newline at end of file diff --git a/projects/dvol/index.js b/projects/dvol/index.js index 67859062ba0..0355391cccb 100644 --- a/projects/dvol/index.js +++ b/projects/dvol/index.js @@ -42,11 +42,11 @@ async function vaultsTvlFn(api) { } } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return (await getVaultsTvl(api)).tvl } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { return (await getVaultsTvl(api)).borrowed } diff --git a/projects/ease/index.js b/projects/ease/index.js index a85cd890980..953cbceadcb 100644 --- a/projects/ease/index.js +++ b/projects/ease/index.js @@ -27,7 +27,7 @@ const ARNXM_VAULT = { address: "0x1337DEF1FC06783D4b03CB8C1Bf3EBf7D0593FC4", } -async function tvl(_, block, _1, { api }) { +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') diff --git a/projects/edebase/index.js b/projects/edebase/index.js index 233084d09a0..efbe99be522 100644 --- a/projects/edebase/index.js +++ b/projects/edebase/index.js @@ -5,7 +5,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs'); module.exports = { base: { tvl: sdk.util.sumChainTvls([ - async (_, _1, _2, { api }) => { + async (api) => { const vault = '0x251705b174386009ac82e08eAFDd7A9987e50e5d' const VaultStorage = '0xd878eA6c7aA749c88ad127852423BA8c508bcE08' const tokens = await api.call({ abi: 'address[]:fundingTokenList', target: VaultStorage}) diff --git a/projects/edgeprotocol.js b/projects/edgeprotocol.js index 8900b3ba435..fac47da59ab 100644 --- a/projects/edgeprotocol.js +++ b/projects/edgeprotocol.js @@ -4,14 +4,14 @@ async function getMarkets() { const res = await queryContract({ contract: 'terra1pcxwtrxppj9xj7pq3k95wm2zztfr9kwfkcgq0w', data: { market_lists: {} }, chain: 'terra' }) return res } -async function tvl(_, _1, _2, { api }) { +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(_, _1, _2, { api }) { +async function borrowed(api) { const markets = await getMarkets() markets.forEach(m => { api.add(m.underlying, Math.floor(m.total_loan)) diff --git a/projects/eigenlayer/index.js b/projects/eigenlayer/index.js index 9b028ed5af2..ec4acdc7b69 100644 --- a/projects/eigenlayer/index.js +++ b/projects/eigenlayer/index.js @@ -34,7 +34,7 @@ async function getEigenPods(timestamp) { throw new Error("Empty eigenpods") } -async function tvl(timestamp, _b, _cb, { api, }) { +async function tvl({timestamp}, _b, _cb, { api, }) { /* const podLogs = await getLogs({ api, diff --git a/projects/eigenpie/index.js b/projects/eigenpie/index.js index 8aec03793bf..664b4d614ab 100644 --- a/projects/eigenpie/index.js +++ b/projects/eigenpie/index.js @@ -1,6 +1,6 @@ const config = require("./config"); -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const { eigenConfig, eigenStaking } = config[api.chain]; const tokens = await api.call({ abi: 'address[]:getSupportedAssetList', target: eigenConfig, }); diff --git a/projects/ekubo/index.js b/projects/ekubo/index.js index 57f7c960978..dab7086e0f1 100644 --- a/projects/ekubo/index.js +++ b/projects/ekubo/index.js @@ -3,7 +3,7 @@ const { getConfig } = require('../helper/cache') const market = '0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b' -async function tvl(_, _1, _2, { api }) { +async function tvl(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) }) } diff --git a/projects/elasticswap/index.js b/projects/elasticswap/index.js index eee57828e35..9409bf2a9a8 100644 --- a/projects/elasticswap/index.js +++ b/projects/elasticswap/index.js @@ -39,7 +39,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { startBlock, factory, stakingPools, ticToken, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }, { api }) => { + tvl: async (api) => { let { pairAddresses = [] } = config[chain] if (startBlock) { @@ -57,24 +57,17 @@ Object.keys(config).forEach(chain => { pairAddresses.push(`0x${log.topics[2].substr(-40)}`.toLowerCase()) } - const calls = pairAddresses.map(i => ({ target: i })) + const calls = pairAddresses - const { output: baseToken } = await sdk.api.abi.multiCall({ - abi: BaseTokenAbi, - chain, block, calls, + const baseToken = await api.multiCall({ + abi: BaseTokenAbi, calls, }); - const { output: quoteToken } = await sdk.api.abi.multiCall({ - abi: QuoteTokenAbi, - chain, block, calls, + const quoteToken = await api.multiCall({ + abi: QuoteTokenAbi, calls, }) - const toa = [] - const addTokens = ({ output, input: { target }}) => toa.push([output, target, ]) - baseToken.forEach(addTokens) - quoteToken.forEach(addTokens) - - return sumTokens2({ tokensAndOwners: toa, chain, block, }) + return sumTokens2({ tokensAndOwners2: [baseToken.concat(quoteToken), calls.concat(calls)], api, }) }, staking: stakings(stakingPools, ticToken, chain) } diff --git a/projects/electrikfinance/index.js b/projects/electrikfinance/index.js index 03f458c4f32..fbe4d161219 100644 --- a/projects/electrikfinance/index.js +++ b/projects/electrikfinance/index.js @@ -6,7 +6,7 @@ const tokenAPI = "address:want" module.exports = { [chain]: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { let { result: { pools } } = await getConfig('elektrik-finance', 'https://api.electrik.finance/api/status/pools'); pools = Object.values(pools) const vaults = []; diff --git a/projects/elektrik/index.js b/projects/elektrik/index.js index 7bd0f583d09..d368d52a3a2 100644 --- a/projects/elektrik/index.js +++ b/projects/elektrik/index.js @@ -9,7 +9,7 @@ const query = `{ } }` -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { pools } = await cachedGraphQuery('elektrik/test-2', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH', query) const ownerTokens = pools.map(i => [[i.token0.id, i.token1.id], i.id]) return sumTokens2({ api, ownerTokens, }) diff --git a/projects/elementfi/index.js b/projects/elementfi/index.js index 3d75438b06c..c3f392d4a12 100644 --- a/projects/elementfi/index.js +++ b/projects/elementfi/index.js @@ -19,8 +19,9 @@ const wps = [ '0x9e030b67a8384cbba09D5927533Aa98010C87d91' ] -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { let balances = {}; + const block = api.block const tranches = (await getLogs({ target: trancheFactoryAddress, diff --git a/projects/ellipsis/index.js b/projects/ellipsis/index.js index 3657d563e21..b68ae3c826e 100644 --- a/projects/ellipsis/index.js +++ b/projects/ellipsis/index.js @@ -7,7 +7,7 @@ const abis = { coins: 'function coins(uint256 arg0) view returns (address)' } -async function tvl(_, _b, _1, { api }) { +async function tvl(api) { const ownerTokens = [] const poolInfo = await getConfig('ellipsis', 'https://api.ellipsis.finance/api/getPoolsCrypto') const wrappedCoinPools = [ @@ -41,7 +41,7 @@ async function tvl(_, _b, _1, { api }) { const stakingContract = "0x4076cc26efee47825917d0fec3a79d0bb9a6bb5c" const eps = "0xa7f552078dcc247c2684336020c03648500c6d9f" -async function staking(time, ethBlock, chainBlocks, { api }) { +async function staking(api) { const locked = await api.call({ target: stakingContract, abi: 'uint256:lockedSupply' }) return { ["bsc:" + eps]: locked diff --git a/projects/elysia/index.js b/projects/elysia/index.js index 4fef637f11c..cb1f3a54652 100644 --- a/projects/elysia/index.js +++ b/projects/elysia/index.js @@ -47,7 +47,7 @@ const config = { Object.keys(config).forEach(chain => { const { v1Pools, v2Pools, stakingConfig } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { if (v1Pools) { const v1Assets = await api.multiCall({ abi: abi.v1Asset, calls: v1Pools }) await api.sumTokens({ tokensAndOwners2: [v1Assets, v1Pools] }) @@ -59,7 +59,7 @@ Object.keys(config).forEach(chain => { } return api.getBalances() }, - borrowed: async (_, _b, _cb, { api, }) => { + 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] })) }) diff --git a/projects/emiswap/index.js b/projects/emiswap/index.js index 21ce74b0b76..c33204f3321 100644 --- a/projects/emiswap/index.js +++ b/projects/emiswap/index.js @@ -23,7 +23,7 @@ module.exports = { Object.keys(chainConfig).forEach(chain => { const { factory } = chainConfig[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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]) }) diff --git a/projects/ennead/index.js b/projects/ennead/index.js index b98b11c2dfa..ade5ba1d609 100644 --- a/projects/ennead/index.js +++ b/projects/ennead/index.js @@ -20,7 +20,7 @@ const neadSnekLp = '0x82360748aC3D7045812c6783f355b41193d3492E'; const snekView = '0xe99eadc22747c95c658f41a02F1c6C2CcAefA757'; const booster = '0xe99ead683Dcf1eF0C7F6612be5098BC5fDF4998d'; -async function arbiTvl(timestamp, block, chainBlocks, { api }) { +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) @@ -30,7 +30,7 @@ async function arbiTvl(timestamp, block, chainBlocks, { api }) { await sumTokens2({ api, uniV3nftsAndOwners: [[nfpManager, neadNfpDepositor],], resolveLP: true, }) } -async function avaxTvl(timestamp, block, chainBlocks, { api }) { +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}))}) diff --git a/projects/ensuro/index.js b/projects/ensuro/index.js index b56951a9492..d83f3663ffa 100644 --- a/projects/ensuro/index.js +++ b/projects/ensuro/index.js @@ -35,7 +35,7 @@ const addressBook = { } }; -async function tvl(_timestamp, _block, _blocksOthers, { api }) { +async function tvl(api) { const addresses = addressBook[api.chain]; const ownerTokens = addresses.reserves.map(i => [[addresses.usdc, addresses.aave_v3_usdc], i.address]) diff --git a/projects/enzyme/index.js b/projects/enzyme/index.js index 80508934f36..cb3128d075f 100644 --- a/projects/enzyme/index.js +++ b/projects/enzyme/index.js @@ -12,7 +12,7 @@ const query = `query get_accounts($lastId: String!) { ) { id trackedAssets { id } } }` -async function tvl(ts, block, _, { api }) { +async function tvl(api) { const { endpoint } = config[api.chain] const vaults = await cachedGraphQuery('enzyme/' + api.chain, endpoint, query, { fetchById: true, }) return sumTokens2({ diff --git a/projects/equation-v2/index.js b/projects/equation-v2/index.js index 9ab5105a667..d3630ae1c59 100644 --- a/projects/equation-v2/index.js +++ b/projects/equation-v2/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const { marketManager, usd } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const ownerTokens = [[[usd], marketManager]]; return sumTokens2({ api, ownerTokens }); } diff --git a/projects/equation/index.js b/projects/equation/index.js index 22c941a4d86..c1db856138d 100644 --- a/projects/equation/index.js +++ b/projects/equation/index.js @@ -13,7 +13,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, EQU, stakingContract, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/ester/abi.json b/projects/ester/abi.json index a7b6dcf79ff..eca4380c784 100644 --- a/projects/ester/abi.json +++ b/projects/ester/abi.json @@ -1,7 +1,5 @@ { - "poolInfoStaking": "function poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardTime, uint256 accESTPerShare)", - "poolInfo": "function poolInfo(uint256) view returns (address want, uint256 allocPoint, uint256 lastRewardTime, uint256 accESTPerShare, address strat)", - "poolLength": "uint256:poolLength", - "wantLockedTotal": "uint256:wantLockedTotal", - "symbol": "string:symbol" + "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 index 77de65192b1..29ee29cda56 100644 --- a/projects/ester/index.js +++ b/projects/ester/index.js @@ -1,109 +1,17 @@ -const sdk = require("@defillama/sdk"); +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require("../helper/utils"); const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2 } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const esterStakingChefContract = "0x78e9D247541ff7c365b50D2eE0defdd622016498"; -const EST = "0x181f3f22c9a751e2ce673498a03e1fdfc0ebbfb6"; -const WFTM_EST_SPIRITLP = "0x0c9043cb1B994C8e4a8024e2F037Ea50b7025a82"; - -const esterVaultFarmContract = "0xA6151b608f49Feb960e951F1C87F4C766850de31"; - -const ftmTvl = async (chainBlocks) => { - const balances = {}; - - let transformAddress = i => `fantom:${i}`; - - await addFundsInMasterChef( - balances, - esterStakingChefContract, - chainBlocks["fantom"], - "fantom", - transformAddress, - abi.poolInfoStaking, - [EST, WFTM_EST_SPIRITLP] - ); - - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: esterVaultFarmContract, - chain: "fantom", - block: chainBlocks["fantom"], - }) - ).output; - - const lpPositions = []; - - for (let index = 0; index < poolLength; index++) { - const strat = ( - await sdk.api.abi.call({ - abi: abi.poolInfo, - target: esterVaultFarmContract, - params: index, - chain: "fantom", - block: chainBlocks["fantom"], - }) - ).output.strat; - - const want = ( - await sdk.api.abi.call({ - abi: abi.poolInfo, - target: esterVaultFarmContract, - params: index, - chain: "fantom", - block: chainBlocks["fantom"], - }) - ).output.want; - - const strat_bal = ( - await sdk.api.abi.call({ - abi: abi.wantLockedTotal, - target: strat, - chain: "fantom", - block: chainBlocks["fantom"], - }) - ).output; - - const symbol = ( - await sdk.api.abi.call({ - abi: abi.symbol, - target: want, - chain: "fantom", - block: chainBlocks["fantom"], - }) - ).output; - - if (symbol.includes("LP")) { - lpPositions.push({ - token: want, - balance: strat_bal, - }); - } else { - sdk.util.sumSingleBalance(balances, `fantom:${want}`, strat_bal); - } - } - - await unwrapUniswapLPs( - balances, - lpPositions, - chainBlocks["fantom"], - "fantom", - transformAddress - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - fantom: { - staking: staking(esterStakingChefContract, EST, "fantom"), - pool2: pool2(esterStakingChefContract, WFTM_EST_SPIRITLP, "fantom"), - tvl: ftmTvl, - }, - methodology: - "We count liquidity on all the Vaults through EsterStakingChef and EsterVaultFarmt Contracts", -}; +module.exports = mergeExports([ + masterchefExports({ + chain: 'fantom', + masterchef: '0xA6151b608f49Feb960e951F1C87F4C766850de31', + nativeToken: '0x181f3f22c9a751e2ce673498a03e1fdfc0ebbfb6', + poolInfoABI: abi.poolInfo + }), + masterchefExports({ + chain: 'fantom', + masterchef: '0x78e9D247541ff7c365b50D2eE0defdd622016498', + nativeToken: '0x181f3f22c9a751e2ce673498a03e1fdfc0ebbfb6', + }) +]) \ No newline at end of file diff --git a/projects/ether-fi/index.js b/projects/ether-fi/index.js index 1b67838b4c1..3be5a79fad1 100644 --- a/projects/ether-fi/index.js +++ b/projects/ether-fi/index.js @@ -4,11 +4,11 @@ const sdk = require('@defillama/sdk') module.exports = { doublecounted: true, ethereum: { - tvl: async (timestamp) => { + tvl: async ({ timestamp }) => { const api = new sdk.ChainApi({ timestamp, chain: 'optimism' }) await api.getBlock() return { - [nullAddress]: await api.call({ target: '0x6329004E903B7F420245E7aF3f355186f2432466', abi: 'uint256:getTvl'}) + [nullAddress]: await api.call({ target: '0x6329004E903B7F420245E7aF3f355186f2432466', abi: 'uint256:getTvl' }) } } } diff --git a/projects/etherberry/index.js b/projects/etherberry/index.js index 4c2921668d5..183f80749b1 100644 --- a/projects/etherberry/index.js +++ b/projects/etherberry/index.js @@ -8,7 +8,7 @@ const WETH_ADDRESS = ADDRESSES.arbitrum.WETH; const BERRY_ETH_LP_ADDRESS = "0x6eF6eCD8AC5626525383d72AfaA9a7e7e39C0959"; const BERRY_ETH_STAKING_POOL = "0xcA4319D51472D7111fa3A103b07fc08fC8b20655"; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: FACTORY_CONTRACT, diff --git a/projects/ethos/index.js b/projects/ethos/index.js index 0cf77ad8eeb..490e469441e 100644 --- a/projects/ethos/index.js +++ b/projects/ethos/index.js @@ -25,7 +25,7 @@ const strategiesVersioned = { const strategies = Object.values(strategiesVersioned).map(i => Object.values(i)).flat() -async function tvl(_, _b, _cb, { api, }) { +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 }) @@ -42,7 +42,7 @@ async function tvl(_, _b, _cb, { api, }) { // api.addTokens(tokens, bals) } -async function pool2(_, _b, _cb, { api, }) { +async function pool2(api) { const toa = [ ['0xd20f6F1D8a675cDCa155Cb07b5dC9042c467153f', '0x9425b96462b1940e7563cd765464300f6a774805'], ['0xD13D81aF624956327A24d0275CBe54b0eE0E9070', '0x6c56A0Ca937A3C9f29bCF386D3cD0667Ef9d7e88'], diff --git a/projects/euler/index.js b/projects/euler/index.js index ac677a77285..9c6a1503423 100644 --- a/projects/euler/index.js +++ b/projects/euler/index.js @@ -13,7 +13,7 @@ module.exports = { }, }; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const EULER = '0x27182842e098f60e3d576794a5bffb0777e025d3' const logs = await getLogs({ api, @@ -27,7 +27,7 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, owner: EULER, tokens: logs.map(i => i.underlying)}) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const EULER = '0x27182842e098f60e3d576794a5bffb0777e025d3' const logs = await getLogs({ api, diff --git a/projects/everrise/index.js b/projects/everrise/index.js index 9a11a8d5e05..c91b2146753 100644 --- a/projects/everrise/index.js +++ b/projects/everrise/index.js @@ -104,7 +104,7 @@ let daoLockerClients = null Object.keys(chainConfig).forEach(chain => { const chainData = chainConfig[chain] - async function tvl(ts, _block, chainBlocks, { api }) { + async function tvl(api) { const tokensAndOwners = [ [nullAddress, TOKEN], ...RESERVES.map(i => [nullAddress, i]) diff --git a/projects/evolutionland/index.js b/projects/evolutionland/index.js index daab37b011c..1237f009522 100644 --- a/projects/evolutionland/index.js +++ b/projects/evolutionland/index.js @@ -51,7 +51,7 @@ const lpETH = { "crab": "0xF157c9393255Db1728bC6483c3545Ca8a1655a0F", } -async function tvl(_, _b, _cb, { api, }) { +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]) diff --git a/projects/exactly/index.js b/projects/exactly/index.js index 08afe5d8940..1d2fc117018 100644 --- a/projects/exactly/index.js +++ b/projects/exactly/index.js @@ -21,7 +21,7 @@ Object.entries(config).forEach(([chain, { auditor, start }]) => { module.exports[chain] = { start, /** @type {(timestamp: number, block: number, chainBlocks: Record, { api: ChainApi }) => Promise} */ - tvl: async (_, __, ___, { api }) => { + tvl: async (api) => { /** @type {Balances} */ const balances = {}; const data = await markets(api, auditor); @@ -36,7 +36,7 @@ Object.entries(config).forEach(([chain, { auditor, start }]) => { return balances; }, /** @type {(timestamp: number, block: number, chainBlocks: Record, { api: ChainApi }) => Promise} */ - borrowed: async (_, __, ___, { api }) => { + borrowed: async (api) => { /** @type {Balances} */ const balances = {}; const data = await markets(api, auditor); diff --git a/projects/extra/index.js b/projects/extra/index.js index bc4851a56cf..d26a63db732 100644 --- a/projects/extra/index.js +++ b/projects/extra/index.js @@ -14,7 +14,7 @@ const getVaultAbi = "function getVault(uint256 vaultId) view returns (tuple(addr Object.keys(config).forEach(chain => { const { factory, fromBlock, vaultFactory, positionViewer, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/factor-leverage-vault/index.js b/projects/factor-leverage-vault/index.js index 0ee91ce4361..33853aebb3a 100644 --- a/projects/factor-leverage-vault/index.js +++ b/projects/factor-leverage-vault/index.js @@ -13,7 +13,7 @@ const queryBlock = `query data($block: Int){ const SUBGRAPH_URL = "https://api.thegraph.com/subgraphs/name/dimasriat/factor-leverage-vault"; -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const { leverageVaultPairStates } = await blockQuery(SUBGRAPH_URL, queryBlock, { api }) for (let pairState of leverageVaultPairStates) { diff --git a/projects/factor-v2/index.js b/projects/factor-v2/index.js index dc4521416f1..d4d1de87a9b 100644 --- a/projects/factor-v2/index.js +++ b/projects/factor-v2/index.js @@ -7,7 +7,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/factor/index.js b/projects/factor/index.js index 4bbc739b2d3..03023d259db 100644 --- a/projects/factor/index.js +++ b/projects/factor/index.js @@ -5,7 +5,7 @@ const { cachedGraphQuery } = require('../helper/cache'); const FCTR = "0x6dD963C510c2D2f09d5eDdB48Ede45FeD063Eb36" const veFCTR = "0xA032082B08B2EF5A6C3Ea80DaEac58300F68FB73" -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const endpoint = 'https://api.thegraph.com/subgraphs/name/yanuar-ar/factor-arbitrum' const res = await cachedGraphQuery('factor-v1', endpoint, `{vaultGeneses { id }}`) const indices = res.vaultGeneses.map(v => v.id) diff --git a/projects/fantompup/index.js b/projects/fantompup/index.js index 0aef18f8318..3fd38b3ba92 100644 --- a/projects/fantompup/index.js +++ b/projects/fantompup/index.js @@ -1,28 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0xCFD389eFCD11aB30933F46e493da08cE5ebAf233" -const fpup = "0x900825EA297c7c5D1F6fA54146849BC41EdDAf29" -const fPupFwingsFtmLP = "0xF0cE83239ac341941eDe0Fe9Acef8ae22d271709" -const fPupFwingsUsdcLP = "0xE2fA732C69F7Ca59944f8007d87c5906AFEb6b8F"; -const fPupSpookyLP = "0xc2F40ba0cfdAe59E4E16727862C7a0f249fcAaF2"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [fpup, fPupFwingsFtmLP, fPupFwingsUsdcLP, fPupSpookyLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, fpup, "fantom"), - pool2: pool2Exports(chef, [fPupFwingsFtmLP, fPupFwingsUsdcLP, fPupSpookyLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xCFD389eFCD11aB30933F46e493da08cE5ebAf233', + nativeToken: '0x900825EA297c7c5D1F6fA54146849BC41EdDAf29' +}) \ No newline at end of file diff --git a/projects/ferro/index.js b/projects/ferro/index.js index c53f3ae1e8b..007b21fc258 100644 --- a/projects/ferro/index.js +++ b/projects/ferro/index.js @@ -34,7 +34,7 @@ const tokens = { '0xD42E078ceA2bE8D03cd9dFEcC1f0d28915Edea78': ['0x6A41732eaDBE15e9c9FcA2cfF1299c6321AA104B'], }; -async function tvl(timestamp, ethBlock, _, { api }) { +async function tvl(api) { const tokensAndOwners = Object.entries(tokens).map(([token, owners]) => owners.map(owner => [token, owner])).flat() return sumTokens2({ api, tokensAndOwners }) } diff --git a/projects/filet/index.js b/projects/filet/index.js index 69ba079a07c..a45d4d59a09 100644 --- a/projects/filet/index.js +++ b/projects/filet/index.js @@ -43,7 +43,7 @@ const getMinersList = async () => { module.exports = { timetravel: false, heco: { - tvl: async (_, _1, _2, { api}) => { + tvl: async () => { const tvlData = await fetchURL(filetAPI) return { ["filecoin"]: new BigNumber(tvlData.data.data.hecoTvl), @@ -51,7 +51,7 @@ module.exports = { } }, bsc: { - tvl: async (_, _1, _2, { api}) => { + tvl: async () => { const tvlData = await fetchURL(filetAPI) return { @@ -61,7 +61,7 @@ module.exports = { } }, filecoin: { - tvl: async (_, _1, _2, { api }) => { + 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] }); @@ -78,7 +78,7 @@ module.exports = { }, }, mixin: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const tvlData = await fetchURL(filetAPI) return { ["filecoin"]: new BigNumber(tvlData.data.data.mixinTvl), diff --git a/projects/flamincome.js b/projects/flamincome.js index 7ce18b96452..73ff2d6660e 100644 --- a/projects/flamincome.js +++ b/projects/flamincome.js @@ -23,7 +23,7 @@ const vaults = { "VaultBaselinecrvRenWSBTC": "0x483A47247d5cBd420A9c5d2838Ec89776ba8B56B", */ } -async function tvl(ts, block, _, { api }) { +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}) diff --git a/projects/flamingo.js b/projects/flamingo.js index 3fb15269b96..e26441b5b81 100644 --- a/projects/flamingo.js +++ b/projects/flamingo.js @@ -1,6 +1,6 @@ const { get } = require('./helper/http') -async function tvl(timestamp) { +async function tvl({ timestamp }) { const ONE_DAY_AGO = timestamp - 24 * 60 * 60 const data = await get('https://api.flamingo.finance/analytics/pool-stats?mainnet=true'); return { @@ -12,14 +12,14 @@ async function tvl(timestamp) { 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"], - [1656410400, "Mobile App"] - ], + [1638525600, "N3 migration start"], + [1641117600, "100% minting on N3"], + [1641808800, "First IDO"], + [1648116000, "First reverse pool"], + [1650276000, "Binance N3 support"], + [1651140000, "FLUND single stake"], + [1656410400, "Mobile App"] + ], methodology: `TVL is obtained by making calls to the Flamingo Finance API "https://api.flamingo.finance/token-info/tvl".`, misrepresentedTokens: true, timetravel: false, diff --git a/projects/flashstake-old/index.js b/projects/flashstake-old/index.js index 25dfe370179..6af7c3ed7da 100644 --- a/projects/flashstake-old/index.js +++ b/projects/flashstake-old/index.js @@ -1,6 +1,6 @@ const { getLogs } = require('../helper/cache/getLogs') -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0xb0aeae6e204bd95911ead25263d7078954fb7fb0', diff --git a/projects/flashstake/index.js b/projects/flashstake/index.js index 3e2cc6bb58b..f8b07fc387f 100644 --- a/projects/flashstake/index.js +++ b/projects/flashstake/index.js @@ -33,7 +33,7 @@ module.exports = { Object.keys(config).forEach(chain => { // const { fromBlock, protocol, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} // const logs = await getLogs({ // api, diff --git a/projects/flokifi-locker/index.js b/projects/flokifi-locker/index.js index 58feef0ecee..0fce0d1c144 100644 --- a/projects/flokifi-locker/index.js +++ b/projects/flokifi-locker/index.js @@ -38,7 +38,7 @@ function splitPairs(pairs) { return { tokensAndOwners, uniV3NFTHolders }; } -async function tvl(_, _b, _2, { api }) { +async function tvl(api) { const chain = api.chain const pairs = await fetch(chains[chain]); let cache = getCache(project, chain) || {} diff --git a/projects/florence-finance/index.js b/projects/florence-finance/index.js index 145603558e0..5858527103e 100644 --- a/projects/florence-finance/index.js +++ b/projects/florence-finance/index.js @@ -13,7 +13,7 @@ async function getTotalSupply(token, { api }) { return totalSupply; } -async function getBorrowedOnEthereum(_, _1, _2, { api }) { +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, @@ -25,7 +25,7 @@ async function getBorrowedOnEthereum(_, _1, _2, { api }) { api.add(ETH_EURS, borrowed / 1e16); //18 decimals (FLR) -> 2 decimals (EURS) } -async function getBorrowedOnArbitrum(_, _1, _2, { api }) { +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. } diff --git a/projects/fluid/index.js b/projects/fluid/index.js index 090c522604f..59a97118a81 100644 --- a/projects/fluid/index.js +++ b/projects/fluid/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') module.exports={ ethereum:{ - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens = await api.call({ target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", abi: "function listedTokens() public view returns (address[] memory listedTokens_)" }) return api.sumTokens({ owner: "0x52aa899454998be5b000ad077a46bbe360f4e497", tokens: [ ADDRESSES.null, diff --git a/projects/fluidity-money/index.js b/projects/fluidity-money/index.js index 5143ca8761e..530a1a9920a 100644 --- a/projects/fluidity-money/index.js +++ b/projects/fluidity-money/index.js @@ -8,16 +8,16 @@ const COMPOUND_ETHEREUM = [ ['0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9', '0x372025203D25589eC3aDAd82652De78eC76fFabC'], ['0x39AA39c021dfbaE8faC545936693aC917d5E7563', '0xE87Adc9D382Eee54C1eDE017D6E5C1324D59F457'], ]; -async function tvl_eth(timestamp, block, chainBlocks, { api }) { +async function tvl_eth(api) { await sumTokens2({ api, tokensAndOwners: COMPOUND_ETHEREUM }) await sumTokens2({ api, tokensAndOwners2: [ATOKENS_ETHEREUM, APOOL_ETHEREUM] }) } -async function tvl_arb(timestamp, block, chainBlocks, { api }) { +async function tvl_arb(api) { await sumTokens2({ api, tokensAndOwners2: [ATOKENS_ARBITRUM, APOOL_ARBITRUM] }) } -async function tvl_sol(timestamp, block, chainBlocks, { api }) { +async function tvl_sol(api) { const fUSDC = 'Ez2zVjw85tZan1ycnJ5PywNNxR6Gm4jbXQtZKyQNu3Lv' const supply = await getTokenSupply(fUSDC) api.add(fUSDC, supply * 1e6) diff --git a/projects/fluidtokens/index.js b/projects/fluidtokens/index.js index 4defbb270b5..9f5649485c0 100644 --- a/projects/fluidtokens/index.js +++ b/projects/fluidtokens/index.js @@ -72,9 +72,7 @@ async function staking() { }; } -async function borrowed( - ts //timestamp in seconds -) { +async function borrowed() { const data = await get("https://api.fluidtokens.com/get-ft-stats"); let SC_tvl = parseInt(data.active_loans_volume); diff --git a/projects/fluxbeam-xyz/index.js b/projects/fluxbeam-xyz/index.js index 74d701fe69b..85f3641269f 100644 --- a/projects/fluxbeam-xyz/index.js +++ b/projects/fluxbeam-xyz/index.js @@ -2,7 +2,7 @@ const { getConnection, decodeAccount, sumTokens2 } = require('../helper/solana') const sdk = require('@defillama/sdk') const { PublicKey } = require("@solana/web3.js") -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const connection = getConnection() const programPublicKey = new PublicKey('FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X') diff --git a/projects/fortube/index.js b/projects/fortube/index.js index 418150eaa6a..82c7420926c 100644 --- a/projects/fortube/index.js +++ b/projects/fortube/index.js @@ -15,7 +15,7 @@ const config = { Object.keys(config).forEach(chain => { const owner = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const markets = await api.call({ abi: abi.getAllMarkets, target: owner, diff --git a/projects/fortunafi-fbill/index.js b/projects/fortunafi-fbill/index.js index 137682ff658..a6437d9fc62 100644 --- a/projects/fortunafi-fbill/index.js +++ b/projects/fortunafi-fbill/index.js @@ -9,7 +9,7 @@ const contracts = { } } -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); api.add(ADDRESSES[api.chain].USDC, nav / 1e12) diff --git a/projects/fortunafi-ifbill/index.js b/projects/fortunafi-ifbill/index.js index 3d89f164a04..2c9aa1b5414 100644 --- a/projects/fortunafi-ifbill/index.js +++ b/projects/fortunafi-ifbill/index.js @@ -6,7 +6,7 @@ const contracts = { } } -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); api.add(ADDRESSES.canto.USDC, nav / 1e12) diff --git a/projects/fpi/index.js b/projects/fpi/index.js index 90a3ccf3c99..24cf40c7a7f 100644 --- a/projects/fpi/index.js +++ b/projects/fpi/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const frax = ADDRESSES.ethereum.FRAX const fxs = "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0" -async function tvl(_, _b, _cb, { api, erc20 }){ +async function tvl(api){ const balances = {} // owner 0x6a7efa964cf6d9ab3bc3c47ebddb853a8853c502 const lpOwned = await api.call({ abi: "function totalBalanceOf(address) view returns (uint256)", target:"0x7287488f8df7dddc5f373142d4827aaf92aac845", params: ["0x921852ba77cbceaa29e986e45ef2207f6e664df2"] }) diff --git a/projects/fractal-protocol/index.js b/projects/fractal-protocol/index.js index 370f575696b..07948016f49 100644 --- a/projects/fractal-protocol/index.js +++ b/projects/fractal-protocol/index.js @@ -58,11 +58,11 @@ async function getLoanDebt(loans, api) { return api.getBalances() } -const getEthTvl = async (_, ethBlock, __, { api }) => { +const getEthTvl = async (api) => { return sumTokens2({ owners: [FRACTAL_YIELD_RESERVE_ETH, FRACTAL_VAULT_CONTRACT_ETH], tokens: [USDC_ETH,], api }) }; -const getEthLoans = async (_, ethBlock, __, { api }) => { +const getEthLoans = async (api) => { return getLoanDebt(ETH_LOANS, api) } diff --git a/projects/fractional-art.js b/projects/fractional-art.js index d607a5bc109..43b3a90e2bb 100644 --- a/projects/fractional-art.js +++ b/projects/fractional-art.js @@ -2,7 +2,7 @@ const { getLogs } = require('./helper/cache/getLogs') const { sumTokens2 } = require('./helper/unwrapLPs') const { isArtBlocks } = require('./helper/nft') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory = '0x85aa7f78bdb2de8f3e0c0010d99ad5853ffcfc63' const logs = await getLogs({ api, @@ -30,7 +30,7 @@ async function tvl(_, _b, _cb, { api, }) { ] }) } -async function tvlLPDA(_, _b, _cb, { api, }) { +async function tvlLPDA(api) { const factory = '0x32e8ab1e243d8d912a5ae937635e07e7e451d2ae' const logs = await getLogs({ api, diff --git a/projects/frankencoin/index.js b/projects/frankencoin/index.js index e3bc610dc6c..15e6c3633c7 100644 --- a/projects/frankencoin/index.js +++ b/projects/frankencoin/index.js @@ -4,7 +4,7 @@ const { cachedGraphQuery } = require('../helper/cache') const MintingHub = "0x7bbe8F18040aF0032f4C2435E7a76db6F1E346DF"; const Collaterals = ["0xb4272071ecadd69d933adcd19ca99fe80664fc08"]; // XCHF -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const tokensAndOwners = Collaterals.map(i => [i, MintingHub]) const { positions } = await cachedGraphQuery('frankencoin', 'https://api.thegraph.com/subgraphs/name/frankencoin-zchf/frankencoin-subgraph', '{ positions { position collateral } }') positions.forEach(i => tokensAndOwners.push([i.collateral, i.position])) diff --git a/projects/fraxfinance/index.js b/projects/fraxfinance/index.js index 471fb0d5e0a..7203aed3a44 100644 --- a/projects/fraxfinance/index.js +++ b/projects/fraxfinance/index.js @@ -144,7 +144,7 @@ async function addInvestorAMO(api, balances) { }) } -const ethereumTvl = async (timestamp, block, _, { api }) => { +const ethereumTvl = async (api) => { let balances = {}; await Promise.all([ diff --git a/projects/fraxlend/index.js b/projects/fraxlend/index.js index 86df2b95b80..43666adff2d 100644 --- a/projects/fraxlend/index.js +++ b/projects/fraxlend/index.js @@ -4,12 +4,12 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const REGISTRY_ADDR = "0xD6E9D27C75Afd88ad24Cd5EdccdC76fd2fc3A751" -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const pairs = await api.call({ target: REGISTRY_ADDR, abi: abi['getAllPairAddresses'], }) const tokens = await api.multiCall({ abi: abi.collateralContract, calls: pairs }) return sumTokens2({ api, tokensAndOwners: tokens.map((v, i) => [v, pairs[i]]) }) } -async function borrowed(timestamp, block, chainBlocks, { api }) { +async function borrowed(api) { const pairs = await api.call({ target: REGISTRY_ADDR, abi: abi['getAllPairAddresses'], }) const bals = await api.multiCall({ abi: 'function totalBorrow() view returns (uint128 amount, uint128 shares)', calls: pairs }) bals.forEach(bal => api.add(ADDRESSES.ethereum.FRAX, bal.amount)) diff --git a/projects/freebie/index.js b/projects/freebie/index.js index eb950c1b396..8b811d66ed4 100644 --- a/projects/freebie/index.js +++ b/projects/freebie/index.js @@ -4,7 +4,7 @@ const { staking } = require('../helper/staking') const token = '0x9bedce29f79076b21dd04958a9fd4b22f63fd86d' -async function frbVault(_, _b, _cb, { api, }) { +async function frbVault(api) { const balances = { ['avax:'+token]: await api.call({ abi: 'uint256:balanceVault', target: token, }) } diff --git a/projects/fringe/utils.js b/projects/fringe/utils.js index 26439855402..ffd4fd5df30 100644 --- a/projects/fringe/utils.js +++ b/projects/fringe/utils.js @@ -4,14 +4,14 @@ function getExports(config, exportsObj) { Object.keys(config).forEach(chain => { const pit = config[chain] exportsObj[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const { lendingTokens, bTokens } = await getConfig(api) const bals = await api.multiCall({ abi: 'uint256:totalBorrows', calls: bTokens }) api.addTokens(lendingTokens, bals) diff --git a/projects/frostfinance/index.js b/projects/frostfinance/index.js index e7c0f01d0ea..4be5c188545 100644 --- a/projects/frostfinance/index.js +++ b/projects/frostfinance/index.js @@ -1,9 +1,3 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2BalanceFromMasterChefExports } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - const masterChefTUNDRA = "0x87f1b38D0C158abe2F390E5E3482FDb97bC8D0C5"; const TUNDRA = "0x21c5402C3B7d40C89Cc472C9dF5dD7E51BbAb1b1"; @@ -13,82 +7,13 @@ const EXP = "0xf57b80a574297892b64e9a6c997662889b04a73a"; const masterChefDUNE = "0xCEA209Fafc46E5C889A8ad809e7C8e444B2420C0"; const DUNE = "0x314f3bee25e49ea4bcea9a3d1321c74c95f10eab"; -async function avaxTvl(timestamp, block, chainBlocks) { - const balances = {}; - - const transformAddress = addr => 'avax:'+addr - - await addFundsInMasterChef( - balances, - masterChefTUNDRA, - chainBlocks.avax, - "avax", - transformAddress, - abi.poolInfo, - [TUNDRA], - true, - true, - TUNDRA - ); - - await addFundsInMasterChef( - balances, - masterChefEXP, - chainBlocks.avax, - "avax", - transformAddress, - abi.poolInfo, - [EXP], - true, - true, - EXP - ); +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require("../helper/utils"); - await addFundsInMasterChef( - balances, - masterChefDUNE, - chainBlocks.avax, - "avax", - transformAddress, - abi.poolInfo, - [DUNE], - true, - true, - DUNE - ); - return balances; -} +const common = { chain: 'avax', nativeTokens: [TUNDRA, EXP, DUNE] } -module.exports = { - misrepresentedTokens: true, - avax: { - staking: sdk.util.sumChainTvls([ - staking(masterChefTUNDRA, TUNDRA, "avax"), - staking(masterChefEXP, EXP, "avax"), - staking(masterChefDUNE, DUNE, "avax"), - ]), - pool2: sdk.util.sumChainTvls([ - pool2BalanceFromMasterChefExports( - masterChefTUNDRA, - TUNDRA, - "avax", - (addr) => `avax:${addr}` - ), - pool2BalanceFromMasterChefExports( - masterChefEXP, - EXP, - "avax", - (addr) => `avax:${addr}` - ), - pool2BalanceFromMasterChefExports( - masterChefDUNE, - DUNE, - "avax", - (addr) => `avax:${addr}` - ), - ]), - tvl: avaxTvl, - }, - methodology: - "Counts TVL on all the farms and pools through MasterChef Contracts", -}; +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/fujidao-v2/index.js b/projects/fujidao-v2/index.js index d3f8e186a90..1e1f2c241a1 100644 --- a/projects/fujidao-v2/index.js +++ b/projects/fujidao-v2/index.js @@ -37,7 +37,7 @@ Object.keys(config).forEach(chain => { const yfactories = factories.filter( factory => factory.hasOwnProperty('yieldFactory')) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let blogs = []; for (let i = 0; i < bfactories.length; i++) { const { borrowFactory, startBlock } = bfactories[i]; @@ -100,7 +100,7 @@ Object.keys(config).forEach(chain => { return api.getBalances() }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { let logs = []; for (let i = 0; i < bfactories.length; i++) { const { borrowFactory, startBlock } = bfactories[i]; diff --git a/projects/fulcrom/index.js b/projects/fulcrom/index.js index c86a5d1f9a8..b31fd2f4870 100644 --- a/projects/fulcrom/index.js +++ b/projects/fulcrom/index.js @@ -4,7 +4,7 @@ const CRO_VAULT_ADDR = '0x8C7Ef34aa54210c76D6d5E475f43e0c11f876098'; const ZKSYNC_VAULT_ADDR = '0x7d5b0215EF203D0660BC37d5D09d964fd6b55a1E'; function fulExports({ vault, }) { - return async (ts, _block, _, { api }) => { + return async (api) => { const tokenAddresses = await api.fetchList({ target: vault, lengthAbi: abis.whitelistedTokenCount, diff --git a/projects/funbear/index.js b/projects/funbear/index.js index 51238b72db6..067aaed0a48 100644 --- a/projects/funbear/index.js +++ b/projects/funbear/index.js @@ -4,7 +4,7 @@ const stakeContractAddresses = { yearlyStake: '0xb991FAeF710f2ae699c425a92482Fc5D3Ae0cCD7', } -async function staking(timestamp, block, chainBlocks, { api }) { +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() diff --git a/projects/fundex/index.js b/projects/fundex/index.js index 881cddffc68..c8a1a94223e 100644 --- a/projects/fundex/index.js +++ b/projects/fundex/index.js @@ -14,7 +14,7 @@ module.exports = { Object.keys(config).forEach(chain => { module.exports[chain] = {tvl} }) -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/furucombo/index.js b/projects/furucombo/index.js index a1749c8c254..a3263e5d93c 100644 --- a/projects/furucombo/index.js +++ b/projects/furucombo/index.js @@ -6,7 +6,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock} = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/future-swap/index.js b/projects/future-swap/index.js index 09b8e465e00..389f72125fe 100644 --- a/projects/future-swap/index.js +++ b/projects/future-swap/index.js @@ -16,7 +16,7 @@ const FutureSwapContracts = { const abiPools = `function getPools() view returns (tuple(address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accRewardPerShare)[])`; -async function farmStakings(timestamp, block, _, { api }) { +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, }) diff --git a/projects/fx-Protocol/index.js b/projects/fx-Protocol/index.js index 7ec8f2e8474..be04a66eeb6 100644 --- a/projects/fx-Protocol/index.js +++ b/projects/fx-Protocol/index.js @@ -1,6 +1,4 @@ const ADDRESSES = require("../helper/coreAssets.json"); -const sdk = require("@defillama/sdk"); -const { default: BigNumber } = require("bignumber.js"); const stETHTreasury = "0x0e5CAA5c889Bdf053c9A76395f62267E653AFbb0"; const stETH = ADDRESSES.ethereum.STETH; @@ -9,37 +7,13 @@ const fxUSD_sfrxETHTreasury = "0xcfEEfF214b256063110d3236ea12Db49d2dF2359"; const wstETH = ADDRESSES.ethereum.WSTETH; const sfrxETH = ADDRESSES.ethereum.sfrxETH; -async function tvl(timestamp, block, _, { api }) { - let balances = {}; - const totalSupply = ( - await sdk.api.abi.call({ - target: stETH, - block, - abi: "erc20:balanceOf", - chain: "ethereum", - params: stETHTreasury, - }) - ).output; - const fxUSDWstETHtotalSupply = ( - await sdk.api.abi.call({ - target: fxUSD_wstETHTreasury, - block, - abi: "uint256:totalBaseToken", - chain: "ethereum", - }) - ).output; - const fxUSDSfrxETHtotalSupply = ( - await sdk.api.abi.call({ - target: fxUSD_sfrxETHTreasury, - block, - abi: "uint256:totalBaseToken", - chain: "ethereum", - }) - ).output; - sdk.util.sumSingleBalance(balances, stETH, totalSupply); - sdk.util.sumSingleBalance(balances, wstETH, fxUSDWstETHtotalSupply); - sdk.util.sumSingleBalance(balances, sfrxETH, fxUSDSfrxETHtotalSupply); - return balances; +async function tvl(api) { + const totalSupply = await api.call({ target: stETH, abi: "erc20:balanceOf", params: stETHTreasury, }) + const fxUSDWstETHtotalSupply = await api.call({ target: fxUSD_wstETHTreasury, abi: "uint256:totalBaseToken", }) + const fxUSDSfrxETHtotalSupply = await api.call({ target: fxUSD_sfrxETHTreasury, abi: "uint256:totalBaseToken", }) + api.add(stETH, totalSupply) + api.add(wstETH, fxUSDWstETHtotalSupply) + api.add(sfrxETH, fxUSDSfrxETHtotalSupply) } module.exports = { diff --git a/projects/fyde/index.js b/projects/fyde/index.js index 2f2043fdfdd..b95b3b96e9f 100644 --- a/projects/fyde/index.js +++ b/projects/fyde/index.js @@ -1,6 +1,6 @@ const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; -async function tvl(_, _1, _2, { api }) { +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 }) api.addTokens(tokens, bals) diff --git a/projects/gable/index.js b/projects/gable/index.js index b840a67d0db..824e2f7bf4f 100644 --- a/projects/gable/index.js +++ b/projects/gable/index.js @@ -4,7 +4,7 @@ const { getUniqueAddresses, } = require('../helper/tokenMapping'); module.exports = { misrepresentedTokens: true, radixdlt: { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const data = await queryAddresses({ addresses: ["component_rdx1cpmh7lyg0hx6efv5q79lv6rqxdqpuh27y99nzm0jpwu2u44ne243ws"] diff --git a/projects/gainsNetwork.js b/projects/gainsNetwork.js index 11c16a24d28..7e99fc19dff 100644 --- a/projects/gainsNetwork.js +++ b/projects/gainsNetwork.js @@ -13,7 +13,7 @@ const tokens = { }, }; -async function polyTvl(_, _b, _cb, { api }) { +async function polyTvl(api) { const tokensAndOwners = [ [tokens.polygon.dQUICK, "0x151757c2E830C467B28Fe6C09c3174b6c76aA0c5"], [tokens.polygon.dQUICK, "0x203F5c9567d533038d2da70Cbc20e6E8B3f309F9"], @@ -24,7 +24,7 @@ async function polyTvl(_, _b, _cb, { api }) { ]; return sumTokens2({ api, tokensAndOwners }); } -async function arbiTvl(_, _b, cb, { api}) { +async function arbiTvl(api) { const tokensAndOwners = [ [tokens.arbitrum.DAI, "0xd85E038593d7A098614721EaE955EC2022B9B91B"], [tokens.arbitrum.DAI, "0xcFa6ebD475d89dB04cAd5A756fff1cb2BC5bE33c"], diff --git a/projects/gammaswap/index.js b/projects/gammaswap/index.js index 62ddae357ce..a4130799cb0 100644 --- a/projects/gammaswap/index.js +++ b/projects/gammaswap/index.js @@ -14,7 +14,7 @@ const config = { Object.keys(config).forEach(chain => { const { factories, deltaswapFactory } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const ownerTokens = [] for (const { factory, fromBlock } of factories) { const logs = await getLogs({ diff --git a/projects/garbi/index.js b/projects/garbi/index.js index dbc191675e4..4be6336f732 100644 --- a/projects/garbi/index.js +++ b/projects/garbi/index.js @@ -2,7 +2,7 @@ const sdk = require('@defillama/sdk') const { stakings } = require('../helper/staking') const GARBI = '0x5fd71280b6385157b291b9962f22153fc9e79000' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const balances = {} const singleFarms = [ diff --git a/projects/garuda-staking/index.js b/projects/garuda-staking/index.js index bffa81f7049..c82832db097 100644 --- a/projects/garuda-staking/index.js +++ b/projects/garuda-staking/index.js @@ -2,7 +2,7 @@ const { nullAddress } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => ({ + tvl: async (api) => ({ [nullAddress]: await api.call({ target: '0x3802c218221390025bceabbad5d8c59f40eb74b8', abi: 'uint256:totalSupply'}) }) } diff --git a/projects/gasline/index.js b/projects/gasline/index.js index 5122ff53dd6..4d582cae059 100644 --- a/projects/gasline/index.js +++ b/projects/gasline/index.js @@ -12,7 +12,7 @@ Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: sumTokensExport({ owner: gasline, tokens: [weth] }), staking: staking(gasline, gas, chain), - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const supply = await api.call({ abi: 'erc20:totalSupply', target: gasline}) api.addGasToken(supply) }, diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js index 7e215ec4457..d2f59c3acfe 100644 --- a/projects/gearbox/index.js +++ b/projects/gearbox/index.js @@ -406,7 +406,8 @@ async function getV3CAs(dc300, creditManager, block, api) { } // src/adapter/index.ts -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { + const block = api.block const tokensAndOwners = await getPools(block, api); const v1Balances = await getV1TVL(block, api); const v2Balances = await getV2TVL(block, api); diff --git a/projects/gemmine/index.js b/projects/gemmine/index.js index 60f23db39b9..2138d1259dc 100644 --- a/projects/gemmine/index.js +++ b/projects/gemmine/index.js @@ -1,26 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0xf3C01F6D7ec85682FCAAfE438B8C6A3a54C7164C" -const gemmine = "0x1e2a499fAefb88B2d085d7036f3f7895542b09De" -const gemmineFtmLP = "0xBc2c0E34BF4955eB8967504d0f873b40D1d75Ef9"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [gemmine, gemmineFtmLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, gemmine, "fantom"), - pool2: pool2Exports(chef, [gemmineFtmLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xf3C01F6D7ec85682FCAAfE438B8C6A3a54C7164C', + nativeToken: '0x1e2a499fAefb88B2d085d7036f3f7895542b09De' +}) \ No newline at end of file diff --git a/projects/genesis-lrt/index.js b/projects/genesis-lrt/index.js index a2c89e2f614..5afb61c28d8 100644 --- a/projects/genesis-lrt/index.js +++ b/projects/genesis-lrt/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const staked = await api.call({ abi: 'uint256:totalAssets', target: '0xf073bAC22DAb7FaF4a3Dd6c6189a70D54110525C'}) api.add(ADDRESSES.null, staked) } diff --git a/projects/genesys/index.js b/projects/genesys/index.js index eeee8769f9e..5d1e00de67d 100644 --- a/projects/genesys/index.js +++ b/projects/genesys/index.js @@ -1,33 +1,7 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {addFundsInMasterChef} = require("../helper/masterchef"); -const {pool2Exports} = require("../helper/pool2"); -const {staking} = require("../helper/staking") +const { masterchefExports, } = require('../helper/unknownTokens') -const token = "0xf8b234a1ce59991006930de8b0525f9013982746"; -const masterchef = "0x18cD511b4ad613308Bd0C795e85Fbd8BE1a0aF94"; - -const ignore = [ - token, - "0x692784Af9fe59B55A3D0E2a81a318bab88cf5B71", - "0x325b358a1fC2024E2bdC63f656d9254b2Befc8F5" -] - -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, masterchef, chainBlocks.fantom, "fantom", addr=>{ - addr = addr.toLowerCase(); - if (addr === ADDRESSES.fantom.DAI) { - return ADDRESSES.ethereum.DAI - } - return `fantom:${addr}` - }, undefined, ignore); - return balances; -} - -module.exports = { - fantom: { - tvl, - staking: staking(masterchef, token, "fantom"), - pool2: pool2Exports(masterchef, [ignore[1], ignore[2]], "fantom", addr=>`fantom:${addr}`) - } -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x18cD511b4ad613308Bd0C795e85Fbd8BE1a0aF94', + nativeToken: '0xf8b234a1ce59991006930de8b0525f9013982746' +}) \ No newline at end of file diff --git a/projects/genius/index.js b/projects/genius/index.js index ea96901d1a8..0f27b31136f 100644 --- a/projects/genius/index.js +++ b/projects/genius/index.js @@ -52,11 +52,11 @@ const STABILITY_POOL_COLLATERAL_ADDRESSES = { } }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { return sumTokens2({ api, owner: STABILITY_POOL, tokens: Object.values(STABILITY_POOL_COLLATERAL_ADDRESSES[api.chain])}) } -async function staking(_, _1, _2, { api }) { +async function staking(api) { // return sumTokens2({ api, owner: STABILITY_POOL, tokens: [GENIUS_CONTRACT]}) const balances = {}; /* Collect Basic miner locked */ diff --git a/projects/ggpVault/index.js b/projects/ggpVault/index.js index 399acda4e6f..2fe134cd3af 100644 --- a/projects/ggpVault/index.js +++ b/projects/ggpVault/index.js @@ -1,7 +1,7 @@ const GGPVAULT_CONTRACT = "0xdF34022e8a280fc79499cA560439Bb6f9797EbD8"; const GGP = "0x69260B9483F9871ca57f81A90D91E2F96c2Cd11d"; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const bal = await api.call({ abi: "uint256:totalAssets", target: GGPVAULT_CONTRACT, diff --git a/projects/ghast/index.js b/projects/ghast/index.js index 35abcaeb6d4..a4d45c7d0d5 100644 --- a/projects/ghast/index.js +++ b/projects/ghast/index.js @@ -14,13 +14,13 @@ Object.keys(config).forEach(chain => { const { lendingPools } = config[chain] const pools = Object.values(lendingPools) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 (_, _b, _cb, { api, }) => { + /* 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) diff --git a/projects/ghost/index.js b/projects/ghost/index.js index c0a777b067f..241dcc08e51 100644 --- a/projects/ghost/index.js +++ b/projects/ghost/index.js @@ -1,7 +1,7 @@ const { queryContract } = require("../helper/chain/cosmos"); const { getConfig } = require("../helper/cache"); -async function tvl(_, _1, _2, { api }) { +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; @@ -18,7 +18,7 @@ async function tvl(_, _1, _2, { api }) { return api.getBalances() } -async function borrowed(_, _1, _2, { api }) { +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 diff --git a/projects/glif/index.js b/projects/glif/index.js index 400a29df91e..d303e1fdd6e 100644 --- a/projects/glif/index.js +++ b/projects/glif/index.js @@ -9,7 +9,7 @@ module.exports = { methodology: "The GLIF Pools protocol is a liquid staking protocol for Filecoin that requires borrowers to collateralize FIL in order to borrow for their storage providing operation. This TVL calculation adds the total amount of FIL staked into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL.", filecoin: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const [totalAssets, totalLockedByMiners] = await Promise.all([ api.call({ abi: totalAssetsABI, target: INFINITY_POOL_CONTRACT }), // this call is too costly to perform on chain in this environment, diff --git a/projects/gnd-protocol/index.js b/projects/gnd-protocol/index.js index 7646744ba9e..07a7c728776 100644 --- a/projects/gnd-protocol/index.js +++ b/projects/gnd-protocol/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') -async function tvl(_, _b, _cb, { api, }) { +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, '')) diff --git a/projects/gogopool/index.js b/projects/gogopool/index.js index e96804654d9..faaac0f7760 100644 --- a/projects/gogopool/index.js +++ b/projects/gogopool/index.js @@ -10,7 +10,7 @@ const GGPStakedAbi = "function getTotalGGPStake() view returns (uint256)"; const wavax = ADDRESSES.avax.WAVAX; const ggp = "0x69260B9483F9871ca57f81A90D91E2F96c2Cd11d"; -async function tvl(timestamp, block, chainBlocks, { api }) { +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 }); diff --git a/projects/goldfinch/index.js b/projects/goldfinch/index.js index 1c8f50ee7c0..d09b6eeba3d 100644 --- a/projects/goldfinch/index.js +++ b/projects/goldfinch/index.js @@ -31,18 +31,9 @@ const getTranchedPoolAddresses = async (api) => { * 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 (timestamp, ethBlock, _, { api, }) => { - const balances = {}; - +const tvl = async (api) => { const tranchedPoolAddresses = await getTranchedPoolAddresses(api); - - await sumTokens( - balances, - [seniorPoolAddress, ...tranchedPoolAddresses].map((pool) => [USDC, pool]), - ethBlock - ); - - return balances; + return api.sumTokens({ tokens: [USDC], owners: [seniorPoolAddress, ...tranchedPoolAddresses]}) }; /** @@ -58,7 +49,8 @@ const tvl = async (timestamp, ethBlock, _, { api, }) => { * Only the `SeniorPool` has a writedown mechanic -- which is reflected in this metric (via * `SeniorPool.assets()`). */ -const borrowed = async (_, ethBlock, _1, { api }) => { +const borrowed = async (api) => { + const ethBlock = api.block const _seniorPoolUsdcBalances = {}; await sumTokens( _seniorPoolUsdcBalances, diff --git a/projects/gomble/index.js b/projects/gomble/index.js index 20fbcc30746..5f373477246 100644 --- a/projects/gomble/index.js +++ b/projects/gomble/index.js @@ -1,6 +1,6 @@ const stakingContractAddress = '0xAB8c9Eb287796F075C821ffafBaC5FeDAa4604d5'; -async function tvl(ts, _block, chainBlocks, { api }) { +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 }) return api.sumTokens({ owner: stakingContractAddress, tokens: vTokens.concat(tokens) }) diff --git a/projects/goober/index.js b/projects/goober/index.js index b3b6c8c1fb9..1305312929f 100644 --- a/projects/goober/index.js +++ b/projects/goober/index.js @@ -7,7 +7,7 @@ module.exports = { } module.exports["ethereum"] = { - tvl: async (_, block, _1, { api }) => { + tvl: async (api) => { const gooberReserves = await api.call({ target: "0x2275d4937b6bFd3c75823744d3EfBf6c3a8dE473", abi: abis.goober.reserves, diff --git a/projects/good-ghosting/index.js b/projects/good-ghosting/index.js index 62d1d315f18..e3009397887 100644 --- a/projects/good-ghosting/index.js +++ b/projects/good-ghosting/index.js @@ -26,7 +26,7 @@ const isV2Game = (contractVersion) => { return false; } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const gameData = await getConfig("good-ghosting", apiUrl) const ownerTokens = [] Object.values(gameData) diff --git a/projects/goodentry/index.js b/projects/goodentry/index.js index c651c54b817..ad43614d5bc 100644 --- a/projects/goodentry/index.js +++ b/projects/goodentry/index.js @@ -13,7 +13,7 @@ const token1Abi = "function TOKEN1() view returns (address token, uint8 decimals const vaultReservesAbi = "function getReserves() view returns (uint baseAmount, uint quoteAmount, uint valueX8)"; const factory = "0xddec418c1a825ac09ad83cc1a28a2c5bcd746050" -async function tvl(timestamp, ethBlock, _, { api }) { +async function tvl(api) { // GoodEntry v1 const addressesProviders = await api.call({ target: addressesProviderRegistry, abi: abi["getAddressesProvidersList"], }) const validAddressesProviders = addressesProviders.filter((ap) => ap != ADDRESSES.null) diff --git a/projects/goose.js b/projects/goose.js index 0872f9d1591..112bb44cbd0 100644 --- a/projects/goose.js +++ b/projects/goose.js @@ -2,7 +2,7 @@ const { getConfig } = require('./helper/cache') const { sumUnknownTokens } = require('./helper/unknownTokens') -async function tvl(_, _b, _cb, { api, }) { +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) diff --git a/projects/graphene/index.js b/projects/graphene/index.js index 40134689483..f65523875bc 100644 --- a/projects/graphene/index.js +++ b/projects/graphene/index.js @@ -19,7 +19,7 @@ const config = { Object.keys(config).forEach((chain) => { const { controller, fromBlock } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: controller, diff --git a/projects/grappa-finance/grappa-ethereum.js b/projects/grappa-finance/grappa-ethereum.js index aebc101cb4c..9dfd7ea0243 100644 --- a/projects/grappa-finance/grappa-ethereum.js +++ b/projects/grappa-finance/grappa-ethereum.js @@ -1,11 +1,8 @@ const { sumTokens2, } = require('../helper/unwrapLPs') -const START_BLOCK = 16555738; // grappa deployment block const grappa = '0xe5fc332620c8ba031d697bd45f377589f633a255'; -module.exports = async function ethereumTvl(timestamp, block, _1, { api }) { - if (block < START_BLOCK) return {} - // get all tokens +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) diff --git a/projects/gravita-protocol/index.js b/projects/gravita-protocol/index.js index 84b7aae065f..e8ad230f819 100644 --- a/projects/gravita-protocol/index.js +++ b/projects/gravita-protocol/index.js @@ -10,7 +10,7 @@ const ADMIN_ADDRESSES = { mantle: "0x4F39F12064D83F6Dd7A2BDb0D53aF8be560356A6", }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const adminContract = ADMIN_ADDRESSES[api.chain]; const collAddresses = await api.call({ abi: "address[]:getValidCollateral", diff --git a/projects/gravity-bridge/index.js b/projects/gravity-bridge/index.js index 55b747010b6..4e62bc8123d 100644 --- a/projects/gravity-bridge/index.js +++ b/projects/gravity-bridge/index.js @@ -67,7 +67,7 @@ module.exports = { } }; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const bals = await getBalance2({ chain: 'gravitybridge', owner: 'gravity16n3lc7cywa68mg50qhp847034w88pntqzx3ksm'}) Object.entries(bals).forEach(([key, val]) => { if (key.startsWith('gravity0x')) { diff --git a/projects/greenhouse/index.js b/projects/greenhouse/index.js index d1dd57b5892..e23be373603 100644 --- a/projects/greenhouse/index.js +++ b/projects/greenhouse/index.js @@ -1,16 +1,3 @@ -const { getChainTransform } = require("../helper/portedTokens") -const { addFundsInMasterChef } = require('../helper/masterchef') -const MASTERCHEF = "0xbD40a260Ddd78287ddA4C4ede5880505a9fEdF9a" - -async function tvl (timestamp, ethBlock, chainBlocks) { - const balances = {}; - const chain = 'polygon' - const transformAddress = await getChainTransform(chain); - await addFundsInMasterChef(balances, MASTERCHEF, chainBlocks[chain], chain, transformAddress); - return balances; -} - -module.exports = { - polygon: { tvl, }, -} +const { uniTvlExport, } = require('../helper/unknownTokens') +module.exports = uniTvlExport('polygon', '0x75ED971834B0e176A053AC959D9Cf77F0B4c89D0') diff --git a/projects/gridex/index.js b/projects/gridex/index.js index 7bfc331537f..0eb75c4fff9 100644 --- a/projects/gridex/index.js +++ b/projects/gridex/index.js @@ -49,7 +49,7 @@ const config = { Object.keys(config).forEach((chain) => { const { factory, fromBlock, hasStaking } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/grim/index.js b/projects/grim/index.js index 637772c25f8..fcc2c6723be 100644 --- a/projects/grim/index.js +++ b/projects/grim/index.js @@ -4,7 +4,7 @@ const config = require('./config.json') Object.keys(config).forEach(chain => { const pools = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/grizzlyfi/index.js b/projects/grizzlyfi/index.js index 0a3f3a5d22f..6c5b24ec49f 100644 --- a/projects/grizzlyfi/index.js +++ b/projects/grizzlyfi/index.js @@ -140,7 +140,7 @@ const pcsV3 = [ } ] -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const balances = api.getBalances(); const getHive = i => i.hive diff --git a/projects/groprotocol/index.js b/projects/groprotocol/index.js index aaa8a6958be..28613b9bb50 100644 --- a/projects/groprotocol/index.js +++ b/projects/groprotocol/index.js @@ -22,7 +22,7 @@ const P5_BAL_GRO_WETH = "0x702605f43471183158938c1a3e5f5a359d7b31ba"; // Count o const GROTokenStaker1 = "0x001C249c09090D79Dc350A286247479F08c7aaD7"; const GROTokenStaker2 = "0x2E32bAd45a1C29c1EA27cf4dD588DF9e68ED376C"; -async function tvl(timestamp, ethBlock, _, { api }) { +async function tvl(api) { let balances = {}; // Assets held within PWRD and GVT directly @@ -37,7 +37,7 @@ async function tvl(timestamp, ethBlock, _, { api }) { return balances } -async function pool2(timestamp, ethBlock, _, { api }) { +async function pool2(api) { return sumTokens2({ api, owners: [GROTokenStaker1,GROTokenStaker2 ], diff --git a/projects/gryphon-staking/index.js b/projects/gryphon-staking/index.js index ef6d24a67b7..81fff79cf19 100644 --- a/projects/gryphon-staking/index.js +++ b/projects/gryphon-staking/index.js @@ -15,7 +15,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { nAssets } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/gumball/index.js b/projects/gumball/index.js index 6f46cbd72da..640cf4bd221 100644 --- a/projects/gumball/index.js +++ b/projects/gumball/index.js @@ -34,7 +34,7 @@ async function reservesCallFn({ api, calls }) { }) } -async function tvl(_, _b, _cb, { api, }) { +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) }) diff --git a/projects/gyroscope/index.js b/projects/gyroscope/index.js index b109f08ce4a..fa3a803dc36 100644 --- a/projects/gyroscope/index.js +++ b/projects/gyroscope/index.js @@ -4,7 +4,7 @@ const blacklistedTokens = [ '0xe07f9d810a48ab5c3c914ba3ca53af14e4491e8a', // GYD ethereum ] -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const pools = config[api.chain]; const promises = pools.map(async ({ factory, fromBlock }) => { diff --git a/projects/gysr/index.js b/projects/gysr/index.js index f5e0449ff9f..c2ce3604c3f 100644 --- a/projects/gysr/index.js +++ b/projects/gysr/index.js @@ -9,7 +9,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, v2PoolFactory, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/hadouken-fi-dex/index.js b/projects/hadouken-fi-dex/index.js index 93e8eaa056e..fcf8d7cfc5d 100644 --- a/projects/hadouken-fi-dex/index.js +++ b/projects/hadouken-fi-dex/index.js @@ -7,7 +7,7 @@ const query = `query { tokens { id name symbol } }` -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { tokens } = await cachedGraphQuery('haduken-fi-dex', endpoint, query) return sumTokens2({ api, owner: '0x4f8bdf24826ebcf649658147756115ee867b7d63', tokens: tokens diff --git a/projects/hai/index.js b/projects/hai/index.js index df4c55841ae..2aec6921744 100644 --- a/projects/hai/index.js +++ b/projects/hai/index.js @@ -10,7 +10,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 index 0f4c93fd3e6..ca8ed79b624 100644 --- a/projects/haiko/index.js +++ b/projects/haiko/index.js @@ -6,7 +6,7 @@ const MarketManager = const ReplicatingStrategy = "0x2ffce9d48390d497f7dfafa9dfd22025d9c285135bcc26c955aea8741f081d2"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokens = await getConfig( "haiko", "https://app.haiko.xyz/api/v1/tokens?network=mainnet" diff --git a/projects/hakura/index.js b/projects/hakura/index.js index b1c2b6daf60..0741d03bc31 100644 --- a/projects/hakura/index.js +++ b/projects/hakura/index.js @@ -23,7 +23,7 @@ const getMetrics = async (api, borrowed) => { } const fetchTvl = (borrowed) => { - return async (_, _1, _2, { api }) => { + return async (api) => { return getMetrics(api, borrowed) } } diff --git a/projects/handlefi-fxpreps/index.js b/projects/handlefi-fxpreps/index.js index 9efd4ec9d6c..cc5f8afcbaa 100644 --- a/projects/handlefi-fxpreps/index.js +++ b/projects/handlefi-fxpreps/index.js @@ -35,7 +35,7 @@ const fxTokens = { module.exports = { misrepresentedTokens: true, arbitrum: { - tvl: async (_, _b, cb, { api }) => { + tvl: async (api) => { const fxConfig = [] const tokens = [] @@ -45,8 +45,8 @@ module.exports = { const label = `${chain}:${token.toLowerCase()}` fxConfig.push({ token, label, oracle: oracles[key] }) }) - const balances = await(gmxExports({ vault: perpsVault, })(_, _b, cb, { api })) - const block = cb[chain] + const balances = await(gmxExports({ vault: perpsVault, })(api)) + const block = api.chain const calls = fxConfig.map(i => ({ target: i.oracle })) const { output: price } = await sdk.api.abi.multiCall({ abi: abis.latestAnswer, calls, chain, block, diff --git a/projects/harbor-protocol.js b/projects/harbor-protocol.js index 2add656d23d..5894faf0485 100644 --- a/projects/harbor-protocol.js +++ b/projects/harbor-protocol.js @@ -2,7 +2,7 @@ const { get } = require('./helper/http') const { transformBalances } = require('./helper/portedTokens') const sdk = require('@defillama/sdk') -async function tvl(_, _b, _cb, { chain }) { +async function tvl({ chain }) { const { tvldata } = await get('https://rest.comdex.one/comdex/vault/v1beta1/tvl-by-app-all-extended-pairs/2') const balances = {} tvldata.forEach(i => sdk.util.sumSingleBalance(balances,i.asset_denom,i.collateral_locked_amount, chain)) diff --git a/projects/hard.js b/projects/hard.js index 879f4190431..a203103454f 100644 --- a/projects/hard.js +++ b/projects/hard.js @@ -1,7 +1,7 @@ const { queryV1Beta1 } = require('./helper/chain/cosmos'); const chain = 'kava' -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { const [deposited, borrowed] = await Promise.all([ queryV1Beta1({ chain, url: 'hard/v1beta1/total-deposited' }), queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) @@ -12,7 +12,7 @@ const tvl = async (_, _1, _2, { api }) => { -const borrowed = async (_, _1, _2, { api }) => { +const borrowed = async (api) => { const borrowed = await queryV1Beta1({ chain, url: 'hard/v1beta1/total-borrowed' }) borrowed.borrowed_coins.forEach(({ denom, amount }) => api.add(denom, amount)) } diff --git a/projects/harvest.js b/projects/harvest.js index 86402842ada..b97e8b92f15 100644 --- a/projects/harvest.js +++ b/projects/harvest.js @@ -14,7 +14,7 @@ const chains = { module.exports = {} Object.keys(chains).forEach(chain => { module.exports[chain] = { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const response = await getConfig('harvest', endpoint) const vaults = Object.values(response[chains[chain]]).map(i => i.vaultAddress) const strategy = await api.multiCall({ abi: 'address:strategy', calls: vaults }) diff --git a/projects/hashdaofinance/index.js b/projects/hashdaofinance/index.js index 28dd4708df5..bc2a67459e6 100644 --- a/projects/hashdaofinance/index.js +++ b/projects/hashdaofinance/index.js @@ -31,7 +31,7 @@ const config = { Object.keys(config).forEach(chain => { const { contract, lp, chef, hash, vHash, isPool2,} = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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]]), }) diff --git a/projects/hashking/index.js b/projects/hashking/index.js index f2c4d6a0118..8f4c16feec3 100644 --- a/projects/hashking/index.js +++ b/projects/hashking/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { filecoin: { - tvl: async (_, _1, _2, { api }) => { + 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}) diff --git a/projects/hashmix/index.js b/projects/hashmix/index.js index 0f109a556e2..35dc9084fe5 100644 --- a/projects/hashmix/index.js +++ b/projects/hashmix/index.js @@ -4,7 +4,7 @@ const { get } = require("../helper/http"); const BigNumber = require("bignumber.js"); const { sdk } = require("@defillama/sdk"); -// async function tvl(_, _1, _2, { api }) { +// async function tvl(api) { // const totalBorrows = await api.call({ // target: POOL, // abi: "uint256:totalBorrows", @@ -19,13 +19,13 @@ const { sdk } = require("@defillama/sdk"); // return sumTokens2({ api, owner: POOL, tokens: [nullAddress] }); // } -async function tvl(_, _1, _2, { api }) { +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(_, _1, _2, { api }) { +/* async function tvl1(api) { const balances = {}; const bal = await sdk.api2.eth.getBalance({ target: POOL, chain: api.chain, decimals: api.decimals }); diff --git a/projects/hashnote/index.js b/projects/hashnote/index.js index b33a42faee2..61cacff4073 100644 --- a/projects/hashnote/index.js +++ b/projects/hashnote/index.js @@ -12,7 +12,7 @@ const contracts = { } } -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { const totalSupply = await api.call({ target: contracts[api.chain].token, abi: 'uint256:totalSupply'}); const rate = await api.call({ target: contracts[api.chain].oracle, abi: 'function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)'}); diff --git a/projects/hashstack/index.js b/projects/hashstack/index.js index 94fe6ec068b..8d533fe976b 100644 --- a/projects/hashstack/index.js +++ b/projects/hashstack/index.js @@ -19,12 +19,12 @@ const debtTokens = [ "0x1bdbaaa456c7d6bbba9ff740af3cfcd40bec0e85cd5cefc3fbb05a552fd14df" ] -async function tvl(_, _1, _2, { api }) { +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(_, _1, _2, { api }) { +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); diff --git a/projects/hatom-booster/index.js b/projects/hatom-booster/index.js index c162a04ca16..4f07e1bc0f1 100644 --- a/projects/hatom-booster/index.js +++ b/projects/hatom-booster/index.js @@ -3,7 +3,7 @@ const { call } = require('../helper/chain/elrond') const boosterContractAddress = 'erd1qqqqqqqqqqqqqpgqw4dsh8j9xafw45uwr2f6a48ajvcqey8s78sstvn7xd' const htm = 'HTM-f51d55' -const staking = async (_, _1, _2, { api }) => { +const staking = async (api) => { const totalStaked = await call({ target: boosterContractAddress, abi: 'getTotalStake', diff --git a/projects/hatom-lending/index.js b/projects/hatom-lending/index.js index 6a0c8cb12cb..fa9d79e7467 100644 --- a/projects/hatom-lending/index.js +++ b/projects/hatom-lending/index.js @@ -28,7 +28,7 @@ const tvl = async () => { return sumTokens({ owners: moneyMarkets.map(i => i.address), }) }; -const borrowed = async (_, _1, _2, { api }) => { +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'] }))) diff --git a/projects/hats-v2/index.js b/projects/hats-v2/index.js index cb1bce34465..89690b4da4b 100644 --- a/projects/hats-v2/index.js +++ b/projects/hats-v2/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const { masterchef } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 = [] diff --git a/projects/hats/index.js b/projects/hats/index.js index 78e438c6072..24838621d5c 100644 --- a/projects/hats/index.js +++ b/projects/hats/index.js @@ -4,7 +4,7 @@ const abi = require('../helper/abis/masterchef.json') const vault = '0x571f39d351513146248AcafA9D0509319A327C4D' // vault address module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => { + 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)}) } diff --git a/projects/hector/index.js b/projects/hector/index.js index 25f11f1697a..238149e35a6 100644 --- a/projects/hector/index.js +++ b/projects/hector/index.js @@ -38,7 +38,7 @@ module.exports = { bsc: { tvl, } }; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const calls = [ walletBalances(api), deployedBalances(api), diff --git a/projects/hedgefarm/index.js b/projects/hedgefarm/index.js index 6e27b474d85..b207d74b5f5 100644 --- a/projects/hedgefarm/index.js +++ b/projects/hedgefarm/index.js @@ -11,7 +11,7 @@ const v2Vaults = [ const ALPHA1_ABI = "uint256:totalBalance"; const ALPHA2_ABI = "uint256:getLastUpdatedModulesBalance"; -async function tvl(timestamp, block, chainBlocks, { api }) { +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, }), diff --git a/projects/hedgehog/index.js b/projects/hedgehog/index.js index 9091f1478a0..d653a25bb06 100644 --- a/projects/hedgehog/index.js +++ b/projects/hedgehog/index.js @@ -5,7 +5,7 @@ const OSQTH = "0xf1B99e3E573A1a9C5E6B2Ce818b617F0E664E86B"; const VAULT_MATH = "0x2b1cb93B8fe1B6fB3810Ab294D681865421C4E37"; -async function tvl(timestamp, block, _, { api }) { +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) } diff --git a/projects/helmetinsure/index.js b/projects/helmetinsure/index.js index 6cf33c7c7ca..6ab1df8eb16 100644 --- a/projects/helmetinsure/index.js +++ b/projects/helmetinsure/index.js @@ -9,7 +9,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, eventAbi: abi.OptionCreated, onlyArgs: true, fromBlock, }) const ownerTokens = [] logs.forEach(log => { diff --git a/projects/helper/aave.js b/projects/helper/aave.js index e9fc466f764..f41d7fca3e8 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -193,7 +193,7 @@ const oracleAbis = { function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyUnit, abis = {}, fromBlock, blacklistedTokens = [] } = {}) { - async function tvl(_, _b, _c, { api }) { + async function tvl(api) { const data = await getReservesData(api) const tokensAndOwners = data.map(i => ([i.underlying, i.aTokenAddress])) if (!useOracle) @@ -206,7 +206,7 @@ function aaveV2Export(registry, { useOracle = false, baseCurrency, baseCurrencyU return balances } - async function borrowed(_, _b, _c, { api }) { + async function borrowed(api) { const balances = {} const data = await getReservesData(api) const supplyVariable = await api.multiCall({ diff --git a/projects/helper/balancer.js b/projects/helper/balancer.js index 21633cc2dec..e8f6beeadef 100644 --- a/projects/helper/balancer.js +++ b/projects/helper/balancer.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require('./unwrapLPs'); const { getLogs } = require('./cache/getLogs') function onChainTvl(vault, fromBlock, { blacklistedTokens = [], preLogTokens = [], onlyUseExistingCache } = {}) { - return async (_, _1, _2, { api }) => { + return async (api) => { const logs = await getLogs({ api, target: vault, @@ -34,7 +34,7 @@ function onChainTvl(vault, fromBlock, { blacklistedTokens = [], preLogTokens = [ } function v1Tvl(bPoolFactory, fromBlock, { blacklistedTokens = [] } = {}) { - return async (_, _1, _2, { api }) => { + return async (api) => { let poolLogs = await getLogs({ target: bPoolFactory, topic: 'LOG_NEW_POOL(address,address)', diff --git a/projects/helper/cache/compound.js b/projects/helper/cache/compound.js index e02d048fef4..7eec645fc9a 100644 --- a/projects/helper/cache/compound.js +++ b/projects/helper/cache/compound.js @@ -61,8 +61,8 @@ function compoundExports(comptroller, { blacklistedTokens = [], resolveLps = fal } return { - tvl: async (_, _1, _2, { api }) => (await _getCompoundV2Tvl(api)).tvl, - borrowed: async (_, _1, _2, { api }) => (await _getCompoundV2Tvl(api)).borrowed, + tvl: async (api) => (await _getCompoundV2Tvl(api)).tvl, + borrowed: async (api) => (await _getCompoundV2Tvl(api)).borrowed, } } diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index c75d1b260b1..247acac6ca2 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -24,11 +24,8 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, const abi = { ...uniswapAbi, ...abis } - return async (_, _b, cb, { api, chain } = {}) => { - // console.log(await api.call({ abi: 'address:factory', target: factory })) - // console.log(await api.call({ abi: 'address:factory', target: '0x5f0776386926e554cb088df5848ffd7c5f02ebfa' })) - - chain = chain ?? api?.chain + return async (api) => { + let chain = api?.chain if (!chain) chain = _chain factory = normalizeAddress(factory, chain) diff --git a/projects/helper/chain/aptos.js b/projects/helper/chain/aptos.js index 7ddc4a80a98..4fc53792498 100644 --- a/projects/helper/chain/aptos.js +++ b/projects/helper/chain/aptos.js @@ -123,7 +123,7 @@ function hexToString(hexString) { } function sumTokensExport(options) { - return async (_, _b, _cb, { api }) => sumTokens({ ...api, api, ...options }) + return async (api) => sumTokens({ ...api, api, ...options }) } module.exports = { diff --git a/projects/helper/chain/bitcoin.js b/projects/helper/chain/bitcoin.js index b2a8563aebd..ac1a531d9c7 100644 --- a/projects/helper/chain/bitcoin.js +++ b/projects/helper/chain/bitcoin.js @@ -21,6 +21,7 @@ async function getBalanceNow(addr) { } async function sumTokens({ balances = {}, owners = [], timestamp }) { + if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp const bitBals = [] for (const addr of owners) bitBals.push(await getBalance(addr, timestamp)) diff --git a/projects/helper/chain/brc20.js b/projects/helper/chain/brc20.js index ce3df547385..b220487d4b5 100644 --- a/projects/helper/chain/brc20.js +++ b/projects/helper/chain/brc20.js @@ -22,7 +22,7 @@ async function sumTokens({ owner, owners = [], blacklistedTokens = [], api }) { } function sumTokensExport(args) { - return (_, _1, _2, { api }) => sumTokens({ ...args, api }) + return (api) => sumTokens({ ...args, api }) } module.exports = { diff --git a/projects/helper/chain/hbar.js b/projects/helper/chain/hbar.js index bd45b00ac9a..ca1adf46b9f 100644 --- a/projects/helper/chain/hbar.js +++ b/projects/helper/chain/hbar.js @@ -23,6 +23,7 @@ async function addHBarBalance({ balances = {}, address, timestamp }) { } 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 diff --git a/projects/helper/chain/icx.js b/projects/helper/chain/icx.js index b31e2b721e4..7a4468b25bc 100644 --- a/projects/helper/chain/icx.js +++ b/projects/helper/chain/icx.js @@ -64,7 +64,7 @@ async function sumTokens({ api, owner, owners = [], tokens = [] }) { } function sumTokensExport(params) { - return (_, _b, _c, { api }) => sumTokens({ ...params, api }) + return (api) => sumTokens({ ...params, api }) } module.exports = { diff --git a/projects/helper/chain/obyte.js b/projects/helper/chain/obyte.js index 3156c249afb..509a84746e1 100644 --- a/projects/helper/chain/obyte.js +++ b/projects/helper/chain/obyte.js @@ -10,6 +10,7 @@ const TOKEN_REGISTRY_AA_ADDRESS = "O6H6ZIFI57X3PLTYHOCVYPP5A553CYFQ"; * @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", diff --git a/projects/helper/chain/radixdlt.js b/projects/helper/chain/radixdlt.js index 98323c513a5..84bd1396086 100644 --- a/projects/helper/chain/radixdlt.js +++ b/projects/helper/chain/radixdlt.js @@ -123,7 +123,7 @@ async function queryLiquidStakeUnitDetails(addresses = []) { } function sumTokensExport({...args}) { - return async (_, _1, _2, { api }) => sumTokens({ ...args, api, }) + return async (api) => sumTokens({ ...args, api, }) } async function transformLSUs(api) { diff --git a/projects/helper/chain/sui.js b/projects/helper/chain/sui.js index c824cb584a4..e688c0d2d83 100644 --- a/projects/helper/chain/sui.js +++ b/projects/helper/chain/sui.js @@ -97,7 +97,7 @@ function dexExport({ timetravel: false, misrepresentedTokens: true, sui: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const data = [] let pools if (!eventType) { diff --git a/projects/helper/chain/ton.js b/projects/helper/chain/ton.js index 36d2d8c6c48..2efa80e6a5f 100644 --- a/projects/helper/chain/ton.js +++ b/projects/helper/chain/ton.js @@ -42,7 +42,7 @@ async function sumTokens({ api, tokens, owners = [], owner, onlyWhitelistedToken } function sumTokensExport({ ...args }) { - return (_, _1, _2, { api }) => sumTokens({ api, ...args }) + return (api) => sumTokens({ api, ...args }) } async function call({ target, abi, params = [] }) { diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 976bd587163..25488986ef2 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -116,7 +116,7 @@ function getCompoundV2Tvl(comptroller, chain, transformAdress, } = {}) { abis = { ...abi, ...abis } blacklistedTokens = blacklistedTokens.map(i => i.toLowerCase()) - return async (timestamp, ethBlock, _, { api = undefined } = {}) => { + return async (api) => { if (!api) { api = new sdk.ChainApi({ chain, }) } diff --git a/projects/helper/compoundV3.js b/projects/helper/compoundV3.js index 35ac14c2c3e..a0748609417 100644 --- a/projects/helper/compoundV3.js +++ b/projects/helper/compoundV3.js @@ -15,7 +15,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { markets } = config[chain] - async function borrowed(timestamp, block, _, { api }) { + 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 }) @@ -23,7 +23,7 @@ module.exports = { return balances } - async function tvl(timestamp, block, _, { api }) { + 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 }) diff --git a/projects/helper/erc4626.js b/projects/helper/erc4626.js index cdfffc9e9ea..0ea9385689d 100644 --- a/projects/helper/erc4626.js +++ b/projects/helper/erc4626.js @@ -5,7 +5,7 @@ async function sumERC4626Vaults({ api, ...options }) { } function sumERC4626VaultsExport({ vaults, ...options}) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + return async (api) => { return sumERC4626Vaults({ ...options, api, calls: vaults }) } } diff --git a/projects/helper/getUniSubgraphTvl.js b/projects/helper/getUniSubgraphTvl.js index a0fcfbb4dea..2958f965233 100644 --- a/projects/helper/getUniSubgraphTvl.js +++ b/projects/helper/getUniSubgraphTvl.js @@ -13,7 +13,7 @@ query get_tvl($block: Int) { } `; return (chain) => { - return async (_, _b, _cb, { api }) => { + return async (api) => { await api.getBlock() const block = api.block let uniswapFactories diff --git a/projects/helper/gmx.js b/projects/helper/gmx.js index 9c3efc7a3a2..fb204ef75ff 100644 --- a/projects/helper/gmx.js +++ b/projects/helper/gmx.js @@ -3,7 +3,7 @@ const { getLogs } = require('../helper/cache/getLogs') function gmxExports({ vault, blacklistedTokens = [], abis = {}, permitFailure = false, }) { abis = { ...defaultAbis, ...abis} - return async (ts, _block, _, { api }) => { + return async (api) => { const tokenAddresses = await api.fetchList({ target: vault, lengthAbi: abis.allWhitelistedTokensLength, @@ -25,7 +25,7 @@ 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 (ts, _block, _, { api }) => { + return async (api) => { const logs = await getLogs({ api, target: eventEmitter, diff --git a/projects/helper/heroku-api.js b/projects/helper/heroku-api.js index e77e6bf0925..eb59199392a 100644 --- a/projects/helper/heroku-api.js +++ b/projects/helper/heroku-api.js @@ -3,6 +3,7 @@ const endpoint = "https://sushi-analytics.onrender.com" 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") } diff --git a/projects/helper/historicalApi.js b/projects/helper/historicalApi.js index cafa262c15c..cb71809292f 100644 --- a/projects/helper/historicalApi.js +++ b/projects/helper/historicalApi.js @@ -3,6 +3,7 @@ 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) diff --git a/projects/helper/http.js b/projects/helper/http.js index 260fa2400ed..a33215ba15b 100644 --- a/projects/helper/http.js +++ b/projects/helper/http.js @@ -11,6 +11,7 @@ async function getCache(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 { @@ -48,6 +49,7 @@ async function post(endpoint, body, options) { } async function graphQuery(endpoint, graphQuery, params = {}, { api, timestamp, chain, chainBlocks, useBlock = false } = {}) { + if (typeof timestamp === "object" && timestamp.timestamp) timestamp = timestamp.timestamp if (api) { if (!timestamp) timestamp = api.timestamp if (!chain) chain = api.chain diff --git a/projects/helper/iziswap.js b/projects/helper/iziswap.js index 37ac43dea4b..de64489a87f 100644 --- a/projects/helper/iziswap.js +++ b/projects/helper/iziswap.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("./unwrapLPs") const ADDRESSES = require('../helper/coreAssets.json') function iziswapExport({ poolHelpers, blacklistedTokens = []}) { - return async (_, _1, _2, { api }) => { + return async (api) => { const toa = [] const chunkSize = 10 const allPools = [] diff --git a/projects/helper/liquity.js b/projects/helper/liquity.js index ba04a1c8bb3..aec722971d1 100644 --- a/projects/helper/liquity.js +++ b/projects/helper/liquity.js @@ -1,7 +1,7 @@ const { nullAddress, sumTokens2 } = require('../helper/unwrapLPs') function getLiquityTvl(TROVE_MANAGER_ADDRESS, { nonNativeCollateralToken = false, abis = {}, collateralToken, } = {}) { - return async (_, ethBlock, chainBlocks, { api }) => { + 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 diff --git a/projects/helper/pool2.js b/projects/helper/pool2.js index 9d5aff99944..caf0bc46c62 100644 --- a/projects/helper/pool2.js +++ b/projects/helper/pool2.js @@ -15,7 +15,7 @@ function pool2(stakingContract, lpToken, chain, transformAddress) { } function pool2s(stakingContracts, lpTokens, chain = "ethereum", transformAddress = undefined) { - return async (_timestamp, _ethBlock, _, { api }) => { + return async (api) => { chain = api.chain ?? chain const block = api.block const balances = {} diff --git a/projects/helper/saddle.js b/projects/helper/saddle.js index afb3451c1a7..90752b27047 100644 --- a/projects/helper/saddle.js +++ b/projects/helper/saddle.js @@ -8,7 +8,7 @@ function saddleExports(config) { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index f6dfc0d5842..2f2193b0437 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -44,7 +44,7 @@ async function getBalance(chain, account) { } function sumTokensExport(options) { - return async (_, _b, _cb, { api }) => sumTokens( + return async (api) => sumTokens( { ...api, api, ...options } ) } diff --git a/projects/helper/uniswapV3.js b/projects/helper/uniswapV3.js index a0d96cf3ec9..f3f6fd0b2b7 100644 --- a/projects/helper/uniswapV3.js +++ b/projects/helper/uniswapV3.js @@ -22,7 +22,7 @@ function uniV3Export(config) { if (!eventAbi) eventAbi = isAlgebra ? algebraConfig.eventAbi : uniswapConfig.eventAbi exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target, @@ -46,7 +46,7 @@ function uniV3Export(config) { } function uniV3GraphExport({ blacklistedTokens = [], graphURL, name, minTVLUSD = 10,}) { - return async (_, _b, _cb, { api }) => { + return async (api) => { const size = 1000 // let lastId = '' // let pools diff --git a/projects/helper/unknownTokens.js b/projects/helper/unknownTokens.js index 8eb44efb5bc..c722bc96ee4 100644 --- a/projects/helper/unknownTokens.js +++ b/projects/helper/unknownTokens.js @@ -75,9 +75,9 @@ function pool2({ stakingContract, lpToken, chain, transformAddress, coreAssets = if (!coreAssets.length && useDefaultCoreAssets) coreAssets = getCoreAssets(chain) - return async (_timestamp, _ethBlock, chainBlocks, { api }) => { - if (!chain) chain = api.chain - const block = chainBlocks[chain] + return async (api) => { + const chain = api.chain + const block = api.block if (!transformAddress) transformAddress = await getChainTransform(chain) @@ -95,7 +95,7 @@ function sumTokensExport({ tokensAndOwners = [], coreAssets = [], owner, tokens, restrictTokenRatio, blacklist = [], skipConversion = false, onlyLPs, minLPRatio, log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, abis, }) { - return (_, _b, _cb, { api }) => sumUnknownTokens({ api, tokensAndOwners, onlyLPs, minLPRatio, coreAssets, owner, tokens, restrictTokenRatio, blacklist, skipConversion, log_coreAssetPrices, log_minTokenValue, owners, lps, useDefaultCoreAssets, 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 = [], @@ -103,7 +103,8 @@ function staking({ tokensAndOwners = [], log_coreAssetPrices = [], log_minTokenValue = 1e6, owners = [], lps = [], useDefaultCoreAssets = false, }) { - return async (_, _b, _cb, { api, chain = 'ethereum', block, }) => { + return async (api) => { + const { chain, block } = api if (!coreAssets.length && useDefaultCoreAssets) coreAssets = getCoreAssets(chain) @@ -117,7 +118,7 @@ function staking({ tokensAndOwners = [], } } -function masterchefExports({ chain, masterchef, coreAssets = [], nativeTokens = [], lps = [], nativeToken, poolInfoABI = masterchefAbi.poolInfo, poolLengthAbi = masterchefAbi.poolLength, getToken = output => output.lpToken, blacklistedTokens = [], useDefaultCoreAssets = false, }) { +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 = {} diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 62759944681..8b8825fbdb6 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -827,7 +827,7 @@ async function sumTokens2({ } function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, logCalls, ...args }) { - return async (_, _b, _cb, { api }) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args, }) + return async (api) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args, }) } async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, balances, isBPool = false, isV2 = true }) { diff --git a/projects/helper/yieldHelper.js b/projects/helper/yieldHelper.js index 452e56237ed..49cd1e5e54f 100644 --- a/projects/helper/yieldHelper.js +++ b/projects/helper/yieldHelper.js @@ -111,9 +111,9 @@ function yieldHelper({ return { misrepresentedTokens: useDefaultCoreAssets, [chain]: { - tvl: async (_, _b, _cb, { api }) => (await getAllTVL(api)).tvl, - pool2: async (_, _b, _cb, { api }) => (await getAllTVL(api)).pool2, - staking: async (_, _b, _cb, { api }) => (await getAllTVL(api)).staking, + tvl: async (api) => (await getAllTVL(api)).tvl, + pool2: async (api) => (await getAllTVL(api)).pool2, + staking: async (api) => (await getAllTVL(api)).staking, } } } diff --git a/projects/hi-market/index.js b/projects/hi-market/index.js index d1f85192631..955c37a014f 100644 --- a/projects/hi-market/index.js +++ b/projects/hi-market/index.js @@ -3,11 +3,11 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const contract = "0xf76550821b62702e95e181aeb77284ce70d4fe90" const contract_era = "0x4Abb1bFcFb2af3d897B891DA265d94fb6C02B005" -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }) } -async function tvl_era(time, ethBlock, _b, { api }) { +async function tvl_era(api) { return sumTokens2({ tokens: [nullAddress], owner: contract_era, api }) } diff --git a/projects/hidden-hand/index.js b/projects/hidden-hand/index.js index 8f9deeb7afd..ed63f14c7ff 100644 --- a/projects/hidden-hand/index.js +++ b/projects/hidden-hand/index.js @@ -62,7 +62,7 @@ async function getTokens(chain, version) { return addresses; } -async function tvl(ts, block, _, { api }) { +async function tvl(api) { const { chain } = api const ownerTokens = [] diff --git a/projects/hiyield/index.js b/projects/hiyield/index.js index 940b21478ec..b68e1481608 100644 --- a/projects/hiyield/index.js +++ b/projects/hiyield/index.js @@ -14,7 +14,7 @@ Object.keys(config).forEach(chain => { let pools = config[chain] pools = Object.values(pools) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { if (chain === 'canto') { const pool = pools[0] const supply = await api.call({ abi: "uint256:totalSupply", target: pool }) diff --git a/projects/hodlify/index.js b/projects/hodlify/index.js index c4d8aa040e6..563355f2245 100644 --- a/projects/hodlify/index.js +++ b/projects/hodlify/index.js @@ -44,7 +44,7 @@ const aggregateVaultTvl = async (api) => { await getStrategyVaultsLpValue(api, strategies); } -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { await aggregateVaultTvl(api); return api.getBalances(); } diff --git a/projects/holdstation/index.js b/projects/holdstation/index.js index 14a65f30650..c286394732d 100644 --- a/projects/holdstation/index.js +++ b/projects/holdstation/index.js @@ -7,7 +7,7 @@ const usdc = ADDRESSES.era.USDC; const stakingContractAddress = '0x7cF68AA037c67B6dae9814745345FFa9FC7075b1'; const HOLD = '0xed4040fD47629e7c8FBB7DA76bb50B3e7695F0f2' -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { return sumTokens2({ api, tokens: [usdc], owners: [vault] }); } diff --git a/projects/hopr/index.js b/projects/hopr/index.js index 1f251cbabf2..d8d3be14df5 100644 --- a/projects/hopr/index.js +++ b/projects/hopr/index.js @@ -6,7 +6,7 @@ const wxHOPR_TOKEN_SMART_CONTRACT_ADDRESS = ADDRESSES.xdai.XHOPR; const SAFE_FACTORY = '0x098B275485c406573D042848D66eb9d63fca311C'; const HOPR_CHANNELS = '0x693Bac5ce61c720dDC68533991Ceb41199D8F8ae'; -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: SAFE_FACTORY, diff --git a/projects/hummus/index.js b/projects/hummus/index.js index 92dc08d3828..46f1395b5ed 100644 --- a/projects/hummus/index.js +++ b/projects/hummus/index.js @@ -11,7 +11,7 @@ const config = { }, } -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { +async function tvl(api) { const { pools } = config[api.chain] const tokensArray = await api.multiCall({ abi: "address[]:getTokenAddresses", calls: pools }) const tokens = tokensArray.flat() diff --git a/projects/hunnyfinance/index.js b/projects/hunnyfinance/index.js index 36478664967..50c176e9f30 100644 --- a/projects/hunnyfinance/index.js +++ b/projects/hunnyfinance/index.js @@ -45,22 +45,20 @@ const farmContracts = [ "0xf36e82E42670DB17f08C9731a45689D9190fB8AC" // BUSD-BNB ]; -async function tvl(timestamp, block, chainBlocks, { api }) { +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(timestamp, block, chainBlocks, { api }) { - block = chainBlocks.bsc; +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(timestamp, block, chainBlocks, { api }) { +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) diff --git a/projects/hydradex.js b/projects/hydradex.js index 4e1a2893259..4ce365597a7 100644 --- a/projects/hydradex.js +++ b/projects/hydradex.js @@ -1,7 +1,7 @@ const { blockQuery } = require('./helper/http') const { getBlock } = require('./hydradex/getHydraV3SubgraphTvl') -async function tvl(timestamp) { +async function tvl({ timestamp }) { const endpoint = 'https://info.hydradex.org/graphql' const block = await getBlock(endpoint, timestamp) const query = `query ($block: Float!){ diff --git a/projects/hydradex/getHydraV3SubgraphTvl.js b/projects/hydradex/getHydraV3SubgraphTvl.js index 2f0373bde20..54013a2fa5c 100644 --- a/projects/hydradex/getHydraV3SubgraphTvl.js +++ b/projects/hydradex/getHydraV3SubgraphTvl.js @@ -3,6 +3,7 @@ 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, diff --git a/projects/hydradx/api.js b/projects/hydradx/api.js index 8d443e05d03..927b4f72b71 100644 --- a/projects/hydradx/api.js +++ b/projects/hydradx/api.js @@ -6,8 +6,7 @@ const stablepoolAccountId = "7JP6TvcH5x31TsbC6qVJHEhsW7UNmpREMZuLBpK2bG1goJRS" const stablepoolAccountId2 = "7MaKPwwnqN4cqg35PbxsGXUo1dfvjXQ3XfBjWF9UVvKMjJj8" const stablepoolAccountId3 = "7LVGEVLFXpsCCtnsvhzkSMQARU7gRVCtwMckG7u7d3V6FVvG" -async function tvl() { - const { api: _api } = arguments[3] +async function tvl(_api) { const provider = new WsProvider("wss://hydradx-rpc.dwellir.com"); const api = await ApiPromise.create({ provider, }); await api.isReady diff --git a/projects/hydro-protocol/index.js b/projects/hydro-protocol/index.js index cdbf872d36b..f1ef47df096 100644 --- a/projects/hydro-protocol/index.js +++ b/projects/hydro-protocol/index.js @@ -5,7 +5,7 @@ const hinj = "inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc" const autoCompound = "inj1mjcg8a73904rj4w7t5qkgn0apua98n059nufma" const xhdro = "inj1qc2tw477wwuvkad0h3g78xqgwx4k8knat6vz0h" -async function staking(_, _1, _2, { api }) { +async function staking(api) { const { total_supply } = await queryContract({ chain: api.chain, contract: xhdro, data: { token_info: {} } }) return { @@ -13,7 +13,7 @@ async function staking(_, _1, _2, { api }) { } } -async function tvl(_, _1, _2, { api }) { +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: {} } }) diff --git a/projects/hydt/index.js b/projects/hydt/index.js index bb391226c65..0b916251dff 100644 --- a/projects/hydt/index.js +++ b/projects/hydt/index.js @@ -16,7 +16,7 @@ async function tvl(_, _b, _cb) { return sumTokens2({ chain, owner: reserve, tokens: [bnb] }); } -async function staking(_, _b, _cb, { api, }) { +async function staking(api) { // earn const shydtBal = await api.call({ abi: 'erc20:balanceOf', target: shydt, params: earn, }); api.add(hydt, shydtBal); diff --git a/projects/hyfi.js b/projects/hyfi.js index 71e35e2e36c..f2ce900d702 100644 --- a/projects/hyfi.js +++ b/projects/hyfi.js @@ -8,7 +8,7 @@ module.exports = { const poolInfoABI = "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accSushiPerShare)" -async function tvl(_, _b, _cb, { api, }) { +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) diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js index e1fbbea3b4e..8ed15a02ede 100644 --- a/projects/hyperlock/index.js +++ b/projects/hyperlock/index.js @@ -18,7 +18,7 @@ const query = `{ }` -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { pools } = await cachedGraphQuery('hyperlock/v2', 'https://graph.hyperlock.finance/subgraphs/name/hyperlock/points-blast-mainnet', query) console.log(pools) await sumTokens2({ api, owner: v2Deposits, tokens: pools.map(i => i.id), resolveLP: true, }) diff --git a/projects/ibcx/index.js b/projects/ibcx/index.js index 17668365098..4bd85f1046b 100644 --- a/projects/ibcx/index.js +++ b/projects/ibcx/index.js @@ -11,8 +11,7 @@ const contractAddresses = [ "osmo14klwqgkmackvx2tqa0trtg69dmy0nrg4ntq4gjgw2za4734r5seqjqm4gm", ] -async function tvl() { - const { api } = arguments[3] +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) { diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index b94060f2258..35aa52695a8 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -121,7 +121,7 @@ const config = { Object.keys(config).forEach(chain => { const { vaultConfigs = [], oneFactory } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const blacklistedTokens = [] if (oneFactory) { const oneTokens = await api.fetchList({ lengthAbi: abi.oneTokenCount, itemAbi: abi.oneTokenAtIndex, target: oneFactory }) diff --git a/projects/idex/index.js b/projects/idex/index.js index f68cc99f501..fc742bd76a5 100644 --- a/projects/idex/index.js +++ b/projects/idex/index.js @@ -6,8 +6,8 @@ const { getConfig } = require('../helper/cache') const IDEX_ETHEREUM_CUSTODY_CONTRACT = "0xE5c405C5578d84c5231D3a9a29Ef4374423fA0c2"; const IDEX_POLYGON_CUSTODY_CONTRACT = "0x3bcc4eca0a40358558ca8d1bcd2d1dbde63eb468"; -async function tvl(_timestamp, block, chain, { api }) { - chain = api.chain +async function tvl(api) { + const chain = api.chain let tokens = [ADDRESSES.null] let owner diff --git a/projects/idle/index.js b/projects/idle/index.js index 99163d21afe..6cd4367607f 100644 --- a/projects/idle/index.js +++ b/projects/idle/index.js @@ -78,7 +78,7 @@ const trancheConfig = { } const getCurrentAllocationsABI = 'function getCurrentAllocations() returns (address[] tokenAddresses, uint256[] amounts, uint256 total)' -async function tvl(time, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const { v1 = [], v3 = [], safe = [], cdos = [] } = contracts[api.chain] const balances = {} const ownerTokens = [] diff --git a/projects/ilend/index.js b/projects/ilend/index.js index bd2668a1854..05f16be0171 100644 --- a/projects/ilend/index.js +++ b/projects/ilend/index.js @@ -1,7 +1,7 @@ const { queryContract } = require('../helper/chain/cosmos') const ILendPoolContractAddress = "inj1xjkfkfgjg60gh3duf5hyk3vfsluyurjljznwgu"; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const config = { chain: api.chain, contract: ILendPoolContractAddress } const { supported_tokens: tokens } = await queryContract({ ...config, data: { get_supported_tokens: {} } }) @@ -14,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) { } -async function borrowed(_, _b, _cb, { api, }) { +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 }) => { diff --git a/projects/ilend_v2/index.js b/projects/ilend_v2/index.js index 3c33ab7227b..51669b7e2a5 100644 --- a/projects/ilend_v2/index.js +++ b/projects/ilend_v2/index.js @@ -1,7 +1,7 @@ const { queryContract } = require('../helper/chain/cosmos') const ILendPoolContractAddress = "inj1j8pkx3dwsmtgg76shj9jaezxu6v0vj7lpl3dx0"; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const config = { chain: api.chain, contract: ILendPoolContractAddress } const { supported_tokens: tokens } = await queryContract({ ...config, data: { get_supported_tokens: {} } }) @@ -14,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) { } -async function borrowed(_, _b, _cb, { api, }) { +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 }) => { diff --git a/projects/illuminate-fi/index.js b/projects/illuminate-fi/index.js index 637e7c05cb8..7e88295f08d 100644 --- a/projects/illuminate-fi/index.js +++ b/projects/illuminate-fi/index.js @@ -1,7 +1,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const market = '0xcd1d02fda51cd24123e857ce94e4356d5c073b3f' const createMarketLogs = await getLogs({ api, diff --git a/projects/illuvium/index.js b/projects/illuvium/index.js index f891a372101..7a7cdfb72aa 100644 --- a/projects/illuvium/index.js +++ b/projects/illuvium/index.js @@ -1,5 +1,3 @@ -const { api } = require("@defillama/sdk") - const { staking } = require("../helper/staking") const ILV_POOL_V2_ADDRESS = "0x7f5f854FfB6b7701540a00C69c4AB2De2B34291D" @@ -8,8 +6,8 @@ const SLP_TOKEN_ADDRESS = "0x6a091a3406E0073C3CD6340122143009aDac0EDa" const LP_POOL_V1_ADDRESS = "0x8B4d8443a0229349A9892D4F7CbE89eF5f843F72" const LP_POOL_V2_ADDRESS = "0xe98477bDc16126bB0877c6e3882e3Edd72571Cc2" -async function ilvStaking() { - const { output: ilvPoolTvl } = await api.abi.call({ +async function ilvStaking(api) { + const ilvPoolTvl = await api.call({ abi: "function getTotalReserves() view returns (uint256 totalReserves)", target: ILV_POOL_V2_ADDRESS, }) @@ -20,7 +18,6 @@ async function ilvStaking() { } module.exports = { - timetravel: true, methodology: `Based on ILV reserves in the ILVPool contract and SLP in SushiLPPool contracts.`, ethereum:{ tvl: () => 0, diff --git a/projects/imonswap/index.js b/projects/imonswap/index.js index 46308e6ece4..d42ada23969 100644 --- a/projects/imonswap/index.js +++ b/projects/imonswap/index.js @@ -7,7 +7,7 @@ module.exports = { start: 1701478462, //Dec-2-2023 3:54:26 PM +UTC }; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory = "0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0" const getAllPairsAbi = "function getAllPairs() view returns ((bool valid, uint256 index, uint256 reserveBase, uint256 reserveQuote, address pair, (uint256 decimals, address token, string name, string symbol) base, (uint256 decimals, address token, string name, string symbol) quote)[])" const allPairs = await api.call({ target: factory, abi: getAllPairsAbi }) diff --git a/projects/impermax/impermaxHelper.js b/projects/impermax/impermaxHelper.js index 0f8f4eec215..9d06f7d205b 100644 --- a/projects/impermax/impermaxHelper.js +++ b/projects/impermax/impermaxHelper.js @@ -4,7 +4,7 @@ const sdk = require('@defillama/sdk') const { nullAddress } = require('../helper/tokenMapping') function impermaxHelper(exportsObj, config, blacklistedPools) { - async function tvl(_, _b, _cb, { api, }) { + async function tvl(api) { const { factories } = config[api.chain] const blacklist = blacklistedPools[api.chain] const pools = [] @@ -47,7 +47,7 @@ function impermaxHelper(exportsObj, config, blacklistedPools) { }) } - async function borrowed(_, _b, _cb, { api, }) { + async function borrowed(api) { const { factories } = config[api.chain] const blacklist = blacklistedPools[api.chain] const balances = {} diff --git a/projects/implsfinance/index.js b/projects/implsfinance/index.js index 51f14be488a..dccd6d653dc 100644 --- a/projects/implsfinance/index.js +++ b/projects/implsfinance/index.js @@ -22,14 +22,14 @@ const vaults = [ ]; /*** Staking of native token IMPLS and IMPLS/PLS LP TVL Portion ***/ -const pool2 = async (timestamp, ethBlock, chainBlocks, { api }) => { +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 (timestamp, ethBlock, chainBlocks, { api }) => { +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) diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js index 073e22208d9..e007381ec47 100644 --- a/projects/inception-lrt/index.js +++ b/projects/inception-lrt/index.js @@ -1,4 +1,4 @@ -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const vaults = ['0x36B429439AB227fAB170A4dFb3321741c8815e55', '0xfE715358368416E01d3A961D3a037b7359735d5e', '0x90E80E25ABDB6205B08DeBa29a87f7eb039023C2', '0x4878F636A9Aa314B776Ac51A25021C44CAF86bEd', '0xA9F8c770661BeE8DF2D026edB1Cb6FF763C780FF', '0x1Aa53BC4Beb82aDf7f5EDEE9e3bBF3434aD59F12', '0x814CC6B8fd2555845541FB843f37418b05977d8d', '0xc4181dC7BB31453C4A48689ce0CBe975e495321c', '0xC0660932C5dCaD4A1409b7975d147203B1e9A2B6', '0x6E17a8b5D33e6DBdB9fC61d758BF554b6AD93322', '0x295234B7E370a5Db2D2447aCA83bc7448f151161', '0xd0ee89d82183D7Ddaef14C6b4fC0AA742F426355'] const total_deposited = await api.multiCall({ abi: 'uint256:getTotalDeposited', calls: vaults, permitFailure: true}) // const total_withdraw = await api.multiCall({ abi: 'uint256:totalAmountToWithdraw', calls: vaults, permitFailure: true}) diff --git a/projects/indexcoop/index.js b/projects/indexcoop/index.js index 587c515ddd6..468486092ef 100644 --- a/projects/indexcoop/index.js +++ b/projects/indexcoop/index.js @@ -31,7 +31,7 @@ const sets = [ gtcETH, ]; -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const tokens = await api.multiCall({ abi: 'address[]:getComponents', calls: sets }) const toa = [] sets.forEach((o, i) => toa.push([tokens[i], o])) diff --git a/projects/indexed/index.js b/projects/indexed/index.js index 97b389135e5..8f5ea0ccbd8 100644 --- a/projects/indexed/index.js +++ b/projects/indexed/index.js @@ -1,6 +1,6 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0x592f70cE43a310D15fF59BE1460F38Ab6DF3Fe65', diff --git a/projects/infinitypad/index.js b/projects/infinitypad/index.js index babd48c2814..c716d4e11f3 100644 --- a/projects/infinitypad/index.js +++ b/projects/infinitypad/index.js @@ -13,7 +13,7 @@ async function fetchBalances(api, contracts) { // node test.js projects/infinitypad/index.js function tvl(chain) { - return async (timestamp, block, chainBlocks, { api }) => { + return async (api) => { const vestingContracts = (await getConfig('infinitypad', "https://api.infinitypad.com/get-all-vesting-contracts")); const clientVesting = {}; for (const vestingContract of vestingContracts) { diff --git a/projects/init-capital/index.js b/projects/init-capital/index.js index 3c910adeff0..e8416f152f7 100644 --- a/projects/init-capital/index.js +++ b/projects/init-capital/index.js @@ -2,7 +2,7 @@ const { getConfig } = require("../helper/cache"); const POOL_DATA_URI = "https://app.init.capital/static/json/pools.json"; -const tvl = async (timestamp, block, _, { api }) => { +const tvl = async (api) => { const allPoolData = await getConfig("init-capital", POOL_DATA_URI); const chainId = api.getChainId(); @@ -23,7 +23,7 @@ const tvl = async (timestamp, block, _, { api }) => { return api.sumTokens({ tokensAndOwners2: [tokens, pools] }); }; -const borrowed = async (timestamp, block, _, { api }) => { +const borrowed = async (api) => { const allPoolData = await getConfig("init-capital", POOL_DATA_URI); const chainId = api.getChainId(); const pools = Object.keys(allPoolData[chainId]); diff --git a/projects/insrt_finance/index.js b/projects/insrt_finance/index.js index ecf863c740b..c17924ebc13 100644 --- a/projects/insrt_finance/index.js +++ b/projects/insrt_finance/index.js @@ -9,7 +9,7 @@ const miladyvault = '0x861ff455dcd810895cb4050460e4b6a47fec3304' const insrtVaults = [ fidenzavault, rockvault, baycvault2, squigglevault, penguvault, miladyvault ] const vaulttokens = [nullAddress, '0xa3f5998047579334607c47a6a2889bf87a17fc02', '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', '0xbd3531da5cf5857e7cfaa92426877b022e612cf8', '0x524cab2ec69124574082676e6f654a18df49a048', '0x062e691c2054de82f28008a8ccc6d7a1c8ce060d', '0x5Af0D9827E0c53E4799BB226655A1de152A425a5' ] -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { await vaultTvl(api, [punkvault, baycvault, ]) return sumTokens2({ api, owners: insrtVaults , tokens: vaulttokens, resolveArtBlocks: true, }) } diff --git a/projects/insurace/index.js b/projects/insurace/index.js index d43c9ef77d6..e212f2237aa 100644 --- a/projects/insurace/index.js +++ b/projects/insurace/index.js @@ -33,7 +33,7 @@ const config = { Object.keys(config).forEach(chain => { const { endpoint, INSUR, stakingPool, pool2Pool, pool2Token, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let blacklistedTokens = [] if (INSUR) blacklistedTokens.push(INSUR) if (pool2Token) blacklistedTokens.push(pool2Token) diff --git a/projects/insuredao/index.js b/projects/insuredao/index.js index 110466914c0..16751f7fe12 100644 --- a/projects/insuredao/index.js +++ b/projects/insuredao/index.js @@ -62,7 +62,7 @@ module.exports = { Object.keys(config).forEach(chain => { const vault = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const bal = await api.call({ target: vault, abi: 'uint256:valueAll', diff --git a/projects/intentx.js b/projects/intentx.js index 1c87bee9a31..d31389bd6e0 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -46,7 +46,7 @@ module.exports = { timetravel: false, start: BETA_START, base: { - tvl: async (timestamp) => { + tvl: async ({ timestamp }) => { return getTVL(timestamp); }, }, diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index 55242b791f5..975e2ea14d7 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -17,7 +17,7 @@ module.exports = { ['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'polygon_zkevm', 'base', 'era', 'optimism', 'linea', 'eon', 'op_bnb', 'scroll', 'manta', 'inevm'].forEach(chain => { module.exports[chain] = { - tvl: async (_, _1, _2, { api }) => { + 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]}) diff --git a/projects/intswap/index.js b/projects/intswap/index.js index 9b82fb08760..5957f2a21ec 100644 --- a/projects/intswap/index.js +++ b/projects/intswap/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require('../helper/cache/getLogs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0xb9a8213d237c768e88bf89d690a9222df439dcc1', diff --git a/projects/inverse-finance-firm/index.js b/projects/inverse-finance-firm/index.js index 902157cb249..a5fc0d0f2a3 100644 --- a/projects/inverse-finance-firm/index.js +++ b/projects/inverse-finance-firm/index.js @@ -8,7 +8,7 @@ const sdk = require("@defillama/sdk") const firmStart = 16159015; const DBR = '0xAD038Eb671c44b853887A7E32528FaB35dC5D710'; -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: DBR, diff --git a/projects/iotabee/index.js b/projects/iotabee/index.js index cd89332cb89..e26529ff226 100644 --- a/projects/iotabee/index.js +++ b/projects/iotabee/index.js @@ -1,7 +1,7 @@ const { getConfig } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') -const tvl = async (timestamp, ethBlock, chainBlocks, { api }) => { +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]) }) } diff --git a/projects/iotube/index.js b/projects/iotube/index.js index f1b6bbbf23a..dc82946abb6 100644 --- a/projects/iotube/index.js +++ b/projects/iotube/index.js @@ -16,7 +16,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { tokenList, tokenSafe, } = config[chain] module.exports[chain] = { - tvl: async (_0, _b, _cb, { api }) => { + 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 index ca78cc1afed..c1721e5ed3b 100644 --- a/projects/ip/index.js +++ b/projects/ip/index.js @@ -46,7 +46,7 @@ const cappedTokens = { }, } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const balances = {} const count = await api.call({ abi: " function vaultsMinted() view returns (uint96)", target: VaultController }) const calls = [] diff --git a/projects/ipor/index.js b/projects/ipor/index.js index 033b57bdf86..8b3c6f95057 100644 --- a/projects/ipor/index.js +++ b/projects/ipor/index.js @@ -5,8 +5,10 @@ const { getConfig } = require('../helper/cache') const IPOR_GITHUB_ADDRESSES_URL = "https://raw.githubusercontent.com/IPOR-Labs/ipor-abi/main/mainnet/addresses.json"; const V2DeploymentBlockNumber = 18333744 -async function tvlEthereum(_, block, _1, { api }) { - if (block >= V2DeploymentBlockNumber) { +async function tvlEthereum(api) { + const { block } = api + + if (!block || block >= V2DeploymentBlockNumber) { return await calculateTvlForV2(api); } else { return await calculateTvlForV1(api); diff --git a/projects/jaguarswap.js b/projects/jaguarswap.js index 7c26145934f..5bbf8f9f8fe 100644 --- a/projects/jaguarswap.js +++ b/projects/jaguarswap.js @@ -1,20 +1,7 @@ -const { addFundsInMasterChef } = require('./helper/masterchef'); -const { staking } = require("./helper/staking"); -const STAKING_CONTRACT = "0xAd60A8cb60e052196F5B968B4bd4328A67Df27d3"; -const JAGUAR = '0x31535F7A83083E3f34899F356ECC7246FBF2E82D' +const { masterchefExports, } = require('./helper/unknownTokens'); -const arbitrumTvl = async (timestamp, ethBlock, { arbitrum: block }) => { - const balances = {}; - const transformAddress = i => `arbitrum:${i}` - await addFundsInMasterChef( - balances, STAKING_CONTRACT, block, 'arbitrum', transformAddress, undefined, [JAGUAR]); - return balances; -}; - -module.exports = { - methodology: 'All tokens and LP tokens staked on the Masterchef (0x1cCf20F4eE3EFD291267c07268BEcbFDFd192311) are counted as the TVL, with the exception of the native token(JAGUAR) which is considered staking TVL.', - arbitrum: { - tvl: arbitrumTvl, - staking: staking(STAKING_CONTRACT, JAGUAR) - }, -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'arbitrum', + nativeToken: '0x31535F7A83083E3f34899F356ECC7246FBF2E82D', + masterchef: '0xAd60A8cb60e052196F5B968B4bd4328A67Df27d3', +}) \ No newline at end of file diff --git a/projects/jarvis/index.js b/projects/jarvis/index.js index 3332083b703..cbdab35beeb 100644 --- a/projects/jarvis/index.js +++ b/projects/jarvis/index.js @@ -31,12 +31,12 @@ const contracts = { } } -async function tvl(timestamp, ethBlock, chainBlocks, { api, }) { +async function tvl(api) { const chain = api.chain const { synthpoolRegistry, version } = contracts[chain] const { fixedRateRegistry, fixedRateVersion } = contracts[chain] const { selfMintingRegistry, creditLineVersion } = contracts[chain] - const block = chainBlocks[chain] + const block = api.block const balances = {} // Get liquidityPools by calling getElements(synth, collateral, version) diff --git a/projects/jediswap-v2/index.js b/projects/jediswap-v2/index.js index 04f0c05245e..560cc5dedbf 100644 --- a/projects/jediswap-v2/index.js +++ b/projects/jediswap-v2/index.js @@ -1,9 +1,7 @@ const { sumTokens } = require('../helper/chain/starknet') const { cachedGraphQuery } = require('../helper/cache') -const factory = '0x04ba0de31008f4e3edd42b3c31db8f49490505885d684b78f5aa1572850b3a5a' -async function tvl() { - const { api } = arguments[3] +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') diff --git a/projects/jetmine/index.js b/projects/jetmine/index.js index 5e4935cb138..26c8031611d 100644 --- a/projects/jetmine/index.js +++ b/projects/jetmine/index.js @@ -1,26 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0xF7711748bF74f2dDC261e745Ff43FdD8abfD1200" -const jetmine = "0x71BE8F5F245c1F5aa5727DFdB36aAD3C71a4c26b" -const jetmineFtmLP = "0x9f0121654bb430192CF2Fc2fc5B6673C97d5DFA3"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [jetmine, jetmineFtmLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, jetmine, "fantom"), - pool2: pool2Exports(chef, [jetmineFtmLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xF7711748bF74f2dDC261e745Ff43FdD8abfD1200', + nativeToken: '0x71BE8F5F245c1F5aa5727DFdB36aAD3C71a4c26b' +}) \ No newline at end of file diff --git a/projects/jewelswap-lev-farming/index.js b/projects/jewelswap-lev-farming/index.js index c150672c44c..483b63bef9e 100644 --- a/projects/jewelswap-lev-farming/index.js +++ b/projects/jewelswap-lev-farming/index.js @@ -37,8 +37,7 @@ const proxyProvider = new ProxyNetworkProvider(networkConfig.gatewayUrl, { }); -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { addNfts(await getNFTs(FARMS)) addNfts(await getNFTs(FARMS2)) diff --git a/projects/jewelswap-liq-staking/index.js b/projects/jewelswap-liq-staking/index.js index 18faf36c927..e850398fb64 100644 --- a/projects/jewelswap-liq-staking/index.js +++ b/projects/jewelswap-liq-staking/index.js @@ -5,7 +5,7 @@ module.exports = { elrond: { tvl} } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = await getTokenData('JWLEGLD-023462') const data2 = await getTokenData('JWLASH-f362b9') api.add(nullAddress, data.minted - data.burnt) diff --git a/projects/jewelswap-nft/index.js b/projects/jewelswap-nft/index.js index fd0502fa3ed..20065fe8b91 100644 --- a/projects/jewelswap-nft/index.js +++ b/projects/jewelswap-nft/index.js @@ -42,8 +42,7 @@ module.exports = { } }; -async function borrowed() { - const { api } = arguments[3] +async function borrowed(api) { const commonSettings = await queryNFTDataFromSc(); api.add(nullAddress, commonSettings.total_loan_amount) diff --git a/projects/jones-dao/index.js b/projects/jones-dao/index.js index 2c6bdc71c96..0af8146becd 100644 --- a/projects/jones-dao/index.js +++ b/projects/jones-dao/index.js @@ -14,7 +14,7 @@ const jAssetToAsset = { "0x1f6fa7a58701b3773b08a1a16d06b656b0eccb23": addresses.tokens.rdpx, // jrdpx }; -async function tvl(_timestamp, _block, _chainBlocks, { api }) { +async function tvl(api) { const [ metavaultTokens, metavaultBalances, @@ -51,7 +51,7 @@ async function tvl(_timestamp, _block, _chainBlocks, { api }) { return sumTokens2({ api, tokensAndOwners }); } -async function tvl_ethereum(_timestamp, _block, _chainBlocks, { api }) { +async function tvl_ethereum(api) { const balances = {}; const leftoverStrategy = await sdk.api.erc20 diff --git a/projects/jpeg-d/helper/index.js b/projects/jpeg-d/helper/index.js index 6d2aacabe00..f307c68b845 100644 --- a/projects/jpeg-d/helper/index.js +++ b/projects/jpeg-d/helper/index.js @@ -86,7 +86,7 @@ async function getApeDepositAddresses(api) { /** * @returns the amount of JPEG locked on JPEG'd (trait or ltv boosts) */ -async function stakingJPEGD(_, _1, _2, { api }) { +async function stakingJPEGD(api) { const providersAddresses = await api.multiCall({ abi: "address:nftValueProvider", calls: VAULTS_ADDRESSES, @@ -170,7 +170,7 @@ async function autocompoundingTvl(api) { ); } -async function tvl(ts, b, cb, { api }) { +async function tvl(api) { await Promise.all([ getStakedApeAmount(api), vaultsTvl(api), diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index 0346a170270..c65aa3dca6f 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -11,7 +11,7 @@ const vaults = [ ['0x4bed2a922654cacc2be974689619768fabf24855', "0x0CA56aa647E83A8F0a5f7a81a2fdcA393bC68D78"], ] -async function tvl(timestamp, _, _1, { api }) { +async function tvl(api) { const thrusterv2LPs = [ // [LP, contract] ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', '0x8034b01555487C26D4e21F4E33b7A30fbc90d181'], ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], diff --git a/projects/jupiter-perpetual.js b/projects/jupiter-perpetual.js index f5a83f68154..04278ef2bf2 100644 --- a/projects/jupiter-perpetual.js +++ b/projects/jupiter-perpetual.js @@ -11,7 +11,7 @@ module.exports = { }, }; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const vaults = [ "BUvduFTd2sWFagCunBPLupG8fBTJqweLw9DuhruNFSCm", // SOL "WzWUoCmtVv7eqAbU3BfKPU3fhLP6CXR8NCJH78UK9VS", // USDC diff --git a/projects/kagla/index.js b/projects/kagla/index.js index 560f32dd17f..33ce09c66f9 100644 --- a/projects/kagla/index.js +++ b/projects/kagla/index.js @@ -4,7 +4,7 @@ const { staking } = require('../helper/staking') const START_BLOCK = 724359 -async function astar(_timestamp, _block, {astar: block}, { api }) { +async function astar(api) { return getBalances(api) } diff --git a/projects/kai/index.js b/projects/kai/index.js index 9685770ccee..6cccb37455e 100644 --- a/projects/kai/index.js +++ b/projects/kai/index.js @@ -14,7 +14,7 @@ const SuiVault = { tType: ADDRESSES.sui.SUI } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const vaults = [UsdcVault, UsdtVault, SuiVault] const vaultObjs = await sui.getObjects(vaults.map(v => v.id)) diff --git a/projects/kalata/index.js b/projects/kalata/index.js index d2e07e1a1e1..f9db890c6ff 100644 --- a/projects/kalata/index.js +++ b/projects/kalata/index.js @@ -7,7 +7,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const kala = '0x32299c93960bb583a43c2220dc89152391a610c5' const masterchef = '0x565bCba3eA730ac6987edE126B29DCf499fccEA1' -async function tvl(time, ethBlock, chainBlocks, { api }) { +async function tvl(api) { return sumTokens2({ api, ownerTokens: [ [[ADDRESSES.bsc.BUSD], '0x2d067575BE1f719f0b0865D357e67925B6f461C5'], // BUSD mint diff --git a/projects/kaleidoswap/index.js b/projects/kaleidoswap/index.js index 9363eb34142..11a3a503f25 100644 --- a/projects/kaleidoswap/index.js +++ b/projects/kaleidoswap/index.js @@ -15,7 +15,7 @@ Object.keys(config).forEach(chain => { }) -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { factory, fromBlock } = config[api.chain] const logs = await getLogs({ api, diff --git a/projects/kannagi-finance/index.js b/projects/kannagi-finance/index.js index 56cfcd23b53..5e3dc9686dd 100644 --- a/projects/kannagi-finance/index.js +++ b/projects/kannagi-finance/index.js @@ -21,8 +21,8 @@ function yieldHelperWrapper(){ const tvlFun = helperReturn.era.tvl; -const tvlFunWrapper =async function(_, _b, _cb, { api }){ - const tvlBalances = await tvlFun(_, _b, _cb, { api }) +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; diff --git a/projects/kassandra/index.js b/projects/kassandra/index.js index 9ec8e0a21c3..8fa473bd840 100644 --- a/projects/kassandra/index.js +++ b/projects/kassandra/index.js @@ -15,7 +15,7 @@ const configBalancer = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, @@ -53,7 +53,7 @@ Object.keys(config).forEach(chain => { Object.keys(configBalancer).forEach(chain => { const { factory, fromBlock } = configBalancer[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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({ diff --git a/projects/kava-boost/index.js b/projects/kava-boost/index.js index 166bb750443..bd3292446f7 100644 --- a/projects/kava-boost/index.js +++ b/projects/kava-boost/index.js @@ -3,7 +3,7 @@ const { queryV1Beta1 } = require('../helper/chain/cosmos'); const chain = 'kava' const blacklisted = new Set(['kava', 'ukava', 'bkava']) -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { result: pools } = await queryV1Beta1({ chain, url: '/savings/v1beta1/total_supply' }); pools .filter(({ denom }) => !blacklisted.has(denom)) diff --git a/projects/kava-earn/index.js b/projects/kava-earn/index.js index 07bab0a106f..633b3ba9e08 100644 --- a/projects/kava-earn/index.js +++ b/projects/kava-earn/index.js @@ -2,7 +2,7 @@ const { queryV1Beta1 } = require('../helper/chain/cosmos'); const chain = 'kava' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { result: pools } = await queryV1Beta1({ chain, url: '/earn/v1beta1/total_supply' }); pools.forEach(({ denom, amount }) => api.add(denom, amount)) } diff --git a/projects/kava-liquid/index.js b/projects/kava-liquid/index.js index de7e1d7ae2e..161e092cd49 100644 --- a/projects/kava-liquid/index.js +++ b/projects/kava-liquid/index.js @@ -3,7 +3,7 @@ const { transformBalances } = require('../helper/portedTokens') const chain = 'kava' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { result: pools } = await queryV1Beta1({ chain, url: '/liquid/v1beta1/total_supply' }); pools.forEach(({ denom, amount }) => api.add(denom, amount)) } diff --git a/projects/kava.js b/projects/kava.js index 74450f74c00..5c873cc09dd 100644 --- a/projects/kava.js +++ b/projects/kava.js @@ -1,7 +1,7 @@ const { queryV1Beta1 } = require('./helper/chain/cosmos'); const chain = 'kava' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { total_collateral: pools } = await queryV1Beta1({ chain, url: 'cdp/v1beta1/totalCollateral' }); pools.forEach(({ amount: { denom, amount} }) => api.add(denom, amount)) } diff --git a/projects/kebab-finance/index.js b/projects/kebab-finance/index.js index 9bd2d0bcd4d..255c56e3808 100644 --- a/projects/kebab-finance/index.js +++ b/projects/kebab-finance/index.js @@ -1,43 +1,9 @@ -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - -const masterchef = "0x76FCeffFcf5325c6156cA89639b17464ea833ECd"; -const kebab = "0x7979F6C54ebA05E18Ded44C4F986F49a5De551c2"; const poolInfoAbi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accCakePerShare)'; - -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - const transform = i => `bsc:${i}`; - await addFundsInMasterChef( - balances, - masterchef, - chainBlocks.bsc, - "bsc", - transform, - poolInfoAbi, - [kebab] - ); - - return balances; -} - -async function staking(timestamp, block, chainBlocks) { - let balances = {}; - let stakeBalance = ( - await sdk.api.erc20.balanceOf({ - target: kebab, - owner: masterchef, - block: chainBlocks.bsc, - chain: "bsc", - }) - ).output; - sdk.util.sumSingleBalance(balances, `bsc:${kebab}`, stakeBalance); - return balances; -} - -module.exports = { - bsc: { - tvl, - staking, - }, -}; +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/keeper-dao/index.js b/projects/keeper-dao/index.js index da4296bca9f..0220bd0596e 100644 --- a/projects/keeper-dao/index.js +++ b/projects/keeper-dao/index.js @@ -133,7 +133,8 @@ async function getLiquidityPoolBalances(timestamp, block, api) { return toa } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { + const { timestamp, block } = api const tokensAndOwners = await getLiquidityPoolBalances(timestamp, block); const balances = await getHidingVaultBalances(timestamp, block); diff --git a/projects/kelp-dao/index.js b/projects/kelp-dao/index.js index 43d9c72958f..806e3ee6714 100644 --- a/projects/kelp-dao/index.js +++ b/projects/kelp-dao/index.js @@ -1,6 +1,6 @@ const DEPOSIT_POOL = "0x036676389e48133B63a802f8635AD39E752D375D"; -async function tvl(_, _1, _2, { api }) { +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}) diff --git a/projects/key/index.js b/projects/key/index.js index 10dd6f4c5ef..ddc6260f068 100644 --- a/projects/key/index.js +++ b/projects/key/index.js @@ -50,8 +50,8 @@ async function getGmxPrice(slot0) { return 1 / gmxPriceInEth } -async function tvl(timestamp, _, chainBlocks, { api }) { - const fromBlock = await getBlock(timestamp - (48 * 60 * 60), 'arbitrum', chainBlocks) +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)', diff --git a/projects/keysea/index.js b/projects/keysea/index.js index 0ae342c591a..17dd4b5eb88 100644 --- a/projects/keysea/index.js +++ b/projects/keysea/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const KEYSEA_V1_CONTRACT = "0x28C0C1b47021C9d7BBD26c83eEa448F377F9600a" -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: KEYSEA_V1_CONTRACT, api }) } diff --git a/projects/kimberlite/index.js b/projects/kimberlite/index.js index a7dae25a415..5f3c70c5beb 100644 --- a/projects/kimberlite/index.js +++ b/projects/kimberlite/index.js @@ -8,7 +8,7 @@ module.exports = { Object.values(config).forEach(({ chain, locker, startBlock }) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/kinetix-derivatives-v2/index.js b/projects/kinetix-derivatives-v2/index.js index 8851d68a403..ff0267536c8 100644 --- a/projects/kinetix-derivatives-v2/index.js +++ b/projects/kinetix-derivatives-v2/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { nullAddress } = require("../helper/unwrapLPs"); -async function KavaTvl(_time, _ethBlock, _cb, { api }) { +async function KavaTvl(api) { const tokens = [nullAddress, ADDRESSES.kava.USDC]; const owners = ["0xB5CE30B6EBAA252bDEac2F768EF9b1e4Bdf8d120"]; return api.sumTokens({ owners, tokens }); diff --git a/projects/kingdefi/index.js b/projects/kingdefi/index.js index c359c06e841..233259bc99a 100644 --- a/projects/kingdefi/index.js +++ b/projects/kingdefi/index.js @@ -1,45 +1,17 @@ const { staking } = require("../helper/staking"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const masterChefContract_bsc = "0x49A44ea2B4126CC1C53C47Ed7f9a5905Cbecae8d"; -//const masterChefContract_bscexp = "0x50302F18132d98ea4B0f7Fd2d98e0B1b5d3a3A60"; -const masterChefContract_polygon = "0x445AcaE7E3e6248B9b6ebbb002126211e7836Dd8"; - -const stakingContract = "0x98F3b99198E164f50272ea5Ba44Ea76B1a439876"; -const KRW = "0x1446f3cedf4d86a9399e49f7937766e6de2a3aab"; - -function calctvl(chain) { - return async (chainBlocks) => { - const balances = {}; - - const transformAddress_bsc = i => `bsc:${i}`; - const transformAddress_polygon = i => `polygon:${i}`; - - await addFundsInMasterChef( - balances, - chain == "bsc" ? masterChefContract_bsc : masterChefContract_polygon, - chainBlocks[chain], - chain, - chain == "bsc" ? transformAddress_bsc : transformAddress_polygon - ); - - return balances; - }; -} - -const bscTvl = calctvl("bsc"); - -const polygonTvl = calctvl("polygon"); - -module.exports = { - misrepresentedTokens: true, - bsc: { - staking: staking(stakingContract, KRW, "bsc"), - tvl: bscTvl, - }, - polygon: { - tvl: polygonTvl, - }, - methodology: - "We count liquidity on the Farms seccion through MasterChef Contracts; and the staking part separtely", -}; +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/klayswap-v3/index.js b/projects/klayswap-v3/index.js index df1ef1630f0..11c97bed5ee 100644 --- a/projects/klayswap-v3/index.js +++ b/projects/klayswap-v3/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -async function v3Tvl(_, _b, _cb, { api, }) { +async function v3Tvl(api) { const factory = '0xA15Be7e90df29A4aeaD0C7Fc86f7a9fBe6502Ac9'; const wklay = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'; const klay = ADDRESSES.null; diff --git a/projects/klayswap/index.js b/projects/klayswap/index.js index a60058b1f4e..c64755e3667 100644 --- a/projects/klayswap/index.js +++ b/projects/klayswap/index.js @@ -7,7 +7,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const singlePoolFactory = '0xD1890D8F02F4C63553658ba49C53A82eb84009e6' -async function singlePoolTvl(_, _b, _cb, { api, }) { +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]])) diff --git a/projects/kleva-lend/index.js b/projects/kleva-lend/index.js index 95107564c31..6738ed74065 100644 --- a/projects/kleva-lend/index.js +++ b/projects/kleva-lend/index.js @@ -19,12 +19,12 @@ async function getLendingTVL(data, api) { return sumTokens2({ api, tokensAndOwners }) } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const data = await getWorkers() return getLendingTVL(data, api) } -async function borrowed(_, _1, _2, { 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}) diff --git a/projects/knightsfantom/index.js b/projects/knightsfantom/index.js index f04b541261c..7ee5e30641b 100644 --- a/projects/knightsfantom/index.js +++ b/projects/knightsfantom/index.js @@ -1,26 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x2166496575200E170310a34B5F697f7c124fF2C7" -const knights = "0xba36266B6565C96BD77815fa898f403Cc06F64cf" -const knightsFtmLP = "0x26ac59ee36965db597167c4a1b1b4367285aa4e3"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [knights, knightsFtmLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, knights, "fantom"), - pool2: pool2Exports(chef, [knightsFtmLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x2166496575200E170310a34B5F697f7c124fF2C7', + nativeToken: '0xba36266B6565C96BD77815fa898f403Cc06F64cf', +}) \ No newline at end of file diff --git a/projects/koala-defi/index.js b/projects/koala-defi/index.js index 75026427542..94cd493a129 100644 --- a/projects/koala-defi/index.js +++ b/projects/koala-defi/index.js @@ -1,33 +1,15 @@ -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { stakingUnknownPricedLP } = require("../helper/staking"); -const { pool2BalanceFromMasterChefExports } = require("../helper/pool2"); - -const bscNalis = "0xb2ebaa0ad65e9c888008bf10646016f7fcdd73c3"; -const bscMC = "0x7b3cA828e189739660310B47fC89B3a3e8A0E564"; -const polyNalis = "0x04f2e3ec0642e501220f32fcd9e26e77924929a9"; -const polyMC = "0xf6948f00FC2BA4cDa934C931628B063ed9091019"; - -async function bscTvl (timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, bscMC, chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`, undefined, [bscNalis], true, true, bscNalis); - return balances; -} - -async function polyTvl (timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, polyMC, chainBlocks.polygon, "polygon", addr=>`polygon:${addr}`, undefined, [polyNalis], true, true, polyNalis); - return balances; -} - -module.exports = { - bsc: { - tvl: bscTvl, - staking: stakingUnknownPricedLP(bscMC, bscNalis, "bsc", "0x138ACb44F9f2e4E7F3bbcB7BBb1a268068dC202C"), - pool2: pool2BalanceFromMasterChefExports(bscMC, bscNalis, "bsc", addr=>`bsc:${addr}`) - }, - polygon: { - tvl: polyTvl, - staking: stakingUnknownPricedLP(polyMC, polyNalis, "polygon", "0xff50A77412997FC86e78178A4b47000b9225ffd9"), - pool2: pool2BalanceFromMasterChefExports(polyMC, polyNalis, "polygon", addr=>`polygon:${addr}`) - } -} \ No newline at end of file +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/kogefarm/index.js b/projects/kogefarm/index.js index afaceb25389..0ca96c5eac3 100644 --- a/projects/kogefarm/index.js +++ b/projects/kogefarm/index.js @@ -36,7 +36,7 @@ const config = { Object.keys(config).forEach(chain => { const { endpoint } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let info = (await getConfig('kogefarm/' + chain, endpoint)) if (typeof info === 'string') info = JSON.parse(vaults.replace(/,(\s*[}\]])/g, '$1')) let vaults = chain === 'polygon' ? info : info.map(v => v.vault) @@ -50,13 +50,13 @@ Object.keys(config).forEach(chain => { } }) -module.exports.polygon.pool2 = async (_, _b, _cb, { api, }) => { +module.exports.polygon.pool2 = async (api) => { const tokens = await api.multiCall({ abi: abi.token, calls: _kogePool2 }) const bals = await 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 (_, _b, _cb, { api, }) => { +module.exports.polygon.staking = async (api) => { return sumUnknownTokens({ api, tokens: ['0x13748d548D95D78a3c83fe3F32604B4796CFfa23'], owner: kogeMasterChefAddr, }) } \ No newline at end of file diff --git a/projects/kokonut-swap/index.js b/projects/kokonut-swap/index.js index f7290c0dc85..4706e706892 100644 --- a/projects/kokonut-swap/index.js +++ b/projects/kokonut-swap/index.js @@ -64,7 +64,7 @@ async function klaytn_tvl(timestamp, _, { klaytn: block }) { return balances; } -async function polygon_zkevm_tvl(_, _b, _cb, { api }) { +async function polygon_zkevm_tvl(api) { const ownerTokens = []; const poolList = (await sdk.api.abi.call({ target: "0x677bBBAd41D784a4731d902c613f8af43AAb4feb", @@ -79,7 +79,7 @@ async function polygon_zkevm_tvl(_, _b, _cb, { api }) { const uniV2TVL = getUniTVL({ factory: '0x4Cf1284dcf30345232D5BfD8a8AAd6734b6941c4', useDefaultCoreAssets: true}); -async function base_tvl(_, _b, _cb, { api }) { +async function base_tvl(api) { const ownerTokens = []; const poolList = (await sdk.api.abi.call({ target: "0x03173F638B3046e463Ab6966107534f56E82E1F3", diff --git a/projects/konverter/index.js b/projects/konverter/index.js index ac6b2da0d59..e70f3873a42 100644 --- a/projects/konverter/index.js +++ b/projects/konverter/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const contracts = require("./contracts.json"); -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/kordfi/index.js b/projects/kordfi/index.js index b0e9f29aecf..e726596da51 100644 --- a/projects/kordfi/index.js +++ b/projects/kordfi/index.js @@ -1,7 +1,7 @@ const { sumTokens, getStorage } = require("../helper/chain/tezos") const SIRS = 'KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { lqtAddress, tokenAddress, xtzPool, lqtTotal, tokenPool } = await getStorage(SIRS) await sumTokens({ includeTezos: true, balances: api.getBalances(), owners: [ diff --git a/projects/krav/index.js b/projects/krav/index.js index 088afa3364a..01742207557 100644 --- a/projects/krav/index.js +++ b/projects/krav/index.js @@ -9,7 +9,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, KRAV, kravPool } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/kriya-dex/index.js b/projects/kriya-dex/index.js index 7590c8fb945..cbd52082e61 100644 --- a/projects/kriya-dex/index.js +++ b/projects/kriya-dex/index.js @@ -2,7 +2,7 @@ const sui = require('../helper/chain/sui') const EVENT_FILTER = "0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66::spot_dex::PoolCreatedEvent"; -async function kriyaTVL(_, _1, _2, { api }) { +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 => { diff --git a/projects/kromatika/index.js b/projects/kromatika/index.js index 1afc239600a..468562d7f8b 100644 --- a/projects/kromatika/index.js +++ b/projects/kromatika/index.js @@ -44,7 +44,7 @@ module.exports = { Object.keys(contracts).forEach(chain => { const {KROM, position} = contracts[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/kryptonite/index.js b/projects/kryptonite/index.js index 25cab795f3f..02ce1fb0430 100644 --- a/projects/kryptonite/index.js +++ b/projects/kryptonite/index.js @@ -47,13 +47,13 @@ Object.keys(config).forEach(chain => { const { coinGeckoId, hub, seilorLps } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { // Logic for calculating TVL excluding staked LP tokens const { total_bond_stsei_amount } = await queryContractWithRetries({ contract: hub, chain, data: { state: {} } }); api.add(coinGeckoId, total_bond_stsei_amount / 10 ** 6, { skipChain: true }); return api.getBalances(); }, - pool2: async (_, _b, _cb, { api }) => { + pool2: async (api) => { // Logic for calculating the value of staked LP tokens for (let { lp, pair, staking, pairInfo } of seilorLps) { const lpTokenInfo = await queryContractWithRetries({ contract: lp, chain, data: { token_info: {} } }); diff --git a/projects/kuma/index.js b/projects/kuma/index.js index 33fd003d300..d29162875c0 100644 --- a/projects/kuma/index.js +++ b/projects/kuma/index.js @@ -20,7 +20,7 @@ Object.keys(allAddresses).forEach((chain) => { const addresses = Object.values(allAddresses[chain]); module.exports[chain] = { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { api.addTokens(addresses, await api.multiCall({ abi: 'erc20:totalSupply', calls: addresses })) }, }; diff --git a/projects/kurrency/index.js b/projects/kurrency/index.js index 30b8ede26cd..60540c9cb04 100644 --- a/projects/kurrency/index.js +++ b/projects/kurrency/index.js @@ -1,4 +1,4 @@ -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/l2finance/index.js b/projects/l2finance/index.js index 007887c62ad..2cb47d1174a 100644 --- a/projects/l2finance/index.js +++ b/projects/l2finance/index.js @@ -6,7 +6,7 @@ const { getLogs } = require('../helper/cache/getLogs') const rollupChain = "0xf86FD6735f88d5b6aa709B357AD5Be22CEDf1A05" const registry = "0xfe81ab6930a30bdae731fe7b6c6abfbeafc014a8" -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const strategies = (await getLogs({ api, target: registry, diff --git a/projects/landx/index.js b/projects/landx/index.js index 4bce478f981..ccbf7b646fa 100644 --- a/projects/landx/index.js +++ b/projects/landx/index.js @@ -31,7 +31,7 @@ async function getXTokensTVL(api) { }) } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { await Promise.all([ getCTokensTVL(api), getXTokensTVL(api), diff --git a/projects/lava/index.js b/projects/lava/index.js index c34c21003c8..b1985230c97 100644 --- a/projects/lava/index.js +++ b/projects/lava/index.js @@ -57,7 +57,8 @@ async function getData(api, chain, key, tokens) { } function lavaTvl(borrowed) { - return async function (_, _1, _2, { api, chain }) { + return async function (api) { + const { chain } = api const reservesList = await api.call({ abi: getAllReservesTokensABI, target: DATA_PROVIDER_ADDRESS[chain], diff --git a/projects/lavafall/index.js b/projects/lavafall/index.js index 21394a29f08..e0f2a130c97 100644 --- a/projects/lavafall/index.js +++ b/projects/lavafall/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x04f9433A2CD21413Bc5641b84CaE0E40E86f9101" -const lavafall = "0x7A0Ac775d290A7a3016f153d757Fbc3c4De62488" -const lavafallFtmLP = "0xb58221b3c8eA491637e29f84D20bC95Bdd18D910" -const lavafallUsdcLP = "0x697B07a3c13D4fb23974ce56c353493AAF6bCaf1"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [lavafall, lavafallFtmLP, lavafallUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, lavafall, "fantom"), - pool2: pool2Exports(chef, [lavafallFtmLP, lavafallUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x04f9433A2CD21413Bc5641b84CaE0E40E86f9101', + nativeToken: '0x7A0Ac775d290A7a3016f153d757Fbc3c4De62488', +}) \ No newline at end of file diff --git a/projects/lazyotter/index.js b/projects/lazyotter/index.js index a547924edf5..4dd3d84cda0 100644 --- a/projects/lazyotter/index.js +++ b/projects/lazyotter/index.js @@ -1,6 +1,6 @@ const aaveVaults = ["0x7100409baaeda121ab92f663e3ddb898f11ff745", "0x844Ccc93888CAeBbAd91332FCa1045e6926a084d"]; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokens = await api.multiCall({ abi: "address:asset", calls: aaveVaults }); const aTokens = await api.multiCall({ abi: "address:aToken", calls: aaveVaults }); const tokensAndOwners2 = [tokens.concat(aTokens), aaveVaults.concat(aaveVaults)]; diff --git a/projects/leNFT/index.js b/projects/leNFT/index.js index 2309f5b714b..3f41dfe799a 100644 --- a/projects/leNFT/index.js +++ b/projects/leNFT/index.js @@ -1,7 +1,7 @@ const { getLogs } = require("../helper/cache/getLogs"); const { sumTokens2 } = require("../helper/unwrapLPs"); -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const tradingPoolFactory = "0x197456A4f5c3B3605033270Bc04Bc599916CaBA0"; const lendingMarket = "0xFAE8371d6b22F6451A64026785e79Bd7B438306F"; diff --git a/projects/leech-protocol/index.js b/projects/leech-protocol/index.js index 8916c817335..88335aa9579 100644 --- a/projects/leech-protocol/index.js +++ b/projects/leech-protocol/index.js @@ -7,7 +7,7 @@ async function getPoolData(api) { return getConfig('leech-protocol/' + api.chain, `${poolsUrl}/${api.chainId}`) } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { items: pools } = await getPoolData(api); const chain = api.chain const wantPools = [] diff --git a/projects/lemuriafinance.js b/projects/lemuriafinance.js index 76f5306adb4..4e17e54faf7 100644 --- a/projects/lemuriafinance.js +++ b/projects/lemuriafinance.js @@ -2,7 +2,7 @@ const { getConfig } = require('./helper/cache') const { sumUnknownTokens } = require('./helper/unknownTokens') -async function tvl(_, _b, _cb, { api, }) { +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) diff --git a/projects/lend-lord/index.js b/projects/lend-lord/index.js index a737059ec39..a1ff084cf40 100644 --- a/projects/lend-lord/index.js +++ b/projects/lend-lord/index.js @@ -1,12 +1,12 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const LEND_LORD_VAULT_CONTRACT = "0xC6A6fB7238457277E913665e194BA1f041B210f5"; -async function tvl(_, _b, _cb, { api, }) { +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(_, _b, _cb, { api, }) { +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) diff --git a/projects/lendexe/index.js b/projects/lendexe/index.js index 6161994b1ed..376990d3fbf 100644 --- a/projects/lendexe/index.js +++ b/projects/lendexe/index.js @@ -12,8 +12,8 @@ const mapping = { [ADDRESSES.ethereum.USDT]: 6, [ADDRESSES.ethereum.WBTC]: 8, } -async function borrowedWrapped(_, _1, _2, { api }) { - const borrowedRes = await borrowed(_, _1, _2, { api }) +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 => { diff --git a/projects/lendflare/convexBooster.js b/projects/lendflare/convexBooster.js index 4be502cefe9..f6de4a279c3 100644 --- a/projects/lendflare/convexBooster.js +++ b/projects/lendflare/convexBooster.js @@ -60,7 +60,7 @@ const convexPools = { 27: { lpToken: "0xDE5331AC4B3630f94853Ff322B66407e0D6331E8", virtualBalance: "0x0D66b49A68AffdDcDaDDdfE06CD6369307B2BA46", coinId: 2, coinName: "wrapped-bitcoin", decimals: 8 } } -async function getTotalSupply(pools, timestamp, block, chainBlocks) { +async function getTotalSupply(pools, chainBlocks) { const output = (await sdk.api.abi.multiCall({ block: chainBlocks.ethereum, chain: "ethereum", @@ -82,7 +82,7 @@ async function getTotalSupply(pools, timestamp, block, chainBlocks) { return pools; } -async function calculateTokenAmount(pools, timestamp, block, chainBlocks) { +async function calculateTokenAmount(pools, chainBlocks) { for (let pid of Object.keys(pools)) { await sdk.api.abi.call({ block: chainBlocks.ethereum, @@ -102,8 +102,8 @@ async function calculateTokenAmount(pools, timestamp, block, chainBlocks) { async function tvl(timestamp, block, chainBlocks) { const balances = {} - const pools = await getTotalSupply(convexPools, timestamp, block, chainBlocks).then(pools => { - return calculateTokenAmount(pools, timestamp, block, chainBlocks); + 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))) { diff --git a/projects/lendflare/supplyBooster.js b/projects/lendflare/supplyBooster.js index 8f8202dcf3a..0a740c56ff3 100644 --- a/projects/lendflare/supplyBooster.js +++ b/projects/lendflare/supplyBooster.js @@ -12,7 +12,7 @@ const supplyPools = [ { virtualBalance: "0x6d18E830A938F0eAF206f1BD80b79a851E5f37A3", decimals: 18, coinName: "ethereum" }, ] -async function getTotalSupply(pools, timestamp, block, chainBlocks) { +async function getTotalSupply(pools, chainBlocks) { const output = (await sdk.api.abi.multiCall({ block: chainBlocks.ethereum, chain: "ethereum", @@ -36,7 +36,7 @@ async function getTotalSupply(pools, timestamp, block, chainBlocks) { async function tvl(timestamp, block, chainBlocks) { const balances = {} - const pools = await getTotalSupply(supplyPools, timestamp, block, chainBlocks); + const pools = await getTotalSupply(supplyPools, chainBlocks); for (let pool of pools) sdk.util.sumSingleBalance(balances, pool.coinName, pool.totalSupply/(10 ** pool.decimals)) diff --git a/projects/lessgas/index.js b/projects/lessgas/index.js index 56e7c8f7d47..60ccf723eb0 100644 --- a/projects/lessgas/index.js +++ b/projects/lessgas/index.js @@ -1,7 +1,7 @@ const { getConfig } = require('../helper/cache') const HOST = 'https://api2.lessgas.xyz' -const staking = async (a, b, c, { api }) => { +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 }) diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js index fb6d6134d31..80f90e14be2 100644 --- a/projects/letsfil/index.js +++ b/projects/letsfil/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const LETSFIL_CONTRACT = "0xeD02FD25CA54e06dE121BFD36764C9f65CB6A183"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const collateralBalance = await api.call({ abi: 'function getTvl() external view returns (uint256)', diff --git a/projects/levana/index.js b/projects/levana/index.js index a8f94732cc0..15aa1fa68be 100644 --- a/projects/levana/index.js +++ b/projects/levana/index.js @@ -1,6 +1,6 @@ const { queryContract, sumTokens } = require('../helper/chain/cosmos') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { chain } = api const { factory } = config[chain] // Get a list of marketIds from the factory contract diff --git a/projects/level/index.js b/projects/level/index.js index 43ef7d3c924..64048d7191b 100644 --- a/projects/level/index.js +++ b/projects/level/index.js @@ -27,10 +27,10 @@ const ContractsArb = { ARB: ADDRESSES.arbitrum.ARB } } -async function arbtvl(_,b, _cb, { api, }) { +async function arbtvl(api) { return sumTokens2({ api, owner: ContractsArb.Pool, tokens: Object.values(ContractsArb.Tokens)}) } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens2({ api, owner: Contracts.Pool, tokens: Object.values(Contracts.Tokens) }) } diff --git a/projects/lighter/index.js b/projects/lighter/index.js index fd0ca1ea01a..01d67bc2c60 100644 --- a/projects/lighter/index.js +++ b/projects/lighter/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0x35642792abc96fa1e9ffe5f2f62a539bb80a8af4', diff --git a/projects/lila-finance/index.js b/projects/lila-finance/index.js index 4d7a856e43e..d9063eaffe4 100644 --- a/projects/lila-finance/index.js +++ b/projects/lila-finance/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const pools_provider = "0xE4534d76Cc512a14F288453F06F8961740Ae2a1E" -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { let 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.filter(i => i.strategy !== ADDRESSES.null) const aTokens = await api.multiCall({ abi: 'address:aToken', calls: data.map(i => i.strategy)}) diff --git a/projects/line/index.js b/projects/line/index.js index 654b41dae7a..5b6f6e7d594 100644 --- a/projects/line/index.js +++ b/projects/line/index.js @@ -14,7 +14,7 @@ const { sumUnknownTokens } = require('../helper/unknownTokens'); const LINE_CONTRACT_ADDRESS = "0x31f8d38df6514b6cc3C360ACE3a2EFA7496214f6"; const COLLATERAL_TOKEN_ADDRESS = "0x0b93109d05Ef330acD2c75148891cc61D20C3EF1"; -const tvl = async (_, _1, { kava: block }, { api }) => { +const tvl = async (api) => { const LOAN_NFT_CONTRACT_ADDRESS = await api.call({ abi: "address:loanNFT", target: LINE_CONTRACT_ADDRESS, @@ -27,7 +27,7 @@ const tvl = async (_, _1, { kava: block }, { api }) => { } -const staking = async (_, _1, { kava: block }, { api }) => { +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, diff --git a/projects/linea/index.js b/projects/linea/index.js index 234115afcec..9ae2b7c5f51 100644 --- a/projects/linea/index.js +++ b/projects/linea/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/linear/index.js b/projects/linear/index.js index 8b3146ede74..c9de29b7cd9 100644 --- a/projects/linear/index.js +++ b/projects/linear/index.js @@ -17,7 +17,7 @@ const vaultpools = { } -async function tvl(timestamp, blockETH, chainBlocks, { api }) { +async function tvl(api) { return api.sumTokens({ tokensAndOwners: [ [[tokens.LINA], LnCollateralSystemAddress], diff --git a/projects/liquid-collective/index.js b/projects/liquid-collective/index.js index 3d1074545cf..fd56f966404 100644 --- a/projects/liquid-collective/index.js +++ b/projects/liquid-collective/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const token = '0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supply = await api.call({ abi: 'uint256:totalUnderlyingSupply', target: token, }); api.add(ADDRESSES.null, supply) } diff --git a/projects/liquid-finance-arch/index.js b/projects/liquid-finance-arch/index.js index fa4966eda38..be485a97aeb 100644 --- a/projects/liquid-finance-arch/index.js +++ b/projects/liquid-finance-arch/index.js @@ -6,7 +6,7 @@ const STAKING_CONTRACT = const SWAP_CONTRACT = "archway1ywv0gxrw3kv25kn9f05dtqf6577fer5pc2vewvgcagpm5p8l4kuqc4qfp6"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const { chain } = api; const statusStakingInfo = await queryContract({ diff --git a/projects/liquiddriver/index.js b/projects/liquiddriver/index.js index 0a49e538b39..4477865eb9e 100644 --- a/projects/liquiddriver/index.js +++ b/projects/liquiddriver/index.js @@ -54,7 +54,7 @@ const shadowChefAddresses = [ "0xD354908d297ce9a348b417d2e0F561EE7D11de5E", // wsHEC/FTM ]; -const masterchefTvl = async (timestamp, ethBlock, chainBlocks) => { +const masterchefTvl = async (_ts, ethBlock, chainBlocks) => { const balances = {}; const transformAddress = i => `fantom:${i}`; @@ -71,7 +71,7 @@ const masterchefTvl = async (timestamp, ethBlock, chainBlocks) => { return balances; }; -const hundredchefTvl = async (timestamp, ethBlock, chainBlocks, { api }) => { +const hundredchefTvl = async (api) => { const balances = {}; const transformAddress = i => `fantom:${i}`; @@ -151,7 +151,7 @@ async function getMinichefTvl(api, minichef, balances = {}) { resolveLP: true, }) } -async function shadowChefTvl(_, _1, _2, { api, }) { +async function shadowChefTvl(api) { const balances = {} const [lpTokens, strategies] = await Promise.all([ api.multiCall({ abi: abi.shadowLpToken, calls: shadowChefAddresses}), @@ -236,12 +236,12 @@ module.exports = { staking: staking(xLQDR, LQDR, "fantom", "fantom:" + LQDR), tvl: sdk.util.sumChainTvls([ masterchefTvl, - (_, _1, _2, { api }) => getMinichefTvl(api, MINICHEF), + (api) => getMinichefTvl(api, MINICHEF), hundredchefTvl, shadowChefTvl, ]), }, bsc: { - tvl: (_, _1, _2, { api }) => getMinichefTvl(api, BSCMINICHEF), + tvl: (api) => getMinichefTvl(api, BSCMINICHEF), } }; // node test.js projects/liquiddriver/index.js diff --git a/projects/liquis/index.js b/projects/liquis/index.js index 5029d3edd71..ebcb942fe07 100644 --- a/projects/liquis/index.js +++ b/projects/liquis/index.js @@ -13,7 +13,7 @@ const addresses = { lens: "0xb73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19", }; -async function tvl(_, block, _1, { api }) { +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); @@ -40,8 +40,8 @@ async function tvl(_, block, _1, { api }) { }) // Compute veLIT locked value - const { output: veLitTotalSupply } = await sdk.api.erc20.totalSupply({ target: addresses.veLIT, block }) - const { output: veBalance } = await sdk.api.erc20.balanceOf({ target: addresses.veLIT, owner: addresses.voterProxy, block }) + 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]) => { diff --git a/projects/liquix/index.js b/projects/liquix/index.js index d6ed756dbd9..63eb576fa96 100644 --- a/projects/liquix/index.js +++ b/projects/liquix/index.js @@ -36,7 +36,7 @@ module.exports = { Object.keys(config).forEach((chain) => { const { factory, helper, fromBlock } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/liqwid/index.js b/projects/liqwid/index.js index f8465619baa..bfa1a678b13 100644 --- a/projects/liqwid/index.js +++ b/projects/liqwid/index.js @@ -100,7 +100,7 @@ const getOptimBondTVL = async () => { return bonds } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { Page: { market: markets } } = await graphQuery(endpoint, query, { page: 0 }) markets.forEach(market => add(api, market, market.state.totalSupply)) @@ -116,7 +116,7 @@ function add(api, market, bal) { }) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const { Page: { market: markets } } = await graphQuery(endpoint, query) markets.forEach(market => { diff --git a/projects/llama-airforce/index.js b/projects/llama-airforce/index.js index 138d3932a88..e7e783f9188 100644 --- a/projects/llama-airforce/index.js +++ b/projects/llama-airforce/index.js @@ -21,7 +21,7 @@ const vaults = [ contracts.uPRISMA, ] -async function tvl(time, block, _, { api },) { +async function tvl(api,) { const balances = {}; const bals = await api.multiCall({ abi: "uint256:totalUnderlying", calls: vaults }) diff --git a/projects/llamalend/index.js b/projects/llamalend/index.js index 246367d4bb0..f5b494e2870 100644 --- a/projects/llamalend/index.js +++ b/projects/llamalend/index.js @@ -29,10 +29,10 @@ async function getTVL(api, borrowed) { await sumTokens2({ api, tokens: [nullAddress], owners, balances, }) return balances } -async function borrowed(_, block, _1, { api }) { +async function borrowed(api) { return await getTVL(api, true) } -async function tvl(_, block, _1, { api }) { +async function tvl(api) { return await getTVL(api, false) } diff --git a/projects/lockon/index.js b/projects/lockon/index.js index f7fd651a4c7..3eab9037df4 100644 --- a/projects/lockon/index.js +++ b/projects/lockon/index.js @@ -1,7 +1,7 @@ const START_TIMESTAMP = 1690340140; // 2023-07-26T02:55:40Z const CONTROLLER_ADDRESS = "0x153e739B8823B277844Ad885A30AC5bD9DfB6E83" -async function tvl(timestamp, _1, _2, { api, }) { +async function tvl(api) { const sets = await api.call({ abi: "address[]:getSets", target: CONTROLLER_ADDRESS, }) const tokens = await api.multiCall({ abi: 'address[]:getComponents', calls: sets}) const ownerTokens = sets.map((set, i) => [tokens[i], set]) diff --git a/projects/logium/index.js b/projects/logium/index.js index e08d9fa313e..f8e5e1f0e73 100644 --- a/projects/logium/index.js +++ b/projects/logium/index.js @@ -17,7 +17,7 @@ function getProvider(network) { return chainApi.provider } -async function tvl(ts, block, _, { api}) { +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); @@ -38,7 +38,7 @@ async function tvl(ts, block, _, { api}) { // if (e.args.from.toLowerCase() !== LOGIUM_CORE) return; // owners.push(e.args.to) // }) - return sumTokens2({ owners, tokens: [USDC] }) + return sumTokens2({ api, owners, tokens: [USDC] }) } module.exports = { diff --git a/projects/logx/index.js b/projects/logx/index.js index b8a64c511ac..43af074153b 100644 --- a/projects/logx/index.js +++ b/projects/logx/index.js @@ -15,7 +15,7 @@ const config = { Object.keys(config).forEach(chain => { let vault = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { if (!Array.isArray(vault)) vault = [vault] const ownerTokens = [] for (const v of vault) { diff --git a/projects/lolik/index.js b/projects/lolik/index.js index 253046210ef..e7917646615 100644 --- a/projects/lolik/index.js +++ b/projects/lolik/index.js @@ -1,5 +1,5 @@ -async function tvl(timestamp, bahamutBlock, chainBlocks, { api }) { +async function tvl(api) { const pooledFTN = await api.call({ target: '0x780Fb5AcA83F2e3F57EE18cc3094988Ef49D8c3d', abi: "uint256:getTotalPooledFtn" }) return { diff --git a/projects/loop-finance/index.js b/projects/loop-finance/index.js index 25dca3759a2..ef9be1d230c 100644 --- a/projects/loop-finance/index.js +++ b/projects/loop-finance/index.js @@ -24,7 +24,7 @@ const queries = { } function getFactoryTvl(factory) { - return async function tvl(timestamp, _, { terra: block }, { api }) { + return async function tvl(api) { const chain = api.chain const pairs = await getPairs(chain, factory) sdk.log(chain, factory, pairs.length) diff --git a/projects/loopring/index.js b/projects/loopring/index.js index 2ad48a2f03f..9dfd04a6f14 100644 --- a/projects/loopring/index.js +++ b/projects/loopring/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/love/index.js b/projects/love/index.js index a14f716bb6b..e0587f6593a 100644 --- a/projects/love/index.js +++ b/projects/love/index.js @@ -15,7 +15,7 @@ Object.keys(config).forEach(chain => { const { staking} = config[chain] module.exports[chain] = { tvl: () => ({}), - staking: async (_, _b, _cb, { api, }) => { + staking: async (api) => { const stakingToken = await api.call({ abi: 'address:stakingToken', target: staking}) return api.sumTokens({ owner: staking, tokens: [stakingToken]}) } diff --git a/projects/lsdFil/index.js b/projects/lsdFil/index.js index e5819712f44..f2f2108c6ac 100644 --- a/projects/lsdFil/index.js +++ b/projects/lsdFil/index.js @@ -3,7 +3,7 @@ const MINT_TOKEN_CONTRACT = ADDRESSES.filecoin.WFIL; const MINT_CLUB_BOND_CONTRACT = '0x7187b3B1314375909B775d72fB7214Cb71a7D907'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const collateralBalance = await api.call({ abi: 'erc20:balanceOf', target: MINT_TOKEN_CONTRACT, diff --git a/projects/lsdx/index.js b/projects/lsdx/index.js index 1bf4d30a4bb..9e6484c7b84 100644 --- a/projects/lsdx/index.js +++ b/projects/lsdx/index.js @@ -11,7 +11,7 @@ const abis = { "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", } -async function tvl(_, _1, _2, { api }) { +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) => { diff --git a/projects/lst-optimizer/index.js b/projects/lst-optimizer/index.js index 3ff20d4ceb1..bac315e7d66 100644 --- a/projects/lst-optimizer/index.js +++ b/projects/lst-optimizer/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const abi = "function totalAssets() view returns (uint256)" const kETHStrategyAddress = "0xa060a5F83Db8bf08b45Cf56Db370c9383b7B895C"; const dETHVaultAddress = "0x4c7aF9BdDac5bD3bee9cd2Aa2FeEeeE7610f5a6B"; diff --git a/projects/luminous/index.js b/projects/luminous/index.js index a9e75a125a4..5f40332bb38 100644 --- a/projects/luminous/index.js +++ b/projects/luminous/index.js @@ -14,8 +14,7 @@ const waterLpToken = "TWH6NQ9tr28YoRdKuvcuQquVoEGrscPix4"; const waterFarm = "TY9mGUA8q1V9R9kmfUERpcG62SZ42gYuHW"; const lumiLpToken = "TUhZUbJaVicbQeNXHGBKxVsVuNL94usuoU"; -async function Pool2() { - const { api } = arguments[3] +async function Pool2(api) { const [ waterLpTokenAmount, diff --git a/projects/luxs.fi/index.js b/projects/luxs.fi/index.js index 98fdd9f6b8b..a8ec7f176b5 100755 --- a/projects/luxs.fi/index.js +++ b/projects/luxs.fi/index.js @@ -7,7 +7,7 @@ const facades = { optimism: "0x285cAee14514f30bB178FB56c985e43A47d68E75", }; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const vaults = await api.call({ abi: "function getVaults() external view returns (address[] memory)", target: facades[api.chain], diff --git a/projects/lyra/index.js b/projects/lyra/index.js index 40abcd7f4fa..cfdd6d5f38f 100644 --- a/projects/lyra/index.js +++ b/projects/lyra/index.js @@ -1,6 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') -const { sumTokens } = require('../helper/unwrapLPs') const v1_0_Pools = ['0x7Af4e1cE484f40D927b9C90fB6905Df4376fc3F6', '0xd7d974E81382D05E8D9fc6d0d17d0d852e9806dd'] const v1_1_LiquidityPool = [ @@ -67,19 +66,12 @@ const L2toL1Synths = { '0xc5db22719a06418028a40a9b5e9a7c02959d0d08': '0xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6' } -async function tvlOptimism(ttimestamp, _b, {optimism: block}){ - const balances = {} - const transform = (addr)=>{ - return L2toL1Synths[addr] || addr; - } - await sumTokens(balances, op_tokens.map(t=>op_pools.map(p=>[t,p])).flat(), block, 'optimism') - return balances +async function tvlOptimism(api){ + return api.sumTokens({ owners: op_pools, tokens: op_tokens }) } -async function tvlArbitrum(ttimestamp, _b, {arbitrum: block}){ - const balances = {} - await sumTokens(balances, arb_tokens.map(t=>arb_pools.map(p=>[t,p])).flat(), block, 'arbitrum') - return balances +async function tvlArbitrum(api){ + return api.sumTokens({ owners: arb_pools, tokens: arb_tokens }) } module.exports = { diff --git a/projects/lyve/index.js b/projects/lyve/index.js index bb54af5bff0..b3dc27950d8 100644 --- a/projects/lyve/index.js +++ b/projects/lyve/index.js @@ -5,7 +5,7 @@ const ADMIN_ADDRESSES = { ethereum: "0x624ceD7034DFF45D439cDe1f443448A49F067715" }; -async function tvl(_, _1, _2, { api }) { +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 }) diff --git a/projects/maffin/index.js b/projects/maffin/index.js index 2e8eddc9129..adab6c26291 100644 --- a/projects/maffin/index.js +++ b/projects/maffin/index.js @@ -1,7 +1,7 @@ const { getLogs } = require('../helper/cache/getLogs') const MAFFIN_HUB = "0x6690384822afF0B65fE0C21a809F187F5c3fcdd8"; -async function tvl(_, block, _1, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: MAFFIN_HUB, diff --git a/projects/magicfox-vault/index.js b/projects/magicfox-vault/index.js index b1e46316ff8..722e69bd8d2 100644 --- a/projects/magicfox-vault/index.js +++ b/projects/magicfox-vault/index.js @@ -13,7 +13,7 @@ const guageAbi = "function gaugeListExtended() view returns (address[], address[ Object.keys(config).forEach(chain => { const { voters } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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()))] diff --git a/projects/magicland/index.js b/projects/magicland/index.js index dae5e28268a..e5a08c958cc 100644 --- a/projects/magicland/index.js +++ b/projects/magicland/index.js @@ -1,33 +1,14 @@ -const { transformBalances } = require("../helper/portedTokens"); -const { addFundsInMasterChef } = require('../helper/masterchef'); -const STAKING_CONTRACT_ARBITRUM = "0x6b614684742717114200dc9f30cBFdCC00fc73Ec"; -const STAKING_CONTRACT_IOTEX = "0x9B4CF5d754455fD3Bc4212DCFF1b085DBCd5b0c0"; - -const arbitrumTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - await addFundsInMasterChef( - balances, STAKING_CONTRACT_ARBITRUM, chainBlocks.arbitrum, 'arbitrum', i => i); - delete balances['0x2c852d3334188be136bfc540ef2bb8c37b590bad']; - delete balances['0x2c852D3334188BE136bFC540EF2bB8C37b590BAD']; - - return transformBalances('arbitrum', balances) -}; - -const iotexTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - await addFundsInMasterChef( - balances, STAKING_CONTRACT_IOTEX, chainBlocks.iotex, 'iotex', i => i); - return transformBalances('iotex', balances) -}; - -module.exports={ - timetravel: true, //no archive node - arbitrum: { - tvl: arbitrumTvl - }, - iotex: { - tvl: iotexTvl - }, -} +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/magik-farm/index.js b/projects/magik-farm/index.js index 1b5ce7af9b0..4813d1f7438 100644 --- a/projects/magik-farm/index.js +++ b/projects/magik-farm/index.js @@ -20,7 +20,7 @@ const config = { Object.keys(config).forEach(chain => { const key = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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'}) diff --git a/projects/magpiexyz/index.js b/projects/magpiexyz/index.js index a80b2858e33..48248f86da0 100644 --- a/projects/magpiexyz/index.js +++ b/projects/magpiexyz/index.js @@ -14,7 +14,7 @@ async function getPoolList(api, MasterMagpieAddress, VlMGPAddress, MWOMAddress, return [poolTokens, depositTokens] } -async function tvl(timestamp, block, chainBlocks, { api }) { +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 }) diff --git a/projects/mahadao/ethereum.js b/projects/mahadao/ethereum.js index 4f91f18cdb5..54635c48fc0 100644 --- a/projects/mahadao/ethereum.js +++ b/projects/mahadao/ethereum.js @@ -24,7 +24,7 @@ const eth = { Object.keys(eth).forEach((k) => (eth[k] = eth[k].toLowerCase())); -async function tvl(_, block, _1, { api }) { +async function tvl(api) { const troves = [ "0x8b1da95724b1e376ae49fdb67afe33fe41093af5", // ETH Trove ]; diff --git a/projects/maker-rwa/index.js b/projects/maker-rwa/index.js index 5cbb6d0e558..2558e94a255 100644 --- a/projects/maker-rwa/index.js +++ b/projects/maker-rwa/index.js @@ -42,7 +42,8 @@ async function getJoins(block, api) { return joins; } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { + const block = api.block let toa = [] const blacklistedJoins = [ diff --git a/projects/maker/index.js b/projects/maker/index.js index 8d2312f27ba..1c3fa056b96 100644 --- a/projects/maker/index.js +++ b/projects/maker/index.js @@ -42,7 +42,8 @@ async function getJoins(block, api) { return joins; } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { + const block = api.block let toa = [ [MakerSCDConstants.WETH_ADDRESS, MakerSCDConstants.TUB_ADDRESS,], ] diff --git a/projects/mango-farmers-club/index.js b/projects/mango-farmers-club/index.js index dc633f71d2b..0964fc707d9 100644 --- a/projects/mango-farmers-club/index.js +++ b/projects/mango-farmers-club/index.js @@ -2,7 +2,7 @@ const { fetchURL } = require("../helper/utils"); module.exports = { polygon_zkevm: { - staking: async (_, _1, _2, { api }) => { + staking: async (api) => { const stakingBalance = await api.call({ abi: 'erc20:balanceOf', target: '0x1fa03edb1b8839a5319a7d2c1ae6aae492342bad', diff --git a/projects/mango-markets-v4/deposits.js b/projects/mango-markets-v4/deposits.js index 5294bff5313..ad34e8af5f2 100644 --- a/projects/mango-markets-v4/deposits.js +++ b/projects/mango-markets-v4/deposits.js @@ -12,8 +12,7 @@ async function depositsTvl() { const banks = await program.account.bank.all(); return sumTokens2({ tokenAccounts: banks.map((i) => i.account.vault) }); } -async function borrowed() { - const { api } = arguments[3]; +async function borrowed(api) { const provider = getProvider(); const program = new Program( idl, diff --git a/projects/manta-pacific/index.js b/projects/manta-pacific/index.js index c26629c60dd..a86f8a3f754 100644 --- a/projects/manta-pacific/index.js +++ b/projects/manta-pacific/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/mantle-meth/index.js b/projects/mantle-meth/index.js index d12deac306f..d971aa140d2 100644 --- a/projects/mantle-meth/index.js +++ b/projects/mantle-meth/index.js @@ -5,7 +5,7 @@ const token = '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa' module.exports = { ethereum: { - tvl: async (_, _b, _1, { api }) => { + 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) diff --git a/projects/mantle/index.js b/projects/mantle/index.js index f4e2bd9fd65..2cc5812620d 100644 --- a/projects/mantle/index.js +++ b/projects/mantle/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owner: "0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012", diff --git a/projects/mantleswap/index.js b/projects/mantleswap/index.js index 587f2f200a1..f73010ae8b5 100644 --- a/projects/mantleswap/index.js +++ b/projects/mantleswap/index.js @@ -9,7 +9,7 @@ module.exports = { } } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0x5c84e5d27fc7575D002fe98c5A1791Ac3ce6fD2f', diff --git a/projects/maple-rwa/index.js b/projects/maple-rwa/index.js index 4f5adf1285d..40cd9af0aa7 100644 --- a/projects/maple-rwa/index.js +++ b/projects/maple-rwa/index.js @@ -4,7 +4,7 @@ const rwaPools = [ '0xe9d33286f0E37f517B1204aA6dA085564414996d', // AQRU ] -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const tokens = await api.multiCall({ abi: 'address:asset', calls: rwaPools }) const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: rwaPools }) api.addTokens(tokens, bals) diff --git a/projects/maple/index.js b/projects/maple/index.js index b18f8989209..d33340fc8b7 100644 --- a/projects/maple/index.js +++ b/projects/maple/index.js @@ -91,7 +91,8 @@ async function getPoolInfo(block, api) { } } -async function ethTvl2(_, block, _1, { api }) { +async function ethTvl2(api) { + const block = api.block const { managers, assets, } = await getPoolInfo(block, api) const pools = await api.multiCall({ abi: abis.pool, @@ -101,9 +102,9 @@ async function ethTvl2(_, block, _1, { api }) { return sumTokens2({ block, tokensAndOwners: pools.map((o, i) => ([assets[i], o])) }) } -async function borrowed2(_, block, _1, { api }) { +async function borrowed2(api) { const balances = {} - const { proxies, assets, } = await getPoolInfo(block, api) + const { proxies, assets, } = await getPoolInfo(api.block, api) const principalOut = await api.multiCall({ abi: abis.principalOut, calls: proxies, diff --git a/projects/marginly/index.js b/projects/marginly/index.js index c9dfa7a55dc..2c70d6712bc 100644 --- a/projects/marginly/index.js +++ b/projects/marginly/index.js @@ -11,7 +11,7 @@ module.exports = { Object.keys(config).forEach((chain) => { const { factories } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _2, { api }) => { + tvl: async (api) => { const ownerTokens = []; for (const { factory, fromBlock } of factories) { const logs = await getLogs({ diff --git a/projects/marginx/index.js b/projects/marginx/index.js index b0f1754eab2..9f05871adbf 100644 --- a/projects/marginx/index.js +++ b/projects/marginx/index.js @@ -15,7 +15,7 @@ const { getConfig } = require('../helper/cache'); // return ethereumAddress; // } -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/marinade-native/index.js b/projects/marinade-native/index.js index 6dc91fe50ed..8d3ad92f8b6 100644 --- a/projects/marinade-native/index.js +++ b/projects/marinade-native/index.js @@ -1,7 +1,7 @@ const { StakeProgram } = require("@solana/web3.js") const { getConnection } = require('../helper/solana') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { filters: [{ memcmp: { diff --git a/projects/market.xyz/index.js b/projects/market.xyz/index.js index d47593c0530..ffd0d977b29 100644 --- a/projects/market.xyz/index.js +++ b/projects/market.xyz/index.js @@ -15,7 +15,6 @@ async function getFusePools( balances, borrowed, chain, - transform = (a) => a ) { const data = ( await sdk.api.abi.call({ diff --git a/projects/marshamallowdefi/index.js b/projects/marshamallowdefi/index.js index 0091462f328..f3519a47da6 100644 --- a/projects/marshamallowdefi/index.js +++ b/projects/marshamallowdefi/index.js @@ -1,92 +1,24 @@ const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - -// --- Farms Addresses --- -const masterChefFarms = "0x8932a6265b01D1D4e1650fEB8Ac38f9D79D3957b"; const MASH = "0x787732f27d18495494cea3792ed7946bbcff8db2"; - -const pool2LpsFarms = [ - "0x87c182edb12f74d561519ab586205fe6cd75363a", - "0x7621886ac71e985dbea4f3f563bbb5a7865876a8", - "0x0e70ff44229c6573cc020921345948ba4b5ec7cc", - "0x9f8223b4b616aa9becb599c93b0430c6bef0443a", - "0x16940bc578c30c7c10a2cf8a150b98a8b1cee152", - "0x9EC365D77dCF2b3230399a23D35aEF4318de710D", - "0xb442780739037577920857DaD91259416b72DE7a", - "0xC6D926086b29774b10530ab9e02980e9586a061F", -]; - -// --- SafeFarms Addresses --- -const masterChefSafeFarms = "0xEE49Aa34833Ca3b7d873ED63CDBc031A09226a5d"; const TOFY = "0xe1f2d89a6c79b4242f300f880e490a70083e9a1c"; -const pool2LpsSafeFarms = [ - "0x6f73FF29E47C0F49d6Db7EF4B2CE9393256a7C7A", - "0x753f40F5CdeB085AD4540Dd02a1c0c712EaF51F6", - "0xc36e93F6D92be42E2eAFB009dF74a0eBFeD5c0C2", -]; - -const Staking = async (...params) => { - for (const token of [MASH, TOFY]) { - if (token == MASH) { - return staking(masterChefFarms, MASH, "bsc")(...params); - } else { - return staking(masterChefSafeFarms, TOFY, "bsc")(...params); - } - } -}; - -const Pool2 = async (...params) => { - for (const stakingContract of [masterChefFarms, masterChefSafeFarms]) { - if (stakingContract == masterChefFarms) { - return pool2s([masterChefFarms], pool2LpsFarms, "bsc")(...params); - } else { - return pool2s([masterChefSafeFarms], pool2LpsSafeFarms, "bsc")(...params); - } - } -}; - -const bscTvl = async (chainBlocks) => { - const balances = {}; - - let transformAddress = i => `bsc:${i}`; - await addFundsInMasterChef( - balances, - masterChefFarms, - chainBlocks["bsc"], - "bsc", - transformAddress, - abi.poolInfo, - ["0x00000000548997391c670a5179Af731A30e7c3Ad", MASH], - true, - true, - MASH - ); - - await addFundsInMasterChef( - balances, - masterChefSafeFarms, - chainBlocks["bsc"], - "bsc", - transformAddress, - abi.poolInfo, - [TOFY], - true, - true, - TOFY - ); - - return balances; -}; -module.exports = { - bsc: { - tvl: bscTvl, - staking: Staking, - pool2: Pool2, - }, - methodology: - "We count liquidity on the Farms and Pools through MasterChef (Marshamallow and SafeFarm) Contracts", -}; +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/matrix-farm/index.js b/projects/matrix-farm/index.js index 40300d6e17b..17bef4e5aee 100644 --- a/projects/matrix-farm/index.js +++ b/projects/matrix-farm/index.js @@ -15,7 +15,7 @@ chains.forEach(chain => { module.exports[chain] = { tvl } }) -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/matrixdock/index.js b/projects/matrixdock/index.js index 92c5f6297c9..1a1c8b7c05c 100644 --- a/projects/matrixdock/index.js +++ b/projects/matrixdock/index.js @@ -3,8 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json') module.exports = { misrepresentedTokens: true, ethereum: { - tvl: async (...args) => { - const { api } = args[3] + tvl: async (api) => { const STBT = '0x530824DA86689C9C17CdC2871Ff29B058345b44a' api.add(ADDRESSES.ethereum.USDT, await api.call({ target: '0xad4A9bED9a5E2c1c9a6E43D35Db53c83873dd901', abi: 'uint256:latestAnswer'}) / 1e12) } diff --git a/projects/maverick/index.js b/projects/maverick/index.js index 30744e13448..226b1fb951a 100644 --- a/projects/maverick/index.js +++ b/projects/maverick/index.js @@ -8,7 +8,7 @@ function maverickTVL(config) { Object.keys(config).forEach((chain) => { const { factories } = config[chain]; exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { let logs = []; for (let k = 0; k < factories.length; k++) { logs.push( diff --git a/projects/mayachain/index.js b/projects/mayachain/index.js index 962e9c58902..1698388179c 100644 --- a/projects/mayachain/index.js +++ b/projects/mayachain/index.js @@ -34,7 +34,7 @@ const tokenToDecimalMapping = { "DASH.DASH": 8, }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const pools = await getCache("https://midgard.mayachain.info/v2/pools"); const aChain = api.chain; diff --git a/projects/mayfair/index.js b/projects/mayfair/index.js index e5bac1b6dfa..ebf1e190d42 100644 --- a/projects/mayfair/index.js +++ b/projects/mayfair/index.js @@ -21,7 +21,7 @@ async function getStaking() { return toUSDTBalances(staking) } -async function tvl(_, _1, _2, { api }) { +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))) diff --git a/projects/mcdex/index.js b/projects/mcdex/index.js index 8fcc8e357d4..7646a75a0c1 100644 --- a/projects/mcdex/index.js +++ b/projects/mcdex/index.js @@ -24,11 +24,11 @@ async function getTVL(subgraphName, api) { return results.factories[0].totalValueLockedUSD; } -async function arbitrum(_, _b, _cb, { api, }) { +async function arbitrum(api) { return toUSDTBalances(await getTVL("mcdex3-arb-perpetual", api)) } -async function bsc(_, _b, _cb, { api, }) { +async function bsc(api) { return toUSDTBalances(await getTVL("mcdex3-bsc-perpetual", api)) } diff --git a/projects/mellow/index.js b/projects/mellow/index.js index 6847f77ac7c..b2d37c3f13b 100644 --- a/projects/mellow/index.js +++ b/projects/mellow/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0x0c884b56fa7dd33a1f4e8b05e7105217c2456219"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/mercurity/index.js b/projects/mercurity/index.js index b9abfe32341..ca9c41a6063 100644 --- a/projects/mercurity/index.js +++ b/projects/mercurity/index.js @@ -7,7 +7,7 @@ const pool_factoryV2 = "0xCD21ef2220596cba4A7DaE59b5eeeA6dB7859df7"; const toAddr = (d) => "0x" + d.substr(26); -const calc = async (balances, block, factory, api) => { +const calc = async (balances, factory, api) => { const START_BLOCK = 11259517; // 11971199 -> start block for Factory Pool V2 const events = ( await getLogs({ @@ -28,14 +28,14 @@ const calc = async (balances, block, factory, api) => { return sumTokens2({ api, tokensAndOwners, balances }) }; -const ethTvl = async (_, ethBlock, _1, { api }) => { +const ethTvl = async (api) => { const balances = {}; await Promise.all([ /*** Pool V1 TVL Portion ***/ - calc(balances, ethBlock, pool_factoryV1, api), + calc(balances, pool_factoryV1, api), /*** Pool V2 TVL Portion ***/ - calc(balances, ethBlock, pool_factoryV2, api), + calc(balances, pool_factoryV2, api), ]) return balances; diff --git a/projects/merkle-trade/index.js b/projects/merkle-trade/index.js index 43e287c9477..5b48dd61783 100644 --- a/projects/merkle-trade/index.js +++ b/projects/merkle-trade/index.js @@ -6,7 +6,7 @@ const MERKEL_TRADE = const lzUSDC = ADDRESSES.aptos.USDC_2; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const { coin_store: { value }, } = await getResource( diff --git a/projects/meshswap/index.js b/projects/meshswap/index.js index db62d96d408..076cce62b8b 100644 --- a/projects/meshswap/index.js +++ b/projects/meshswap/index.js @@ -6,7 +6,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const singlePoolFactory = '0x504722a6eabb3d1573bada9abd585ae177d52e7a' -async function singlePoolTvl(_, _b, _cb, { api, }) { +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]])) diff --git a/projects/metacoin/index.js b/projects/metacoin/index.js index b972641caf7..0f120e5888c 100644 --- a/projects/metacoin/index.js +++ b/projects/metacoin/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const exchangeAddr = '0x1dd2235091c82862bcc7e9c25017ba9c409c0820' const vaultAddr = '0x1ac269102c4d8c4f92b3cf9d214ea78060b4d366' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: exchangeAddr, diff --git a/projects/metapool-eth/index.js b/projects/metapool-eth/index.js index 20d524bbca6..6ff3945c3ed 100644 --- a/projects/metapool-eth/index.js +++ b/projects/metapool-eth/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const token = '0x48afbbd342f64ef8a9ab1c143719b63c2ad81710' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supply = await api.call({ abi: 'uint256:totalSupply', target: token, }); api.add(ADDRESSES.null, supply) } diff --git a/projects/metastreet-v2/index.js b/projects/metastreet-v2/index.js index 58456a0be18..c957e9f7bc6 100644 --- a/projects/metastreet-v2/index.js +++ b/projects/metastreet-v2/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs") const METASTREET_POOL_FACTORY = "0x1c91c822F6C5e117A2abe2B33B0E64b850e67095"; const MAX_UINT_128 = "0xffffffffffffffffffffffffffffffff"; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const pools = await api.call({ target: METASTREET_POOL_FACTORY, abi: abi.getPools, }) const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools, }) const ct = await api.multiCall({ abi: abi.collateralToken, calls: pools, }) @@ -12,7 +12,7 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, ownerTokens, permitFailure: true }); } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const pools = await api.call({ target: METASTREET_POOL_FACTORY, abi: abi.getPools, }) const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools, }) const poolsBorrowedValue = ( diff --git a/projects/metavault-derivatives-v2/index.js b/projects/metavault-derivatives-v2/index.js index 67f1cd8ccee..cfaf06200f0 100644 --- a/projects/metavault-derivatives-v2/index.js +++ b/projects/metavault-derivatives-v2/index.js @@ -6,7 +6,7 @@ const config = { Object.keys(config).forEach(chain => { const target = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens= await api.call({ abi: 'address[]:getAssetList', target}) return api.sumTokens({ owner: target, tokens }) } diff --git a/projects/metavisor/index.js b/projects/metavisor/index.js index 1d80b649bf7..a2c67e7e5ca 100644 --- a/projects/metavisor/index.js +++ b/projects/metavisor/index.js @@ -11,7 +11,7 @@ const CONFIG = { arbitrum: { uniswapRegistry: { startBlock: 71578282, }, }, }; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const chainConfig = CONFIG[api.chain]["uniswapRegistry"]; const vaultLogs = await getLogs({ diff --git a/projects/meter-Liquid-Staking/index.js b/projects/meter-Liquid-Staking/index.js index e0daf56fdaa..200ebef19f5 100644 --- a/projects/meter-Liquid-Staking/index.js +++ b/projects/meter-Liquid-Staking/index.js @@ -1,5 +1,5 @@ const stMTRG = '0x215d603293357ca222bE92A1bf75eEc38DeF0aad'; -async function tvl(timestamp, _, { meter: block }, { api }) { +async function tvl(api) { const stMTRGStaking = await api.call({ target: stMTRG, abi: 'erc20:totalSupply', diff --git a/projects/methlab-xyz/index.js b/projects/methlab-xyz/index.js index 407c8d7838d..0b8a5eb2388 100644 --- a/projects/methlab-xyz/index.js +++ b/projects/methlab-xyz/index.js @@ -10,7 +10,7 @@ const config = { Object.keys(config).forEach(chain => { const { factories } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const vaults = [] for (const { target, fromBlock, } of factories) { const logs = await getLogs({ api, target, fromBlock, onlyArgs: true, eventAbi: 'event VaultAdded (address indexed vault)' }) diff --git a/projects/metis/index.js b/projects/metis/index.js index 7c7d2254e9d..81806843153 100644 --- a/projects/metis/index.js +++ b/projects/metis/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owner: "0x3980c9ed79d2c191A89E02Fa3529C60eD6e9c04b", diff --git a/projects/metisBridge/index.js b/projects/metisBridge/index.js index 7c7d2254e9d..81806843153 100644 --- a/projects/metisBridge/index.js +++ b/projects/metisBridge/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owner: "0x3980c9ed79d2c191A89E02Fa3529C60eD6e9c04b", diff --git a/projects/metropolis/index.js b/projects/metropolis/index.js index 0e3d1a9a400..9a041755a9c 100644 --- a/projects/metropolis/index.js +++ b/projects/metropolis/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const factories = { fantom: '0xdD693b9F810D0AEE1b3B74C50D3c363cE45CEC0C', } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const pools = await api.fetchList({ target: factories[api.chain], itemAbi: 'function allLBPairs(uint256) view returns (address)', diff --git a/projects/meveth/index.js b/projects/meveth/index.js index d5ba62d99d1..1504235d1a1 100644 --- a/projects/meveth/index.js +++ b/projects/meveth/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const getFraction = "function fraction() view returns (uint128 base, uint128 elastic)"; -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { elastic } = await api.call({ abi: getFraction, target: '0x24ae2da0f361aa4be46b48eb19c91e02c5e4f27e' }) api.add(ADDRESSES.null, elastic) return api.getBalances() diff --git a/projects/milkomeda-macc/index.js b/projects/milkomeda-macc/index.js index 2a09134156f..75e7fc0a818 100644 --- a/projects/milkomeda-macc/index.js +++ b/projects/milkomeda-macc/index.js @@ -2,7 +2,7 @@ const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') const TokenMerger = '0x36A06C470342Fc3443d768a9c85Aa43985D82219'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokens = await api.call({ abi: abi.getAllFragmentedTokens, target: TokenMerger }) return sumTokens2({ api, owner: TokenMerger, tokens, }) } diff --git a/projects/milky-way/index.js b/projects/milky-way/index.js index 6d92fe6c5cd..eac5b22a835 100644 --- a/projects/milky-way/index.js +++ b/projects/milky-way/index.js @@ -17,8 +17,7 @@ const consts = { * } */ -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { const data = await queryContract({ contract: consts.MILKYWAY_CONTRACT, chain: api.chain, data: { state: {} } }); const {batches} = await queryContract({ contract: consts.MILKYWAY_CONTRACT, chain: api.chain, data: { batches: {} } }); const token = 'ibc/'+ADDRESSES.ibc.TIA diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js index 2127a2a6f22..be8d63e0223 100644 --- a/projects/mint-club-v2/index.js +++ b/projects/mint-club-v2/index.js @@ -19,7 +19,7 @@ const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'b chains.forEach(chain => { const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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] }) diff --git a/projects/mintswap/index.js b/projects/mintswap/index.js index da50608cb34..6413781294e 100644 --- a/projects/mintswap/index.js +++ b/projects/mintswap/index.js @@ -1,27 +1,7 @@ -const { addFundsInMasterChef } = require("../helper/masterchef"); +const { masterchefExports, } = require('../helper/unknownTokens') -const masterChefContract = "0xAdD22604caf79139450e9fb4851394fFCE1692Be"; - -const avaxTvl = async (chainBlocks) => { - const balances = {}; - - const transformAddress = addr => 'avax:'+addr - await addFundsInMasterChef( - balances, - masterChefContract, - chainBlocks.avax, - "avax", - transformAddress, - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - avax: { - tvl: avaxTvl, - }, - methodology: - "We count liquidity on the Farms and Pools through MasterChef Contract", -}; +module.exports = masterchefExports({ + chain: 'avax', + masterchef: '0xAdD22604caf79139450e9fb4851394fFCE1692Be', + nativeToken: '0x7bf4ca9aec25adaaf7278eedbe959d81893e314f' +}) \ No newline at end of file diff --git a/projects/mito/index.js b/projects/mito/index.js index 4468e98b092..ec38c199c4b 100644 --- a/projects/mito/index.js +++ b/projects/mito/index.js @@ -7,7 +7,7 @@ async function getVaultBalances(vaultAddress, api) { return subaccounts.map(i => api.add(i.denom, +i.deposit.availableBalance)) } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const MASTER_VAULT_ADDRESS = 'inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3'; await getVaultBalances(MASTER_VAULT_ADDRESS, api); } diff --git a/projects/mobiusfinance/index.js b/projects/mobiusfinance/index.js index a4ac584e929..0d510a2bc52 100644 --- a/projects/mobiusfinance/index.js +++ b/projects/mobiusfinance/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') -async function tvl(ts, _block, { polygon: block }, { api }) { +async function tvl(api) { return api.sumTokens({ owner: '0xa6D0e001A257296d5246edcEFE4Ac56BD558F6c6', tokens: [ @@ -15,7 +15,7 @@ async function tvl(ts, _block, { polygon: block }, { api }) { }) } -async function pool2(ts, _block, { polygon: block }, { api }) { +async function pool2(api) { const tokens = [ '0x162b21ba1a90dd9384c615192fa4053217d2a8db', '0x53add4c98b2787f690042771ca8e512a5793e9c9', diff --git a/projects/mochifi/index.js b/projects/mochifi/index.js index e791eaaa99e..22c7efb4897 100644 --- a/projects/mochifi/index.js +++ b/projects/mochifi/index.js @@ -2,7 +2,7 @@ const { getConfig } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs'); -async function ethereum(timestamp, block, chainBlocks, { api }) { +async function ethereum(api) { const { vaults } = await getConfig('mochifi','https://backend.mochi.fi/vaults?chainId=1'); const tokensAndOwners = vaults.map(i => ([i.tokenAddress, i.vaultAddress])) diff --git a/projects/mockingbird/index.js b/projects/mockingbird/index.js index 15266f23d2f..98ef0499057 100644 --- a/projects/mockingbird/index.js +++ b/projects/mockingbird/index.js @@ -1,26 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x7a7d80c024192E946C8931CcD325ECb2F42f8361" -const mockingbird = "0x0A737c40E42b164B30c0d3E5A19152CB89aA3EB9" -const mockingbirdFtmLP = "0x04701bEef0caf3B623B3965323Ce3caa4B2b2d7D"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [mockingbird, mockingbirdFtmLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, mockingbird, "fantom"), - pool2: pool2Exports(chef, [mockingbirdFtmLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x7a7d80c024192E946C8931CcD325ECb2F42f8361', + nativeToken: '0x0A737c40E42b164B30c0d3E5A19152CB89aA3EB9' +}) \ No newline at end of file diff --git a/projects/mode/index.js b/projects/mode/index.js index fdf01d91751..80f5ea29223 100644 --- a/projects/mode/index.js +++ b/projects/mode/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/mole/index.js b/projects/mole/index.js index 45b82448d72..2e7e443aa5c 100644 --- a/projects/mole/index.js +++ b/projects/mole/index.js @@ -15,9 +15,7 @@ async function aptosTvl() { return {...lyfTvl}; } -async function suiTvl() { - const { api } = arguments[3] - +async function suiTvl(api) { return calLyfTvlSui(api) } diff --git a/projects/moneymates/index.js b/projects/moneymates/index.js index 4ad667a8c42..a8971b261de 100644 --- a/projects/moneymates/index.js +++ b/projects/moneymates/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0xFD2023a463Ff177dA35e3C8128bf7E51a6e439DB"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/moneyrainfinance/index.js b/projects/moneyrainfinance/index.js index 57d78e92585..617e9e9b0d8 100644 --- a/projects/moneyrainfinance/index.js +++ b/projects/moneyrainfinance/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0xa1E756016D27E22eCA181D2dC1f6Bb462BbA199E" -const moneyrain = "0x9ce66Ef13D88cb1bC567E47459841483c5d9457C" -const moneyrainFtmLP = "0x18c7a09c1e0eb4045a1bdafd1fd78c016c4a2d84" -const moneyrainUsdcLP = "0x8e9d1a921f91c1f0d33c881d34de8d40a472be23"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [moneyrain, moneyrainFtmLP, moneyrainUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, moneyrain, "fantom"), - pool2: pool2Exports(chef, [moneyrainFtmLP, moneyrainUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xa1E756016D27E22eCA181D2dC1f6Bb462BbA199E', + nativeToken: '0x9ce66Ef13D88cb1bC567E47459841483c5d9457C' +}) \ No newline at end of file diff --git a/projects/monolith/index.js b/projects/monolith/index.js index fcdfea5ede4..5d284a50fa2 100644 --- a/projects/monolith/index.js +++ b/projects/monolith/index.js @@ -6,7 +6,7 @@ const solidAddress = "0x777172D858dC1599914a1C4c6c9fC48c99a60990"; const solidlyLensAddress = "0x7778D2091E3c97a259367c2cfc621cF839Bbbe2c"; const lpDepositor = "0x822ef744c568466d40ba28b0f9e4a4961837a46a"; -async function tvl(time, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const balances = {}; const addBalance = (tokenAddress, amount) => sdk.util.sumSingleBalance(balances, tokenAddress, amount, api.chain) diff --git a/projects/monopoly-finance/index.js b/projects/monopoly-finance/index.js index 820a5d2a1aa..5dcd0e1a015 100644 --- a/projects/monopoly-finance/index.js +++ b/projects/monopoly-finance/index.js @@ -5,7 +5,7 @@ const chef = "0x2900f5E68cD57b712806f60096514A4D3F772E9D"; const poly = "0x34772C4D12F288368Aa35AE7bc527A6B2b3e8906".toLowerCase(); const ACC_POLY_PRECISION = 1e18; -async function getTokensInMasterChef(time, ethBlock, chainBlocks, { api }) { +async function getTokensInMasterChef(api) { const poolInfo = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, @@ -24,7 +24,7 @@ async function getTokensInMasterChef(time, ethBlock, chainBlocks, { api }) { await unwrapLPsAuto({ api, lpAddresses: poolInfo.map((p) => p.lpToken), - block: chainBlocks["arbitrum"], + block: api.block, }); } module.exports = { diff --git a/projects/monroeprotocol/index.js b/projects/monroeprotocol/index.js index b238a1de9d3..c8db34e5d7f 100644 --- a/projects/monroeprotocol/index.js +++ b/projects/monroeprotocol/index.js @@ -7,7 +7,7 @@ const CONTROLLERS = { } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: CONTROLLERS[api.chain], diff --git a/projects/moonpot/index.js b/projects/moonpot/index.js index 4ad77c54f65..193ee443418 100644 --- a/projects/moonpot/index.js +++ b/projects/moonpot/index.js @@ -13,7 +13,7 @@ module.exports = { Object.keys(config).forEach(chain => { const endpoint = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/moremoney/index.js b/projects/moremoney/index.js index a0f4230bfb3..ab4e0c9296f 100644 --- a/projects/moremoney/index.js +++ b/projects/moremoney/index.js @@ -7,12 +7,12 @@ const useLegacyIsolatedStrategyMetadata = const useParsedStakingMetadata = require("./StakingMetadata").useParsedStakingMetadata; -async function tvl(_, _b, { avax: block }, { api }) { +async function tvl(api) { const [allStratMeta, legacyStratMeta] = await Promise.all([ - useStrategyMetadata(block), useLegacyIsolatedStrategyMetadata(block) + useStrategyMetadata(api.block), useLegacyIsolatedStrategyMetadata(api.block) ]) const stratMeta = [...allStratMeta, ...legacyStratMeta] - const stakeMeta = await useParsedStakingMetadata(block); + const stakeMeta = await useParsedStakingMetadata(api.block); const tvlsFarm = stakeMeta .reduce((tvl, row) => { diff --git a/projects/morpheusswap/index.js b/projects/morpheusswap/index.js index 1a5033e8e0d..07b5764cec5 100644 --- a/projects/morpheusswap/index.js +++ b/projects/morpheusswap/index.js @@ -8,8 +8,8 @@ const morph = "0x0789ff5ba37f72abc4d561d00648acadc897b32d" async function tvl(timestamp, block, chainBlocks, api) { const balances = {} - const transformAddress = addr=>`fantom:${addr}` //i => `fantom:${i}`; - if(chainBlocks.fantom<21182441){ // Factory deployment block + 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', chain: 'fantom', useDefaultCoreAssets: true }) @@ -22,10 +22,10 @@ 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") + 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/morpho-aaveV3/index.js b/projects/morpho-aaveV3/index.js index 5e4efce49d7..808777c6ed3 100644 --- a/projects/morpho-aaveV3/index.js +++ b/projects/morpho-aaveV3/index.js @@ -44,7 +44,7 @@ const getMetrics = async (api, borrowed) => { }; const ethereum = (borrowed) => { - return async (timestamp, block, _, { api }) => { + return async (api) => { return getMetrics(api, borrowed); }; }; diff --git a/projects/morpho-blue/index.js b/projects/morpho-blue/index.js index 50332ba7005..c141c640b78 100644 --- a/projects/morpho-blue/index.js +++ b/projects/morpho-blue/index.js @@ -13,12 +13,12 @@ const config = { Object.keys(config).forEach(chain => { const { morphoBlue, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const marketIds = await getMarkets(api) const tokens = (await api.multiCall({ target: morphoBlue, calls: marketIds, abi: abi.morphoBlueFunctions.idToMarketParams })).map(i => [i.collateralToken, i.loanToken]).flat() return api.sumTokens({ owner: morphoBlue, tokens }) }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const marketIds = await getMarkets(api) const marketInfo = await api.multiCall({ target: morphoBlue, calls: marketIds, abi: abi.morphoBlueFunctions.idToMarketParams }) const marketData = await api.multiCall({ target: morphoBlue, calls: marketIds, abi: abi.morphoBlueFunctions.market }) diff --git a/projects/mountain-protocol/index.js b/projects/mountain-protocol/index.js index c6e4bfb00b3..316b0b4f8fe 100644 --- a/projects/mountain-protocol/index.js +++ b/projects/mountain-protocol/index.js @@ -1,7 +1,7 @@ const sdk = require("@defillama/sdk"); const MOUNTAIN_PROTOCOL_CONTRACT = "0x59d9356e565ab3a36dd77763fc0d87feaf85508c"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const totalSupply = await api.call({ abi: "erc20:totalSupply", target: MOUNTAIN_PROTOCOL_CONTRACT, diff --git a/projects/mozaic/index.js b/projects/mozaic/index.js index 57b76e86100..d46b1e6e47f 100644 --- a/projects/mozaic/index.js +++ b/projects/mozaic/index.js @@ -7,7 +7,7 @@ const vaults = { kava: "0x5712ab97A299a8A4544BCc728B7f3E9663965443", } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { 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 }) diff --git a/projects/mugen-fi/index.js b/projects/mugen-fi/index.js index 420e7c22e47..2e227ba4ed5 100644 --- a/projects/mugen-fi/index.js +++ b/projects/mugen-fi/index.js @@ -1,6 +1,6 @@ const { staking } = require('../helper/staking') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const reserveBalance = await api.call({ abi: 'uint256:reserveBalance', target: '0xf7be8476ae27d27ebc236e33020150b23a86f3dd'}) return { tether: reserveBalance / 1e18 diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index 1a1c59cd0c6..dcceb94eb38 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -16,12 +16,12 @@ async function getTvl(api, farmAddress) { return await sumTokens2({ api, resolveLP: true }); } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { await getTvl(api, MUTO_FARM); return await getTvl(api, MUTO_MULTI_FARM); } -async function staking(_, _1, _2, { api }) { +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) diff --git a/projects/multibit/index.js b/projects/multibit/index.js index 3b95d6f907a..a5b461cea9f 100644 --- a/projects/multibit/index.js +++ b/projects/multibit/index.js @@ -28,7 +28,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { stakingPool, tokens = [ADDRESSES.null] } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const data = await getConfig('multibit', BRIDGE_TOKENS) const key = chain === 'ethereum' ? 'eth': chain const owner = data.find(v => v.chain === key)?.real?.contract @@ -38,7 +38,7 @@ Object.keys(config).forEach(chain => { } if (stakingPool) { - module.exports[chain].staking = async (_, _b, _cb, { api, }) => { + 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/mushrooms.js b/projects/mushrooms.js index 0021f5c7199..40a843c5cff 100644 --- a/projects/mushrooms.js +++ b/projects/mushrooms.js @@ -75,7 +75,7 @@ module.exports = { Object.keys(config).forEach((chain) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const vaults = config[chain].vaults return api.erc4626Sum({ calls: vaults, permitFailure: true, }) } diff --git a/projects/muuu/tvl.js b/projects/muuu/tvl.js index 5a6d619f128..a14e776707d 100644 --- a/projects/muuu/tvl.js +++ b/projects/muuu/tvl.js @@ -10,7 +10,7 @@ const MULAY_ADDRESS = "0xDDF2ad1d9bFA208228166311FC22e76Ea7a4C44D"; const MUU_TOKEN = "0xc5BcAC31cf55806646017395AD119aF2441Aee37"; const MUUU_REWARDS_ADDRESS = "0xB2ae0CF4819f2BE89574D3dc46D481cf80C7a255"; -async function tvl(timestamp, block, chainBlocks, { api }) { +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) diff --git a/projects/mymine/index.js b/projects/mymine/index.js index 0e917d0aa71..d9662e8a675 100644 --- a/projects/mymine/index.js +++ b/projects/mymine/index.js @@ -1,26 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x295cf2cC1e7236753EE6b280C066FcE5B22601be" -const mymine = "0x3d3121D2aeDff5e11E390027331CB544Bc3D2C59" -const mymineFtmLP = "0xeBe2b687ABAc62b2f0f2414b8345d907FBfFA83a"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [mymine, mymineFtmLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, mymine, "fantom"), - pool2: pool2Exports(chef, [mymineFtmLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x295cf2cC1e7236753EE6b280C066FcE5B22601be', + nativeToken: '0x3d3121D2aeDff5e11E390027331CB544Bc3D2C59' +}) \ No newline at end of file diff --git a/projects/myso-v2/index.js b/projects/myso-v2/index.js index 4d1cf3d6a39..6b7bd72a44c 100644 --- a/projects/myso-v2/index.js +++ b/projects/myso-v2/index.js @@ -43,7 +43,7 @@ const getContracts = async (chainId) => { return data.contracts; }; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const { fromBlock } = config[api.chain]; let contracts; diff --git a/projects/myso/index.js b/projects/myso/index.js index 539d9ded5cb..7c9fa99641d 100644 --- a/projects/myso/index.js +++ b/projects/myso/index.js @@ -47,7 +47,8 @@ const getPools = async (chainId) => { return data.pools.map((pool) => pool.poolAddress); }; -async function tvl(_, _b, _cb, { api, chain }) { +async function tvl(api) { + const { chain } = api const chainId = mapChainToChainId[chain]; let pools try { diff --git a/projects/myswap-cl/index.js b/projects/myswap-cl/index.js index a5ca7b27180..67bb5407f45 100644 --- a/projects/myswap-cl/index.js +++ b/projects/myswap-cl/index.js @@ -4,7 +4,7 @@ const { getConfig } = require('../helper/cache') const factory = // myswap cl version amm contract "0x1114c7103e12c2b2ecbd3a2472ba9c48ddcbf702b1c242dd570057e26212111"; -async function tvl(_, _1, _2, { api }) { +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"); diff --git a/projects/myx-finance/index.js b/projects/myx-finance/index.js index 6b2b1cc5f29..5033e2c8a3f 100644 --- a/projects/myx-finance/index.js +++ b/projects/myx-finance/index.js @@ -10,7 +10,7 @@ Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl }; }); -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { vault, fromBlock } = config[api.chain]; const logs = await getLogs({ api, diff --git a/projects/native/index.js b/projects/native/index.js index 4cf84a80a5a..64be5061940 100644 --- a/projects/native/index.js +++ b/projects/native/index.js @@ -19,7 +19,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/navi/index.js b/projects/navi/index.js index b65926f3690..4c35743ae7d 100644 --- a/projects/navi/index.js +++ b/projects/navi/index.js @@ -9,8 +9,7 @@ const decimalShift = { const storageId = "0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe" -async function borrow() { - const { api } = arguments[3] +async function borrow(api) { const storageObject = await sui.getObject(storageId); const reservesId = storageObject.fields.reserves.fields.id.id @@ -24,8 +23,7 @@ async function borrow() { } -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { const storageObject = await sui.getObject(storageId); const reservesId = storageObject.fields.reserves.fields.id.id diff --git a/projects/neptune-finance/index.js b/projects/neptune-finance/index.js index fea8462691a..9dc972d37d3 100644 --- a/projects/neptune-finance/index.js +++ b/projects/neptune-finance/index.js @@ -2,11 +2,11 @@ const { queryContract, getToken, sumTokens } = require('../helper/chain/cosmos') const MARKET_ADDR = 'inj1nc7gjkf2mhp34a6gquhurg8qahnw5kxs5u3s4u'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { return sumTokens({ chain: api.chain, owner: MARKET_ADDR}) } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { // query market-state const { markets, } = await queryContract({ chain: api.chain, contract: MARKET_ADDR, data: { get_state: {} } }) diff --git a/projects/neptune-mutual/index.js b/projects/neptune-mutual/index.js index 72aa286f2e9..87fdb23f5b2 100644 --- a/projects/neptune-mutual/index.js +++ b/projects/neptune-mutual/index.js @@ -17,7 +17,8 @@ const fromBlocks = { bsc: 29123165, }; -async function tvl(_, block, _1, { api, chain }) { +async function tvl(api) { + const { chain } = api const logs = await getLogs({ api, target: vaultFactories[chain], // vault factory diff --git a/projects/nervenetworkbridge/index.js b/projects/nervenetworkbridge/index.js index 52f3e0657be..dbc19fa41f1 100644 --- a/projects/nervenetworkbridge/index.js +++ b/projects/nervenetworkbridge/index.js @@ -53,7 +53,7 @@ function getChain(chain) { return chainMapping[chain] ?? chain } -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { let conf = await getTokensConf(); const bridgeContract = getBridgeContract[api.chain]; @@ -62,8 +62,7 @@ async function tvl(_, _b, _cb, { api }) { return sumTokens2({ api, tokens, owners }) } -async function tronTvl() { - const { api } = arguments[3] +async function tronTvl(api) { let conf = await getTokensConf(); const tokens = conf['tron']; const tokenKeys = Object.keys(conf['tron']) diff --git a/projects/neuron/index.js b/projects/neuron/index.js index fc1e66d05f6..36043124304 100644 --- a/projects/neuron/index.js +++ b/projects/neuron/index.js @@ -18,7 +18,7 @@ const outpostAddresses = { }; function chainTvl(chain) { - return async (timestamp, ethBlock, {[chain]: block}, { api }) => { + 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; diff --git a/projects/neutra-finance/index.js b/projects/neutra-finance/index.js index e97a103fa8a..3a4823f1622 100644 --- a/projects/neutra-finance/index.js +++ b/projects/neutra-finance/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const nGlpVaults = "0x6Bfa4F1DfAfeb9c37E4E8d436E1d0C5973E47e25"; const nUSDCVault = "0x2a958665bC9A1680135241133569C7014230Cb21"; diff --git a/projects/neutrino/index.js b/projects/neutrino/index.js index dc6a34ef7db..83de0a2ba6a 100644 --- a/projects/neutrino/index.js +++ b/projects/neutrino/index.js @@ -5,6 +5,6 @@ module.exports = { waves: { tvl } } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens({ owners: ['3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo',], includeWaves: true, api, blacklistedTokens: ['DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', '6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'] }) } \ No newline at end of file diff --git a/projects/nexus/index.js b/projects/nexus/index.js index 739a3c78e65..19945adcaef 100644 --- a/projects/nexus/index.js +++ b/projects/nexus/index.js @@ -8,7 +8,7 @@ const yieldPools = [ ] const getAssetsABI = "function getAssets() view returns (tuple(address assetAddress, bool isCoverAsset, bool isAbandoned)[])" -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const assets = await api.multiCall({ abi: getAssetsABI, calls: pools}) const ownerTokens = assets.map((v, i) => [v.map(i => i.assetAddress), pools[i]]) const assets2 = await api.multiCall({ abi: 'address[]:getTrackedAssets', calls: yieldPools }) diff --git a/projects/nft20.js b/projects/nft20.js index dcf7529025c..600ee784f5f 100644 --- a/projects/nft20.js +++ b/projects/nft20.js @@ -117,7 +117,7 @@ const MUSE = "0xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81"; const stkMUSE = "0x9cfc1d1a45f79246e8e074cfdfc3f4aacdde8d9a"; const MUSE_ETH_univ2 = '0x20d2c17d1928ef4290bf17f922a10eaa2770bf43' const MUSE_ETH_univ2_staking = '0x193b775af4bf9e11656ca48724a710359446bf52' -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/nftx/index.js b/projects/nftx/index.js index 552a08d5a17..c1513efb18c 100644 --- a/projects/nftx/index.js +++ b/projects/nftx/index.js @@ -17,7 +17,7 @@ const config = { } function getTvl(chain) { const { weth, graphUrl } = config[chain] - return async (timestamp, _, cb, { api }) => { + return async (api) => { const { vaults } = await blockQuery(graphUrl, graphQuery, { api }) const block = api.block const LPs = new Set(vaults.map(v => v.lpStakingPool.stakingToken.id)) diff --git a/projects/nightmare/index.js b/projects/nightmare/index.js index 1462d033034..c3d3efe515f 100644 --- a/projects/nightmare/index.js +++ b/projects/nightmare/index.js @@ -1,30 +1,10 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') - - -const fearchef = "0xcF9aeC9E5A7307285252B0F155E1Dc614704f4dD" -const fear = "0x465d67204A8F7c02cd35288Cc7712526359FB0a9" -const fearFtmLP = "0x2fd5ae787987c20545b18998cd2c6b6d87953ed3" -const fearUsdcLP = "0x69e22277cc54581410bd425058b272808a505f11"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, fearchef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [fear, fearFtmLP, fearUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - hallmarks: [ - [1646179200, "Rug Pull"] - ], - fantom: { - tvl, - staking: staking(fearchef, fear, "fantom"), - pool2: pool2Exports(fearchef, [fearFtmLP, fearUsdcLP], "fantom"), - }, - -} \ No newline at end of file +const { masterchefExports, } = require('../helper/unknownTokens') + +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xcF9aeC9E5A7307285252B0F155E1Dc614704f4dD', + nativeToken: '0x465d67204A8F7c02cd35288Cc7712526359FB0a9' +}) +module.exports.hallmarks = [ + [1646179200, "Rug Pull"] +] \ No newline at end of file diff --git a/projects/ninjaroll/index.js b/projects/ninjaroll/index.js index bc3593b1c93..b101f211cb2 100644 --- a/projects/ninjaroll/index.js +++ b/projects/ninjaroll/index.js @@ -1,6 +1,6 @@ const { queryContract } = require('../helper/chain/cosmos') -async function staking(_, _2, _1, { api }) { +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, }) } diff --git a/projects/ninjavault/index.js b/projects/ninjavault/index.js index 8ec2f72c06b..5e0d5794c5c 100644 --- a/projects/ninjavault/index.js +++ b/projects/ninjavault/index.js @@ -1,7 +1,7 @@ const { queryContract } = require('../helper/chain/cosmos') const sdk = require('@defillama/sdk') -async function staking(_, _2, _1, { api }) { +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); diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index a13117a9887..6fd01b0b8d4 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { // nodeDAO liquidStaking neth tvl const nodeDaoLiquidStaking = '0x8103151E2377e78C04a3d2564e20542680ed3096' const nethTVL = await api.call({ abi: 'uint256:getTotalEthValue', target: nodeDaoLiquidStaking }) diff --git a/projects/nostra-alpha/index.js b/projects/nostra-alpha/index.js index 29f411ebddc..ffee6409258 100644 --- a/projects/nostra-alpha/index.js +++ b/projects/nostra-alpha/index.js @@ -42,7 +42,7 @@ function* chunks(arr, n) { } } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supplied = await multiCall({ calls: supplyTokens, abi: assetTokenAbi.totalSupply, @@ -62,7 +62,7 @@ async function tvl(_, _1, _2, { api }) { api.addTokens(underlyings, data); } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { const borrowed = await multiCall({ calls: debtTokens, abi: assetTokenAbi.totalSupply, diff --git a/projects/nostra-staked-strk/index.js b/projects/nostra-staked-strk/index.js index 36f88b4f1db..1a67e82ee75 100644 --- a/projects/nostra-staked-strk/index.js +++ b/projects/nostra-staked-strk/index.js @@ -7,7 +7,7 @@ const STAKED_STRK = const STRK = ADDRESSES.starknet.STRK; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const totalAssets = await call({ target: STAKED_STRK, abi: stakedStrkAbi.total_assets, diff --git a/projects/nostra/index.js b/projects/nostra/index.js index 0144e1a17a4..79edc24c149 100644 --- a/projects/nostra/index.js +++ b/projects/nostra/index.js @@ -66,7 +66,7 @@ function* chunks(arr, n) { } } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supplied = await multiCall({ calls: supplyTokens, abi: assetTokenAbi.totalSupply, @@ -86,7 +86,7 @@ async function tvl(_, _1, _2, { api }) { api.addTokens(underlyings, data); } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { const borrowed = await multiCall({ calls: debtTokens, abi: assetTokenAbi.totalSupply, diff --git a/projects/notional-v3/index.js b/projects/notional-v3/index.js index b6a89a26fc3..44bd0856005 100644 --- a/projects/notional-v3/index.js +++ b/projects/notional-v3/index.js @@ -17,7 +17,7 @@ async function addVaultTvl(api) { data.forEach(i => i && api.add(i.pool, i.totalLPTokens)) } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { let oracles = await api.fetchList({ lengthAbi: abi.getMaxCurrencyId, itemAbi: abi.getPrimeCashHoldingsOracle, target: contract, 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 })) }) diff --git a/projects/notional/index.js b/projects/notional/index.js index fbff298d43e..9bdcd283002 100644 --- a/projects/notional/index.js +++ b/projects/notional/index.js @@ -3,7 +3,7 @@ const abi = require('./abi'); const v2Contract = "0x1344A36A1B56144C3Bc62E7757377D288fDE0369" -async function tvl(timestamp, block, _, { api }) { +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, }) diff --git a/projects/nucleon/index.js b/projects/nucleon/index.js index 2c2f51f4a5e..0ece2b9187d 100644 --- a/projects/nucleon/index.js +++ b/projects/nucleon/index.js @@ -12,7 +12,7 @@ const WCFX = ADDRESSES.conflux.WCFX; module.exports = { conflux: { - tvl: async (_, _1, _2, { api }) => { + 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 diff --git a/projects/numoen/index.js b/projects/numoen/index.js index 363c5bb2510..a55798b4245 100644 --- a/projects/numoen/index.js +++ b/projects/numoen/index.js @@ -14,7 +14,7 @@ const blocks = { polygon: 40648569, } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const ownerTokens = [] const logs = await getLogs({ diff --git a/projects/nutbox/index.js b/projects/nutbox/index.js index 5625e13feb4..be9b3a14955 100644 --- a/projects/nutbox/index.js +++ b/projects/nutbox/index.js @@ -14,7 +14,7 @@ Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { tvl: () => ({}), - staking: async (_, _b, _cb, { api, }) => { + staking: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/oakfarm.js b/projects/oakfarm.js index 249e7d04cf7..0644d43ab41 100644 --- a/projects/oakfarm.js +++ b/projects/oakfarm.js @@ -33,13 +33,13 @@ module.exports = {}; Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }, { api }) => { + 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, }) + await unwrapLPsAuto({ balances, chain, block: api.block, }) return balances } } diff --git a/projects/oceanos/index.js b/projects/oceanos/index.js index 26860cf7558..42fecd2637a 100644 --- a/projects/oceanos/index.js +++ b/projects/oceanos/index.js @@ -4,7 +4,7 @@ const poolAddresses = [ '0x836280846adc84f28918Cec30A7dCe791D17b72C', // wsteth ] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokens = await api.multiCall({ abi: 'address:collateralAsset', calls: poolAddresses }) return api.sumTokens({ tokensAndOwners2: [tokens, poolAddresses] }) } diff --git a/projects/ociswap/index.js b/projects/ociswap/index.js index 839977168ec..4982012ba4b 100644 --- a/projects/ociswap/index.js +++ b/projects/ociswap/index.js @@ -5,7 +5,7 @@ const sdk = require('@defillama/sdk') module.exports = { radixdlt: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const pools = await getConfig('ociswap', null, { fetcher: async () => { let items = [] diff --git a/projects/octolsd/index.js b/projects/octolsd/index.js index 6f45d7d4892..a8e50f8be2d 100644 --- a/projects/octolsd/index.js +++ b/projects/octolsd/index.js @@ -6,7 +6,7 @@ const POOL_CONTRACT = "0x7f885c6c9f847a764d247056ed4d13dc72cef7d0"; const OCTO_ETH_LP_ADDRESS = "0xFe4cd8B965353de5fac7c0Cb041B75f5e238B413"; const OCTO_ADDRESS = "0x52dec19feef469d7a683963b7380ecd0b1aff9c7"; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: POOL_CONTRACT, diff --git a/projects/okc-liquid-staking/index.js b/projects/okc-liquid-staking/index.js index 7c98efb1654..ce0a137ebc8 100644 --- a/projects/okc-liquid-staking/index.js +++ b/projects/okc-liquid-staking/index.js @@ -2,7 +2,7 @@ const STContract = '0x97B05e6C5026D5480c4B6576A8699866eb58003b'; module.exports = { okexchain: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { return { 'oec-token': (await api.call({ target: STContract, abi: "uint256:getTotalPooledOKT" })) / 1e18 } } } diff --git a/projects/olivecash/index.js b/projects/olivecash/index.js index 1fb3ca3b148..d52627c6cfe 100644 --- a/projects/olivecash/index.js +++ b/projects/olivecash/index.js @@ -14,7 +14,7 @@ module.exports = { Object.keys(CHEFS).forEach(chain => { const chef = CHEFS[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const lp = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, diff --git a/projects/olympus/index.js b/projects/olympus/index.js index 59220a6865e..44ffdbd0627 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -88,7 +88,7 @@ function sumBalancesByTokenAddress(arr) { * #2. Call tokenRecords with block num from prev query * #3. Sum values returned ***/ -async function tvl(timestamp, block, _, { api }, isOwnTokensMode = false) { +async function tvl(api, isOwnTokensMode = false) { const subgraphUrls = { ethereum: `https://gateway-arbitrum.network.thegraph.com/api/${getEnv("OLYMPUS_GRAPH_API_KEY")}/subgraphs/id/7jeChfyUTWRyp2JxPGuuzxvGt3fDKMkC9rLjm7sfLcNp`, arbitrum: @@ -162,8 +162,8 @@ const subgraphUrls = { return sumTokens2({ api, resolveLP: true, }) } -async function ownTokens(timestamp, block, _, { api }) { - return tvl(timestamp, block, _, { api }, true); +async function ownTokens(api) { + return tvl(api, true); } module.exports = { diff --git a/projects/omax-swap/index.js b/projects/omax-swap/index.js index 92713a299e8..07bad95173e 100644 --- a/projects/omax-swap/index.js +++ b/projects/omax-swap/index.js @@ -6,6 +6,6 @@ module.exports.omax.staking = staking const ADDRESSES = require("../helper/coreAssets.json"); const stakingContractAddress = '0x3A2DcDc705031eDBD94254ef7CEFB93D8066cC8D' -async function staking(_, _1, _2, { api }) { +async function staking(api) { return api.sumTokens({ owner: stakingContractAddress, tokens: [ADDRESSES.null]}); } \ No newline at end of file diff --git a/projects/omm/index.js b/projects/omm/index.js index 288147ac450..31b88539927 100644 --- a/projects/omm/index.js +++ b/projects/omm/index.js @@ -2,7 +2,7 @@ const { call, toInt } = require("../helper/chain/icx"); const ommLendingPoolDataProviderContract = 'cx5f9a6ca11b2b761a469965cedab40ada9e503cb5' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { let data = await call(ommLendingPoolDataProviderContract, 'getAllReserveData', {}) let total = 0 @@ -13,7 +13,7 @@ async function tvl(_, _b, _cb, { api, }) { return { 'coingecko:tether': total } } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { let data = await call(ommLendingPoolDataProviderContract, 'getAllReserveData', {}) let total = 0 diff --git a/projects/omni/index.js b/projects/omni/index.js index a62748d5467..9e32e09a9f2 100644 --- a/projects/omni/index.js +++ b/projects/omni/index.js @@ -29,7 +29,7 @@ const config = { Object.keys(config).forEach(chain => { const tokens = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) api.add(tokens, supplies) return sumTokens2({ api }) diff --git a/projects/omnibtc/index.js b/projects/omnibtc/index.js index cea1b734c1f..b131a0376f9 100644 --- a/projects/omnibtc/index.js +++ b/projects/omnibtc/index.js @@ -57,14 +57,12 @@ function calculateAndAdd(objectsList, type, indexName, api) { }); } -async function suiTvl() { - const { api } = arguments[3]; +async function suiTvl(api) { const objectsList = await fetchDataBasedOnPoolId(); calculateAndAdd(objectsList, "tvl", "current_liquidity_index", api); } -async function suiBorrow() { - const { api } = arguments[3]; +async function suiBorrow(api) { const objectsList = await fetchDataBasedOnPoolId(); calculateAndAdd(objectsList, "borrow", "current_borrow_index", api); } diff --git a/projects/omnipool/index.js b/projects/omnipool/index.js index 554f89b101d..bb0a1b76073 100644 --- a/projects/omnipool/index.js +++ b/projects/omnipool/index.js @@ -1,4 +1,4 @@ -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const pooledZeta = await api.call({ target: "0x82bbc3f521E5313cf5e8401797d7BaB6c030C908", abi: "uint256:getTotalPooledZeta" }) api.addGasToken(pooledZeta) } diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js index e6e6cd08a9f..2820739e11a 100644 --- a/projects/ondofinance/index.js +++ b/projects/ondofinance/index.js @@ -37,7 +37,7 @@ Object.keys(config).forEach((chain) => { const fundAddresses = Object.values(fundsMap); module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { let supplies; if (chain === 'solana') { supplies = await Promise.all(fundAddresses.map(getTokenSupply)) diff --git a/projects/one-ring-tools/index.js b/projects/one-ring-tools/index.js index bfe3dc5016e..d0af2be6465 100644 --- a/projects/one-ring-tools/index.js +++ b/projects/one-ring-tools/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const STAKING_LP_USDC_DOLA = "0x33ff52D1c4b6973CD5AF41ad53Dd92D99D31D3c3"; const LP_USDC_DOLA = "0xB720FBC32d60BB6dcc955Be86b98D8fD3c4bA645"; -async function tvl(_, _1, _2, { api }) { +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, }) diff --git a/projects/oneswap/index.js b/projects/oneswap/index.js index f69fc874731..163630b8aaf 100644 --- a/projects/oneswap/index.js +++ b/projects/oneswap/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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]]) diff --git a/projects/onx.js b/projects/onx.js index aef62aa6804..c29a45c357f 100644 --- a/projects/onx.js +++ b/projects/onx.js @@ -22,7 +22,7 @@ const config = { fantom: { vaults: fVaults }, } -async function tvl(_, _1_, _2_, { api }) { +async function tvl(api) { const { vaults } = config[api.chain] const pools = vaults.map(i => i[1]) const tokens = vaults.map(i => i[0]) diff --git a/projects/ooki/index.js b/projects/ooki/index.js index 58f5bd90a52..c3e340cabf7 100644 --- a/projects/ooki/index.js +++ b/projects/ooki/index.js @@ -51,8 +51,8 @@ let stakingContracts = [ Object.keys(contracts).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => getBalances(api, false), - borrowed: async (_, _b, _cb, { api, }) => getBalances(api, true), + tvl: async (api) => getBalances(api, false), + borrowed: async (api) => getBalances(api, true), } }) module.exports.ethereum.staking = stakings(stakingContracts, [ooki, bzrx]) diff --git a/projects/openbook/index.js b/projects/openbook/index.js index 9db8cf748e1..90ec3cba67d 100644 --- a/projects/openbook/index.js +++ b/projects/openbook/index.js @@ -3,7 +3,7 @@ const sdk = require('@defillama/sdk') const { PublicKey } = require("@solana/web3.js") const blacklistedTokens = new Set(blacklistedTokens_default) -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const connection = getConnection() const programPublicKey = new PublicKey('srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX') diff --git a/projects/openeden-tbill/index.js b/projects/openeden-tbill/index.js index 7c50177ec8e..f83032ffd1b 100644 --- a/projects/openeden-tbill/index.js +++ b/projects/openeden-tbill/index.js @@ -1,4 +1,4 @@ -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const contract = '0xdd50C053C096CB04A3e3362E2b622529EC5f2e8a' const [bal, token] = await api.batchCall([ { abi: 'uint256:totalAssets', target: contract }, diff --git a/projects/openleverage/index.js b/projects/openleverage/index.js index 725d4446165..00573344694 100644 --- a/projects/openleverage/index.js +++ b/projects/openleverage/index.js @@ -17,7 +17,7 @@ Object.keys(config).forEach(chain => { const openLevAddr = config[chain] const borrowAddr = borrowConfig[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 = [ diff --git a/projects/opensky/index.js b/projects/opensky/index.js index 1bc3cc2f21d..0ed16f567d3 100644 --- a/projects/opensky/index.js +++ b/projects/opensky/index.js @@ -9,7 +9,7 @@ const abi = { getTotalBorrowBalance: "function getTotalBorrowBalance(uint256 reserveId) view returns (uint256)", } -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const balances = {}; const factory = '0xdae29a91f663faf7657594f908e183e3b826d437' const logs = await getLogs({ @@ -24,7 +24,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { return sumTokens2({ api, owner: '0x87d6dec027e167136b081f888960fe48bb10328a', resolveNFTs: true, balances, }) } -async function borrowed(timestamp, block, chainBlocks, { api }) { +async function borrowed(api) { const balances = {}; const factory = '0xdae29a91f663faf7657594f908e183e3b826d437' const logs = await getLogs({ diff --git a/projects/opium.js b/projects/opium.js index e046b0e4e0e..9e597e8202e 100644 --- a/projects/opium.js +++ b/projects/opium.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const { url } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const { tokens, contracts } = await getConfig('opium/' + api.chain, url) return sumTokens2({ api, tokens, owners: contracts }) } diff --git a/projects/optimism/index.js b/projects/optimism/index.js index dd83b2f2294..3054f883968 100644 --- a/projects/optimism/index.js +++ b/projects/optimism/index.js @@ -12,7 +12,7 @@ let output = {}; Object.keys(chains).map((chain) => { output[chain] = { - tvl: async (_, _b, _cb, { api }) => { + 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] diff --git a/projects/opulous/index.js b/projects/opulous/index.js index ce5667a8cfb..ccd5a438805 100644 --- a/projects/opulous/index.js +++ b/projects/opulous/index.js @@ -21,7 +21,7 @@ async function algorandStaking() { 'opulous': totalPoolAmount }; } -const arbitrumTVL = async (_, _b, _cb, { api }) => { +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 diff --git a/projects/opyn-convexity/index.js b/projects/opyn-convexity/index.js index d17957ca5e3..5ba3ab415b7 100644 --- a/projects/opyn-convexity/index.js +++ b/projects/opyn-convexity/index.js @@ -9,7 +9,7 @@ const factoriesAddresses = [ "0xcC5d905b9c2c8C9329Eb4e25dc086369D6C7777C" ] -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { let contracts = await Promise.all( factoriesAddresses.map(i => api.fetchList({ target: i, diff --git a/projects/opyn-gamma/gamma_ethereum.js b/projects/opyn-gamma/gamma_ethereum.js index 3deb85d4b5a..52b62ea06f9 100644 --- a/projects/opyn-gamma/gamma_ethereum.js +++ b/projects/opyn-gamma/gamma_ethereum.js @@ -9,10 +9,10 @@ function toAddress(str, skip = 0) { return `0x${str.slice(64 - 40 + 2 + skip * 64, 64 + 2 + skip * 64)}`.toLowerCase(); } -module.exports = async function ethereumTvl(timestamp, block, _1, { api }) { +module.exports = async function ethereumTvl(api) { let balances = {}; - if(block >= START_BLOCK) { + if(!api.block || api.block >= START_BLOCK) { const whitelistedCollaterals = await getLogs({ target: whitelist, topic: 'CollateralWhitelisted(address)', diff --git a/projects/opyn-squeeth/index.js b/projects/opyn-squeeth/index.js index c33c840b9d8..e8e6c03183f 100644 --- a/projects/opyn-squeeth/index.js +++ b/projects/opyn-squeeth/index.js @@ -11,10 +11,11 @@ const uniPool = '0x82c427adfdf2d245ec51d8046b41c4ee87f0d29c'; module.exports = { ethereum: { - tvl: async (timestamp, block, _, { api })=> { + tvl: async (api)=> { let balances = {}; + const { block } = api - if(block >= START_BLOCK) { + if(!block || block >= START_BLOCK) { return sumTokens2({ api, tokensAndOwners: [ [ETH, controller], diff --git a/projects/oraichain.js b/projects/oraichain.js index 9ed70c0bd98..0d83c222316 100644 --- a/projects/oraichain.js +++ b/projects/oraichain.js @@ -29,7 +29,7 @@ const stakingAddresses = { '0xdC398B05E6646764C0bF02ead1dE2ec192d64F7d' //USDT ], }; -async function tvl(_, _b, _cb, { api, }) { +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, }) diff --git a/projects/orange-finance/index.js b/projects/orange-finance/index.js index caca39fb403..a0942e3de48 100644 --- a/projects/orange-finance/index.js +++ b/projects/orange-finance/index.js @@ -5,7 +5,7 @@ const VAULTS = [ "0x1c99416c7243563ebEDCBEd91ec8532fF74B9a39", //UniswapV3 ETH-USDC.e Dynamic Hedge Vault ]; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const totalAssets = await api.multiCall({ abi: "uint256:totalAssets", calls: VAULTS }) totalAssets.forEach((i) => api.add(ADDRESSES.arbitrum.USDC, i)) diff --git a/projects/orbitbridge/index.js b/projects/orbitbridge/index.js index 343d87768d1..50faf89fadc 100644 --- a/projects/orbitbridge/index.js +++ b/projects/orbitbridge/index.js @@ -39,7 +39,7 @@ const farms = { let tokenData -async function tvl(timestamp, ethBlock, _1, { api }) { +async function tvl(api) { const chain = api.chain if (chain === 'meta') return {} // rpc issues with meta diff --git a/projects/orca-kujira/index.js b/projects/orca-kujira/index.js index 521c8a98bd6..c0f88b5710d 100644 --- a/projects/orca-kujira/index.js +++ b/projects/orca-kujira/index.js @@ -2,7 +2,7 @@ const { sumTokens } = require("../helper/chain/cosmos"); const { getConfig } = require("../helper/cache"); const { queryContract, queryV1Beta1 } = require("../helper/chain/cosmos"); -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const contracts = await getConfig( "kujira/contracts", "https://raw.githubusercontent.com/Team-Kujira/kujira.js/master/src/resources/contracts.json" diff --git a/projects/orchai-lending/index.js b/projects/orchai-lending/index.js index a197755fb15..f77bbd2709c 100644 --- a/projects/orchai-lending/index.js +++ b/projects/orchai-lending/index.js @@ -1,6 +1,6 @@ const { queryContract, } = require("../helper/chain/cosmos"); -async function oraiTVL(_, _1, _2, { api }) { +async function oraiTVL(api) { let tokensDelegated = await queryContract({ contract: 'orai1ez359uvv5p7l2ssgadzjk2pfuune9rrhu72ehwdsu4h2qhqf9jlsxw7e0f', chain: "orai", diff --git a/projects/osmosis.js b/projects/osmosis.js index 904b46a218b..02a8b5689c9 100644 --- a/projects/osmosis.js +++ b/projects/osmosis.js @@ -7,7 +7,7 @@ Object.values(ADDRESSES.ibc).forEach(i => coreAssets.add('ibc/' + i)) const chain = 'osmosis' -async function tvl(_, _b, _cb, { api, }) { +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 = [] diff --git a/projects/oswap/index.js b/projects/oswap/index.js index abe48cfb3f2..88ced76bea3 100644 --- a/projects/oswap/index.js +++ b/projects/oswap/index.js @@ -7,10 +7,10 @@ * @see https://v1.oswap.io/ * @see https://v1-stats.oswap.io/ */ -const {fetchBaseAABalances, fetchOswapExchangeRates, fetchOswapAssets, summingBaseAABalancesToTvl} = require('../helper/chain/obyte') +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(timestamp) { +async function tvl({ timestamp }) { const [exchangeRates, assetMetadata] = await Promise.all([ fetchOswapExchangeRates(), fetchOswapAssets() diff --git a/projects/ottopia/index.js b/projects/ottopia/index.js index bc1d2f11fff..b166a54b325 100644 --- a/projects/ottopia/index.js +++ b/projects/ottopia/index.js @@ -4,7 +4,7 @@ const { staking } = require("../helper/staking"); const CLAM = "0xC250e9987A032ACAC293d838726C511E6E1C029d"; const PearlBank = "0x845EB7730a8D37e8D190Fb8bb9c582038331B48a"; -async function tvl(timestamp, block, chainBlocks) { +async function tvl({timestamp}, block, chainBlocks) { let endpoint = "https://api.thegraph.com/subgraphs/name/otterclam/otterclam"; let graphQLClient = new GraphQLClient(endpoint); let query = gql` diff --git a/projects/overnight-usdPlus/index.js b/projects/overnight-usdPlus/index.js index 95751dfa118..b66fa08f56f 100644 --- a/projects/overnight-usdPlus/index.js +++ b/projects/overnight-usdPlus/index.js @@ -25,7 +25,7 @@ const abi = "uint256:totalNetAssets" Object.keys(m2m).forEach(chain => { const asset = assets[chain] module.exports[chain] = { - tvl: async (_, _b, cb, { api }) => { + tvl: async (api) => { const balances = await api.multiCall({ abi, calls: m2m[chain]}) api.add(asset, balances) } diff --git a/projects/oxygen/index.js b/projects/oxygen/index.js index e86bd412530..9b53ff39b7e 100644 --- a/projects/oxygen/index.js +++ b/projects/oxygen/index.js @@ -24,7 +24,7 @@ async function getTokenData() { return tokenData } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const data = await getTokenData() data.tokens.forEach(({ mint }, i) => { const token = mint.toBase58() @@ -35,7 +35,7 @@ async function tvl(_, _1, _2, { api }) { }) } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { const data = await getTokenData() data.tokens.forEach(({ mint }, i) => { const token = mint.toBase58() diff --git a/projects/pacman/index.js b/projects/pacman/index.js index 929caf096f9..6d2c762d539 100644 --- a/projects/pacman/index.js +++ b/projects/pacman/index.js @@ -18,7 +18,7 @@ const vaultsQuery = ` } `; -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const { vaults } = await graphQuery(subgraphUrl, vaultsQuery) vaults.forEach(({ baseToken: { id, decimals }, totalDebt, totalDeposit}) => { api.add(id, (totalDeposit - totalDebt) * ( 10 ** decimals)) diff --git a/projects/pacoca/index.js b/projects/pacoca/index.js index 4d9fd707c8b..bb553dbe988 100644 --- a/projects/pacoca/index.js +++ b/projects/pacoca/index.js @@ -1,12 +1,12 @@ const { sumUnknownTokens } = require('../helper/unknownTokens') -async function staking(_, _b, _cb, { api, }) { +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(_, _b, _cb, { api, }) { +async function tvl(api) { const v2Vaults = [ "0xD0CEe0BF1fC137777a8a53f4C99000B5A2269c31", "0xD0CEd4bbDdeC0e97fFE579e2f162aecB9383ac6D", diff --git a/projects/paladinfinance-dullahan/index.js b/projects/paladinfinance-dullahan/index.js index ccaed4a4f9d..8002d640968 100644 --- a/projects/paladinfinance-dullahan/index.js +++ b/projects/paladinfinance-dullahan/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json'); const DULLAHAN_VAULT = "0x167c606be99DBf5A8aF61E1983E5B309e8FA2Ae7"; -async function tvl(timestamp, block, _, { api },) { +async function tvl(api,) { api.add(ADDRESSES.ethereum.AAVE, await api.call({ target: DULLAHAN_VAULT, abi: 'uint256:totalAssets' })); } diff --git a/projects/paladinfinance-warlord/index.js b/projects/paladinfinance-warlord/index.js index e607d0dffee..e95d4898182 100644 --- a/projects/paladinfinance-warlord/index.js +++ b/projects/paladinfinance-warlord/index.js @@ -22,7 +22,7 @@ async function getLockers(api) { return lockers; } -async function ethTvl(timestamp, block, _, { api },) { +async function ethTvl(api,) { const balances = {}; const lockers = await getLockers(api); diff --git a/projects/pancake-swap-stableswap/index.js b/projects/pancake-swap-stableswap/index.js index 4311ddbcbf0..6b32638f1ac 100644 --- a/projects/pancake-swap-stableswap/index.js +++ b/projects/pancake-swap-stableswap/index.js @@ -16,7 +16,7 @@ const config = { Object.keys(config).forEach(chain => { const factories = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const configs = await Promise.all(factories.map(getTvlConfig)) return sumTokens2({ api, ownerTokens: configs.flat() }) diff --git a/projects/pancake-swap/index.js b/projects/pancake-swap/index.js index ef10ad11f6b..8edfacffc89 100644 --- a/projects/pancake-swap/index.js +++ b/projects/pancake-swap/index.js @@ -41,7 +41,7 @@ query get_tvl($block: Int) { } } `; -async function tvl(timestamp, ethBlock, chainBlocks) { +async function tvl({timestamp}, ethBlock, chainBlocks) { if (Math.abs(timestamp - Date.now() / 1000) < 3600) { const tvl = await request(graphEndpoint, currentQuery, {}, { "referer": "https://pancakeswap.finance/", @@ -116,7 +116,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, CAKE, pools = [] } = config[chain] - module.exports[chain].staking = async (_, _b, _cb, { api, }) => { + module.exports[chain].staking = async (api) => { const logs = await getLogs({ api, target: factory, eventAbi: 'event NewSmartChefContract (address indexed martChef)', onlyArgs: true, fromBlock, }) pools.push(...logs.map(log => log.martChef)) return api.sumTokens({ owners: pools, tokens: [CAKE] }) diff --git a/projects/pandachef/index.js b/projects/pandachef/index.js index 9e96c53aba7..1446d18b4e9 100644 --- a/projects/pandachef/index.js +++ b/projects/pandachef/index.js @@ -8,7 +8,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const masterChef = "0x9942cb4c6180820E6211183ab29831641F58577A"; const PNDA = "0x47DcC83a14aD53Ed1f13d3CaE8AA4115f07557C0"; -async function tvl(_, _b, _cb, { api, }) { +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}) diff --git a/projects/papr-wtf/index.js b/projects/papr-wtf/index.js index a0c01135b4b..d4b0125eea8 100644 --- a/projects/papr-wtf/index.js +++ b/projects/papr-wtf/index.js @@ -1,7 +1,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const controller = '0x3b29c19ff2fcea0ff98d0ef5b184354d74ea74b0' const logs = await getLogs({ diff --git a/projects/parallax/index.js b/projects/parallax/index.js index c51de0d2263..461b8d7c9de 100644 --- a/projects/parallax/index.js +++ b/projects/parallax/index.js @@ -9,7 +9,7 @@ const { getPriceMIM, getPriceAura, getPriceSushi } = require("./getPrice"); const prllxERC20 = require("./abis/prllxERC20.json"); const contracts = require("./contracts.json"); -async function ethTvl(time, _ethBlock, { ethereum: block }, { api }) { +async function ethTvl(api) { const strategyId = await api.call({ target: contracts.eth.parallaxAddress, params: contracts.eth.strategyAddress, @@ -44,7 +44,7 @@ async function ethTvl(time, _ethBlock, { ethereum: block }, { api }) { return balances; } -async function arbitrumTvl(time, _ethBlock, { arbitrum: block }, { api }) { +async function arbitrumTvl(api) { const balances = {}; const strategyId = await api.call({ @@ -149,7 +149,7 @@ async function arbitrumTvl(time, _ethBlock, { arbitrum: block }, { api }) { return balances; } -async function eraTvl(_, _b, _cb, { api }) { +async function eraTvl(api) { if (contracts.era.length > 0) { for (let i = 0; i < contracts.era.length; i++) { const strItem = contracts.era[i]; diff --git a/projects/paraspace-ape-staking-v2/index.js b/projects/paraspace-ape-staking-v2/index.js index de379996385..582bcd3c42f 100644 --- a/projects/paraspace-ape-staking-v2/index.js +++ b/projects/paraspace-ape-staking-v2/index.js @@ -2,7 +2,7 @@ const abi = require("../paraspace-v2/helper/abis"); const address = require("../paraspace-v2/helper/address"); const sdk = require("@defillama/sdk"); -async function tvl(_, _1, _cb, { api }) { +async function tvl(api) { const { UiPoolDataProvider, PoolAddressProvider, diff --git a/projects/paraspace-ape-staking/index.js b/projects/paraspace-ape-staking/index.js index ba6f75a4e15..94c4daa7346 100644 --- a/projects/paraspace-ape-staking/index.js +++ b/projects/paraspace-ape-staking/index.js @@ -2,7 +2,7 @@ const abi = require("../paraspace/helper/abis"); const address = require("../paraspace/helper/address"); const sdk = require("@defillama/sdk"); -async function tvl(_, _1, _cb, { api }) { +async function tvl(api) { const { UiPoolDataProvider, PoolAddressProvider, diff --git a/projects/paraspace-v2/helper/index.js b/projects/paraspace-v2/helper/index.js index 33777c7aa56..437e481b659 100644 --- a/projects/paraspace-v2/helper/index.js +++ b/projects/paraspace-v2/helper/index.js @@ -5,7 +5,7 @@ const { sumTokens2, } = require('../../helper/unwrapLPs') const abi = require("./abis"); const address = require("./address"); -async function tvl(_, _1, _cb, { api, }) { +async function tvl(api) { const { UiPoolDataProvider, PoolAddressProvider, UniV3Pos, P2PPairStaking, Bayc, Bakc, Mayc } = address[api.chain] let [reservesData] = await api.call({ target: UiPoolDataProvider, @@ -28,7 +28,7 @@ async function tvl(_, _1, _cb, { api, }) { return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: [ADDRESSES.linea.WETH_1] }) } -async function borrowed(_, _1, _cb, { api, }) { +async function borrowed(api) { const { UiPoolDataProvider, PoolAddressProvider, } = address[api.chain] let [reservesData] = await api.call({ target: UiPoolDataProvider, diff --git a/projects/paraspace/helper/index.js b/projects/paraspace/helper/index.js index e3993786ece..83b8c975bda 100644 --- a/projects/paraspace/helper/index.js +++ b/projects/paraspace/helper/index.js @@ -5,7 +5,7 @@ const { sumTokens2, } = require('../../helper/unwrapLPs') const abi = require("./abis"); const address = require("./address"); -async function tvl(_, _1, _cb, { api, }) { +async function tvl(api) { const { UiPoolDataProvider, PoolAddressProvider, UniV3Pos, P2PPairStaking, Bayc, Bakc, Mayc } = address[api.chain] let [reservesData] = await api.call({ target: UiPoolDataProvider, @@ -28,7 +28,7 @@ async function tvl(_, _1, _cb, { api, }) { return sumTokens2({ chain: api.chain, balances, tokensAndOwners: toa, blacklistedTokens: [ADDRESSES.linea.WETH_1, address.ethereum.cAPE] }) } -async function borrowed(_, _1, _cb, { api, }) { +async function borrowed(api) { const { UiPoolDataProvider, PoolAddressProvider, } = address[api.chain] let [reservesData] = await api.call({ target: UiPoolDataProvider, diff --git a/projects/paraswap.js b/projects/paraswap.js index e6d8b68a042..9e6fef8d8e7 100644 --- a/projects/paraswap.js +++ b/projects/paraswap.js @@ -5,7 +5,7 @@ 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(timestamp, ethBlock, chainBlocks, { api }) { +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]}) @@ -15,7 +15,7 @@ async function staking(timestamp, ethBlock, chainBlocks, { api }) { // pool2(safetyModuleBalStaking, balancerLP_20WETH_80PSP, "ethereum") // not working as it is a balancer and not a uniswap LP const balancerLP_20WETH_80PSP = '0xcb0e14e96f2cefa8550ad8e4aea344f211e5061d' const safetyModuleBalStaking = '0xc8dc2ec5f5e02be8b37a8444a1931f02374a17ab' -async function safetyModuleStaking(timestamp, ethBlock, chainBlocks, { api }) { +async function safetyModuleStaking(api) { return sumTokens2({ api, owners: [safetyModuleBalStaking, "0x593F39A4Ba26A9c8ed2128ac95D109E8e403C485"], tokens: [balancerLP_20WETH_80PSP]}) } diff --git a/projects/parrotegg/index.js b/projects/parrotegg/index.js index 1b6aca544a7..cff225cef00 100644 --- a/projects/parrotegg/index.js +++ b/projects/parrotegg/index.js @@ -1,67 +1,25 @@ -const { getChainTransform, transformBalances, } = require("../helper/portedTokens"); -const { addFundsInMasterChef } = require('../helper/masterchef'); -const STAKING_CONTRACT_ARBITRUM = "0x1cCf20F4eE3EFD291267c07268BEcbFDFd192311"; //MASTERCHEF ARBITRUM -const STAKING_CONTRACT_IOTEX = "0x83E7e97C4e92D56c0653f92d9b0c0B70288119b8"; // MASTERCHEF IOTEX -const STAKING_CONTRACT_POLYGON = "0x34E4cd20F3a4FdC5e42FdB295e5A118D4eEB0b79"; // MASTERCHEF POLYGON -const STAKING_CONTRACT_HARMONY = "0xFb15945E38a11450AF5E3FF20355D71Da72FfE8a"; // MASTERCHEF HARMONY - -const arbitrumTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - const transformAddress = i => `arbitrum:${i}` - - await addFundsInMasterChef( - balances, STAKING_CONTRACT_ARBITRUM, chainBlocks.arbitrum, 'arbitrum', transformAddress); - delete balances['0x78055daa07035aa5ebc3e5139c281ce6312e1b22']; //TOKEN ADDRESS - delete balances['0x78055dAA07035Aa5EBC3e5139C281Ce6312E1b22']; //TOKEN ADDRESS - - return balances; -}; - -const polygonTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - const transformAddress = i => `polygon:${i}`; - - await addFundsInMasterChef( - balances, STAKING_CONTRACT_POLYGON, chainBlocks.polygon, 'polygon', transformAddress); - delete balances['0xb63e54f16600b356f6d62ddd43fca5b43d7c66fd']; //TOKEN ADDRESS - delete balances['0xB63E54F16600b356f6d62dDd43Fca5b43d7c66fd']; //TOKEN ADDRESS - - return balances; -}; - -const harmonyTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - const transformAddress = await getChainTransform('harmony'); - - await addFundsInMasterChef( - balances, STAKING_CONTRACT_HARMONY, chainBlocks.harmony, 'harmony', transformAddress); - delete balances['0xC36769DFcDF05B2949F206FC34C8870707D33C89']; //TOKEN ADDRESS - delete balances['0xC36769DFcDF05B2949F206FC34C8870707D33C89']; //TOKEN ADDRESS - - return balances; -}; - -const iotexTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - await addFundsInMasterChef( - balances, STAKING_CONTRACT_IOTEX, chainBlocks.iotex, 'iotex', i => i); - - return transformBalances('iotex', balances); -}; - -module.exports={ - timetravel: true, - arbitrum: { - tvl: arbitrumTvl - }, - iotex: { - tvl: iotexTvl - }, - polygon: { - tvl: polygonTvl - }, - harmony: { - tvl: harmonyTvl - }, -} +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/particle-money/index.js b/projects/particle-money/index.js index 911dfa7c587..10603c46a39 100644 --- a/projects/particle-money/index.js +++ b/projects/particle-money/index.js @@ -17,7 +17,7 @@ const Contracts = { }, }; -async function calcBaseStakingTvl(timestamp, ethBlock, chainBlocks, { api }) { +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, }) diff --git a/projects/pawnfi-ape-staking/index.js b/projects/pawnfi-ape-staking/index.js index 715be14330a..39fb49fc4bf 100644 --- a/projects/pawnfi-ape-staking/index.js +++ b/projects/pawnfi-ape-staking/index.js @@ -4,7 +4,7 @@ const { ApeStakingPoolAddress } = require("../pawnfi/helper/config.js") module.exports = { ethereum: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const balances = {}; const stakedTotal = await api.multiCall({ diff --git a/projects/pawnfi-lending/index.js b/projects/pawnfi-lending/index.js index d9aad52fef6..13c0a6f0024 100644 --- a/projects/pawnfi-lending/index.js +++ b/projects/pawnfi-lending/index.js @@ -17,7 +17,7 @@ async function getPawnNFTTokens(api) { return logs.map(log => log.pieceToken) } -async function borrowed(timestamp, block, _, { api }) { +async function borrowed(api) { const blacklistedTokens = await getPawnNFTTokens(api) const items = await api.call({ abi: ABI.cTokenMetadataAll, target: Lending, params: [LendCToken], }) items.forEach((v) => { @@ -27,7 +27,7 @@ async function borrowed(timestamp, block, _, { api }) { } -async function tvl(timestamp, block, _, { api }) { +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 }) diff --git a/projects/pawnfi-nft/index.js b/projects/pawnfi-nft/index.js index 918744e83f7..5e7480ddd6e 100644 --- a/projects/pawnfi-nft/index.js +++ b/projects/pawnfi-nft/index.js @@ -3,7 +3,7 @@ const { getLogs } = require('../helper/cache/getLogs') module.exports = { ethereum: { - tvl: async function tvl(_, _b, _cb, { api, }) { + tvl: async function tvl(api) { const logs = await getLogs({ api, target: '0x82cac2725345ea95a200187ae9a5506e48fe1c5d', diff --git a/projects/paycashswap/index.js b/projects/paycashswap/index.js index a89e029a008..a2b53b4d262 100644 --- a/projects/paycashswap/index.js +++ b/projects/paycashswap/index.js @@ -12,14 +12,10 @@ async function eos() { return response.data.data.totalLiquidityChart.value24h; } -async function fetch() { - return await eos() -} - module.exports = { methodology: `PayCash Swap TVL is achieved by making a call to its PayCash Swap API.`, eos: { fetch: eos }, - fetch, + fetch: eos, } diff --git a/projects/peakdefi/index.js b/projects/peakdefi/index.js index 5562ba3b413..620d1692173 100644 --- a/projects/peakdefi/index.js +++ b/projects/peakdefi/index.js @@ -19,7 +19,7 @@ const stakingContracts = { bsc: '0xe9428B8acaA6b9d7C3314D093975c291Ec59A009', } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { return sumTokens2({ api, owners: Object.values(funds), tokens }) } module.exports = { diff --git a/projects/peapods-finance/index.js b/projects/peapods-finance/index.js index db397ec576b..8dac8176c19 100644 --- a/projects/peapods-finance/index.js +++ b/projects/peapods-finance/index.js @@ -46,7 +46,7 @@ module.exports = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => getTvl(api, false), - staking: async (_, _b, _cb, { api, }) => getTvl(api, true), + tvl: async (api) => getTvl(api, false), + staking: async (api) => getTvl(api, true), } }) diff --git a/projects/pegasusdao.js b/projects/pegasusdao.js index ae90c585fd3..a0f79091183 100644 --- a/projects/pegasusdao.js +++ b/projects/pegasusdao.js @@ -36,7 +36,7 @@ function addToExports(chain, key, fn) { exportObject[chain][key].push(fn) } -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { return sumTokens2({ api, owner: genesisPool, tokens: genesisTokens, resolveLP: true }) } diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index 45ba00479e5..e08f456273b 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -40,7 +40,7 @@ module.exports = {}; Object.keys(config).forEach((chain) => { const { factory, factoryV3, fromBlock, pts, fromBlockV3 } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/penpie/index.js b/projects/penpie/index.js index e396fa0c7c4..df71b0d3b3f 100644 --- a/projects/penpie/index.js +++ b/projects/penpie/index.js @@ -2,7 +2,7 @@ const MasterMagpieAbi = require("../magpiexyz/abis/masterMagpie.json"); const config = require("./config"); const { staking } = require('../helper/staking') -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const { masterPenpie, pendleStaking, vePENDLE, PENDLE, mPENDLE, } = config[api.chain]; const poolTokens = await api.fetchList({ diff --git a/projects/percent/index.js b/projects/percent/index.js index 6d141a89f81..47443768f6e 100644 --- a/projects/percent/index.js +++ b/projects/percent/index.js @@ -52,11 +52,11 @@ async function resolveBalancers({ balances = {}, toa, api }) { return balances } -async function pool2(_, _1, _2, { api }) { +async function pool2(api) { return resolveBalancers({ toa: [[lpOfPool2, pool2Contract]], api }) } -async function ethTvl(_, _1, _2, { api }) { +async function ethTvl(api) { const toa = [] for (let i = 0; i < pctPoolContracts.length; i++) toa.push([lpOfPctPools[i], pctPoolContracts[i]]) diff --git a/projects/perennial-v2/index.js b/projects/perennial-v2/index.js index c89c669d69a..c4801e44430 100644 --- a/projects/perennial-v2/index.js +++ b/projects/perennial-v2/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach((chain) => { const { factory, fromBlock, dsu } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/perp88/index.js b/projects/perp88/index.js index f5607b256fe..8a0cba31a27 100644 --- a/projects/perp88/index.js +++ b/projects/perp88/index.js @@ -10,7 +10,7 @@ const tokens = { } const POOL_DIAMOND_CONTRACT = '0xE7D96684A56e60ffBAAe0fC0683879da48daB383'; -async function blastTvl(_, _1, _2, { api }) { +async function blastTvl(api) { const vaultStorageAddress = '0x97e94BdA44a2Df784Ab6535aaE2D62EFC6D2e303' const hlpUnderlyings = [ "0x2EAd9c6C7cAB1DD3442714A8A8533078C402135A", diff --git a/projects/perseid-finance/index.js b/projects/perseid-finance/index.js index 0f2ac49f9a8..fe2325cb810 100644 --- a/projects/perseid-finance/index.js +++ b/projects/perseid-finance/index.js @@ -6,7 +6,7 @@ const NATIVE_LP_ADDRESS = "0x47ED4E0a52716e91a4F37914b04B2252B5B5fcDF"; // izisw const FARM_ADDRES = "0xC692CA3066C84012C616989Bc7fD9659f16DDCFd"; -const getTvl = isStaking => async (_, _1, _2, { api }) => { +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) diff --git a/projects/phantom-finance/index.js b/projects/phantom-finance/index.js index 3eff94b14dc..1c3a7bd3f53 100644 --- a/projects/phantom-finance/index.js +++ b/projects/phantom-finance/index.js @@ -1,32 +1,11 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') - - -const phantomchef = "0x9d2025065498728558f364651960976CC83F14B6" -const phantom = "0x6230a87901C2ca6b23247a9afC1f63A8ecb95B05" -const phantomFtmLP = "0xb9e2dfc5c04f0d58a68748915f791508765ef668" -const phantomUsdcLP = "0x0e5c18cdea0201b4cdab908238d5e06180d7969a"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, phantomchef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [phantom, phantomFtmLP, phantomUsdcLP]); - return balances; -} - -module.exports = { - hallmarks: [ - [1646179200, "Rug Pull"] - ], - deadFrom: 1648765747, - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(phantomchef, phantom, "fantom"), - pool2: pool2Exports(phantomchef, [phantomFtmLP, phantomUsdcLP], "fantom"), - }, - -} - +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/phase/index.js b/projects/phase/index.js index 6bcd0e8bf80..32ff0a149e8 100644 --- a/projects/phase/index.js +++ b/projects/phase/index.js @@ -14,7 +14,7 @@ async function getVaults(api) { return logs.map(i => i.created) } -async function tvl(timestamp, block, chainBlocks, { api }) { +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 }) @@ -22,7 +22,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { return api.getBalances() } -async function borrowed(timestamp, block, chainBlocks, { api }) { +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 }) diff --git a/projects/phuture/index.js b/projects/phuture/index.js index d86c8207c03..ebc3e615e49 100644 --- a/projects/phuture/index.js +++ b/projects/phuture/index.js @@ -69,7 +69,7 @@ const indexTvl = (chain) => async (timestamp, block, chainBlocks) => { ); }; -const savingsVaultTvl = (chain) => async (_, _1, _2, { api }) => { +const savingsVaultTvl = (chain) => async (api) => { const calls = networks[chain]["savingsVaults"] const assets = await api.multiCall({ abi: savingsVaultAbi.asset, calls, diff --git a/projects/pickle/index.js b/projects/pickle/index.js index 2074323576c..363456de325 100644 --- a/projects/pickle/index.js +++ b/projects/pickle/index.js @@ -15,7 +15,7 @@ module.exports = { const chains = ['ethereum', 'polygon', 'arbitrum', 'moonriver', 'harmony', 'okexchain', 'cronos', 'aurora', 'metis', 'moonbeam', 'optimism', 'kava'] chains.forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let { assets: { jars } } = await getConfig('pickle', pfcore) let key = chain switch (chain) { diff --git a/projects/piedao/index.js b/projects/piedao/index.js index ae710f224ce..133c87ee504 100644 --- a/projects/piedao/index.js +++ b/projects/piedao/index.js @@ -1,7 +1,7 @@ const { addPools, calculatePies, } = require("./pieDAO.js"); const { staking } = require('../helper/staking') -async function tvl(timestamp, ethBlock, _, { api }) { +async function tvl(api) { await Promise.all([ addPools(api), calculatePies(api), diff --git a/projects/pine-protocol/index.js b/projects/pine-protocol/index.js index 15fc7ce2bb5..7e21cdfb1f3 100644 --- a/projects/pine-protocol/index.js +++ b/projects/pine-protocol/index.js @@ -15,7 +15,7 @@ async function _getLogs(api) { return logs.map(i => i.topics.slice(1).map(getAddress)) } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { factory, wrapped } = config[api.chain] const logs = await _getLogs(api) const tokensAndOwners = logs.map(i => [i[1], i[0]]) @@ -23,7 +23,7 @@ async function tvl(_, _b, _cb, { api, }) { return sumTokens2({ api, tokensAndOwners, permitFailure: true, sumChunkSize: 20 }) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const balances = {} const allLogs = await _getLogs(api) for (const logs of sliceIntoChunks(allLogs, 30)) { diff --git a/projects/pinjam/index.js b/projects/pinjam/index.js index 0112742f7d8..843f5fdf342 100644 --- a/projects/pinjam/index.js +++ b/projects/pinjam/index.js @@ -18,7 +18,7 @@ async function getTokens(api) { return logs.map(log => getAddress(log.topics[1])) } -async function tvl(_, _b, _cb, { api, }) { +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 }) @@ -27,7 +27,7 @@ async function tvl(_, _b, _cb, { api, }) { api.addTokens(tokens, borrows.map(i => i * -1)) } -async function borrowed(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/pinkpea/index.js b/projects/pinkpea/index.js index 056d5bfd4b7..28dfa17d29d 100644 --- a/projects/pinkpea/index.js +++ b/projects/pinkpea/index.js @@ -15,7 +15,7 @@ const vaultsList = [ "0x53ff774ebE8Bf7E03df8D73D3E9915b2Ca4eC40E", ] -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { return api.erc4626Sum({ calls: vaultsList }) } diff --git a/projects/pirex/index.js b/projects/pirex/index.js index 47fa8fbbaeb..b5ee415c62a 100644 --- a/projects/pirex/index.js +++ b/projects/pirex/index.js @@ -10,7 +10,7 @@ const GLP = "0x4277f8F2c384827B5273592FF7CeBd9f2C1ac258"; const BTRFLY = "0xc55126051B22eBb829D00368f4B12Bde432de5Da"; const pxBTRFLY = "0x10978Db3885bA79Bf1Bc823E108085FB88e6F02f"; -async function ethereum(ts, block, _, { api }) { +async function ethereum(api) { const balances = {}; const chain = "ethereum"; diff --git a/projects/planet-finance/index.js b/projects/planet-finance/index.js index 594294f87dd..9f33c8a6781 100644 --- a/projects/planet-finance/index.js +++ b/projects/planet-finance/index.js @@ -6,7 +6,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking.js"); // liquidity pools -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +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' }) diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js index df7080f815c..8a2c8944406 100644 --- a/projects/platypus-finance/index.js +++ b/projects/platypus-finance/index.js @@ -11,8 +11,8 @@ const query = `{ } }` -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { - if (timestamp > +new Date("2023-02-17") / 1e3) blacklistedTokens.push("0xdaCDe03d7Ab4D81fEDdc3a20fAA89aBAc9072CE2") // USP was hacked +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", "https://api.thegraph.com/subgraphs/name/platypus-finance/platypus-dashboard", query) const tokensAndOwners = pools.map(i => i.assetsList.map(v => [v.token.id, v.id])).flat() return sumTokens2({ api, tokensAndOwners, blacklistedTokens }); diff --git a/projects/pnetwork.js b/projects/pnetwork.js index 6d035f78357..8dfb51f9cd3 100644 --- a/projects/pnetwork.js +++ b/projects/pnetwork.js @@ -18,21 +18,21 @@ function getTvl(timestamp) { 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) @@ -59,8 +59,8 @@ module.exports = { Object.values(chainMapping).forEach(chain => { module.exports[chain] = { - tvl: async (ts) => { - const response = await getTvl(ts) + tvl: async ({ timestamp }) => { + const response = await getTvl(timestamp) return toUSDTBalances(response[chain] || 0) } } diff --git a/projects/poison-finance/index.js b/projects/poison-finance/index.js index c664c7bfdb6..67ef867fa72 100644 --- a/projects/poison-finance/index.js +++ b/projects/poison-finance/index.js @@ -12,7 +12,7 @@ const abi = { "tokenInfo": "function tokenInfo(uint256) view returns (address stableToken, uint256 underlyingContractDecimals, bool canMint)", } -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/polkamarkets/index.js b/projects/polkamarkets/index.js index ca7c0eea78d..f7805480d3a 100644 --- a/projects/polkamarkets/index.js +++ b/projects/polkamarkets/index.js @@ -22,7 +22,7 @@ const protocols = [ ]; function chainTvl(chain) { - return async function tvl(timestamp, ethBlock, chainBlocks) { + return async function tvl({timestamp}, ethBlock, chainBlocks) { const balances = {}; const chainProtocols = protocols.filter(protocol => protocol.chain === chain); const block = chainBlocks[chain]; diff --git a/projects/pollyfinance/index.js b/projects/pollyfinance/index.js index a3fb8befb4b..5f57742987f 100644 --- a/projects/pollyfinance/index.js +++ b/projects/pollyfinance/index.js @@ -59,7 +59,7 @@ const nStblUnderLying = [ "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F" ] -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { let balances = {}; await Promise.all([ sumTokens2({ api, owner: nDefi, tokens: nDefiUnderLying, balances, }), @@ -69,7 +69,7 @@ async function tvl(timestamp, block, chainBlocks, { api }) { return balances } -async function pool2(timestamp, block, chainBlocks, { api }) { +async function pool2(api) { return sumTokens2({ api, owner: masterchef, tokens: pool2LPs}) } diff --git a/projects/polygonZk/index.js b/projects/polygonZk/index.js index 8e47f022e0a..7d809ff5157 100644 --- a/projects/polygonZk/index.js +++ b/projects/polygonZk/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owner: "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe", diff --git a/projects/polymarket.js b/projects/polymarket.js index 85a40bde196..611e1ed923f 100644 --- a/projects/polymarket.js +++ b/projects/polymarket.js @@ -1,28 +1,9 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const conditionalTokensContract = '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045' -const polygonUsdcContract = ADDRESSES.polygon.USDC - -async function polygon(timestamp, block, chainBlocks) { - // Get markets liquidity using API - //const marketsLiquidity = (await getMarketsLiquidity_api()).times(1e6) - //const marketsLiquidity = (await getMarketsLiquidity_graphql(timestamp, block, chainBlocks)).times(1e6) - - // Also account for USDC held in the conditional tokens contract because a lot of positions are held outside of the LPs - // Corresponds to open positions that should be counted as TVL (since they still represent USDC locked into the conditional tokens contract) - let conditionalTokensUSDC = await sdk.api.erc20.balanceOf({ - target: polygonUsdcContract, - owner: conditionalTokensContract, - block: chainBlocks['polygon'], - chain: 'polygon' - }) - return {['polygon:' + polygonUsdcContract]: conditionalTokensUSDC.output}; -} - +const { sumTokensExport } = require('./helper/unwrapLPs'); module.exports = { polygon: { - tvl: polygon + tvl: sumTokensExport({ owner: '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045', tokens: [ADDRESSES.polygon.USDC]}) }, 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/polyquail/index.js b/projects/polyquail/index.js index ca5691b6643..2cd33459cad 100644 --- a/projects/polyquail/index.js +++ b/projects/polyquail/index.js @@ -1,9 +1,3 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2BalanceFromMasterChefExports } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - const masterChefKWIL = "0xeA038416Ed234593960704ddeD73B78f7D578AA0"; const KWIL = "0x252656AdC9E22C697Ce6c08cA9065FBEe5E394e7"; @@ -13,82 +7,12 @@ const KEGG = "0x4f219CfC1681c745D9558fd64d98373A21a246CA"; const masterChefCHK = "0x439E9BE4618bfC5Ebe9B7357d848F65D24a50dDE"; const CHK = "0x6116A2A8Ea71890Cf749823Ee9DEC991930a9eEa"; -async function polygonTvl(timestamp, block, chainBlocks) { - const balances = {}; - - const transformAddress = i => `polygon:${i}`; - - await addFundsInMasterChef( - balances, - masterChefKWIL, - chainBlocks.polygon, - "polygon", - transformAddress, - abi.poolInfo, - [KWIL], - true, - true, - KWIL - ); - - await addFundsInMasterChef( - balances, - masterChefKEGG, - chainBlocks.polygon, - "polygon", - transformAddress, - abi.poolInfo, - [KEGG], - true, - true, - KEGG - ); - - await addFundsInMasterChef( - balances, - masterChefCHK, - chainBlocks.polygon, - "polygon", - transformAddress, - abi.poolInfo, - [CHK], - true, - true, - CHK - ); - return balances; -} +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require("../helper/utils"); -module.exports = { - misrepresentedTokens: true, - polygon: { - staking: sdk.util.sumChainTvls([ - staking(masterChefKWIL, KWIL, "polygon"), - staking(masterChefKEGG, KEGG, "polygon"), - staking(masterChefCHK, CHK, "polygon"), - ]), - pool2: sdk.util.sumChainTvls([ - pool2BalanceFromMasterChefExports( - masterChefKWIL, - KWIL, - "polygon", - (addr) => `polygon:${addr}` - ), - pool2BalanceFromMasterChefExports( - masterChefKEGG, - KEGG, - "polygon", - (addr) => `polygon:${addr}` - ), - pool2BalanceFromMasterChefExports( - masterChefCHK, - CHK, - "polygon", - (addr) => `polygon:${addr}` - ), - ]), - tvl: polygonTvl, - }, - methodology: - "Counts TVL on all the farms and pools through MasterChef Contracts", -}; +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/polysynth/index.js b/projects/polysynth/index.js index 99aefd6f517..917e3e8911d 100644 --- a/projects/polysynth/index.js +++ b/projects/polysynth/index.js @@ -18,7 +18,7 @@ module.exports = {}; Object.keys(chains).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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, }) diff --git a/projects/polywhale/index.js b/projects/polywhale/index.js index 16ee945e3f9..f3d665cb392 100644 --- a/projects/polywhale/index.js +++ b/projects/polywhale/index.js @@ -1,57 +1,8 @@ -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { pool2 } = require("../helper/pool2"); - -const krillToken = "0x05089C9EBFFa4F0AcA269e32056b1b36B37ED71b"; -const masterchef = "0x34bc3D36845d8A7cA6964261FbD28737d0d6510f"; -const krillUsdcLP = "0x6405Ebc22cB0899FC21f414085Ac4044B4721a0d"; - -async function tvl(timestamp, chain, chainBlocks) { - let balances = {}; - - const transformAddress = i => `polygon:${i}`; - await addFundsInMasterChef( - balances, - masterchef, - chainBlocks.polygon, - "polygon", - transformAddress, - undefined, - [krillToken, krillUsdcLP] - ); - - return balances; -} - -async function staking(timestamp, chain, chainBlocks) { - let balances = {}; - - let krillBalance = ( - await sdk.api.erc20.balanceOf({ - target: krillToken, - owner: masterchef, - block: chainBlocks.polygon, - chain: "polygon", - }) - ).output; - - sdk.util.sumSingleBalance(balances, `polygon:${krillToken}`, krillBalance); - - return balances; -} - -module.exports = { - deadFrom: 1648765747, - methodology: - "TVL is calculated by the value locked in the masterchef contracts exluding the staked KRILL and the KRILL-USDC LP", - polygon: { - tvl, - staking, - pool2: pool2( - masterchef, - krillUsdcLP, - "polygon", - (addr) => `polygon:${addr}` - ), - }, -}; +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/poolshark/index.js b/projects/poolshark/index.js index f67b21448db..254435239ff 100644 --- a/projects/poolshark/index.js +++ b/projects/poolshark/index.js @@ -12,7 +12,7 @@ const config = { Object.keys(config).forEach(chain => { const { limitPoolFactory, limitPoolFromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: limitPoolFactory, diff --git a/projects/poolside/index.js b/projects/poolside/index.js index 7f2ae71b25d..6f1fb3bd23a 100644 --- a/projects/poolside/index.js +++ b/projects/poolside/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/pooltogether/v3.js b/projects/pooltogether/v3.js index f3383d80350..9d55942b04e 100644 --- a/projects/pooltogether/v3.js +++ b/projects/pooltogether/v3.js @@ -16,7 +16,7 @@ const GRAPH_QUERY = ` prizePools { id } } ` -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const graphUrls = GRAPH_URLS[api.chain] ?? [] const pools = [] if (api.chain === 'polygon') pools.push('0x887E17D791Dcb44BfdDa3023D26F7a04Ca9C7EF4', '0xee06abe9e2af61cabcb13170e01266af2defa946') diff --git a/projects/pooltogether/v4.js b/projects/pooltogether/v4.js index 72cfdbaa3bb..e1c2629b4dc 100644 --- a/projects/pooltogether/v4.js +++ b/projects/pooltogether/v4.js @@ -15,7 +15,7 @@ const V4_POOLS = { ] } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens2({ api, tokensAndOwners: V4_POOLS[api.chain] }) } diff --git a/projects/pooltogether/v5.js b/projects/pooltogether/v5.js index 77d90b5fd16..70ae8b58a1c 100644 --- a/projects/pooltogether/v5.js +++ b/projects/pooltogether/v5.js @@ -4,7 +4,7 @@ const V5_VAULT_FACTORIES = { optimism: '0xF65FA202907D6046D1eF33C521889B54BdE08081' } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory = V5_VAULT_FACTORIES[api.chain] if (!factory) return {} const vaults = await api.fetchList({ lengthAbi: abi.totalVaults, itemAbi: abi.allVaults, target: factory }) diff --git a/projects/popcorn/index.js b/projects/popcorn/index.js index 072e57b0669..ea9224672be 100644 --- a/projects/popcorn/index.js +++ b/projects/popcorn/index.js @@ -16,7 +16,7 @@ const fraxLockVaultsNotRegistered = [ "0x1F0a3bF1e4Ea8f27449AFa0a3A27eFc3817431fc", "0xDc5Ed7b972710594082479AF498B1dA02d03a273", ]; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { let balances = {}; const data = await getConfig('popcorn/' + api.chain, `https://raw.githubusercontent.com/Popcorn-Limited/defi-db/main/archive/vaults/${api.getChainId()}.json`); let vaultAddresses = Object.keys(data); diff --git a/projects/popsicle/index.js b/projects/popsicle/index.js index 90e98b628b3..21a710e218d 100644 --- a/projects/popsicle/index.js +++ b/projects/popsicle/index.js @@ -35,7 +35,7 @@ async function fantomTvl(timestamp, block, chainBlocks, {api}) { return api.sumTokens({ owner: '0xFDB988aF9ef9D0C430176f972bA82B98b476F3ee', tokens: ['0xddc0385169797937066bbd8ef409b5b3c0dfeb52']}) } -async function fantomStaking(timestamp, block, chainBlocks, { api }) { +async function fantomStaking(api) { return sumTokens2({ api, tokensAndOwners: [ diff --git a/projects/poseidollar/index.js b/projects/poseidollar/index.js index 177559ffce9..436c7336b9c 100644 --- a/projects/poseidollar/index.js +++ b/projects/poseidollar/index.js @@ -79,8 +79,7 @@ const getPool = async (listPoolFlowX, poolRegistry) => { return poolInfoResult; }; -async function suiTVL() { - const { api } = arguments[3]; +async function suiTVL(api) { const listPoolFlowX = ( await sui.getDynamicFieldObjects({ parent: diff --git a/projects/possumLabs/index.js b/projects/possumLabs/index.js index 5499db99aae..acad6bf323c 100644 --- a/projects/possumLabs/index.js +++ b/projects/possumLabs/index.js @@ -3,7 +3,7 @@ const timeRiftContractAddress = "0x6df4EF024089ab148078fdD88f5BF0Ee63248D3E"; const hlpToken = "0x4307fbDCD9Ec7AEA5a1c2958deCaa6f316952bAb"; const flashToken = "0xc628534100180582E43271448098cb2c185795BD"; -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const portalsStaked = await api.call({ target: portalsContractAddress, abi: "uint256:totalPrincipalStaked", }); api.add(hlpToken, portalsStaked) return api.sumTokens({ owner: timeRiftContractAddress, tokens: [flashToken] }) diff --git a/projects/potluckprotocol/index.js b/projects/potluckprotocol/index.js index 0f0e69b8696..be8f79f81e3 100644 --- a/projects/potluckprotocol/index.js +++ b/projects/potluckprotocol/index.js @@ -1,26 +1,7 @@ -const abi = require("./abi.json"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); +const { masterchefExports, } = require('../helper/unknownTokens') -const chef = { - "fantom":"0x106804d24E0B7AB997D4b7Ab5cD5d8923C22707F" -} -const token = { - "fantom":"0x49894fcc07233957c35462cfc3418ef0cc26129f", -} -async function tvlFantom(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef["fantom"], chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [token["fantom"]]) - return balances; -} - - -module.exports = { - methodology: "TVL includes Cave and Attic in MasterChef contract", - fantom: { - tvl: tvlFantom, - staking: staking(chef["fantom"], token["fantom"], "fantom") - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x106804d24E0B7AB997D4b7Ab5cD5d8923C22707F', + nativeToken: '0x49894fcc07233957c35462cfc3418ef0cc26129f' +}) \ No newline at end of file diff --git a/projects/powerindex/index.js b/projects/powerindex/index.js index 4491f611032..124247dac27 100644 --- a/projects/powerindex/index.js +++ b/projects/powerindex/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const abi = require('./abi'); -async function getBscTvl(time, ethBlock, chainBlocks, { api }) { +async function getBscTvl(api) { const poolAddress = "0x40E46dE174dfB776BB89E04dF1C47d8a66855EB3" const tokens = await api.call({ target: poolAddress, @@ -12,7 +12,7 @@ async function getBscTvl(time, ethBlock, chainBlocks, { api }) { return sumTokens2({ api, tokens, owner: poolAddress }) } -async function eth(timestamp, block, _1, { api }) { +async function eth(api) { let poolLogs = await getLogs({ target: '0x0Ba2e75FE1368d8d517BE1Db5C39ca50a1429441', topic: 'LOG_NEW_POOL(address,address)', diff --git a/projects/prePo/index.js b/projects/prePo/index.js index 4fb3ce1fb25..f436e369483 100644 --- a/projects/prePo/index.js +++ b/projects/prePo/index.js @@ -10,7 +10,7 @@ module.exports = {} Object.keys(config).forEach(chain => { const { fromBlock, factory, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/predy-v3/index.js b/projects/predy-v3/index.js index 336d68c6bf5..d01deb5ae84 100644 --- a/projects/predy-v3/index.js +++ b/projects/predy-v3/index.js @@ -16,7 +16,7 @@ const abi = { } -async function borrowed(_time, _ethBlock, chainBlocks, { api }) { +async function borrowed(api) { // V3 const v3TokenState = await api.call({ abi: abi.v3.getTokenState, target: v3Address, }) api.add(WETH_CONTRACT, v3TokenState[0].totalNormalBorrowed) diff --git a/projects/predy-v320/index.js b/projects/predy-v320/index.js index 05a6780d273..b79a2f04786 100644 --- a/projects/predy-v320/index.js +++ b/projects/predy-v320/index.js @@ -16,7 +16,7 @@ const abi = { } -async function borrowed(_time, _ethBlock, chainBlocks, { api }) { +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 }) diff --git a/projects/predy-v5/index.js b/projects/predy-v5/index.js index 7ea9209f1a8..fac473eda2b 100644 --- a/projects/predy-v5/index.js +++ b/projects/predy-v5/index.js @@ -7,7 +7,7 @@ const abi = { } } -async function tvl(_, _b, _cb, { api, }) { +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 = [] @@ -18,7 +18,7 @@ async function tvl(_, _b, _cb, { api, }) { return api.sumTokens({ tokens, owner: v5Address, }) } -async function borrowed(_, _b, _cb, { api, }) { +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 }) => { diff --git a/projects/premia-v3/index.js b/projects/premia-v3/index.js index 1d96081198e..fdc47993139 100644 --- a/projects/premia-v3/index.js +++ b/projects/premia-v3/index.js @@ -19,7 +19,7 @@ const config = { Object.keys(config).forEach(chain => { const { poolFactory, poolFromBlock, vaultGraph, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: poolFactory, diff --git a/projects/premia/index.js b/projects/premia/index.js index 62f79716723..182f5f0a23d 100644 --- a/projects/premia/index.js +++ b/projects/premia/index.js @@ -13,7 +13,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, ownerTokens = [], optionsBaseToken, optionsContract, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { if (factory) { const logs = await getLogs({ diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index 107a9dd80d7..850504ce073 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -96,7 +96,7 @@ async function getMarketsForCurrentNetwork(api) { return markets; } -async function borrowed(_, _1, _2, { api }) { +async function borrowed(api) { const moonbeamApi = new sdk.ChainApi({ chain: PRIME_MASTER_NETWORK }); const markets = await getMarketsForCurrentNetwork(api); @@ -117,7 +117,7 @@ async function borrowed(_, _1, _2, { api }) { }) } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const markets = await getMarketsForCurrentNetwork(api); return sumTokens2({ api, tokensAndOwners: markets.map(market => [market.pTokenUnderlyingAddress, market.pTokenMarketAddress]) }) diff --git a/projects/prime-staked/index.js b/projects/prime-staked/index.js index 9e8ad0149e8..9e357498577 100644 --- a/projects/prime-staked/index.js +++ b/projects/prime-staked/index.js @@ -1,6 +1,6 @@ const DEPOSIT_POOL = "0xa479582c8b64533102f6f528774c536e354b8d32"; -async function tvl(_, _1, _2, { api }) { +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}) diff --git a/projects/primex-finance/index.js b/projects/primex-finance/index.js index 5565f4a1b57..875ca18e338 100644 --- a/projects/primex-finance/index.js +++ b/projects/primex-finance/index.js @@ -94,7 +94,7 @@ Object.keys(config).forEach(chain => { const { bucketsFactory, positionManager, traderBalanceVault, defaultTokens, aaveTokens } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const buckets = await api.call({ target: bucketsFactory, abi: abi.allBuckets }) const borrowedTokensAddresses = await api.multiCall({ abi: abi.borrowedAsset, calls: buckets }) diff --git a/projects/primitive/v1.js b/projects/primitive/v1.js index 2e2ed8db1e9..da4c2082b7f 100644 --- a/projects/primitive/v1.js +++ b/projects/primitive/v1.js @@ -16,9 +16,8 @@ const REGISTRY = '0x16274044dab9635Df2B5AeAF7CeCb5f381c71680' const FACTORY = '0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac' const ZERO_ADDRESS = ADDRESSES.null -module.exports = async function tvl(_, block, _1, { api }) { - - // ===== Primitive Contracts ===== +module.exports = async function tvl(api) { + const block = api.block const logs = ( await getLogs({ diff --git a/projects/prisma-lrt/index.js b/projects/prisma-lrt/index.js index 5a673c92b2f..2b3f917649a 100644 --- a/projects/prisma-lrt/index.js +++ b/projects/prisma-lrt/index.js @@ -7,7 +7,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, diff --git a/projects/prisma/index.js b/projects/prisma/index.js index 7a0b3a05aee..0c7b4b4908a 100644 --- a/projects/prisma/index.js +++ b/projects/prisma/index.js @@ -10,7 +10,7 @@ module.exports.hallmarks = [ Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, diff --git a/projects/promethium/index.js b/projects/promethium/index.js index 8caf5934f41..01082b6a958 100644 --- a/projects/promethium/index.js +++ b/projects/promethium/index.js @@ -13,7 +13,7 @@ const abi = { "totalAssets": "uint256:totalAssets" } -async function tvl(timestamp, block, chainBlocks, { api }) { +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) => { diff --git a/projects/prxy/index.js b/projects/prxy/index.js index ff0700c4046..87ffd336044 100644 --- a/projects/prxy/index.js +++ b/projects/prxy/index.js @@ -2,7 +2,7 @@ const { staking } = require('../helper/staking') const prxy = "0xab3d689c22a2bb821f50a4ff0f21a7980dcb8591"; const btcpx = "0x9C32185b81766a051E08dE671207b34466DD1021"; -async function tvl(timestamp, _, _1, { api }) { +async function tvl(api) { const bal = await api.call({ abi: 'erc20:totalSupply', target: btcpx }) api.add(btcpx, bal) } diff --git a/projects/pstake/index.js b/projects/pstake/index.js index ad9e0c742a6..f8b9226a3c4 100644 --- a/projects/pstake/index.js +++ b/projects/pstake/index.js @@ -3,7 +3,7 @@ const { get } = require('../helper/http') const sdk = require("@defillama/sdk"); -async function bsctvl(timestamp, block, chainBlocks, { api }) { +async function bsctvl(api) { const bal = await api.call({ abi: 'function exchangeRate() external view returns (uint256 totalWei, uint256 poolTokenSupply)', target: '0xc228cefdf841defdbd5b3a18dfd414cc0dbfa0d8' }) return { diff --git a/projects/psy/index.js b/projects/psy/index.js index d9f345d4c36..654c5997cd7 100644 --- a/projects/psy/index.js +++ b/projects/psy/index.js @@ -6,7 +6,7 @@ const tokenAddresses = [ ] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { return sumTokens2({ api, tokens: tokenAddresses, owner: activePool}) } diff --git a/projects/puffer/index.js b/projects/puffer/index.js index 0ece890c9d1..4746fa05f8a 100644 --- a/projects/puffer/index.js +++ b/projects/puffer/index.js @@ -1,6 +1,6 @@ const PUF_ETH = '0xD9A442856C234a39a81a089C06451EBAa4306a72'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { return api.erc4626Sum({ calls: [PUF_ETH], isOG4626: true }) } diff --git a/projects/pulsarswap/index.js b/projects/pulsarswap/index.js index eca81a5832e..dd82da67029 100644 --- a/projects/pulsarswap/index.js +++ b/projects/pulsarswap/index.js @@ -10,7 +10,7 @@ module.exports = {}; Object.keys(config).forEach(chain => { const factory = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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}) diff --git a/projects/pythagorean/index.js b/projects/pythagorean/index.js index f54b36f5216..46e9014eb04 100644 --- a/projects/pythagorean/index.js +++ b/projects/pythagorean/index.js @@ -11,7 +11,7 @@ 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(timestamp) { +async function tvl({ timestamp }) { const [exchangeRates, assetMetadata] = await Promise.all([ fetchOswapExchangeRates(), fetchOswapAssets() diff --git a/projects/qian/index.js b/projects/qian/index.js index 14456789593..976713a687d 100644 --- a/projects/qian/index.js +++ b/projects/qian/index.js @@ -3,7 +3,7 @@ const abi = require("./abi"); const AssetAddress = "0x6a2469944d3F0AA54531DfA6dCB4350F4A150b67"; const EnvAddress = "0x3719C6ff935623A7B125952df5D849ef53B08cAc"; -async function tvl(timestamp, block, _1, { api }) { +async function tvl(api) { const tokens= await api.call({ abi: abi.env.tokens, target: EnvAddress}) return api.sumTokens({ owner: AssetAddress, tokens }) } diff --git a/projects/quadrat/index.js b/projects/quadrat/index.js index f9b31d4002c..703470dfbe1 100644 --- a/projects/quadrat/index.js +++ b/projects/quadrat/index.js @@ -33,7 +33,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} const logs = await getLogs({ diff --git a/projects/quasar/index.js b/projects/quasar/index.js index c59bed2bbc1..2de7391a09f 100644 --- a/projects/quasar/index.js +++ b/projects/quasar/index.js @@ -1,8 +1,7 @@ const { queryContract } = require('../helper/chain/cosmos') const { getConfig } = require('../helper/cache') -async function tvl() { - const { api } = arguments[3] +async function tvl(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) { diff --git a/projects/quickswap-v3/index.js b/projects/quickswap-v3/index.js index dffac32d488..8036a43faed 100644 --- a/projects/quickswap-v3/index.js +++ b/projects/quickswap-v3/index.js @@ -8,7 +8,7 @@ module.exports = uniV3Export({ astrzk: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 93668, }, }) -async function tvl(_, _b, _cb, { api, }) { +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 { diff --git a/projects/quipuswap-stableswap/index.js b/projects/quipuswap-stableswap/index.js index 54d77322af9..80f9a9ab9bc 100644 --- a/projects/quipuswap-stableswap/index.js +++ b/projects/quipuswap-stableswap/index.js @@ -2,13 +2,13 @@ const { sumTokens2, getStorage, getBigMapById, } = require('../helper/chain/tezo const { PromisePool } = require('@supercharge/promise-pool') const sdk = require('@defillama/sdk') -const stableSwap = async (_, _1, _2, { api }) => { +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 (_, _1, _2, { api }) => { +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) diff --git a/projects/quoll/index.js b/projects/quoll/index.js index 7913e4dbab2..98a1ea65430 100644 --- a/projects/quoll/index.js +++ b/projects/quoll/index.js @@ -38,7 +38,7 @@ async function voterProxyBalances(api) { }) } -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { +async function tvl(api) { api.add(wom, await api.call({ abi: 'erc20:balanceOf', target: veWom, params: [voterProxy], })) await voterProxyBalances(api) } diff --git a/projects/rabbitfinance/index.js b/projects/rabbitfinance/index.js index 137c31313f5..df66bcf311d 100644 --- a/projects/rabbitfinance/index.js +++ b/projects/rabbitfinance/index.js @@ -6,7 +6,7 @@ const RS = "0xc25b7244e192d531495c400c64ea914a77e730a2"; const BANK_CONTRACT = "0xc18907269640D11E2A91D7204f33C5115Ce3419e"; -const bscTvl = async (timestamp, ethBlock, _, { api }) => { +const bscTvl = async (api) => { const poolsInfo = [ ADDRESSES.bsc.USDT, diff --git a/projects/radiate-protocol/index.js b/projects/radiate-protocol/index.js index 6e1c94227fd..0e470128df0 100644 --- a/projects/radiate-protocol/index.js +++ b/projects/radiate-protocol/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +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}) diff --git a/projects/radpie/index.js b/projects/radpie/index.js index d4c4a429805..185c956d581 100644 --- a/projects/radpie/index.js +++ b/projects/radpie/index.js @@ -12,7 +12,7 @@ const config = { Object.keys(config).forEach(chain => { const { stakingContract, DLP, LP } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/raft/index.js b/projects/raft/index.js index effd23617e6..668bd62b193 100644 --- a/projects/raft/index.js +++ b/projects/raft/index.js @@ -10,7 +10,7 @@ const WRAPPED_RETH = "0xb69e35fb4a157028b92f42655090b984609ae598"; const CHAI = "0x06af07097c9eeb7fd685c692751d5c66db49c215"; const SWETH = '0xf951E335afb289353dc249e82926178EaC7DEd78' -async function tvl(_, ethBlock, _1, { api }) { +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", }); diff --git a/projects/ragetrade/index.js b/projects/ragetrade/index.js index 9309c6aeacf..fd1194988c4 100644 --- a/projects/ragetrade/index.js +++ b/projects/ragetrade/index.js @@ -4,7 +4,7 @@ module.exports = { [1670856656, "Launch GLP Vaults"] ], arbitrum: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const vaults = [ '0x1d42783E7eeacae12EbC315D1D2D0E3C6230a068', // tricrypto '0xf9305009fba7e381b3337b5fa157936d73c2cf36', // dnGmxSeniorVault diff --git a/projects/raidshift/index.js b/projects/raidshift/index.js index a97ef50d2d2..36f2134a6ec 100644 --- a/projects/raidshift/index.js +++ b/projects/raidshift/index.js @@ -15,8 +15,7 @@ const contracts = [ 'TPfAqGJ83NbVcRcsMFx7GJ749t9VV6cZvp', ] -async function tvl() { - const { api } = arguments[3] +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 = [] diff --git a/projects/railgun/index.js b/projects/railgun/index.js index 0286a2cf018..6e6f4843af8 100644 --- a/projects/railgun/index.js +++ b/projects/railgun/index.js @@ -29,7 +29,7 @@ const blacklistedTokens = [ ] function getTVLFunc(contractAddress, chain) { - return async function (timestamp, _, { [chain]: block }, { api }) { + return async function (api) { if (CONTRACTS[chain].RAIL) blacklistedTokens.push(CONTRACTS[chain].RAIL) return sumTokens2({ owner: contractAddress, fetchCoValentTokens: true, blacklistedTokens, api }) } diff --git a/projects/rain/index.js b/projects/rain/index.js index 1a9cc887250..37c2b32cc72 100644 --- a/projects/rain/index.js +++ b/projects/rain/index.js @@ -2,7 +2,7 @@ const { Program } = require("@project-serum/anchor"); const { getProvider } = require("../helper/solana"); const idl = require('./idl') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const provider = getProvider() const rainProgram = new Program(idl, 'RainEraPU5yDoJmTrHdYynK9739GkEfDsE4ffqce2BR', provider) const tokenizerProgram = new Program(idl, 'RtokEFPPbXqDrzAHJHt16fwN6hZmepfPpSvW7y47g5r', provider) @@ -18,7 +18,7 @@ async function tvl(_, _b, _cb, { api, }) { api.add(pool.account.currency.toString(), pool.account.availableAmount) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const provider = getProvider() const program = new Program(idl, 'RainEraPU5yDoJmTrHdYynK9739GkEfDsE4ffqce2BR', provider) const pools = await program.account.pool.all() diff --git a/projects/ramp/index.js b/projects/ramp/index.js index d78c1ed46c1..029561416b4 100644 --- a/projects/ramp/index.js +++ b/projects/ramp/index.js @@ -3,7 +3,7 @@ const { getConfig } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') function getChainTVL(chain) { - return async (timestamp, ethBlock, _, { api }) => { + return async (api) => { const key = chain === 'ethereum' ? 'eth' : chain; const { [key]: config } = await getConfig('ramp', 'https://config.rampdefi.com/config/appv2/priceInfo'); const tokens = config.tokens; diff --git a/projects/range/index.js b/projects/range/index.js index a4c9c49ce45..f9f28e581c3 100644 --- a/projects/range/index.js +++ b/projects/range/index.js @@ -58,7 +58,7 @@ module.exports = { const ignoreList = {mantle : ["0x3f7a9ea2403F27Ce54624CE505D01B2204eDa030"]} Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const factories = config[chain]; const allLogs = []; for (const { factory, fromBlock, factoryType } of factories) { diff --git a/projects/rangers/index.js b/projects/rangers/index.js index 41fd3ddbee4..e42dd51bfe7 100644 --- a/projects/rangers/index.js +++ b/projects/rangers/index.js @@ -33,7 +33,7 @@ const ownersRPG = { } const owners = [...Object.values(ownersRPG)] -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens2({ api, owners, tokens: Object.values(tokens) }) } module.exports = { diff --git a/projects/rari/index.js b/projects/rari/index.js index b7972bdf00f..09a0a1f0549 100644 --- a/projects/rari/index.js +++ b/projects/rari/index.js @@ -184,14 +184,14 @@ async function tvl(timestamp, block) { return balances } -async function fuseTvl(__, _b, _cb, { 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]}) } -async function fuseBorrowed(__, _b, _cb, { api, }) { +async function fuseBorrowed(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() diff --git a/projects/reaper.farm/index.js b/projects/reaper.farm/index.js index 8e09cda0026..9200ab86988 100644 --- a/projects/reaper.farm/index.js +++ b/projects/reaper.farm/index.js @@ -12,7 +12,7 @@ const chains = ['optimism', 'arbitrum', 'fantom', 'bsc'] chains.forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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)) diff --git a/projects/renzo/index.js b/projects/renzo/index.js index bfe7d6e92ee..d561aa91d80 100644 --- a/projects/renzo/index.js +++ b/projects/renzo/index.js @@ -2,13 +2,13 @@ const L1_EZ_ETH_ADDRESS = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; const L2_EZ_ETH_ADDRESS = "0x2416092f143378750bb29b79eD961ab195CcEea5"; const L1_LOCKBOX_ADDRESS = "0xC8140dA31E6bCa19b287cC35531c2212763C2059"; -async function L2Tvl(_, _b, _cb, { api, }) { +async function L2Tvl(api) { return { [L1_EZ_ETH_ADDRESS]: await api.call({ target: L2_EZ_ETH_ADDRESS, abi: "erc20:totalSupply" }) } } -async function ethTvl(_, _b, _cb, { api, }) { +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] }) api.add(L1_EZ_ETH_ADDRESS, totalTvl - lockBoxBalance) diff --git a/projects/repl/index.js b/projects/repl/index.js index f6969c62244..2d9fd0bc315 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -18,7 +18,7 @@ const getMinerAssets = (agents) => { module.exports = { filecoin: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const [tvlComponents, activeAgents] = await Promise.all([ api.call({ abi: abi.getTVLComponents, target: REPL_HELPER_CONTRACT }), api.call({ abi: abi.getAllActiveAgents, target: REPL_HELPER_CONTRACT }), diff --git a/projects/reserve/index.js b/projects/reserve/index.js index 67f99a367e2..bbb0950e95f 100644 --- a/projects/reserve/index.js +++ b/projects/reserve/index.js @@ -33,7 +33,8 @@ const chainConfigs = { }, }; -async function tvl(_time, block, _, { api, chain }) { +async function tvl(api) { + const chain = api.chain; const config = chainConfigs[chain]; let { erc4626Wrapped = [] } = config; erc4626Wrapped = erc4626Wrapped.map((i) => i.toLowerCase()); @@ -185,7 +186,8 @@ async function tvl(_time, block, _, { api, chain }) { await sumTokens2({ api, ownerTokens, blacklistedTokens }); } -async function staking(_time, block, _, { api, chain }) { +async function staking(api) { + const chain = api.chain; const config = chainConfigs[chain]; // Load the config for the specified chain const creationLogs = await _getLogs(api, config); const stRsrs = creationLogs.map((i) => i.stRSR); diff --git a/projects/reservoir/index.js b/projects/reservoir/index.js index 39cae867c3d..87598e20c5d 100644 --- a/projects/reservoir/index.js +++ b/projects/reservoir/index.js @@ -7,7 +7,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/resonatefinance/index.js b/projects/resonatefinance/index.js index 390af5217c9..7cc2fc77c97 100644 --- a/projects/resonatefinance/index.js +++ b/projects/resonatefinance/index.js @@ -4,7 +4,7 @@ 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(_, _1, _2, { api }) { +async function tvl(api) { let usdValue = 0; do { const data = await get(`https://api.resonate.finance/${api.chainId}/tvl`); diff --git a/projects/restake-finance/index.js b/projects/restake-finance/index.js index 2506b62d9f9..021907e4f19 100644 --- a/projects/restake-finance/index.js +++ b/projects/restake-finance/index.js @@ -6,7 +6,7 @@ const StakePools = [ '0xD5193B851bf7C751BBA862Eca1298D4B4Cb17B81', ]; -async function tvl(_1, _2, _3, { api }) { +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) diff --git a/projects/revault/index.js b/projects/revault/index.js index d9531a36b5b..3806a085a7a 100644 --- a/projects/revault/index.js +++ b/projects/revault/index.js @@ -2,7 +2,7 @@ const REVA_CHEF = "0xd7550285532f1642511b16Df858546F2593d638B"; const REVA_CHEF_ABI = require("./RevaChef.json"); const { sumTokens2 } = require('../helper/unwrapLPs'); -async function tvl(timestamp, _, _1, { api }) { +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)) diff --git a/projects/revest/index.js b/projects/revest/index.js index 2be1875566c..52b72097398 100644 --- a/projects/revest/index.js +++ b/projects/revest/index.js @@ -50,7 +50,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { holder, revest, tokenVaultV2, fnftHandler, revest_lp } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _1, { api }) => { + tvl: async (api) => { const blacklistedTokens = [] if (revest) blacklistedTokens.push(revest.toLowerCase()) @@ -124,7 +124,7 @@ Object.keys(config).forEach(chain => { } if (revest) - module.exports[chain].staking = async (_, _b, _1, { api }) => { + 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, }, diff --git a/projects/reyield-finance/index.js b/projects/reyield-finance/index.js index fbe2b957e6b..41e228a59ae 100644 --- a/projects/reyield-finance/index.js +++ b/projects/reyield-finance/index.js @@ -3,9 +3,7 @@ const ABI = require('./abi.json') const positionManagerFactory = "0x3332Ae0fC25eF24352ca75c01A1fCfd9fc33EAca" const positionHelper = "0x76136A56963740b4992C5E9dA5bB58ECffC92ce3" -async function tvl() { - const { api } = arguments[3] - +async function tvl(api) { const { managers } = await api.call({ target: positionManagerFactory, abi: ABI.getPositionManagers, diff --git a/projects/ribbon-lend/index.js b/projects/ribbon-lend/index.js index f4e3889ecbd..307ace79fb5 100644 --- a/projects/ribbon-lend/index.js +++ b/projects/ribbon-lend/index.js @@ -19,17 +19,18 @@ async function getPools(api) { return pools } -async function tvl(_, block, _1, { api }) { +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(_, block, _1, { api }) { +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, + abi: "uint256:borrows", calls, block: api.block, }) const balances = {} borrows.forEach(({ output, }, i) => sdk.util.sumSingleBalance(balances, pools[i].currency, output )) diff --git a/projects/ribbon/solana.js b/projects/ribbon/solana.js index 0dc32a44a6d..d133bd938ac 100644 --- a/projects/ribbon/solana.js +++ b/projects/ribbon/solana.js @@ -1,8 +1,7 @@ const { getProvider, sumTokens2, } = require('../helper/solana') const { Program, } = require("@project-serum/anchor"); -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { const provider = getProvider() const program = new Program(idl, 'RBN2XNc6JQU6ewFp9TyPq6WznsvNuumzSJkor1nJFcz', provider) const vaults = await program.account.vault.all() diff --git a/projects/rift-finance/index.js b/projects/rift-finance/index.js index 7e0e424af9c..161f694b01f 100644 --- a/projects/rift-finance/index.js +++ b/projects/rift-finance/index.js @@ -11,7 +11,7 @@ const masterChefAbi = { userInfo: "function userInfo(uint256 pid, address user) view returns (tuple(uint256 amount, uint256 rewardDebt))", } -async function tvl(timestamp, chainBlocks, _, { api }) { +async function tvl(api) { const chain = api.chain const { graphUrl } = NETWORKS[chain]; diff --git a/projects/rigoblock/index.js b/projects/rigoblock/index.js index 70260055432..50b4434aa8e 100644 --- a/projects/rigoblock/index.js +++ b/projects/rigoblock/index.js @@ -19,11 +19,11 @@ const config = { Object.keys(config).forEach(chain => { const { fromBlock, GRG_TOKEN_ADDRESSES, GRG_VAULT_ADDRESSES } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const { pools, tokens } = await getPoolInfo(api) return sumTokens2({ owners: pools, tokens, api, resolveUniV3: true, blacklistedTokens: [GRG_TOKEN_ADDRESSES] }) }, - staking: async (_, _b, _cb, { api, }) => { + staking: async (api) => { const { pools, tokens } = await getPoolInfo(api) const bals = await api.multiCall({ abi: 'erc20:balanceOf', calls: pools, target: GRG_VAULT_ADDRESSES }) bals.forEach(i => api.add(GRG_TOKEN_ADDRESSES, i)) diff --git a/projects/ring-few/index.js b/projects/ring-few/index.js index ed0662a3177..d995bf6e4d7 100644 --- a/projects/ring-few/index.js +++ b/projects/ring-few/index.js @@ -9,7 +9,7 @@ module.exports = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/risk-harbor/index.js b/projects/risk-harbor/index.js index 22fa805bd90..298b8787642 100644 --- a/projects/risk-harbor/index.js +++ b/projects/risk-harbor/index.js @@ -203,7 +203,7 @@ async function getManagedVaults(vaultManager, block, chain) { return res; } -async function terra2(timestamp, ethBlock, chainBlocks, { api }) { +async function terra2(api) { const { addresses } = await queryContract({ contract: networks.terra2.factory, chain: "terra2", @@ -233,7 +233,7 @@ async function terra(timestamp, ethBlock, chainBlocks) { } function evm(chainName) { - return async (timestamp, block, chainBlocks, { api }) => { + return async (api) => { const network = networks[chainName]; if (network.vaultManager) { diff --git a/projects/risq.js b/projects/risq.js index 1b120e99088..dd250a7dae1 100644 --- a/projects/risq.js +++ b/projects/risq.js @@ -1,65 +1,39 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const bnbPool = "0x55D10490C500FBF334C0fD91A0b205a5D64b9367"; //BNB_POOL -const WBNBAddresss = ADDRESSES.bsc.WBNB; 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 + "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 + ADDRESSES.bsc.BTCB, //WBTC + ADDRESSES.bsc.ETH, //WETH + "0x8ff795a6f4d97e7887c79bea79aba5cc76444adf", //BCH + "0x4338665cbb7b2485a8855a139b75d5e34ab0db94", //LTC + "0x52ce071bd9b1c4b00a0b92d298c512478cad67e8", //COMP + "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", //CAKE + "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", //UNI + "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", //LINK + "0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e" //YFI ]; -// node test.js projects/a.js -async function tvl(_timestamp, ethBlock, chainBlocks) { - const transform = i => `bsc:${i}`; - let balances = {}; - const vaultBalances = (await sdk.api.abi.multiCall({ - abi: 'erc20:balanceOf', - calls: tokens.map((t, i) => ({ - target: t, - params: poolsV1[i] - })), - block: chainBlocks["bsc"], - chain: 'bsc', - })).output.map(b => b.output); - - for (let i = 0; i < tokens.length; i++) { - balances[transform(tokens[i])] = ((transform(tokens[i]) in balances) ? - Number(balances[transform(tokens[i])]) + Number(vaultBalances[i]) : - vaultBalances[i]); - } - - balances[transform(WBNBAddresss)] = (await sdk.api.eth.getBalance({ - target: bnbPool, - block: chainBlocks["bsc"], - chain: 'bsc' - })).output; - - return balances; +async function tvl(api) { + await api.sumTokens({ tokensAndOwners2: [tokens,poolsV1,]}) + return api.sumTokens({ tokens: [ADDRESSES.null], owners: [bnbPool],}) } module.exports = { - start: 10340221, // Aug-25-2021 03:12:42 PM +UTC - bsc: { - tvl, - } + start: 10340221, // Aug-25-2021 03:12:42 PM +UTC + bsc: { + tvl, + } }; \ No newline at end of file diff --git a/projects/rivrkitty.js b/projects/rivrkitty.js index a3bcd5514ce..fc4bda932ca 100644 --- a/projects/rivrkitty.js +++ b/projects/rivrkitty.js @@ -11,7 +11,7 @@ const tokens = [ '0xDCd92eb568157D3c1a6b3AE53ADF18a230bc304A', // HBLP ]; // node test.js projects/rivrkitty.js -async function pool2(timestamp, _block, { moonriver: block }, { api }) { +async function pool2(api) { const { amount } = await api.call({ target: masterchefContract, abi: abi.userInfo, diff --git a/projects/roaring-lion/index.js b/projects/roaring-lion/index.js index 788051bb15d..f32515b6f9e 100644 --- a/projects/roaring-lion/index.js +++ b/projects/roaring-lion/index.js @@ -8,7 +8,7 @@ const rewardPool = "0x119ad97096fff8629347f5af7f36ac1a32de4f2d"; //users can only lock lps in the boardroom -async function pool2(timestamp, block, chainBlocks, { api }) { +async function pool2(api) { return unwrapBalancerToken({ api, balancerToken: "0x950667EF678bAe44Ef037c721E564C365FC8303E", owner: boardroom, }) } diff --git a/projects/robovault/index.js b/projects/robovault/index.js index 810f1525cf9..c2a8afc3156 100644 --- a/projects/robovault/index.js +++ b/projects/robovault/index.js @@ -31,7 +31,7 @@ const config = { Object.keys(config).forEach(chain => { const { vaults } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/rocifi-v2/index.js b/projects/rocifi-v2/index.js index 5afc21779c5..6d2570b460a 100644 --- a/projects/rocifi-v2/index.js +++ b/projects/rocifi-v2/index.js @@ -24,7 +24,7 @@ const getPools = async (chain, api) => { return { pools, underlyings } } -const tvl = (chain) => async (_, __, _1, { api }) => { +const tvl = (chain) => async (api) => { const { pools, underlyings } = await getPools(chain, api); const collaterals = await api.call({ @@ -43,7 +43,7 @@ const tvl = (chain) => async (_, __, _1, { api }) => { }); } -const borrowed = (chain) => async (_, __, _1, { api }) => { +const borrowed = (chain) => async (api) => { const { pools, underlyings } = await getPools(chain, api); const balances = {}; diff --git a/projects/rocifiv1/index.js b/projects/rocifiv1/index.js index 053acce371a..09f3aed9454 100644 --- a/projects/rocifiv1/index.js +++ b/projects/rocifiv1/index.js @@ -17,7 +17,7 @@ const RociRevenueManagerABI = 'function balanceAvailable(address _poolAddress) v const poolValueAbi = "uint256:poolValue" -async function tvl(timestamp, _, _1, { api }) { +async function tvl(api) { return sumTokens2({ api, tokensAndOwners: [ [WETH, ROCI_COLLATERAL_MANAGER], @@ -26,7 +26,7 @@ async function tvl(timestamp, _, _1, { api }) { }) } -async function borrowed(timestamp, _, _1, { api }) { +async function borrowed(api) { const poolValues = await api.multiCall({ abi: poolValueAbi, calls: ROCI_POOLS, diff --git a/projects/rodeo/index.js b/projects/rodeo/index.js index a353abdedb7..dc3be30c35a 100644 --- a/projects/rodeo/index.js +++ b/projects/rodeo/index.js @@ -6,13 +6,13 @@ const pools = [ "0x0032F5E1520a66C6E572e96A11fBF54aea26f9bE", // usdc-v1 ]; -async function borrowed(_, _1, _2, { api }) { +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(_, _b, _cb, { api, }) { +async function tvl(api) { const assets = await api.multiCall({ abi: 'address:asset', calls: pools}) return sumTokens2({ api, tokensAndOwners2: [assets, pools]}) } diff --git a/projects/roguex/index.js b/projects/roguex/index.js index 508c56baf48..0690d8af218 100644 --- a/projects/roguex/index.js +++ b/projects/roguex/index.js @@ -9,7 +9,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, address tradePool)', onlyArgs: true, fromBlock, }) const ownerTokens = logs.map(i => [[[i.token0, i.token1], i.pool], [[i.token0, i.token1], i.tradePool]]).flat() return api.sumTokens({ ownerTokens }) diff --git a/projects/rollup-fi-pools/index.js b/projects/rollup-fi-pools/index.js index 7c601142692..91a587fa3c1 100644 --- a/projects/rollup-fi-pools/index.js +++ b/projects/rollup-fi-pools/index.js @@ -13,7 +13,7 @@ module.exports = { }, }; -async function cryptoPoolTvl(_, _b, _cb, { api, }) { +async function cryptoPoolTvl(api) { const logs = await getLogs({ api, target: '0x7C5667677e7E6d5a7a3b7cb9EF25a2B4ad2C745A', diff --git a/projects/rosswap/index.js b/projects/rosswap/index.js index 39934673ebc..23e92d82f9c 100644 --- a/projects/rosswap/index.js +++ b/projects/rosswap/index.js @@ -1,7 +1,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { transformDexBalances } = require('../helper/portedTokens') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0x232bF8d9cED464a75632657Cb2554880Acdcac1B', diff --git a/projects/rubicon/index.js b/projects/rubicon/index.js index 53b4768732b..1a4c4844056 100644 --- a/projects/rubicon/index.js +++ b/projects/rubicon/index.js @@ -38,7 +38,7 @@ const config = { Object.keys(config).forEach(chain => { const { endpoint, owners } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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}) diff --git a/projects/rumi/index.js b/projects/rumi/index.js index 0db1ef021c2..7ace8c1690d 100644 --- a/projects/rumi/index.js +++ b/projects/rumi/index.js @@ -1,6 +1,6 @@ const addressProvider = "0xFf6c50B43382f2531FEF7d6382cCe1263B0585f1" -async function tvl(_, _1, _2, { api }) { +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, }) diff --git a/projects/rysk/index.js b/projects/rysk/index.js index a0649800cad..ef397f725b3 100644 --- a/projects/rysk/index.js +++ b/projects/rysk/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const balances = {} const reactorTvl = await api.multiCall({ abi: 'uint256:getPoolDenominatedValue', calls: [ diff --git a/projects/sablier-v2/index.js b/projects/sablier-v2/index.js index edb288168f6..5465d86db67 100644 --- a/projects/sablier-v2/index.js +++ b/projects/sablier-v2/index.js @@ -21,12 +21,12 @@ async function getTokensConfig(api, isVesting) { return { ownerTokens } } -async function tvl(_, block, _1, { api }) { +async function tvl(api) { const { owners } = config[api.chain] return api.sumTokens(await getTokensConfig(api, false)) } -async function vesting(_, block, _1, { api }) { +async function vesting(api) { const { owners } = config[api.chain] return api.sumTokens(await getTokensConfig(api, true)) } diff --git a/projects/sablier/index.js b/projects/sablier/index.js index 934f0523827..4320c50909c 100644 --- a/projects/sablier/index.js +++ b/projects/sablier/index.js @@ -18,13 +18,13 @@ async function getTokens(api, owners, isVesting) { return tokens.filter((v, i) => isWhitelistedToken(symbols[i], v, isVesting)) } -async function tvl(_, block, _1, { api }) { +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(_, block, _1, { api }) { +async function vesting(api) { const { owners } = config[api.chain] const tokens = await getTokens(api, owners, true) return sumTokens2({ api, owners, tokens, blacklistedTokens, }) diff --git a/projects/saffron/index.js b/projects/saffron/index.js index f6828b66b34..c35c5ae004e 100644 --- a/projects/saffron/index.js +++ b/projects/saffron/index.js @@ -1,5 +1,3 @@ -const abi = require("./abi.json"); -const { addFundsInMasterChef } = require("../helper/masterchef"); const { staking } = require("../helper/staking"); const SaffronStakingV2Contract = "0x4eB4C5911e931667fE1647428F38401aB1661763"; diff --git a/projects/sagebet/index.js b/projects/sagebet/index.js index c05f9d47445..046bf4a9ccb 100644 --- a/projects/sagebet/index.js +++ b/projects/sagebet/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +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]}) diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js index 2ea7939c7c4..b3f8c7050ef 100644 --- a/projects/sailingprotocol/index.js +++ b/projects/sailingprotocol/index.js @@ -80,7 +80,7 @@ const tokens = [ }, ]; -async function tvl(_0, blockNumber, _2, { api }) { +async function tvl(api) { for (const token of tokens) { const tokenTotalSupply = await api.call({ target: token.address, abi: 'erc20:totalSupply' }); if (token.sufficientLiquidityForDefiLlamaIndexer) { diff --git a/projects/salem/index.js b/projects/salem/index.js index 915b93a4e23..6473ef02bd3 100644 --- a/projects/salem/index.js +++ b/projects/salem/index.js @@ -1,86 +1,20 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { stakingUnknownPricedLP } = require("../helper/staking"); -const { pool2Exports, pool2 } = require("../helper/pool2"); - -const croSalem = "0x637CB66526244029407046867E1E0DFD28b2294E"; -const ftmSalem = "0xa26e2D89D4481500eA509Df58035073730cff6D9"; -const polySalem = "0xf5291e193aad73cac6fd8371c98804a46c6c6577"; - -const cronoschef = "0xBD124D3B18a382d807a9E491c7f1848403856B08"; -const ftmchef = "0xdA2A9024D8D01F4EA0aa35EEdf771432095219ef"; -const polychef = "0x53D392646faB3caE0a08Ead31f8B5cBFFf55b818"; - -const cronosPool2 = [ - "0x03F297457ED6197D0A387a5C53dC72aCf8fDB3FC", - "0x4A84e3CcC9Ac08D5cAE6765B45CF7c6Ab287AAD9" -] - -const polyPool2 = [ - "0x32c8756821cF90928262D2D0Ef7D5Bc6608A8A47", - "0x131db18FE666370B377A7408bC756d6c6737885b" -] - -const ftmPool2 = [ - "0x79Bf4a0E0Cc1e52B7D3018a8a4d9b8640A09edB0", - "0xe83E9BDA9a863aa898d4c8F10233f2Ed0c86363D" -] - -const translate = { - [ADDRESSES.moonriver.USDT]: "fantom:" + ADDRESSES.fantom.WFTM, - "0xf2001b145b43032aaf5ee2884e456ccd805f677d": ADDRESSES.ethereum.DAI, - "0x7dff46370e9ea5f0bad3c4e29711ad50062ea7a4": "bsc:0x570a5d26f7765ecb712c0924e4de545b89fd43df" -}; - -async function cronosTvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, cronoschef, chainBlocks.cronos, "cronos", addr=>{ - addr = addr.toLowerCase(); - if (translate[addr] !== undefined) { - return translate[addr]; - } - return `cronos:${addr}`; - }, undefined, [croSalem], true, true, croSalem); - return balances; -} - - -async function ftmTvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, ftmchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [ftmSalem], true, true, ftmSalem); - return balances; -} - - -async function polyTvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, polychef, chainBlocks.polygon, "polygon", addr=>{ - addr = addr.toLowerCase(); - if (translate[addr] !== undefined) { - return translate[addr]; - } - return `polygon:${addr}` - }, undefined, [polySalem], true, true, polySalem); - return balances; -} - - -module.exports = { - cronos: { - tvl: cronosTvl, - staking: stakingUnknownPricedLP(cronoschef, croSalem, "cronos", "0x4A84e3CcC9Ac08D5cAE6765B45CF7c6Ab287AAD9"), - pool2: pool2Exports(cronoschef, cronosPool2, "cronos") - }, - fantom: { - tvl: ftmTvl, - staking: stakingUnknownPricedLP(ftmchef, ftmSalem, "fantom", "0xe83E9BDA9a863aa898d4c8F10233f2Ed0c86363D"), - pool2: pool2Exports(ftmchef, ftmPool2, "fantom") - }, - polygon: { - tvl: polyTvl, - staking: stakingUnknownPricedLP(polychef, polySalem, "polygon", "0x131db18FE666370B377A7408bC756d6c6737885b"), - pool2: pool2Exports(polychef, polyPool2, "polygon") - }, - -} \ No newline at end of file +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 index 6d7e381a5c8..4f9de849d0a 100644 --- a/projects/salsa/index.js +++ b/projects/salsa/index.js @@ -2,7 +2,7 @@ const { call } = require("../helper/chain/elrond"); const ADDRESSES = require('../helper/coreAssets.json'); -const tvl = async (_, _1, _2, { api }) => { +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) diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js index ca6f60579d5..0724ff632b1 100644 --- a/projects/sandclock/index.js +++ b/projects/sandclock/index.js @@ -22,7 +22,8 @@ const v1Vaults = [YEARN_VAULT, LIQUITY_VAULT, JADE, AMETHYST]; const v2Vaults = [EMERALD, OPAL, AMBER]; const liquityVaults = [LIQUITY_VAULT, JADE, AMETHYST, AMBER]; -async function tvl(_, _b, _cb, { api, chain, block, }) { +async function tvl(api) { + const { chain, block} = api const balances = {} // v1 vaults assets const v1VaultBalances = await api.multiCall({ diff --git a/projects/sapphire/index.js b/projects/sapphire/index.js index 804b6bf32f6..36af2d33121 100644 --- a/projects/sapphire/index.js +++ b/projects/sapphire/index.js @@ -1,52 +1,15 @@ -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { stakings } = require('../helper/staking') -const poolInfo = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accfSapphirePerShare, uint16 depositFeeBP, uint256 lpSupply)' - -const chef = "0x5A3b5A572789B87755Fa7720A4Fae36e2e2D3b35" -const sapphireWarChef = "0xD1b96929AceDFa7a2920b5409D0c5636b89dcD85" -const sapphire = "0xfa7d8c3CccC90c07c53feE45A7a333CEC40B441B" -const sapphireWar = "0xB063862a72d234730654c0577C188452424CF53c" -const sapphireFtmLP = "0xC0BFf8416E83E410c38B859Ac92a3268DaDc5494" -const sapphireWarFtmLP = "0x16d6A8A53195208f5038421091d5a9dEf9647250" - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}` - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, poolInfo, [sapphire, sapphireFtmLP]) - await addFundsInMasterChef(balances, sapphireWarChef, chainBlocks.fantom, "fantom", transformAddress, poolInfo, [sapphireWar, sapphireWarFtmLP]) - return balances; -} - -async function staking(timestamp, block, chainBlocks) { - const balances = {} - const { output: balance } = await sdk.api.abi.multiCall({ - calls: [ - { - target: sapphire, - params: chef - }, - { - target: sapphireWar, - params: sapphireWarChef - } - ], - abi: 'erc20:balanceOf', - block: chainBlocks.fantom, - chain : "fantom", - - }) - sdk.util.sumSingleBalance(balances, `fantom:${sapphire}`, balance[0].output) - sdk.util.sumSingleBalance(balances, `fantom:${sapphireWar}`, balance[1].output) - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - pool2: stakings([chef, sapphireWarChef], [sapphireFtmLP, sapphireWarFtmLP], "fantom"), - staking, - // masterchef: tvl, - } -} +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/sashimiswap/index.js b/projects/sashimiswap/index.js index 32409899dd7..df68946cf9f 100644 --- a/projects/sashimiswap/index.js +++ b/projects/sashimiswap/index.js @@ -36,7 +36,7 @@ const config = { Object.keys(config).forEach(chain => { const { stakingContracts, stakingToken, dexFactory, comptroller, dexFromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const ownerTokens = [] if (comptroller) { const markets = await api.call({ abi: 'address[]:getAllMarkets', target: comptroller, }) @@ -58,7 +58,7 @@ Object.keys(config).forEach(chain => { } return sumTokens2({ api, ownerTokens, blacklistedTokens, }) }, - borrowed: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/satsat/index.js b/projects/satsat/index.js index d65f74467c3..44477756e1d 100644 --- a/projects/satsat/index.js +++ b/projects/satsat/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require('../helper/unwrapLPs') const HOST='https://order.satsat.exchange' const MarketContract = '0x56ed5Ad8DA3ed3b46aE3e6fb28eC653EB93b9436' -async function tvl(_, _b, _cb, { api, }) { +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 }); diff --git a/projects/savvy/index.js b/projects/savvy/index.js index 0e5377d5261..583ea231bcc 100644 --- a/projects/savvy/index.js +++ b/projects/savvy/index.js @@ -1,7 +1,7 @@ const contracts = require("./contracts.json"); const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const savvyPositionManagers = await api.call({ abi: 'address[]:getSavvyPositionManagers', target: contracts.infoAggregator, }) console.log(savvyPositionManagers) const yieldStrategyManagers = await api.multiCall({ abi: 'address:yieldStrategyManager', calls: savvyPositionManagers, }) diff --git a/projects/scallop/index.js b/projects/scallop/index.js index 56edb8f2775..c81835e12b2 100644 --- a/projects/scallop/index.js +++ b/projects/scallop/index.js @@ -3,8 +3,7 @@ const BigNumber = require("bignumber.js"); const SCALLOP_SUI_MARKET_ID = "0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9" -async function suiBorrowed() { - const { api } = arguments[3] +async function suiBorrowed(api) { const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) const balanceSheetsFields = await sui.getDynamicFieldObjects({ @@ -20,8 +19,7 @@ async function suiBorrowed() { }) } -async function suiTvl() { - const { api } = arguments[3] +async function suiTvl(api) { const object = await sui.getObject(SCALLOP_SUI_MARKET_ID) const balanceSheetsFields = await sui.getDynamicFieldObjects({ diff --git a/projects/scanto/index.js b/projects/scanto/index.js index 8f7882ca479..aa08d4151c7 100644 --- a/projects/scanto/index.js +++ b/projects/scanto/index.js @@ -1,5 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(_, _b, _cb, { api }){ +async function tvl(api){ const supply = await api.call({ abi: "function totalSupply() view returns (uint256)", target:"0x9F823D534954Fc119E31257b3dDBa0Db9E2Ff4ed" }) return { ["canto:" + ADDRESSES.null]: supply diff --git a/projects/scarecrow-raven/index.js b/projects/scarecrow-raven/index.js index 73b5a07baf2..eb0f72fc55b 100644 --- a/projects/scarecrow-raven/index.js +++ b/projects/scarecrow-raven/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const chef = "0x2639779d6ca9091483a2a7b9a1fe77ab83b90281"; -async function tvl(timestamp, block, chainBlocks, { api }) { +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, }) } diff --git a/projects/scarecrow/index.js b/projects/scarecrow/index.js index 4a15550f9a3..65f07e5d674 100644 --- a/projects/scarecrow/index.js +++ b/projects/scarecrow/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0xbCEf0849DDd928835A6Aa130aE527C2703CD832C" -const scare = "0x46e1Ee17f51c52661D04238F1700C547dE3B84A1" -const scareFtmLP = "0xd6b312d05fadba48ec6b899dd7db61e79fc36681" -const scareUsdcLP = "0xC4C9a74b10Ca90DbA51a4ec69c7b3CE6709bAebf"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [scare, scareFtmLP, scareUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, scare, "fantom"), - pool2: pool2Exports(chef, [scareFtmLP, scareUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0xbCEf0849DDd928835A6Aa130aE527C2703CD832C', + nativeToken: '0x46e1Ee17f51c52661D04238F1700C547dE3B84A1' +}) \ No newline at end of file diff --git a/projects/scaryswap/index.js b/projects/scaryswap/index.js index fb42b01a1be..99c110705f6 100644 --- a/projects/scaryswap/index.js +++ b/projects/scaryswap/index.js @@ -5,7 +5,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const chain = "fantom"; -async function staking(timestamp, block, chainBlocks, { api }) { +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])) diff --git a/projects/scientixfinance/index.js b/projects/scientixfinance/index.js index 78aaf1f7876..3d79d2528ce 100644 --- a/projects/scientixfinance/index.js +++ b/projects/scientixfinance/index.js @@ -23,7 +23,7 @@ module.exports = { }, }; -async function tvl(_, _b, _cb, { api, }) { +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}) @@ -34,7 +34,7 @@ async function tvl(_, _b, _cb, { api, }) { await api.sumTokens({ owner: Transmute, token}) } -async function pool2(_, _b, _cb, { api, }) { +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}) diff --git a/projects/scroll/index.js b/projects/scroll/index.js index 342324661dc..f2b544bc0f2 100644 --- a/projects/scroll/index.js +++ b/projects/scroll/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index 1f30d38f259..6e75deec33b 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -1,6 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumUnknownTokens } = require("../helper/unknownTokens"); -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const calls = [ { target: '0x075CA53543D304c02Ee692C0b691770AEB273dA4', params: '0x4402Cf5433D57266563979654d20887AcE672393' }, diff --git a/projects/seamless/index.js b/projects/seamless/index.js index f56122d9c98..a3d05c471e8 100644 --- a/projects/seamless/index.js +++ b/projects/seamless/index.js @@ -8,7 +8,7 @@ const AAVE_ADDRESSES_PROVIDER_REGISTRY = "0x90C5055530C0465AbB077FA016a3699A3F53 const AAVE_POOL_DATA_PROVIDER = "0x2A0979257105834789bC6b9E1B00446DFbA8dFBa"; const GEYSER_REGISTRY = "0xD5815fC3D736120d07a1fA92bA743c1167dA89d8"; -async function geyserTvl(_, _1, _2, { api }) { +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 }) diff --git a/projects/sector-fi/index.js b/projects/sector-fi/index.js index 9f18ce26a26..866b4ff886c 100644 --- a/projects/sector-fi/index.js +++ b/projects/sector-fi/index.js @@ -24,7 +24,7 @@ module.exports = {}; Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/seeder/index.js b/projects/seeder/index.js index 9a93c9d24a2..12151eca8eb 100644 --- a/projects/seeder/index.js +++ b/projects/seeder/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const farmContract = "0x1aF28E7b1A03fA107961897a28449F4F9768ac75"; -const bscTvl = async (_, _1, _2, { api }) => { +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}) }; diff --git a/projects/seneca/index.js b/projects/seneca/index.js index 3f539113f14..90681437255 100644 --- a/projects/seneca/index.js +++ b/projects/seneca/index.js @@ -16,7 +16,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { chambers } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/sense/index.js b/projects/sense/index.js index 6caaf37f813..b315e43ec2e 100644 --- a/projects/sense/index.js +++ b/projects/sense/index.js @@ -13,7 +13,8 @@ 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(_time, block, _1, { api }) { +async function tvl(api) { + const block = api.block const transform = await getChainTransform("ethereum"); const seriesLogs = await getLogs({ target: DIVIDER, diff --git a/projects/sentiment/index.js b/projects/sentiment/index.js index c2cce24352f..e4ab49ad0ad 100644 --- a/projects/sentiment/index.js +++ b/projects/sentiment/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { cachedGraphQuery } = require('../helper/cache') -async function tvl(timestamp, ethBlock, { arbitrum: block }, { api }) { +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", }) diff --git a/projects/serum.js b/projects/serum.js index dc0bc16b90d..d0941565959 100644 --- a/projects/serum.js +++ b/projects/serum.js @@ -4,7 +4,7 @@ const { PublicKey } = require("@solana/web3.js") const blacklistedTokens = new Set(blacklistedTokens_default) -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const connection = getConnection() const programPublicKey = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin') diff --git a/projects/sft-protocol/index.js b/projects/sft-protocol/index.js index 8b90e1cd38f..2d414a6fb68 100644 --- a/projects/sft-protocol/index.js +++ b/projects/sft-protocol/index.js @@ -39,7 +39,7 @@ const getActiveMinersFromRPC = async () => { module.exports = { filecoin: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { let balances = await sumTokens2({ owner: LENDING_POOL_ADDRESS, tokens, api }); diff --git a/projects/shadeprotocol-derivatives/index.js b/projects/shadeprotocol-derivatives/index.js index 6b03ff08d68..6590a3f011e 100644 --- a/projects/shadeprotocol-derivatives/index.js +++ b/projects/shadeprotocol-derivatives/index.js @@ -1,6 +1,6 @@ const { get } = require("../helper/http") -async function tvl(_, _b, _cb, { api, }) { +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 diff --git a/projects/shadeprotocol-lend/index.js b/projects/shadeprotocol-lend/index.js index 2bf9299ee77..16ee7d06a87 100644 --- a/projects/shadeprotocol-lend/index.js +++ b/projects/shadeprotocol-lend/index.js @@ -1,7 +1,7 @@ const { get } = require("../helper/http") // Total Collateral Deposited in Vaults -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = await get('https://ruvzuawwz7.execute-api.us-east-1.amazonaws.com/prod-analytics-v1/lend') let totalValue = 0; diff --git a/projects/shadeprotocol-silk/index.js b/projects/shadeprotocol-silk/index.js index 0b1d3f2a405..74f445a9bda 100644 --- a/projects/shadeprotocol-silk/index.js +++ b/projects/shadeprotocol-silk/index.js @@ -1,6 +1,6 @@ const { get } = require("../helper/http") -async function tvl(_, _b, _cb, { api, }) { +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 diff --git a/projects/shadeprotocol-swap/index.js b/projects/shadeprotocol-swap/index.js index 26666b229d3..303d684b411 100644 --- a/projects/shadeprotocol-swap/index.js +++ b/projects/shadeprotocol-swap/index.js @@ -1,6 +1,6 @@ const { get } = require("../helper/http") -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = await get('https://na36v10ce3.execute-api.us-east-1.amazonaws.com/API-mainnet-STAGE/shadeswap/pairs') return { tether: data.map(i => +i.liquidity_usd).filter(i=>i<1e9).reduce((a, i) => a + i) diff --git a/projects/shadeswap/index.js b/projects/shadeswap/index.js index 26666b229d3..303d684b411 100644 --- a/projects/shadeswap/index.js +++ b/projects/shadeswap/index.js @@ -1,6 +1,6 @@ const { get } = require("../helper/http") -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = await get('https://na36v10ce3.execute-api.us-east-1.amazonaws.com/API-mainnet-STAGE/shadeswap/pairs') return { tether: data.map(i => +i.liquidity_usd).filter(i=>i<1e9).reduce((a, i) => a + i) diff --git a/projects/sharedstake/index.js b/projects/sharedstake/index.js index eaa95d7a2dc..4f538c84b30 100644 --- a/projects/sharedstake/index.js +++ b/projects/sharedstake/index.js @@ -6,7 +6,7 @@ const sgt = "0x84810bcF08744d5862B8181f12d17bfd57d3b078" const pool2StakingPool = "0x64A1DB33f68695df773924682D2EFb1161B329e8" const sgtPool2Token = "0x3d07f6e1627DA96B8836190De64c1aED70e3FC55" -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const sgETH = '0x9e52db44d62a8c9762fa847bd2eba9d0585782d1' const supply= await api.call({ abi: 'erc20:totalSupply', target: sgETH}) api.add(sgETH, supply) diff --git a/projects/sharky/helper/index.js b/projects/sharky/helper/index.js index 49a955cc8c3..045a0a1679c 100644 --- a/projects/sharky/helper/index.js +++ b/projects/sharky/helper/index.js @@ -16,7 +16,7 @@ const getLoans = once(async () => { const SHARKY_PROGRAM_ID = "SHARKobtfF1bHhxD2eqftjHBdVSCbKo9JtgK71FhELP"; const SHARKY_IDL = require("./sharky.json"); -async function borrowed(timestamp, _, _1, { api }) { +async function borrowed(api) { let loans = await getLoans() loans = loans.map(i => i.account) api.log('loan count: ',loans.length) @@ -24,13 +24,13 @@ async function borrowed(timestamp, _, _1, { api }) { const time = i.loanState?.taken?.taken?.terms?.time if (!time) return false - return +time.start + +time.duration > timestamp + 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(timestamp, _, _1, { api }) { +async function tvl(api) { let loans = await getLoans() loans = loans.map(i => i.account) api.log('loan count: ',loans.length) diff --git a/projects/shipyard-finance/index.js b/projects/shipyard-finance/index.js index 29e1d975edf..205e43e8fa5 100644 --- a/projects/shipyard-finance/index.js +++ b/projects/shipyard-finance/index.js @@ -9,7 +9,7 @@ const ETHEREUM = { } function chainTvl(chain, config) { - return async (timestamp, ethBlock, _, { api }) => { + 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}) diff --git a/projects/shoebillFinance/index.js b/projects/shoebillFinance/index.js index 03c32faf648..4332636b09d 100644 --- a/projects/shoebillFinance/index.js +++ b/projects/shoebillFinance/index.js @@ -3,7 +3,7 @@ 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(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const shoebillDataProviderAddress = config[api.chain].dataProvider const aggregatedData = await api.call({ target: shoebillDataProviderAddress, abi: protocolDataProviderAbi }) @@ -17,7 +17,7 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { return toUSDTBalances(totalSupplyTvl); } -async function borrowed(timestamp, ethBlock, chainBlocks, { api }) { +async function borrowed(api) { const shoebillDataProviderAddress = config[api.chain].dataProvider const aggregatedData = await api.call({ target: shoebillDataProviderAddress, abi: protocolDataProviderAbi }) diff --git a/projects/shprd/index.js b/projects/shprd/index.js index 7b3b8a420aa..843600e621a 100644 --- a/projects/shprd/index.js +++ b/projects/shprd/index.js @@ -5,7 +5,7 @@ const protocolConfig = { } } -async function tvl(ts, block, _, { api }) { +async function tvl(api) { // 1. get all vaults deployed on chain const factoryAddress = protocolConfig.factories[api.chain].address const factoryState = await api.call({ diff --git a/projects/shui/index.js b/projects/shui/index.js index 87ffbe961e7..5dcf760928c 100644 --- a/projects/shui/index.js +++ b/projects/shui/index.js @@ -5,7 +5,7 @@ const WCFX = ADDRESSES.conflux.WCFX; module.exports = { conflux: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const ratioDepositedBySupply = await api.call({ target: SCFX_TokenAddress, abi: "function ratioDepositedBySupply() public view returns (uint256)" diff --git a/projects/sienna-lend/index.js b/projects/sienna-lend/index.js index 4df3aec406d..939d92585ff 100644 --- a/projects/sienna-lend/index.js +++ b/projects/sienna-lend/index.js @@ -50,7 +50,7 @@ async function getLendMarkets() { } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = await getLendMarkets() data.forEach(i => { api.add(i.address, i.total_supply - i.total_borrows) @@ -59,7 +59,7 @@ async function tvl(_, _b, _cb, { api, }) { return api.getBalances() } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const data = await getLendMarkets() data.forEach(i => { api.add(i.address, i.total_borrows) @@ -69,7 +69,7 @@ async function borrowed(_, _b, _cb, { api, }) { return api.getBalances() } -async function staking(_, _b, _cb, { api, }) { +async function staking(api) { const SIENNA_SINGLE_SIDED_POOLS = [ { address: "secret1ja57vrpqusx99rgvxacvej3vhzhh4rhlkdkd7w", version: 1 }, { address: "secret109g22wm3q3nfys0v6uh7lqg68cn6244n2he4t6", version: 2 }, diff --git a/projects/sienna/index.js b/projects/sienna/index.js index 7b50ebcb469..19115f71699 100644 --- a/projects/sienna/index.js +++ b/projects/sienna/index.js @@ -3,7 +3,7 @@ const { transformDexBalances } = require('../helper/portedTokens') const { PromisePool } = require('@supercharge/promise-pool') const sdk = require('@defillama/sdk') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factiories = ["secret18sq0ux28kt2z7dlze2mu57d3ua0u5ayzwp6v2r", "secret1zvk7pvhtme6j8yw3ryv0jdtgg937w0g0ggu8yy"] const data = [] await Promise.all(factiories.map(i => getExchanges(i, data))) diff --git a/projects/sigmafi/index.js b/projects/sigmafi/index.js index e8783f293b1..926d25bb709 100644 --- a/projects/sigmafi/index.js +++ b/projects/sigmafi/index.js @@ -2,7 +2,7 @@ const { nullAddress } = require('../helper/tokenMapping') const { sumTokensExport } = require('../helper/chain/ergo') const { get } = require('../helper/http') -async function borrowed(_, _b, _cb, { api, }) { +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) diff --git a/projects/silo/index.js b/projects/silo/index.js index b87d4f08528..a78f3fb9259 100644 --- a/projects/silo/index.js +++ b/projects/silo/index.js @@ -35,7 +35,7 @@ const config = { const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac' const fallbackBlacklist = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa",]; -async function tvl(_, block, _1, { api }) { +async function tvl(api) { const siloArray = await getSilos(api) const assets = await api.multiCall({ abi: getAssetsAbi, @@ -46,7 +46,7 @@ async function tvl(_, block, _1, { api }) { return sumTokens2({ api, ownerTokens: toa, blacklistedTokens: [XAI], }) } -async function borrowed(_, block, _1, { api }) { +async function borrowed(api) { const siloArray = await getSilos(api) const assetStates = await api.multiCall({ abi: getAssetStateAbi, diff --git a/projects/silostake/index.js b/projects/silostake/index.js index 2ddc2492d61..101c07d4d95 100644 --- a/projects/silostake/index.js +++ b/projects/silostake/index.js @@ -32,7 +32,7 @@ Object.keys(config).forEach(chain => { const { coinGeckoId, hub } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { // Logic for calculating TVL - just get total ustake. let state = await getState(chain, hub); diff --git a/projects/simps/index.js b/projects/simps/index.js index 48f33de417e..7aac0b83f20 100644 --- a/projects/simps/index.js +++ b/projects/simps/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0x2a7868fd6f3501841d6dab7f4be8a3f8d463b842"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/singularfarm/index.js b/projects/singularfarm/index.js index 36fc064a050..d0670d47f4c 100644 --- a/projects/singularfarm/index.js +++ b/projects/singularfarm/index.js @@ -1,13 +1,10 @@ const sdk = require("@defillama/sdk"); const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { staking } = require("../helper/staking"); -const { addFundsInMasterChef } = require("../helper/masterchef"); const avaxabi = require("./avaxAbi.json"); const bscabi = require("./bscAbi.json"); const polyabi = require("./polyAbi.json"); const ftmabi = require("./ftmAbi.json"); const abiGeneral = require("../helper/abis/masterchef.json"); -const { default: BigNumber } = require("bignumber.js"); const SINGTOKEN = { avax: "0xF9A075C9647e91410bF6C402bDF166e1540f67F0", diff --git a/projects/singularityDAO/masterchef.js b/projects/singularityDAO/masterchef.js deleted file mode 100644 index 9aaeb171d75..00000000000 --- a/projects/singularityDAO/masterchef.js +++ /dev/null @@ -1,48 +0,0 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const { sumTokens } = require("../helper/unwrapLPs"); - -async function addFundsInMasterChef({ - balances, - block, - masterchef, - skipTokens = [], - chain, -}) { - const poolLength = ( - await sdk.api.abi.call({ - target: masterchef, - abi: abi.poolLength, - block, - chain, - }) - ).output; - const calls = Array.from(Array(+poolLength).keys()).map((i) => ({ - params: i, - })); - const response = ( - await sdk.api.abi.multiCall({ - target: masterchef, - calls, - abi: abi.lpToken, - block, - chain, - }) - ).output; - const transform = i => `bsc:${i}`; - const tokensAndOwners = response - .map((r) => [r.output, masterchef]) - .filter(([token]) => !skipTokens.includes(token)); - - return chain === "bsc" - ? sumTokens(balances, tokensAndOwners, block, chain, transform, { - resolveLP: true, - }) - : sumTokens(balances, tokensAndOwners, block, undefined, undefined, { - resolveLP: true, - }); -} - -module.exports = { - addFundsInMasterChef, -}; diff --git a/projects/siren/index.js b/projects/siren/index.js index 5aab6601000..7467aa9412c 100644 --- a/projects/siren/index.js +++ b/projects/siren/index.js @@ -9,7 +9,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, vault, hedgePools } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokensAndOwners = [] if (hedgePools) { const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: hedgePools }) diff --git a/projects/size/index.js b/projects/size/index.js index 2ae21b45c84..ef646be58f8 100644 --- a/projects/size/index.js +++ b/projects/size/index.js @@ -1,6 +1,6 @@ const { nullAddress } = require("../helper/tokenMapping"); -async function tvl(_, _1, _2, { api }) { +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 }) diff --git a/projects/skydex/index.js b/projects/skydex/index.js index 9463b49a7ae..c596728926d 100644 --- a/projects/skydex/index.js +++ b/projects/skydex/index.js @@ -17,7 +17,7 @@ const config = { const blacklistedTokens = [] -async function tvl(timestamp, ethereumBlock, chainBlocks, { api }) { +async function tvl(api) { const { pools } = config[api.chain] const tokensArray = await api.multiCall({ abi: "address[]:getTokens", calls: pools }) const tokens = tokensArray.flat() diff --git a/projects/sleepearn/index.js b/projects/sleepearn/index.js index 15c7d011a76..43a985c7585 100644 --- a/projects/sleepearn/index.js +++ b/projects/sleepearn/index.js @@ -2,7 +2,7 @@ const { getConfig } = require('../helper/cache') const { sumUnknownTokens } = require('../helper/unknownTokens') -async function tvl(_, _b, _cb, { api, }) { +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()) diff --git a/projects/slsd/index.js b/projects/slsd/index.js index 51fd1bcbf39..021ba9014f9 100644 --- a/projects/slsd/index.js +++ b/projects/slsd/index.js @@ -11,7 +11,7 @@ const abis = { "getStakingPoolAddress": "function getStakingPoolAddress(address) view returns (address)", } -async function tvl(_, _1, _2, { api }) { +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) => { diff --git a/projects/smartcredit.js b/projects/smartcredit.js index df93d19195d..411c72e83b8 100644 --- a/projects/smartcredit.js +++ b/projects/smartcredit.js @@ -28,7 +28,7 @@ const fixedIncomeAbi = { const transformNull = i => i.toLowerCase() === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' ? ADDRESSES.null : i -async function staking(_, _b, _cb, { api }) { +async function staking(api) { let { loanRequests } = await cachedGraphQuery('smart-credit', endPoint, `{ loanRequests { id, @@ -53,7 +53,7 @@ module.exports = { } } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { await fixedIncomeTvl(api) await loanTvl(api) return api.getBalances() @@ -91,7 +91,7 @@ async function loanTvl(api) { return api.sumTokens({ ownerTokens, blacklistedTokens: [SMART_CREDIT] }) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { let { loanRequests } = await cachedGraphQuery('smart-credit', endPoint, `{ loanRequests { id, diff --git a/projects/smurfmoney/index.js b/projects/smurfmoney/index.js index ff519ee6930..a82cde6aa2d 100644 --- a/projects/smurfmoney/index.js +++ b/projects/smurfmoney/index.js @@ -1,22 +1,18 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { addFundsInMasterChef } = require("../helper/masterchef"); - const clever = "0x465bc6d1ab26efa74ee75b1e565e896615b39e79"; const mushy = "0x53a5f9d5adc34288b2bff77d27f55cbc297df2b9"; -const clevermasterchef = "0x772dEC3e4A9B18e3B2636a70e11e4e0a90F19575"; -const mushymasterchef = "0xdD4Ddef5be424a6b5645dF4f5169e3cbA6a975Db"; -async function tvl (timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, clevermasterchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [mushy, clever], true, true, clever); - await addFundsInMasterChef(balances, mushymasterchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [mushy, clever], true, true, mushy); - balances[ADDRESSES.ethereum.DAI] = balances["fantom:" + ADDRESSES.fantom.DAI]; - delete balances["fantom:" + ADDRESSES.fantom.DAI]; - return balances; -} +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require('../helper/utils'); -module.exports = { - fantom: { - tvl - } -} \ No newline at end of file +module.exports = mergeExports([ + masterchefExports({ + chain: 'fantom', + masterchef: '0xdD4Ddef5be424a6b5645dF4f5169e3cbA6a975Db', + nativeTokens: [mushy, clever], + }), + masterchefExports({ + chain: 'fantom', + masterchef: '0x772dEC3e4A9B18e3B2636a70e11e4e0a90F19575', + nativeTokens: [mushy, clever], + }) +]) diff --git a/projects/snowball/index.js b/projects/snowball/index.js index 7415e260de4..498cb993ebb 100644 --- a/projects/snowball/index.js +++ b/projects/snowball/index.js @@ -53,7 +53,7 @@ async function getSnowglobeBalances(snowglobes, api) { api.addTokens(tokens, tokenBalances) } -async function tvl(_timestamp, _ethereumBlock, chainBlocks, { api }) { +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] })); diff --git a/projects/snowswap.js b/projects/snowswap.js index f70ae282111..c47bab4977a 100644 --- a/projects/snowswap.js +++ b/projects/snowswap.js @@ -87,7 +87,7 @@ const pools = [ } ] -async function polygon(ts, _block, { polygon: block }, { api }) { +async function polygon(api) { const poolsPolygon = pools.filter(p => p.chain === "polygon") const toa = [] poolsPolygon.forEach(pool => { @@ -96,7 +96,7 @@ async function polygon(ts, _block, { polygon: block }, { api }) { return sumTokens2({ api, tokensAndOwners: toa, }) } -async function ethereum(ts, block, _, { api }) { +async function ethereum(api) { const toa = [] swaps.map(({ addr, coins }) => { coins.forEach(i => toa.push([i.addr, addr])) diff --git a/projects/solid-world/index.js b/projects/solid-world/index.js index 902c2fec282..c3160daef4f 100644 --- a/projects/solid-world/index.js +++ b/projects/solid-world/index.js @@ -5,7 +5,7 @@ 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(timestamp, ethBlock, _, { api }) { +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); @@ -15,7 +15,7 @@ async function tvl(timestamp, ethBlock, _, { api }) { }); } -async function pool2(timestamp, ethBlock, _, { api }) { +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 }), diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index cde8e2fb8f4..e77c43642dd 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -17,8 +17,8 @@ const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-pro const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; -async function borrowed(ts) { - const { api } = arguments[3]; +async function borrowed(api) { + const ts = api.timestamp const network = api.chain; let address = (await getConfig('solv-protocol/funds', addressUrl)); @@ -71,7 +71,7 @@ async function borrowed(ts) { return api.getBalances() } -async function tvl(ts, _, _1, { api }) { +async function tvl(api) { let address = (await getConfig('solv-protocol/funds', addressUrl)); await gm(api, address); @@ -103,7 +103,7 @@ async function mux(api, address) { } -async function mantleTvl(ts, _, _1, { api }) { +async function mantleTvl(api) { let address = (await getConfig('solv-protocol/funds', addressUrl)); await klp(api, address); diff --git a/projects/solv-protocol-rwa/index.js b/projects/solv-protocol-rwa/index.js index fd9e5154268..19ea2fc662f 100644 --- a/projects/solv-protocol-rwa/index.js +++ b/projects/solv-protocol-rwa/index.js @@ -11,16 +11,16 @@ const graphUrlList = { const slotListUrl = 'https://cdn.jsdelivr.net/gh/solv-finance-dev/solv-protocol-rwa-slot/slot.json'; -async function tvl(ts, _, _1, { api }) { +async function tvl(api) { const network = api.chain; - const pools = await getGraphData(ts, network, api); + 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, ts] + params: [index.poolId, api.timestamp] })), }) diff --git a/projects/solv-protocol/index.js b/projects/solv-protocol/index.js index 92a62824922..d5674bbe3f6 100644 --- a/projects/solv-protocol/index.js +++ b/projects/solv-protocol/index.js @@ -5,8 +5,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const tokenListsApiEndpoint = "https://token-list.solv.finance/vouchers-prod.json" -async function tvl() { - const { api } = arguments[3] +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 }) diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index ccd6eeabd7e..8da1ece6289 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -10,8 +10,13 @@ const { } = require("./cellar-constants"); -async function ethereum_tvl(timestamp, block, chainBlocks, { api }) { +async function ethereum_tvl(api) { const balances = {}; + const { block } = api + const chainBlocks = { + [api.chain]: block + } + const baseOptions = { balances, chainBlocks }; // Sum TVL for all v0.8.15 Cellars @@ -44,8 +49,12 @@ async function ethereum_tvl(timestamp, block, chainBlocks, { api }) { return balances; } -async function arbitrum_tvl(timestamp, block, chainBlocks, { api }) { +async function arbitrum_tvl(api) { const balances = {}; + const { block } = api + const chainBlocks = { + [api.chain]: block + } const baseOptions = { balances, chainBlocks }; await v2.sumTvl({ diff --git a/projects/songtech/index.js b/projects/songtech/index.js index 6d3dbe160a6..28bf81f4689 100644 --- a/projects/songtech/index.js +++ b/projects/songtech/index.js @@ -3,7 +3,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0xDe67d94C349960cF80625Bfe762aAe9428844763"; const contract2 = "0x3713c98b942B80178985bBbAA61Fc916B4D4D39A" -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owners: [contract,contract2], api }); } diff --git a/projects/sonicooo/index.js b/projects/sonicooo/index.js index 29a2d8d8a07..9834fcee16a 100644 --- a/projects/sonicooo/index.js +++ b/projects/sonicooo/index.js @@ -11,7 +11,7 @@ query get_tvl($timestamp: Int!) { } `; -async function tvl(timestamp, block) { +async function tvl({timestamp}, block) { const { sonicDayData } = await request(graphUrl, graphQuery, { timestamp, }); diff --git a/projects/sora.js b/projects/sora.js index e01d0984871..b879e711ebf 100644 --- a/projects/sora.js +++ b/projects/sora.js @@ -1,6 +1,6 @@ const { post } = require('./helper/http') -async function tvl(timestamp) { +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", diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js index 2b78db764bc..827fc1761b5 100644 --- a/projects/sovryn-dex/index.js +++ b/projects/sovryn-dex/index.js @@ -3,7 +3,7 @@ const { getConfig } = require('../helper/cache') const { getUniqueAddresses } = require('../helper/utils') const { transformDexBalances } = require('../helper/portedTokens') -async function tvl(_, _b, _cb, { api, }) { +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' }) diff --git a/projects/sovryn-lending/index.js b/projects/sovryn-lending/index.js index d4a240c1736..75222ea5273 100644 --- a/projects/sovryn-lending/index.js +++ b/projects/sovryn-lending/index.js @@ -1,7 +1,7 @@ const { getConfig } = require('../helper/cache') const { getUniqueAddresses } = require('../helper/utils') -async function tvl(_, _b, _cb, { api, }) { +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) @@ -9,7 +9,7 @@ async function tvl(_, _b, _cb, { api, }) { return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) } -async function borrowed(_, _b, _cb, { api, }) { +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) diff --git a/projects/spacebar/index.js b/projects/spacebar/index.js index 8b265fd3097..c36ea596eb4 100644 --- a/projects/spacebar/index.js +++ b/projects/spacebar/index.js @@ -22,7 +22,7 @@ const tvlQuery = ` // } // } -async function tvl(_, _b, _cb, { api, }) { +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',}) diff --git a/projects/spadefinance/index.js b/projects/spadefinance/index.js index 304d6baa296..ddaece14bdb 100644 --- a/projects/spadefinance/index.js +++ b/projects/spadefinance/index.js @@ -1,30 +1,11 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking, stakingPricedLP } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x7c799Af459C86069FEa65ee8c0ff3c059cDC021D', + nativeToken: '0x300e170EC32d09A4AA312A21c6bEd1C001Dcd996', +}) -const spadechef = "0x7c799Af459C86069FEa65ee8c0ff3c059cDC021D" -const spade = "0x300e170EC32d09A4AA312A21c6bEd1C001Dcd996" -const spadeFtmLP = "0xD24Eaf52b1cb0624D7eEBCFE40DE59F96d3bDb1b" -const spadeUsdcLP = "0x8080233587CE98d6CA094823aB77AE20dA5f35Ac"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, spadechef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [spade, spadeFtmLP, spadeUsdcLP], true, true, spade); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: stakingPricedLP(spadechef, spade, "fantom", spadeFtmLP, "fantom"), - pool2: pool2Exports(spadechef, [spadeFtmLP, spadeUsdcLP], "fantom"), - }, - hallmarks: [ +module.exports.hallmarks = [ [1647734400, "Rug Pull"] ] -} - diff --git a/projects/sparkswap/index.js b/projects/sparkswap/index.js index f84ff6d30bc..154c1ac9e59 100644 --- a/projects/sparkswap/index.js +++ b/projects/sparkswap/index.js @@ -39,7 +39,7 @@ module.exports = mergeExports([ ]); // add amount in pulsex farm -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { let rehypothecations = await api.fetchList({ lengthAbi: "uint256:poolLength", itemAbi: diff --git a/projects/specfinance.js b/projects/specfinance.js index 04af214f9a2..924c40e3630 100644 --- a/projects/specfinance.js +++ b/projects/specfinance.js @@ -17,8 +17,7 @@ const astroFarms = [ 'terra1rasvh4nv8znpjg6jtkzxjskfynze98h9zv4qn8ese7tkwf0zjaaq0z60t8', ] -async function terra2() { - const { api } = arguments[3] +async function terra2(api) { const { chain } = api for (const farm of astroFarms) { const { total_bond_share } = await queryContract({ contract: farm, data: { state: {} }, chain }) diff --git a/projects/spectrefi/index.js b/projects/spectrefi/index.js index 156c4c0bf2c..75751e0011f 100644 --- a/projects/spectrefi/index.js +++ b/projects/spectrefi/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x0a53F16a00c593cbe5F6C890E751338396FE680f" -const spect = "0x2834d4F4cC40bd7D78c07E2D848358364222C272" -const spectFtmLP = "0x5547F5851f07dA5D98F14A36faAB1a53Bb272700" -const spectUsdcLP = "0xb326bbaC9Ca368FF20D0Fe1a51fF25f5F9C1E310"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [spect, spectFtmLP, spectUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, spect, "fantom"), - pool2: pool2Exports(chef, [spectFtmLP, spectUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x0a53F16a00c593cbe5F6C890E751338396FE680f', + nativeToken: '0x2834d4F4cC40bd7D78c07E2D848358364222C272', +}) \ No newline at end of file diff --git a/projects/sperax-demeter/index.js b/projects/sperax-demeter/index.js index ba6ffd03eec..c6d6df80816 100644 --- a/projects/sperax-demeter/index.js +++ b/projects/sperax-demeter/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const farms = await api.call({ target: '0xC4fb09E0CD212367642974F6bA81D8e23780A659', abi: 'function getFarmList() view returns (address[])', diff --git a/projects/sperax/index.js b/projects/sperax/index.js index 3576cf10d26..69441ce9944 100644 --- a/projects/sperax/index.js +++ b/projects/sperax/index.js @@ -5,8 +5,7 @@ const arbStakingAddr = "0x2e2071180682Ce6C247B1eF93d382D509F5F6A17"; const SPA = '0x5575552988a3a80504bbaeb1311674fcfd40ad4b'; const ethSPA = '0xB4A3B0Faf0Ab53df58001804DdA5Bfc6a3D59008'; -async function tvl() { - const { api } = arguments[3] +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}) diff --git a/projects/spice-finance/index.js b/projects/spice-finance/index.js index a5e83ababe8..20e18f48028 100644 --- a/projects/spice-finance/index.js +++ b/projects/spice-finance/index.js @@ -5,7 +5,7 @@ const vaults = [ '0xfC287513E2DD58fbf952eB0ED05D511591a6215B', // Blur ] -async function tvl(_1, _2, chainBlocks, { api }) { +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) diff --git a/projects/spiral-dao/index.js b/projects/spiral-dao/index.js index 839789b86da..31eb0be0df7 100644 --- a/projects/spiral-dao/index.js +++ b/projects/spiral-dao/index.js @@ -6,7 +6,7 @@ const MASTERMIND = "0xFACE8DED582816E2f2cD4C6cc1cbD1aCCc9df65E" const STAKING = "0x6701e792b7cd344bae763f27099eeb314a4b4943" const COIL = '0x823E1B82cE1Dc147Bbdb25a203f046aFab1CE918' -async function tvl(_, _1, _2, { api }) { +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, }) diff --git a/projects/spiral-finance/index.js b/projects/spiral-finance/index.js index 48cb5553c0d..58acbcd87ed 100644 --- a/projects/spiral-finance/index.js +++ b/projects/spiral-finance/index.js @@ -77,12 +77,12 @@ async function calcTvl(block, spr, mastermind, pool2, api) { return balances; } -async function tvl(timestamp, block, chainBlocks, { api }) { - return await calcTvl(chainBlocks.fantom, spr, mastermind, false, api); +async function tvl(api) { + return await calcTvl(api.block, spr, mastermind, false, api); } -async function pool2(timestamp, block, chainBlocks, { api }) { - return await calcTvl(chainBlocks.fantom, spr, mastermind, true, api); +async function pool2(api) { + return await calcTvl(api.block, spr, mastermind, true, api); } module.exports = { diff --git a/projects/spool-fi-sreth/index.js b/projects/spool-fi-sreth/index.js index 07ad0e56115..37b11e7b184 100644 --- a/projects/spool-fi-sreth/index.js +++ b/projects/spool-fi-sreth/index.js @@ -5,7 +5,7 @@ const abi = { const ethContract = "0x5d6ac99835b0dd42ed9ffc606170e59f75a88fde"; const spoolLens = '0x8aa6174333F75421903b2B5c70DdF8DA5D84f74F'; -async function eth(timestamp, ethBlock, chainBlocks, { api }) { +async function eth(api) { const tvlETH = await api.call({ target: spoolLens, abi: abi["getSmartVaultAssetBalances"], diff --git a/projects/spool-v2/index.js b/projects/spool-v2/index.js index 0e4a597af51..0df04b0366d 100644 --- a/projects/spool-v2/index.js +++ b/projects/spool-v2/index.js @@ -27,7 +27,7 @@ const allStrategiesQuery = ` Object.keys(config).forEach((chain) => { const { subgraphUrl } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + 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); diff --git a/projects/spool/index.js b/projects/spool/index.js index d3ccf6cdb7b..1daae2ff2d8 100644 --- a/projects/spool/index.js +++ b/projects/spool/index.js @@ -18,7 +18,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { controller, masterSpool, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/squidstake/index.js b/projects/squidstake/index.js index b0eea47cd06..cd832c7b553 100644 --- a/projects/squidstake/index.js +++ b/projects/squidstake/index.js @@ -1,81 +1,10 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { BigNumber } = require("bignumber.js"); -const { stakingPricedLP } = require("../helper/staking"); - const squidToken = "0xAE61e7dc989718E700C046a2483e93513eDCA484"; const masterchef = "0x86A47ddD4c6522251d6a5A5800f3F24c03332CB4"; -const squidBnbLP = "0x2e0484D3684701dC032f29cce59c785A5837B34E"; - -const solWbnbLP = { - lpToken: "0x9d5B48AD38748c6DBD77399eccE3FD8B6f980456", - token0: ["solana"], - token1: ADDRESSES.bsc.WBNB, -}; - -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)'; - -async function tvl(timestamp, chain, chainBlocks) { - let balances = {}; - - const transformedAddress = i => `bsc:${i}`; - - await addFundsInMasterChef( - balances, - masterchef, - chainBlocks.bsc, - "bsc", - transformedAddress, - undefined, - [squidToken, squidBnbLP, solWbnbLP.lpToken] - ); - - let solWbnbLPBal = ( - await sdk.api.erc20.balanceOf({ - target: solWbnbLP.lpToken, - owner: masterchef, - block: chainBlocks.bsc, - chain: "bsc", - }) - ).output; - - let solWbnbLPSupply = ( - await sdk.api.erc20.totalSupply({ - target: solWbnbLP.lpToken, - block: chainBlocks.bsc, - chain: "bsc", - }) - ).output; - - let solWbnbLPReserves = ( - await sdk.api.abi.call({ - target: solWbnbLP.lpToken, - abi: getReserves, - block: chainBlocks.bsc, - chain: "bsc", - }) - ).output; - - let token0Bal = Number( - solWbnbLPReserves._reserve0 * (solWbnbLPBal / solWbnbLPSupply) - ); - token0Bal = BigNumber(token0Bal) - .div(10 ** 18) - .toFixed(0); - let token1Bal = Number( - solWbnbLPReserves._reserve1 * (solWbnbLPBal / solWbnbLPSupply) - ); - - sdk.util.sumSingleBalance(balances, solWbnbLP.token0, token0Bal); - sdk.util.sumSingleBalance(balances, `bsc:${solWbnbLP.token1}`, token1Bal); - return balances; -} +const { masterchefExports, } = require('../helper/unknownTokens') -module.exports = { - bsc: { - tvl, - pool2: stakingPricedLP(masterchef, squidToken, "bsc", squidBnbLP, "wbnb", true), - }, -}; +module.exports = masterchefExports({ + chain: 'bsc', + masterchef, + nativeToken: squidToken, +}) \ No newline at end of file diff --git a/projects/stUSDT/index.js b/projects/stUSDT/index.js index d52f1f79b00..a594f2cdc48 100644 --- a/projects/stUSDT/index.js +++ b/projects/stUSDT/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') module.exports = { tron: { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const supply = await api.call({ abi: "erc20:totalSupply", target: "TThzxNRLrW2Brp9DcTQU8i4Wd9udCWEdZ3" }) return { [ADDRESSES.ethereum.USDT]: supply/1e12 @@ -9,7 +9,7 @@ module.exports = { } }, ethereum: { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const supply = await api.call({ abi: "erc20:totalSupply", target: "0x25ec98773d7b4ced4cafab96a2a1c0945f145e10" }) return { [ADDRESSES.ethereum.USDT]: supply/1e12 diff --git a/projects/stability/index.js b/projects/stability/index.js index 52843fc4205..b2c1d60017f 100644 --- a/projects/stability/index.js +++ b/projects/stability/index.js @@ -12,7 +12,7 @@ const config = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async function (_, _1, _2, { api }) { + tvl: async function (api) { // Stability Platform Vaults // Get all vaults const vaults = await api.call({ abi: abi.vaultAddresses, target: config[chain].vaultManager }); diff --git a/projects/stabilizefi/index.js b/projects/stabilizefi/index.js index 9e5ddf9ba22..326453776af 100644 --- a/projects/stabilizefi/index.js +++ b/projects/stabilizefi/index.js @@ -18,7 +18,7 @@ const BTC_TROVE_MANAGER_ADDRESS = "0x56c194F1fB30F8cdd49E7351fC9C67d8C762a86F"; const DAI_TROVE_MANAGER_ADDRESS = "0x54b35c002468a5Cc2BD1428C011857d26463ecbC"; // --- staking --- -async function stakingTvl(_, _ethBlock, chainBlocks, { api }) { +async function stakingTvl(api) { const StakesBalance = await api.call({ target: TOKEN_STAKING_ADDRESS, abi: "uint256:totalTokenStaked", }) return { [SET_ADDRESS]: StakesBalance } } diff --git a/projects/stablebase.js b/projects/stablebase.js index d27a89f69f9..a1b26710878 100644 --- a/projects/stablebase.js +++ b/projects/stablebase.js @@ -9,7 +9,7 @@ const registryABI = { poolAddresses: "address[]:poolAddresses", } -async function stablePoolTVL(_, block, _cb, { api }) { +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])}) diff --git a/projects/stablecomp/index.js b/projects/stablecomp/index.js index 6427ac5bef6..723ba16d940 100644 --- a/projects/stablecomp/index.js +++ b/projects/stablecomp/index.js @@ -3,7 +3,7 @@ const { getConfig } = require('../helper/cache') const chains = ['ethereum',] chains.forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const data = await getConfig('stablecomp', 'https://services.stablecomp.com/vaults') let { vaults } = data[chain] vaults = Object.values(vaults) diff --git a/projects/stablz/index.js b/projects/stablz/index.js index 9c3e33e54f7..362e2118b0a 100644 --- a/projects/stablz/index.js +++ b/projects/stablz/index.js @@ -4,7 +4,7 @@ const { staking } = require("../helper/staking"); const USDT = ADDRESSES.ethereum.USDT; const STABLZ_CANNAVEST_RWA_POOL = "0xa030f3e984A08B5Ada0377A9f4EaAF846E6A2cB0"; -async function borrowed(_, block, _1, { api }) { +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) diff --git a/projects/stackswap/api.js b/projects/stackswap/api.js index 7b48598265b..56d3b7ddd32 100644 --- a/projects/stackswap/api.js +++ b/projects/stackswap/api.js @@ -10,7 +10,7 @@ module.exports = { stacks: { tvl } } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const data = [] const { value: pairCount } = await call({ target: factory, abi: 'get-pair-count' }) const cache = await getCache('stackswap', 'stacks-config') diff --git a/projects/stader/index.js b/projects/stader/index.js index 3bdf24ccc55..487a7b159b7 100644 --- a/projects/stader/index.js +++ b/projects/stader/index.js @@ -76,7 +76,7 @@ module.exports = { tvl: nearTvl, }, ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const res = await getData(); const nodeOperatorRegistry = "0x4f4bfa0861f62309934a5551e0b2541ee82fdcf1"; const nodeOperatorCount = await api.call({ diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js index b29b1b83c3c..6bb0f8b7872 100644 --- a/projects/stakedao/index.js +++ b/projects/stakedao/index.js @@ -19,7 +19,7 @@ async function strategiesCurveBalancer(timestamp, block) { return lgv4 } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { let balances = {} ///////////////////////////////////////////////////////////////////// // --- STRATEGIES V2 @@ -226,7 +226,7 @@ async function staking(timestamp, block) { }) } -async function polygon(timestamp, ethBlock, chainBlocks, { api, }) { +async function polygon(api) { const crv_3crv_vault_polygon = { contract: '0x7d60F21072b585351dFd5E8b17109458D97ec120', } @@ -243,7 +243,7 @@ async function getBalances(api, vaults, { balances = {} } = {}) { return balances } -async function avax(timestamp, ethBlock, chainBlocks, { api }) { +async function avax(api) { const crv_3crv_vault_avalanche = { contract: '0x0665eF3556520B21368754Fb644eD3ebF1993AD4', } @@ -254,7 +254,7 @@ async function avax(timestamp, ethBlock, chainBlocks, { api }) { return getBalances(api, vaultsAvalanche) } -async function bsc(timestamp, ethBlock, chainBlocks, { api }) { +async function bsc(api) { const btcEPS_vault_bsc = { contract: '0xf479e1252481360f67c2b308F998395cA056a77f', } diff --git a/projects/stakedotlink-index/index.js b/projects/stakedotlink-index/index.js index 50790e0aa1b..6bce1a6532b 100644 --- a/projects/stakedotlink-index/index.js +++ b/projects/stakedotlink-index/index.js @@ -1,6 +1,6 @@ const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +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, }) diff --git a/projects/stakedotlink/index.js b/projects/stakedotlink/index.js index 0a75af05b98..77fc4608923 100644 --- a/projects/stakedotlink/index.js +++ b/projects/stakedotlink/index.js @@ -6,7 +6,7 @@ const linkToken = ADDRESSES.ethereum.LINK; const linkStakingPool = "0xb8b295df2cd735b15BE5Eb419517Aa626fc43cD5"; const linkPriorityPool = "0xDdC796a66E8b83d0BcCD97dF33A6CcFBA8fd60eA"; -async function tvl(timestamp, ethBlock, chainBlocks, { api}) { +async function tvl(api) { const bals = await Promise.all([ api.call({ target: linkStakingPool, abi: 'uint256:totalStaked', }), api.call({ target: linkPriorityPool, abi: 'uint256:totalQueued', }), @@ -15,7 +15,7 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api}) { return api.getBalances() } -async function staking(timestamp, ethBlock, chainBlocks, { api}) { +async function staking(api) { const bal = await api.call({ abi: 'uint256:totalStaked', target: sdlStakingPool}) api.add(sdlToken, bal) return api.getBalances() diff --git a/projects/stakerz-io/index.js b/projects/stakerz-io/index.js index 548dfdf5725..823636ca625 100644 --- a/projects/stakerz-io/index.js +++ b/projects/stakerz-io/index.js @@ -1,5 +1,5 @@ const { sumUnknownTokens } = require('../helper/unknownTokens') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const vaults = [ '0x938d7EEC5130016AFA6f97DB18c3e5E869AF4D85', '0x4B247bA8EBbf1331ADFaa8096309FF2693C3243C', diff --git a/projects/stakesteak/index.js b/projects/stakesteak/index.js index 013673ec782..0513ecb8418 100644 --- a/projects/stakesteak/index.js +++ b/projects/stakesteak/index.js @@ -1,32 +1,29 @@ const ADDRESSES = require('../helper/coreAssets.json') -const {addFundsInMasterChef} = require('../helper/masterchef') -const sdk = require('@defillama/sdk') -const {staking} = require('../helper/staking') +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(_t, _b, chainBlocks){ - const block = chainBlocks.fantom - const fusd = await sdk.api.erc20.balanceOf({ - target: '0xad84341756bf337f5a0164515b1f6f993d194e1f', - owner: ifusd, - block, - chain: 'fantom' - }) - const balances = { - [tusd]: fusd.output - } - const transform = i => `fantom:${i}` - await addFundsInMasterChef(balances, '0x5bC37CAAA3b490b65F5A50E2553f4312126A8b7e', block, 'fantom', transform, poolInfoAbi, [ifusd,"0xa0828eE559110b041DEdbf10Ae0cf42274251de1"]) - return balances +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', 'fantom'), - tvl - }, +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/index.js b/projects/stakestone/index.js index e4dbe62ab94..224ba93e6dd 100644 --- a/projects/stakestone/index.js +++ b/projects/stakestone/index.js @@ -4,13 +4,13 @@ const AssetVault = '0x9485711f11B17f73f2CCc8561bcae05BDc7E9ad9'; const VaultStrategy = '0x396aBF9fF46E21694F4eF01ca77C6d7893A017B2'; const StoneOnManta = '0xEc901DA9c68E90798BbBb74c11406A32A70652C3'; -const ethTvl = async (timestamp, block, _, { api }) => { +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 (timestamp, block, _, { api }) => { +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 diff --git a/projects/stakewise/index.js b/projects/stakewise/index.js index 583cdffd684..a02caf99249 100644 --- a/projects/stakewise/index.js +++ b/projects/stakewise/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const { getLogs } = require('../helper/cache/getLogs') -async function tvl(timestamp, block, _1, { api }) { +async function tvl(api) { const lsBals = await api.multiCall({ abi: 'erc20:totalSupply', calls: ['0x20BC832ca081b91433ff6c17f85701B6e92486c5', '0xFe2e637202056d30016725477c5da089Ab0A043A']}) const solosValidators = await getLogs({ diff --git a/projects/standard-mode/index.js b/projects/standard-mode/index.js index 27125032b1e..9984d1247d4 100644 --- a/projects/standard-mode/index.js +++ b/projects/standard-mode/index.js @@ -6,7 +6,7 @@ const config = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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, }) diff --git a/projects/standard-smart-vaults/index.js b/projects/standard-smart-vaults/index.js index 9dfd9ff4140..062e42d626d 100644 --- a/projects/standard-smart-vaults/index.js +++ b/projects/standard-smart-vaults/index.js @@ -28,7 +28,7 @@ module.exports = { methodology: 'counts the aggregated assets locked in The Standard Smart Vaults.', start: START_TS, arbitrum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { return sumTokens2({ owners: await getOwners(api), tokens, api}) } } diff --git a/projects/starfish-finance/index.js b/projects/starfish-finance/index.js index cdfde2cfad1..57c906139bf 100644 --- a/projects/starfish-finance/index.js +++ b/projects/starfish-finance/index.js @@ -8,7 +8,7 @@ const addresses = { }, } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const vault = '0x496F6125E1cd31f268032bd4cfaA121D203639b7' const vaultQuery = `{ pools(first: 1000 offset: 0 ) { nodes { tokensList } } }` diff --git a/projects/starfish-liq-staking/index.js b/projects/starfish-liq-staking/index.js index ba01ddbbbd6..6a14deb283a 100644 --- a/projects/starfish-liq-staking/index.js +++ b/projects/starfish-liq-staking/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') module.exports = { astar: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const bal = await api.call({ abi: 'uint256:internalDotBalance', target: '0x5E60Af4d06A9fc89eb47B39b5fF1b1b42a19ef39'}) api.add(ADDRESSES.astar.DOT, bal) } diff --git a/projects/stargatefinance/index.js b/projects/stargatefinance/index.js index d33ca543d9a..3abc684a85e 100644 --- a/projects/stargatefinance/index.js +++ b/projects/stargatefinance/index.js @@ -63,7 +63,7 @@ const CONFIG = { module.exports = { goerli: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { return { [ADDRESSES.ethereum.WETH]: await api.call({ abi: 'erc20:balanceOf', target: '0xdD69DB25F6D620A7baD3023c5d32761D353D3De9', params: ['0x88124ef4a9ec47e691f254f2e8e348fd1e341e9b'], }), } @@ -77,7 +77,7 @@ Object.keys(CONFIG).forEach((chain) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + 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 }) diff --git a/projects/starknet/index.js b/projects/starknet/index.js index 2b28c7aa5ad..4d5540e6570 100644 --- a/projects/starknet/index.js +++ b/projects/starknet/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { get } = require("../helper/http"); const { sumTokens2 } = require("../helper/unwrapLPs"); -async function tvl(_, _b, _c, { api }) { +async function tvl(api) { const mapping = await get( `https://raw.githubusercontent.com/starknet-io/starknet-addresses/master/bridged_tokens/mainnet.json` ); diff --git a/projects/steadefi/index.js b/projects/steadefi/index.js index 8db61368907..2b4523c0b65 100644 --- a/projects/steadefi/index.js +++ b/projects/steadefi/index.js @@ -24,7 +24,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { fsglp } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const chainId = api.getChainId() let [lendingPools, vaults] = await getProjectInfo() lendingPools = lendingPools.filter(i => i.chainId === chainId).map(i => i.address) @@ -60,7 +60,7 @@ Object.keys(config).forEach(chain => { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const chainId = api.getChainId() let [lendingPools, vaults] = await getProjectInfo() lendingPools = lendingPools.filter(i => i.chainId === chainId).map(i => i.address) diff --git a/projects/steakHut-lb/index.js b/projects/steakHut-lb/index.js index 025ec56809d..c1150bedcf0 100644 --- a/projects/steakHut-lb/index.js +++ b/projects/steakHut-lb/index.js @@ -32,7 +32,7 @@ const _vaults = { ], } -async function tvl(_, block, _1, { api }) { +async function tvl(api) { //get the total shares from all vaults const vaults = _vaults[api.chain] const depositTokens = await api.multiCall({ abi: abi.want, calls: vaults }) @@ -73,7 +73,7 @@ async function tvl(_, block, _1, { api }) { } } -async function staking(_, block, _1, { api }) { +async function staking(api) { const XSTEAK_ADDRESS = '0x902Aa4cC3b463c84541C9C1DeDF50620C99950B9' const STEAK_ADDRESS_AVAX = '0xb279f8dd152b99ec1d84a489d32c35bc0c7f5674' diff --git a/projects/steakHut/index.js b/projects/steakHut/index.js index 771e45a35af..a2f6e7f8d4e 100644 --- a/projects/steakHut/index.js +++ b/projects/steakHut/index.js @@ -3,7 +3,7 @@ const { staking } = require('../helper/staking'); const steakMasterChef = '0xddBfBd5dc3BA0FeB96Cb513B689966b2176d4c09'; -async function tvl(timestamp, block, chainBlocks, { api }) { +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() diff --git a/projects/stealthpad/index.js b/projects/stealthpad/index.js index bd393a8f0fa..ccf9e75aa02 100644 --- a/projects/stealthpad/index.js +++ b/projects/stealthpad/index.js @@ -15,7 +15,7 @@ Object.keys(config).forEach(chain => { const { lockerManagerV1, stakingContract, stakingToken, lps } = config[chain] module.exports[chain] = { tvl, } - async function tvl(_, _b, _cb, { api, }) { + 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, }) diff --git a/projects/steer/index.js b/projects/steer/index.js index 78037b01e08..ac7bf88aec8 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -142,7 +142,7 @@ const query = `{vaults(first: 1000, where: {totalLPTokensIssued_not: "0", lastSn supportedChains.forEach(chain => { module.exports[chain.identifier] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const data = await cachedGraphQuery('steer/' + chain.identifier, chain.subgraphEndpoint, query,) const vaults = data.vaults.map((vault) => vault.id) diff --git a/projects/stellaswap.js b/projects/stellaswap.js index a637d4ce780..eba0af0d0a9 100644 --- a/projects/stellaswap.js +++ b/projects/stellaswap.js @@ -11,7 +11,7 @@ const dexTVL = getUniTVL({ useDefaultCoreAssets: true, }) -async function stablePoolTVL(_, _b, _c, { api }) { +async function stablePoolTVL(api) { const pools = [ // Legacy '0x422b5b7a15fb12c518aa29f9def640b4773427f8', // SFL - 4pool V1 (nomad) diff --git a/projects/stellaxyz-io/index.js b/projects/stellaxyz-io/index.js index 6775d0267a8..89688ea948c 100644 --- a/projects/stellaxyz-io/index.js +++ b/projects/stellaxyz-io/index.js @@ -22,7 +22,7 @@ const strategyQuery = `query Strategy { strategy( where: {chain_id: {_eq: 42 Object.keys(config).forEach(chain => { const { endpoint, factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { await getStraegyTvl2() const { pools } = await cachedGraphQuery('stellaxyz/lending-pool/' + api.chain, endpoint, query) const lendingContracts = pools.map(i => i.poolAddress) diff --git a/projects/steroids/index.js b/projects/steroids/index.js index b35ffdee16d..41cbb907f88 100644 --- a/projects/steroids/index.js +++ b/projects/steroids/index.js @@ -29,7 +29,7 @@ const CURVE_CONTRACTS = [{ // pBTCsBTC curve token: '0xDE5331AC4B3630f94853Ff322B66407e0D6331E8', }] -async function tvl(timestamp, block, _, { api }) { +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})} diff --git a/projects/strater/index.js b/projects/strater/index.js index d77eb6dfaed..d6ed56ed58a 100644 --- a/projects/strater/index.js +++ b/projects/strater/index.js @@ -26,7 +26,7 @@ function asIntN(int, bits = 32) { return Number(BigInt.asIntN(bits, BigInt(int))); } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const bucketusVaultObjs = await sui.getObject(BUCKETUS_VAULT_ID); const bucketusPoolObjs = await sui.getObject(BUCK_USDC_POOL_ID); diff --git a/projects/stratumexchange/index.js b/projects/stratumexchange/index.js index 510fe3ec714..b674259e44d 100644 --- a/projects/stratumexchange/index.js +++ b/projects/stratumexchange/index.js @@ -17,7 +17,7 @@ module.exports = { Object.keys(config).forEach(chain => { const factory = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, {api,}) => { + 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)', diff --git a/projects/stream/index.js b/projects/stream/index.js index 88c1c204bf8..b873277d156 100644 --- a/projects/stream/index.js +++ b/projects/stream/index.js @@ -12,7 +12,7 @@ const vaults = Object.values({ const TBILL_VAULT_CLUB_BOND_CONTRACT = "0xd86FFB404147163e19E010a0e9d4995E0e36F335"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const bals = await api.multiCall({ abi: abi.totalBalance, calls: vaults}) const vaultParams = await api.multiCall({ abi: abi.vaultParams, calls: vaults}) const tokens = vaultParams.map(i => i.asset) diff --git a/projects/streamflow/index.js b/projects/streamflow/index.js index 517cc1b6814..0c829ce41ad 100644 --- a/projects/streamflow/index.js +++ b/projects/streamflow/index.js @@ -30,12 +30,12 @@ async function getCachedApiRespnse() { return apiResponse; } -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { return { tether: getValueForKey(await getCachedApiRespnse(), api.chain, TVL_KEY), } } -async function vesting(_, _1, _2, { api }) { +async function vesting(api) { return { tether: getValueForKey(await getCachedApiRespnse(), api.chain, VESTING_KEY), } diff --git a/projects/struct-finance/index.js b/projects/struct-finance/index.js index a8b9bba245c..a60f5ee613e 100644 --- a/projects/struct-finance/index.js +++ b/projects/struct-finance/index.js @@ -9,7 +9,7 @@ const { aptFarmABI } = require("./constants"); -async function tvl(ts, _, __, { api }) { +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, }); diff --git a/projects/sturdy-v2/index.js b/projects/sturdy-v2/index.js index 5a691474e7c..b831810d8d3 100644 --- a/projects/sturdy-v2/index.js +++ b/projects/sturdy-v2/index.js @@ -13,7 +13,7 @@ module.exports = { Object.keys(config).forEach(chain => { const dataProvider = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const aggregators = await api.call({target: dataProvider, abi: abi['getVaults'], }) aggregators.forEach((aggregator) => api.add(aggregator.asset, (aggregator.totalAssets - aggregator.totalDebt))) @@ -21,7 +21,7 @@ Object.keys(config).forEach(chain => { strategies.forEach((strategy) => api.add(strategy.pairData.asset, strategy.pairData.totalAsset)) strategies.forEach((strategy) => api.add(strategy.pairData.collateral, strategy.pairData.totalCollateral)) }, - borrowed: async (_, _b, _cb, { api, }) => { + 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); diff --git a/projects/sudo-finance/index.js b/projects/sudo-finance/index.js index 07776decc1d..0e980bfaba8 100644 --- a/projects/sudo-finance/index.js +++ b/projects/sudo-finance/index.js @@ -3,7 +3,7 @@ const sui = require("../helper/chain/sui"); const LIQUIDITY_POOL_VAULT = "0x5e288c9acbb8746bb22f5d5c3af5e0ba6a7bf04fb276772c1035004f6ca98f37"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const depositVaultFields = await sui.getDynamicFieldObjects({ parent: LIQUIDITY_POOL_VAULT, }); diff --git a/projects/sudoswap-v2/index.js b/projects/sudoswap-v2/index.js index d16438cc7d4..c7946391ca8 100644 --- a/projects/sudoswap-v2/index.js +++ b/projects/sudoswap-v2/index.js @@ -1,7 +1,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { target, fromBlock } = config[api.chain] const multicallAddy = '0xca11bde05977b3631167028862be2a173976ca11' const logs1155 = await getLogs({ diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index 13a87f02d10..59c1aa00f3e 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -32,7 +32,7 @@ query get_pairs($lastId: String, $block: Int) { module.exports = { methodology: 'Sum up all the ETH in pools and count whitelisted NFT values as well (price fetched from chainlink)', ethereum: { - tvl: async (timestamp, block, chainBlocks, { api }) => { + tvl: async (api) => { const data = await graphFetchById({ endpoint: 'https://api.thegraph.com/subgraphs/name/zeframlou/sudoswap', query, @@ -70,7 +70,7 @@ const { nullAddress, } = require('../helper/unwrapLPs') module.exports = { methodology: 'Sum up all the ETH & nfts in pools', ethereum: { - tvl: async (_, block, _1, { api }) => { + tvl: async (api) => { const PairFactory = '0xb16c1342E617A5B6E4b631EB114483FDB289c0A4' const logs = await getLogs({ api, diff --git a/projects/sui-pearl/index.js b/projects/sui-pearl/index.js index 4bc01f2dc26..408ef42239f 100644 --- a/projects/sui-pearl/index.js +++ b/projects/sui-pearl/index.js @@ -2,8 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { default: BigNumber } = require("bignumber.js"); const sui = require("../helper/chain/sui"); -async function suiTVL() { - const { api } = arguments[3]; +async function suiTVL(api) { //get list pool flowx const listPoolFlowX = ( diff --git a/projects/suilend/index.js b/projects/suilend/index.js index 880b64a3429..3104286932a 100644 --- a/projects/suilend/index.js +++ b/projects/suilend/index.js @@ -2,8 +2,7 @@ const sui = require("../helper/chain/sui"); const SUILEND_LENDING_MARKET_ID = "0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1"; -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { 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; @@ -11,8 +10,7 @@ async function tvl() { } } -async function borrowed() { - const { api } = arguments[3] +async function borrowed(api) { 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; diff --git a/projects/summer-fi/index.js b/projects/summer-fi/index.js index a3ca89f388d..7cfdf389d8b 100644 --- a/projects/summer-fi/index.js +++ b/projects/summer-fi/index.js @@ -9,7 +9,7 @@ module.exports = { ethereum: { tvl }, }; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { await api.getBlock(); const executionStart = Date.now() / 1000; const [confirmedSummerFiMakerVaults, cdpIdList, cache] = await Promise.all([ diff --git a/projects/sun/index.js b/projects/sun/index.js index 916ed60c3b9..eed20debbd4 100644 --- a/projects/sun/index.js +++ b/projects/sun/index.js @@ -78,8 +78,7 @@ const lpToken = 'TDQaYrhQynYV9aXTYj63nwLAafRffWSEj6' const oldLpStaking = "TGsymdggp98tLKZWGHcGX58TjTcaQr9s4x" const lpStaking = "TAkrcKsS5FW9f3ZfzvWy6Zvsz9uEjUxPoV" -/* async function pool2() { - const { api } = arguments[3] +/* async function pool2(api) { const [lpTokenAmount, sunInLp, trxInLp, totalSupply] = await Promise.all([ getTokenBalance(lpToken, lpStaking), getTokenBalance(sun, lpToken), diff --git a/projects/sunswap-v3/index.js b/projects/sunswap-v3/index.js index 2bb8c6388e0..4a872e8a981 100644 --- a/projects/sunswap-v3/index.js +++ b/projects/sunswap-v3/index.js @@ -1,6 +1,6 @@ const { getConfig } = require('../helper/cache') -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/superstate/index.js b/projects/superstate/index.js index e0107bb5dea..d499b5b6996 100644 --- a/projects/superstate/index.js +++ b/projects/superstate/index.js @@ -28,9 +28,9 @@ Object.keys(config).forEach((chain) => { const fundAddresses = Object.values(fundsMap); module.exports[chain] = { - tvl: async (ts, _b, _cb, { api }) => { + tvl: async (api) => { let supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: fundAddresses }); - const price = await USTBPrice(ts); + const price = await USTBPrice(api.timestamp); api.addCGToken('tether', supplies[0] * price / 1e6) } }; diff --git a/projects/surfone/index.js b/projects/surfone/index.js index fc717242d32..9e2f2585165 100644 --- a/projects/surfone/index.js +++ b/projects/surfone/index.js @@ -2,7 +2,7 @@ const factoryContract = '0x5FeD7c030a1B3b40988984479Fdd666dE81038A3' const positionContract = '0x1fa9702e774D31aB661D84f449b0Aa22c41D6827' const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(timestamp, block, chainBlock, { api }) { +async function tvl(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]) diff --git a/projects/surfswap-stableswap/index.js b/projects/surfswap-stableswap/index.js index 4c7c18bca58..075964c7a30 100644 --- a/projects/surfswap-stableswap/index.js +++ b/projects/surfswap-stableswap/index.js @@ -4,7 +4,7 @@ const abi = { getTokens: "address[]:getTokens", } -async function tvl(_, _b, _2, { api }) { +async function tvl(api) { const pools = [ '0x62bf12869E145A862218eE7e28F942Cc7FaeC460', // base 4 pool ] diff --git a/projects/surge/index.js b/projects/surge/index.js index 92df270fbbb..d038a47c15d 100644 --- a/projects/surge/index.js +++ b/projects/surge/index.js @@ -16,12 +16,12 @@ Object.keys(config).forEach(chain => { fromBlock, }) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/sushiswap-kashi/kashi-lending.js b/projects/sushiswap-kashi/kashi-lending.js index 981fcc7a374..2b1498f35af 100644 --- a/projects/sushiswap-kashi/kashi-lending.js +++ b/projects/sushiswap-kashi/kashi-lending.js @@ -41,7 +41,7 @@ const kashiQuery = ` `; function kashiLending(chain, borrowed) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + return async (api) => { const graphUrl = graphUrls[chain]; // Query graphql endpoint diff --git a/projects/sushiswap-trident/trident.js b/projects/sushiswap-trident/trident.js index 9f4ca672996..ce68092fa4f 100644 --- a/projects/sushiswap-trident/trident.js +++ b/projects/sushiswap-trident/trident.js @@ -47,7 +47,7 @@ const tridentQuery = ` `; function trident(chain) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + return async (api) => { const graphUrl = graphUrls[chain]; // Query graphql endpoint let result; diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index ab7a6008c93..e8a091c1579 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -89,7 +89,7 @@ const query = `{ Object.keys(config).forEach(chain => { const { endpoint } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index 1266e28c68d..f0a132bd82c 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -25,7 +25,7 @@ query get_tvl($block: Int) { } `; -async function eth(timestamp, ethBlock, chainBlocks, { api }) { +async function eth(api) { const { uniswapFactory } = await blockQuery(graphUrl, graphQuery, { api, }); const usdTvl = Number(uniswapFactory.totalLiquidityUSD) @@ -33,7 +33,7 @@ async function eth(timestamp, ethBlock, chainBlocks, { api }) { } function getChainTVL() { - return async (timestamp, _b, chainBlocks, { api }) => { + return async (api) => { const { factory } = await blockQuery('https://api.thegraph.com/subgraphs/name/sushiswap/exchange-' + api.chain, graphQueryPolygon, { api, }); const usdTvl = Number(factory.liquidityUSD) diff --git a/projects/swaap/index.js b/projects/swaap/index.js index a269c0e564f..83cb7a77a24 100644 --- a/projects/swaap/index.js +++ b/projects/swaap/index.js @@ -17,27 +17,19 @@ const configV1 = { } } -function tvlFunctionGetterV1(chain) { - return async function tvlFunction(timestamp, ethBlock, chainBlocks, { api }) { - let block = chainBlocks[chain] - if (block) - block = configV1[chain]['startBlock'] + configV1[chain]['blockDelay'] > chainBlocks[chain]['startBlock'] ? - configV1[chain]['startBlock'] : chainBlocks[chain] - configV1[chain]['blockDelay'] // delayed to allow subgraph to update - const fetchAllPools = `query ($block: Int) { ${configV1[chain]['theGraph']['query']} }`; - const results = await cachedGraphQuery('swaaap-v1/' + chain, configV1[chain]['theGraph']['endpoint'], fetchAllPools, { - variables: { block, } - }); +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, }) - } + const toa = results.pools.map(i => i.tokens.map(j => ([j.address, i.id]))).flat() + return sumTokens2({ api, tokensAndOwners: toa, }) } module.exports = { start: 1655130642, // Jun-13-2022 02:30:42 PM +UTC - methodology: `The TVL is retrieved using a mix of TheGraph (to get the list of pools) and on-chain (to get the pools' assets balance) calls.`, polygon: { - tvl: tvlFunctionGetterV1("polygon"), + tvl, }, }; diff --git a/projects/swapline/index.js b/projects/swapline/index.js index defa7a04660..a7d6bf69ae0 100644 --- a/projects/swapline/index.js +++ b/projects/swapline/index.js @@ -8,7 +8,7 @@ const factories = { base: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', shimmer_evm: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { let blacklistedTokens = [] if (api.chain === 'fantom') blacklistedTokens = ['0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1'] const pools = await api.fetchList({ diff --git a/projects/swapmatic/index.js b/projects/swapmatic/index.js index 868193d1a72..b07e85a55ea 100644 --- a/projects/swapmatic/index.js +++ b/projects/swapmatic/index.js @@ -7,7 +7,7 @@ const START_BLOCK = 3285065 - 1; const FACTORY = '0x90D882B2789523403ff263D1F93Ead986c38446C'; const MATIC = ADDRESSES.ethereum.MATIC.toLowerCase(); -async function tvl(_, _block, cb, { api }) { +async function tvl(api) { const chain = 'polygon' const logs = (await getLogs({ api, diff --git a/projects/swarm-markets/index.js b/projects/swarm-markets/index.js index 202b5f91cbf..22ee06368ad 100644 --- a/projects/swarm-markets/index.js +++ b/projects/swarm-markets/index.js @@ -12,9 +12,9 @@ Object.keys(config).forEach(chain => { const { factory, fromBlock, wrapper } = config[chain] const tvlFunc = v1Tvl(factory, fromBlock) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} - const balances_ = await tvlFunc(_, _b, _cb, { api, }) + 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) => { diff --git a/projects/sweep-n-flip/index.js b/projects/sweep-n-flip/index.js index 3bd713c6d0f..6f4d2f25beb 100644 --- a/projects/sweep-n-flip/index.js +++ b/projects/sweep-n-flip/index.js @@ -17,7 +17,7 @@ const config = { Object.keys(config).forEach(chain => { const { fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { let logs = await getLogs({ api, target: factory, diff --git a/projects/sweep/index.js b/projects/sweep/index.js index 182704b8784..993e4990609 100644 --- a/projects/sweep/index.js +++ b/projects/sweep/index.js @@ -13,7 +13,7 @@ const config = { bsc: {} }; -async function tvl(_a, _b, _c, { api }) { +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]; diff --git a/projects/swell-restaking/index.js b/projects/swell-restaking/index.js index 050426760ee..21d2809246f 100644 --- a/projects/swell-restaking/index.js +++ b/projects/swell-restaking/index.js @@ -1,6 +1,6 @@ const { nullAddress } = require("../helper/tokenMapping") -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const tvl = await api.call({ target: "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0", abi: "uint256:totalETHDeposited" diff --git a/projects/swell/index.js b/projects/swell/index.js index 0a97b03fd24..ad280665814 100644 --- a/projects/swell/index.js +++ b/projects/swell/index.js @@ -2,7 +2,7 @@ const { nullAddress } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const totalSupply = await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:totalSupply'}); const rate = await api.call({ target: '0xf951E335afb289353dc249e82926178EaC7DEd78', abi: 'uint256:getRate'}); diff --git a/projects/synclub-staked-bnb/index.js b/projects/synclub-staked-bnb/index.js index acea71f7533..be8aa6743a6 100644 --- a/projects/synclub-staked-bnb/index.js +++ b/projects/synclub-staked-bnb/index.js @@ -1,5 +1,5 @@ const { nullAddress } = require('../helper/tokenMapping'); -async function bscTvl(timestamp, block, chainBlocks, { api }) { +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 { diff --git a/projects/syncswap/index.js b/projects/syncswap/index.js index 048e6afcc70..33d497e213c 100644 --- a/projects/syncswap/index.js +++ b/projects/syncswap/index.js @@ -2,7 +2,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { transformDexBalances } = require('../helper/portedTokens') const sdk = require('@defillama/sdk') -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const { fromBlock, classicFactorys, stableFactorys, aquaFactorys = [] } = config[api.chain] const logs = await Promise.all([...classicFactorys, ...stableFactorys, ...aquaFactorys].map(factory => (getFactoryLogs(api, factory)))); diff --git a/projects/synfutures-v1/index.js b/projects/synfutures-v1/index.js index 0fd6498c917..78d8577c216 100644 --- a/projects/synfutures-v1/index.js +++ b/projects/synfutures-v1/index.js @@ -11,7 +11,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/synfutures-v2/index.js b/projects/synfutures-v2/index.js index be1e4a63a06..bf3cda93db1 100644 --- a/projects/synfutures-v2/index.js +++ b/projects/synfutures-v2/index.js @@ -8,7 +8,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/synfutures-v3/index.js b/projects/synfutures-v3/index.js index a37c6fb239a..64f7cdf933f 100644 --- a/projects/synfutures-v3/index.js +++ b/projects/synfutures-v3/index.js @@ -15,7 +15,7 @@ const config = { Object.keys(config).forEach(chain => { const { gate, tokens, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { // calculate the balance of all instruments const logs = await getLogs({ api, diff --git a/projects/synonym-finance/index.js b/projects/synonym-finance/index.js index ec5371e2eaf..9f2abfc94c7 100644 --- a/projects/synonym-finance/index.js +++ b/projects/synonym-finance/index.js @@ -1,13 +1,13 @@ const hub = '0x1e3f1f1cA8C62aABCB3B78D87223E988Dfa3780E' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { tokens, tokenMappings } = await getTokenInfos(api) 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(_, _b, _cb, { api, }) { +async function borrowed(api) { const { tokens, tokenMappings } = await getTokenInfos(api) 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 }) diff --git a/projects/t-protocol-v2/index.js b/projects/t-protocol-v2/index.js index e6a8cb4ea6d..864c3d64197 100644 --- a/projects/t-protocol-v2/index.js +++ b/projects/t-protocol-v2/index.js @@ -14,7 +14,7 @@ module.exports = { }, }; -async function tvl(_, _b, _cb, { api, }) { +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, }) diff --git a/projects/tai-money/index.js b/projects/tai-money/index.js index 8691301bbc2..4d9165b97e3 100644 --- a/projects/tai-money/index.js +++ b/projects/tai-money/index.js @@ -23,7 +23,7 @@ Object.keys(config).forEach(chain => { let { coinJoins } = config[chain] coinJoins = Object.values(coinJoins) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens = await api.multiCall({ abi: 'address:collateral', calls: coinJoins }) return sumTokens2({ api, tokensAndOwners2: [tokens, coinJoins]}) } diff --git a/projects/tangible-caviar/index.js b/projects/tangible-caviar/index.js index 65597681697..6b4573754ca 100644 --- a/projects/tangible-caviar/index.js +++ b/projects/tangible-caviar/index.js @@ -4,7 +4,7 @@ const { getPearlBalanceCaviar } = require("../tangible/abi.js"); const CAVIAR_STRATEGY = "0x4626E247390c82FA3b72A913d3d8fe079FFb84Ff"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { // now fetch locked pearl in Caviar const pearlAmountInCaviar = await api.call({ abi: getPearlBalanceCaviar, target: CAVIAR_STRATEGY, }) diff --git a/projects/tangible/index.js b/projects/tangible/index.js index fda475bbc4e..0311d7a26a6 100644 --- a/projects/tangible/index.js +++ b/projects/tangible/index.js @@ -41,7 +41,7 @@ const insuranceConfig = { } } -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { await Promise.all([ treasuryTvl, rwaTVL, @@ -50,19 +50,19 @@ async function tvl(_, _b, _cb, { api }) { ].map(fn => fn(api))) } -async function tvlOp(_, _b, _cb, { api }) { +async function tvlOp(api) { await Promise.all([ insuranceTvlOp, ].map(fn => fn(api))) } -async function tvlBase(_, _b, _cb, { api }) { +async function tvlBase(api) { await Promise.all([ insuranceTvlBase, ].map(fn => fn(api))) } -async function tvlArb(_, _b, _cb, { api }) { +async function tvlArb(api) { await Promise.all([ insuranceTvlArb, ].map(fn => fn(api))) diff --git a/projects/tangleswap/index.js b/projects/tangleswap/index.js index 552105ae3b2..c2585aad464 100644 --- a/projects/tangleswap/index.js +++ b/projects/tangleswap/index.js @@ -17,7 +17,7 @@ const query = `query getPools($lastId: String!) { } }` -async function tvl(ts, block, _, { api }) { +async function tvl(api) { const { endpoint } = config[api.chain] const pools = await cachedGraphQuery('tangleswap/' + api.chain, endpoint, query, { fetchById: true, }) return sumTokens2({ diff --git a/projects/tarot/tarotHelper.js b/projects/tarot/tarotHelper.js index ac1b7ed3eca..7d728792b77 100644 --- a/projects/tarot/tarotHelper.js +++ b/projects/tarot/tarotHelper.js @@ -4,7 +4,7 @@ const sdk = require('@defillama/sdk') const { nullAddress } = require('../helper/tokenMapping') function tarotHelper(exportsObj, config, { tarotSymbol = 'vTAROT' } = {}) { - async function tvl(_, _b, _cb, { api, }) { + async function tvl(api) { const { factories } = config[api.chain] const pools = [] await Promise.all(factories.map(async (factory) => { @@ -41,7 +41,7 @@ function tarotHelper(exportsObj, config, { tarotSymbol = 'vTAROT' } = {}) { }) } - async function borrowed(_, _b, _cb, { api, }) { + async function borrowed(api) { const { factories } = config[api.chain] const balances = {} const borrowables = [] diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 656dc66cf8e..05ea06c3f94 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -21,7 +21,7 @@ const chains = ["ethereum", "optimism", "arbitrum", 'polygon', 'boba', 'mantle'] chains.forEach((chain) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const vaults = await getVaultContractsAddress(chain); const tokens = await api.multiCall({ abi: abi.assetToken1, diff --git a/projects/teahouse/index.js b/projects/teahouse/index.js index 3dc57db8b12..3d590766988 100644 --- a/projects/teahouse/index.js +++ b/projects/teahouse/index.js @@ -23,7 +23,7 @@ const chains = ["ethereum", "optimism", "arbitrum", 'polygon','bsc']; chains.forEach((chain) => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const vaults = await getVaultContractsAddress(chain); const tokens = await api.multiCall({ abi: "address:asset", diff --git a/projects/tegro/index.js b/projects/tegro/index.js index e66a25a663c..d2d622229d6 100644 --- a/projects/tegro/index.js +++ b/projects/tegro/index.js @@ -9,7 +9,7 @@ module.exports = { misrepresentedTokens: true, timetravel: false, ton: { - tvl: async (_, _1, _2, { api}) => { + 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) diff --git a/projects/teller/index.js b/projects/teller/index.js index a9648416c86..5f38b2f48ad 100644 --- a/projects/teller/index.js +++ b/projects/teller/index.js @@ -81,12 +81,12 @@ async function getData(api) { } } -async function tvl(_, _b, _cb, { api, }) { +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(_, _b, _cb, { api, }) { +async function borrowed(api) { const data = await getData(api) const activeLoans = Object.keys(data) const { tellerV2 } = config[api.chain] diff --git a/projects/tenderize-v2/index.js b/projects/tenderize-v2/index.js index b67967dc48a..ee3860dbb4f 100644 --- a/projects/tenderize-v2/index.js +++ b/projects/tenderize-v2/index.js @@ -8,7 +8,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/tenderize/index.js b/projects/tenderize/index.js index e170c7ee22a..085b3dc8bd5 100644 --- a/projects/tenderize/index.js +++ b/projects/tenderize/index.js @@ -12,7 +12,7 @@ const config = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens = [] const tokensAndOwners = [] const calls = [] diff --git a/projects/tenet/abi.json b/projects/tenet/abi.json deleted file mode 100644 index ecb1974e3cd..00000000000 --- a/projects/tenet/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "poolSettingInfo": "function poolSettingInfo(uint256) view returns (address lpToken, address tokenAddr, address projectAddr, uint256 tokenAmount, uint256 startBlock, uint256 endBlock, uint256 tokenPerBlock, uint256 tokenBonusEndBlock, uint256 tokenBonusMultipler)" -} \ No newline at end of file diff --git a/projects/tenet/index.js b/projects/tenet/index.js index 83ea2652209..b419e4c6cc2 100644 --- a/projects/tenet/index.js +++ b/projects/tenet/index.js @@ -1,76 +1,17 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2BalanceFromMasterChefExports } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - -const farmContract = "0xdA842fad0BDb105c88399e845aD4D00dE3AEb911"; -const TEN = "0x74159651a992952e2bf340d7628459aa4593fc05"; - -const farmContract_bsc = "0x3F4c79EB1220BeBBf5eF4B3e7c59E5cf38200b62"; -const TEN_bsc = "0xdFF8cb622790b7F92686c722b02CaB55592f152C"; - -const ethTvl = async (chainBlocks) => { - const balances = {}; - - await addFundsInMasterChef( - balances, - farmContract, - chainBlocks["ethereum"], - "ethereum", - (addr) => addr, - abi.poolSettingInfo, - [], - true, - true, - TEN - ); - - return balances; -}; - -const bscTvl = async (chainBlocks) => { - const balances = {}; - - let transformAddress = i => `bsc:${i}`; - await addFundsInMasterChef( - balances, - farmContract_bsc, - chainBlocks["bsc"], - "bsc", - transformAddress, - abi.poolSettingInfo, - ["0xa901c7800497E2461E244D9F8680a109a4356Eae"], - true, - true, - TEN_bsc - ); - - return balances; -}; - -module.exports = { - timetravel: true, - ethereum: { - staking: staking(farmContract, TEN), - pool2: pool2BalanceFromMasterChefExports( - farmContract, - TEN, - "ethereum", - (addr) => addr, - abi.poolSettingInfo - ), - tvl: ethTvl, - }, - bsc: { - staking: staking(farmContract_bsc, TEN_bsc), - pool2: pool2BalanceFromMasterChefExports( - farmContract_bsc, - TEN_bsc, - "bsc", - (addr) => `bsc:${addr}`, - abi.poolSettingInfo - ), - tvl: bscTvl, - }, - methodology: "We count liquidity on all the Farms through MasterChef Contracts", -}; +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/tensorplex/index.js b/projects/tensorplex/index.js index 5e669e50d20..4c0925ec86f 100644 --- a/projects/tensorplex/index.js +++ b/projects/tensorplex/index.js @@ -1,6 +1,6 @@ const st_tao = "0xB60acD2057067DC9ed8c083f5aa227a244044fD6" -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supply = await api.call({ abi: 'erc20:totalSupply', target: st_tao }) api.add(st_tao, supply) } diff --git a/projects/term-finance/index.js b/projects/term-finance/index.js index c100a141c77..b7d408164f3 100644 --- a/projects/term-finance/index.js +++ b/projects/term-finance/index.js @@ -53,11 +53,11 @@ module.exports = { Object.keys(graphs).forEach(chain => { const host = graphs[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const data = await cachedGraphQuery(`term-finance-${chain}`, host, query, { fetchById: true }) return api.sumTokens( { tokensAndOwners: data.map(i => [i.collateralToken, i.term.termRepoLocker])}) }, - borrowed: async (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const data = await cachedGraphQuery(`term-finance-borrowed-${chain}`, host, borrowedQuery, { fetchById: true }) for (const eventEmitter of emitters[chain] ?? []) { diff --git a/projects/terraswap/factoryTvl.js b/projects/terraswap/factoryTvl.js index 2cabd626d52..b6e5a3121f6 100644 --- a/projects/terraswap/factoryTvl.js +++ b/projects/terraswap/factoryTvl.js @@ -62,7 +62,7 @@ function getFactoryTvl(factory) { function getSeiDexTvl(codeId) { - return async (_, _1, _2, { api }) => { + return async (api) => { const chain = api.chain const contracts = await queryContracts({ chain, codeId, }) return sumTokens({ chain, owners: contracts }) diff --git a/projects/tetu-pawnshop/index.js b/projects/tetu-pawnshop/index.js index 4c4647dd873..4e7c1f0860e 100644 --- a/projects/tetu-pawnshop/index.js +++ b/projects/tetu-pawnshop/index.js @@ -6,7 +6,7 @@ const config = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/tetu/index.js b/projects/tetu/index.js index 8c3fdcbbfe5..950ba99fb88 100644 --- a/projects/tetu/index.js +++ b/projects/tetu/index.js @@ -50,7 +50,7 @@ const config = { Object.keys(config).forEach(chain => { const { bookkeeper, contract_Reader, controllerV2, veTETU } = config[chain] module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }, { api }) => { + tvl: async (api) => { // * ############### Tetu V1 vaults const vaultsCall = []; diff --git a/projects/thales/index.js b/projects/thales/index.js index 33750b3ba39..83f6abf46ce 100644 --- a/projects/thales/index.js +++ b/projects/thales/index.js @@ -48,7 +48,7 @@ const bscMarketManager = "0xc62E56E756a3D14ffF838e820F38d845a16D49dE" const bscRangedAMM = "0xda5Bd4aBAFbE249bdC5684eAD594B0ac379687fd" const bscThalesAMM = "0x465B66A3e33088F0666dB1836652fBcF037c7319" -async function guniPool2(_timestamp, _ethBlock, chainBlocks, { api }) { +async function guniPool2(api) { const [lp, token0, token1] = await api.batchCall([ { target: opThalesLpToken, abi: abi.getUnderlyingBalance, }, { target: opThalesLpToken, abi: 'address:token0', }, @@ -77,13 +77,13 @@ const speedMarkets = { module.exports = { methodology: "sUSD/USDC locked on markets", ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { return sumTokens2({ api, owners: await getMarkets(api, ethMarketsManager), tokens: [ADDRESSES.ethereum.sUSD] }) }, pool2: dodoPool2("0x136829c258e31b3ab1975fe7d03d3870c3311651", "0x031816fd297228e4fd537c1789d51509247d0b43"), }, polygon: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const markets = await getMarkets(api, polygonMarketsManager) markets.push(polygonThalesAmm, polygonRangedAMM) if (speedMarkets[api.chain]) markets.push(...speedMarkets[api.chain]) @@ -91,7 +91,7 @@ module.exports = { }, }, optimism: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { await addSportsLPTvl(api, opSportsLp, OP_SUSD) const markets = (await Promise.all([opMarketsManager, opSportsMarketsManager,].map(i => getMarkets(api, i)))).flat() markets.push(opThalesAmm, opParlayAmm, opRangedAmm, ...opSportsVault, ...opAmmVault) @@ -102,7 +102,7 @@ module.exports = { pool2: guniPool2, }, arbitrum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { await addSportsLPTvl(api, arbSportsLp, arbitrum_USDC) const markets = (await Promise.all([arbitrumMarketsManager, arbSportsMarketsManager,].map(i => getMarkets(api, i)))).flat() markets.push(arbitrumThalesAMM, arbParlayAmm, ...arbSportsVault, ...arbAmmVault) @@ -112,7 +112,7 @@ module.exports = { staking: staking(arbThalesStaking, arbThalesToken), }, base: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const markets = (await Promise.all([baseMarketManager, baseSportsMarketManager,].map(i => getMarkets(api, i)))).flat() markets.push(baseParlayAMM, baseRangedAMM, baseSportsAMM, baseThalesAMM) if (speedMarkets[api.chain]) markets.push(...speedMarkets[api.chain]) @@ -121,7 +121,7 @@ module.exports = { staking: staking('0x84aB38e42D8Da33b480762cCa543eEcA6135E040', '0xf34e0cff046e154cafcae502c7541b9e5fd8c249'), }, bsc: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const markets = (await Promise.all([bscMarketManager,].map(i => getMarkets(api, i)))).flat() markets.push( bscRangedAMM, bscThalesAMM) if (speedMarkets[api.chain]) markets.push(...speedMarkets[api.chain]) diff --git a/projects/thedragonslair/abi.json b/projects/thedragonslair/abi.json deleted file mode 100644 index 4a7e1bd05cd..00000000000 --- a/projects/thedragonslair/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accDragonEggPerShare, uint16 depositFeeBP, uint256 lpSupply)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/thedragonslair/index.js b/projects/thedragonslair/index.js index 0c933ac943f..b354fc37b44 100644 --- a/projects/thedragonslair/index.js +++ b/projects/thedragonslair/index.js @@ -1,25 +1,7 @@ -const abi = require("./abi.json"); -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); +const { masterchefExports, } = require('../helper/unknownTokens') -const STAKING_CONTRACT = "0xC0F19836931F5Ab43f279D4DD5Ab3089846Db264"; -const dregg = "0x88c090496125b751B4E3ce4d3FDB8E47DD079c57" -const pool2LPs = ["0xB52a2b91Bf89BcB9435ad94D23555EaD26954CA9", "0x6c4339A47AA98CB5759d4B5C4058a30620eE46A5"] - -async function tvl(timestamp, ethBlock, chainBlocks){ - const balances = {}; - - const transformAddress = addr => 'avax:'+addr - await addFundsInMasterChef(balances, STAKING_CONTRACT, chainBlocks.avax, "avax", transformAddress, abi.poolInfo, [...pool2LPs, dregg]) - - return balances; -} - -module.exports = { - avax:{ - staking: staking(STAKING_CONTRACT, dregg, "avax"), - tvl, - pool2: pool2s([STAKING_CONTRACT], pool2LPs, "avax") - }, -}; +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 index b8b6d32dc7e..fc1ef25576c 100644 --- a/projects/thegoblins/index.js +++ b/projects/thegoblins/index.js @@ -1,6 +1,6 @@ const bank = '0xceF63C8507004a8d079daE3c83e369De0Adfa7Aa' -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const [bankToken, bankBalance] = await Promise.all([ api.multiCall({ abi: 'address:baseToken', calls: [bank], }), api.multiCall({ abi: 'uint256:getLastUpdatedModulesBalance', calls: [bank], }), diff --git a/projects/themis-exchange/index.js b/projects/themis-exchange/index.js index f93a5b4685b..f374ab3a1cb 100644 --- a/projects/themis-exchange/index.js +++ b/projects/themis-exchange/index.js @@ -12,7 +12,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { addressProvider } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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)], }) @@ -21,7 +21,7 @@ Object.keys(config).forEach(chain => { } }) -async function borrowed(_, _b, _cb, { api, }) { +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, }) diff --git a/projects/tholgar/index.js b/projects/tholgar/index.js index 91ac55cbfd2..327db58d126 100644 --- a/projects/tholgar/index.js +++ b/projects/tholgar/index.js @@ -25,7 +25,7 @@ async function getLockers(api) { return lockers; } -async function ethTvl(timestamp, block, _, { api },) { +async function ethTvl(api,) { const balances = {}; const lockers = await getLockers(api); diff --git a/projects/thorchain/index.js b/projects/thorchain/index.js index a019d050246..459622602e0 100644 --- a/projects/thorchain/index.js +++ b/projects/thorchain/index.js @@ -42,7 +42,7 @@ const tokenGeckoMapping = { const blacklistedPools = [] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const pools = await getCache('https://midgard.ninerealms.com/v2/pools') const aChain = api.chain diff --git a/projects/tigris/index.js b/projects/tigris/index.js index 3a3764af3c2..b33261e595e 100644 --- a/projects/tigris/index.js +++ b/projects/tigris/index.js @@ -29,14 +29,14 @@ const TigrisAddresses = { }, }; -async function arbitrumTvl(_, _b, _cb, { api }) { +async function arbitrumTvl(api) { const tokensAndOwners = [ [TigrisAddresses.arbitrum.USDT, TigrisAddresses.arbitrum.StableVault], ]; return sumTokens2({ api, tokensAndOwners }); } -async function polygonTvl(_, _b, _cb, { api }) { +async function polygonTvl(api) { const tokensAndOwners = [ [TigrisAddresses.polygon.DAI, TigrisAddresses.polygon.StableVault], ]; diff --git a/projects/timeless/index.js b/projects/timeless/index.js index 219fc8b128a..1dccf3dfe92 100644 --- a/projects/timeless/index.js +++ b/projects/timeless/index.js @@ -6,7 +6,7 @@ const { getLogs } = require('../helper/cache/getLogs') const factory = '0xbd16088611054fce04711aa9509d1d86e04dce2c' const wl_stETH_token = '0xf9a98a9452485ed55cd3ce5260c2b71c9807b11a' -async function tvl(_, block, _1, { api }) { +async function tvl(api) { const logs = ( await getLogs({ diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 5b75e74b07c..1e7fdbd5e26 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -1,7 +1,7 @@ const { getLogs, getAddress } = require("../helper/cache/getLogs"); const { sumTokens2 } = require("../helper/unwrapLPs"); -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const { factory, oldFactory, fromBlock, newFactory, oldEthFactory,factory__2_5, factory__2_5_block } = config[api.chain]; let logs; let ownerTokens = [] diff --git a/projects/timeswap/index.js b/projects/timeswap/index.js index 1abceddcde5..19acc60107b 100644 --- a/projects/timeswap/index.js +++ b/projects/timeswap/index.js @@ -7,7 +7,7 @@ const GRAPH_URLS = { }; function chainTvl(chain) { - return async (timestamp, _ethBlock, chainBlocks, { api }) => { + return async (api) => { const query = ` { pairs { diff --git a/projects/tokemak/index.js b/projects/tokemak/index.js index c65db1ca39b..91a870b2828 100644 --- a/projects/tokemak/index.js +++ b/projects/tokemak/index.js @@ -69,7 +69,7 @@ const mycPool = "0x061aee9ab655e73719577EA1df116D7139b2A7E7"; const visr = "0xF938424F7210f31dF2Aee3011291b658f872e91e"; const visrPool = "0x2d3eADE781c4E203c6028DAC11ABB5711C022029"; -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const cvxUSTWPool = "0x7e2b9b5244bcfa5108a76d5e7b507cfd5581ad4a"; const cvxFRAXPool = "0xB900EF131301B307dB5eFcbed9DBb50A3e209B2e"; const cvxalUSDPool = "0x02E2151D4F351881017ABdF2DD2b51150841d5B3"; @@ -174,7 +174,7 @@ function lpBalances(holdings, toa, tokens, calls) { } } -async function staking(timestamp, block, _, { api }) { +async function staking(api) { let vestedToke = '57238445' api.add(ADDRESSES.ethereum.TOKE, vestedToke * 1e18 * -1) return sumTokens2({ diff --git a/projects/tokenlon/index.js b/projects/tokenlon/index.js index 9d71d3c6390..0863be52296 100644 --- a/projects/tokenlon/index.js +++ b/projects/tokenlon/index.js @@ -31,7 +31,7 @@ const MULTISIG_ONE = "0x3557BD3d422300198719710Cc3f00194E1c20A46"; const WETH = ADDRESSES.ethereum.WETH; -const ethTvl = async (timestamp, block, _, { api }) => { +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, }) diff --git a/projects/tokensfarm/index.js b/projects/tokensfarm/index.js index 7923ec59a55..ca1ea267672 100644 --- a/projects/tokensfarm/index.js +++ b/projects/tokensfarm/index.js @@ -10,7 +10,7 @@ chains.forEach(chain => { staking, } - async function pool2(_, _b, _cb, { api, }) { + 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) @@ -26,7 +26,7 @@ chains.forEach(chain => { return sumUnknownTokens({ api, tokensAndOwners, resolveLP: true, useDefaultCoreAssets: true }) } - async function staking(_, _b, _cb, { api, }) { + 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') diff --git a/projects/toros/index.js b/projects/toros/index.js index c3d7def37a6..0a78518d9d4 100644 --- a/projects/toros/index.js +++ b/projects/toros/index.js @@ -1,7 +1,8 @@ const { DHEDGE_FACTORY_ABI, TOROS_POOL_ABI } = require("./abis"); const { CONFIG_DATA } = require("./config"); -async function tvl(_, _b, _cb, { api, chain }) { +async function tvl(api) { + const { chain, } = api const { dhedgeFactory, torosMultisigManager } = CONFIG_DATA[chain]; const pools = await api.call({ diff --git a/projects/toupee-tech/index.js b/projects/toupee-tech/index.js index 1fdf4524576..d20b43317bb 100644 --- a/projects/toupee-tech/index.js +++ b/projects/toupee-tech/index.js @@ -4,14 +4,14 @@ const ADDRESSES = require('../helper/coreAssets.json') const WIG = "0x58dd173f30ecffdfebcd242c71241fb2f179e9b9"; const vWIG = "0x60c08737877a5262bdb1c1cAC8FB90b5E5B11515"; -async function staking(timestamp, _1, _2, { api }) { +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(timestamp, _1, _2, { api }) { +async function borrowed(api) { api.add(ADDRESSES.base.WETH, await api.call({ abi: 'uint256:debtTotal', target: WIG })) } diff --git a/projects/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js index 47c1c48d218..a8d73f0ba65 100644 --- a/projects/traderjoe-lb-v2-1/index.js +++ b/projects/traderjoe-lb-v2-1/index.js @@ -7,7 +7,7 @@ const factories = { bsc: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', ethereum: '0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a' } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const pools = await api.fetchList({ target: factories[api.chain], itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', diff --git a/projects/traderjoe-lb/index.js b/projects/traderjoe-lb/index.js index 25e77227c2c..410a82527f5 100644 --- a/projects/traderjoe-lb/index.js +++ b/projects/traderjoe-lb/index.js @@ -5,7 +5,7 @@ const factories = { arbitrum: '0x1886d09c9ade0c5db822d85d21678db67b6c2982', bsc: '0x43646a8e839b2f2766392c1bf8f60f6e587b6960', } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const pools = await api.fetchList({ target: factories[api.chain], itemAbi: 'function allLBPairs(uint256) view returns (address)', diff --git a/projects/tranchess-ETH/index.js b/projects/tranchess-ETH/index.js index 5d19aa93fa0..5b4a0ccbb2a 100644 --- a/projects/tranchess-ETH/index.js +++ b/projects/tranchess-ETH/index.js @@ -5,7 +5,7 @@ const ETHV2Funds = [ '0x69c53679EC1C06f3275b64C428e8Cd069a2d3966', // ETH V2 Fund (ETH mainnet) ] -async function ethereum(timestamp, blockETH, chainBlocks, { api }){ +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) diff --git a/projects/treasury/beefy.js b/projects/treasury/beefy.js index b792b5239a9..5c7cea72f08 100644 --- a/projects/treasury/beefy.js +++ b/projects/treasury/beefy.js @@ -41,7 +41,7 @@ async function _getConfig() { chains.forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const balances = {} let data = (await _getConfig())[getKey(chain)] || {} const uniV3Owners = [] @@ -62,7 +62,7 @@ chains.forEach(chain => { if (uniV3Owners.length) await sumTokens2({ api, owners: uniV3Owners, resolveUniV3: true, }) return sumTokens2({ balances, api, ownerTokens, blacklistedTokens: ['0x8e295789c9465487074a65b1ae9ce0351172393f'], }) }, - ownTokens: async (_, _b, _cb, { api, }) => { + ownTokens: async (api) => { let BIFI let data = (await _getConfig())[getKey(chain)] || {} const owners = [] diff --git a/projects/treasury/benqi.js b/projects/treasury/benqi.js index 3790ddc33fa..d8c6c0cb6cc 100644 --- a/projects/treasury/benqi.js +++ b/projects/treasury/benqi.js @@ -8,7 +8,7 @@ const treasury2 = "0x9d6ef2445fcc41b0d08865f0a7839490cc58a7b7"; const owners = [treasury, treasury2] const qi = "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5"; -async function tvl(_timestamp, _block, chainBlocks, { api }){ +async function tvl(api){ const balances = await getCompoundV2Tvl("0x486af39519b4dc9a7fccd318217352830e8ad9b4", "avax", undefined, undefined, undefined, false, undefined, { abis:{ getCash: {"constant":true,"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"} diff --git a/projects/treasury/betswirl.js b/projects/treasury/betswirl.js index 95726049706..2a43dc69bdf 100644 --- a/projects/treasury/betswirl.js +++ b/projects/treasury/betswirl.js @@ -21,7 +21,7 @@ const banks = { }; function treasury(chain) { - return async (_timestamp, _block, {[chain]: block}, { api }) => { + return async (api) => { const abiV1 = 'function getTokens() view returns (tuple(uint8 decimals, address tokenAddress, string name, string symbol, tuple(bool allowed, tuple(uint16 dividend, uint16 referral, uint16 treasury, uint16 team, uint256 dividendAmount, uint256 treasuryAmount, uint256 teamAmount) houseEdgeSplit, uint256 balanceReference, tuple(uint16 thresholdRate, uint16 toTreasury, uint16 toTeam) balanceOverflow) token)[])' const abiV2 = 'function getTokens() view returns (tuple(uint8 decimals, address tokenAddress, string name, string symbol, tuple(bool allowed, uint16 balanceRisk, address partner, tuple(uint16 dividend, uint16 referral, uint16 partner, uint16 treasury, uint16 team, uint256 dividendAmount, uint256 partnerAmount, uint256 treasuryAmount, uint256 teamAmount, uint256 referralAmount, uint256 minPartnerTransferAmount) houseEdgeSplit, uint256 balanceReference, tuple(uint16 thresholdRate, uint16 toTreasury, uint16 toTeam) balanceOverflow) token)[])' const currentAbi = 'function getTokens() view returns (tuple(uint8 decimals, address tokenAddress, string name, string symbol, tuple(bool allowed, bool paused, uint16 balanceRisk, uint64 VRFSubId, address partner, uint256 minBetAmount, uint256 minPartnerTransferAmount, tuple(uint16 bank, uint16 dividend, uint16 partner, uint16 treasury, uint16 team, uint256 dividendAmount, uint256 partnerAmount, uint256 treasuryAmount, uint256 teamAmount) houseEdgeSplit) token)[])' @@ -47,7 +47,7 @@ function treasury(chain) { // Get the Bank for the input block const [, bankVersion, bankAddressOfBlock] = banks[chain].find( - ([bankLastBlock]) => (block || 999999999999) < bankLastBlock + ([bankLastBlock]) => (api.block || 999999999999) < bankLastBlock ); // Retrieves all tokens from the Bank contract diff --git a/projects/treasury/exactly.js b/projects/treasury/exactly.js index 05e34a0f5c6..b2bf6a556c7 100644 --- a/projects/treasury/exactly.js +++ b/projects/treasury/exactly.js @@ -12,7 +12,7 @@ const config = { Object.entries(config).forEach(([chain, { auditor }]) => { module.exports[chain] = { - tvl: async (_, __, ___, { api }) => { + 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, }) diff --git a/projects/treasury/gnosis-dao.js b/projects/treasury/gnosis-dao.js index 0db4c4e5790..7346485ec06 100644 --- a/projects/treasury/gnosis-dao.js +++ b/projects/treasury/gnosis-dao.js @@ -12,7 +12,7 @@ const GNO = ADDRESSES.ethereum.GNO; const treasurygnosis = "0x458cd345b4c05e8df39d0a07220feb4ec19f5e6f" const gnognosis = ADDRESSES.xdai.GNO -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const treasury = '0x849d52316331967b6ff1198e5e32a0eb168d039d' await addAuraTvl() await unwrapMakerPositions({ api, owner: treasury, blacklistedTokens: [ADDRESSES.ethereum.GNO]}) @@ -35,7 +35,7 @@ async function tvl(_, _b, _cb, { api, }) { } } -async function ownTokens(_, _b, _cb, { api, }) { +async function ownTokens(api) { return unwrapMakerPositions({ api, owner: '0x849d52316331967b6ff1198e5e32a0eb168d039d', skipDebt: true, whitelistedTokens: [ADDRESSES.ethereum.GNO]}) } diff --git a/projects/treasury/jpegd.js b/projects/treasury/jpegd.js index 79bbdfd5e43..56a54877a3f 100644 --- a/projects/treasury/jpegd.js +++ b/projects/treasury/jpegd.js @@ -42,7 +42,7 @@ const treasuryTvl = treasuryExports({ }, }); -const liquidityTvl = async (timestamp, ethBlock, chainBlocks, { api }) => { +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 }) diff --git a/projects/treasury/mantadao.js b/projects/treasury/mantadao.js index ae6646d4128..be2ff8f9c9b 100644 --- a/projects/treasury/mantadao.js +++ b/projects/treasury/mantadao.js @@ -2,7 +2,7 @@ const { getConfig } = require("../helper/cache"); const { sumTokens, queryContract, queryV1Beta1, getBalance2 } = require('../helper/chain/cosmos'); const owners = ["kujira15e682nq9jees29rm9j3h030af86lq2qtlejgphlspzqcvs9whf2q00nua5"] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { // Get base balances of DAO treasury await sumTokens({ @@ -92,7 +92,7 @@ async function calcPOLValue(api) { } -async function ownTokens(_, _1, _2, { api }) { +async function ownTokens(api) { return sumTokens({ owners: owners, chain: 'kujira', diff --git a/projects/treasury/nns.js b/projects/treasury/nns.js index 43285b34621..642aa298784 100644 --- a/projects/treasury/nns.js +++ b/projects/treasury/nns.js @@ -2,7 +2,7 @@ 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(_ts, _b, _cb, { api, }) { +async function tvl(api) { var data = await get(NEURON_FUND_URL); let neuron_fund_balance = parseInt(data.community_fund_total_staked[0][1]); console.log(neuron_fund_balance) diff --git a/projects/treasury/ooki.js b/projects/treasury/ooki.js index 3f036645bc8..d9ccf9e44d4 100644 --- a/projects/treasury/ooki.js +++ b/projects/treasury/ooki.js @@ -8,10 +8,10 @@ let TreasureTokens = [ '0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490', //pool3 ] -async function ethTreasury(timestamp, _block, _, { api }) { +async function ethTreasury(api) { return sumTokens2({ api, owner: treasuryContract, tokens: TreasureTokens }) } -async function ownTokens(timestamp, _block, _, { api }) { +async function ownTokens(api) { return sumTokens2({ api, owner: treasuryContract, tokens: ['0x0De05F6447ab4D22c8827449EE4bA2D5C288379B'] }) } diff --git a/projects/treasury/silo-finance.js b/projects/treasury/silo-finance.js index 41ba0311264..169f4f5fbb1 100644 --- a/projects/treasury/silo-finance.js +++ b/projects/treasury/silo-finance.js @@ -69,7 +69,7 @@ module.exports = mergeExports([ } ]) -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/treasury/sns.js b/projects/treasury/sns.js index f3745d9d1f8..57164c6d596 100644 --- a/projects/treasury/sns.js +++ b/projects/treasury/sns.js @@ -3,7 +3,7 @@ const { get } = require('../helper/http') const SNS_URL = "https://sns-api.internetcomputer.org/api/v1/snses/" const ICP_URL = "https://ledger-api.internetcomputer.org/accounts/" -async function tvl(_ts, _b, _cb, { api, }) { +async function tvl(api) { let offset = 0; const limit = 100; var icp_balance = 0; diff --git a/projects/treasury/spiral-dao.js b/projects/treasury/spiral-dao.js index a495304cd65..eb3c276d285 100644 --- a/projects/treasury/spiral-dao.js +++ b/projects/treasury/spiral-dao.js @@ -3,7 +3,7 @@ const utils = require('../helper/utils'); const treasury = '0x85b6acaba696b9e4247175274f8263f99b4b9180' // treasury address: 0xc47ec74a753acb09e4679979afc428cde0209639 -async function tvl(_, _1, _2, { api }) { +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}) diff --git a/projects/treasury/thellamas.js b/projects/treasury/thellamas.js index 02ef046b4e2..c5b1bf9efa4 100644 --- a/projects/treasury/thellamas.js +++ b/projects/treasury/thellamas.js @@ -23,7 +23,7 @@ module.exports = mergeExports([treasuryExports({ }, }), { ethereum: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { const lockedCVXBal = await api.call({ abi: 'erc20:balanceOf', target: ADDRESSES.ethereum.vlCVX, params: Treasury }) api.add(ADDRESSES.ethereum.CVX, lockedCVXBal) await genericUnwrapCvxRewardPool({ api, owner: Treasury, pool: '0x39D78f11b246ea4A1f68573c3A5B64E83Cff2cAe'}) diff --git a/projects/treasury/wonderland.js b/projects/treasury/wonderland.js index 77a13103dbe..96d5257016a 100644 --- a/projects/treasury/wonderland.js +++ b/projects/treasury/wonderland.js @@ -98,7 +98,7 @@ module.exports = treasuryExports({ }) module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, uwuPositions]) -async function uwuPositions(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/treedefi/abi.json b/projects/treedefi/abi.json deleted file mode 100644 index 46be3a9df55..00000000000 --- a/projects/treedefi/abi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "poolInfo": "function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardBlock, uint256 accTreePerShare, uint16 depositFeeBP)", - "poolLength": "uint256:poolLength" -} \ No newline at end of file diff --git a/projects/treedefi/index.js b/projects/treedefi/index.js index 7e5ce18b708..65c8b32fa81 100644 --- a/projects/treedefi/index.js +++ b/projects/treedefi/index.js @@ -1,24 +1,7 @@ -const abi = require("./abi.json"); -const { addFundsInMasterChef } = require("../helper/masterchef"); +const { masterchefExports, } = require('../helper/unknownTokens') -const MASTERCHEF_CONTRACT = "0xA9a438B8b2E41B3bf322DBA139aF9490DC226953"; - -async function bscTvl(timestamp, block, chainBlocks) { - let balances = {}; - const transformAddress = i => `bsc:${i}`; - - await addFundsInMasterChef( - balances, - MASTERCHEF_CONTRACT, - chainBlocks["bsc"], - "bsc", - transformAddress, - abi.poolInfo, - ); - return balances; -} -module.exports = { - bsc: { - tvl: bscTvl, - }, -}; \ No newline at end of file +module.exports = masterchefExports({ + chain: 'bsc', + masterchef: '0xA9a438B8b2E41B3bf322DBA139aF9490DC226953', + nativeTokens: ['0xf0fcd737fce18f95621cc7841ebe0ea6efccf77e', '0x40b34cc972908060d6d527276e17c105d224559d'] +}) \ No newline at end of file diff --git a/projects/trickortreat/index.js b/projects/trickortreat/index.js index a54b8a2d279..c66f57f25cf 100644 --- a/projects/trickortreat/index.js +++ b/projects/trickortreat/index.js @@ -1,20 +1,7 @@ -const {addFundsInMasterChef} = require("../helper/masterchef"); -const {pool2BalanceFromMasterChefExports} = require("../helper/pool2"); -const {staking} = require("../helper/staking"); +const { masterchefExports, } = require('../helper/unknownTokens') -const masterchef = "0x2755AC6BD7BDbaCbdE08504f45f73D150Ee660F5"; -const trick = "0xA5aFce54270D9afA6a80464bBD383BE506888e6A"; - -async function tvl (timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, masterchef, chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`, undefined, [trick], true, true, trick); - return balances; -} - -module.exports = { - fantom: { - tvl, - pool2: pool2BalanceFromMasterChefExports(masterchef, trick, "fantom", addr=>`fantom:${addr}`), - staking: staking(masterchef, trick, "fantom") - } -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x2755AC6BD7BDbaCbdE08504f45f73D150Ee660F5', + nativeToken: '0xA5aFce54270D9afA6a80464bBD383BE506888e6A', +}) \ No newline at end of file diff --git a/projects/truefi/index.js b/projects/truefi/index.js index 8a750df53a7..2a4291a3839 100644 --- a/projects/truefi/index.js +++ b/projects/truefi/index.js @@ -40,11 +40,11 @@ async function getAllTvl(api, isBorrowed) { } } -async function borrowed(ts, block, _, { api }) { +async function borrowed(api) { return getAllTvl(api, true) } -async function tvl(ts, block, _, { api }) { +async function tvl(api) { return getAllTvl(api, false) } diff --git a/projects/trufin-trustake/index.js b/projects/trufin-trustake/index.js index e218d2f7b67..b0707416140 100644 --- a/projects/trufin-trustake/index.js +++ b/projects/trufin-trustake/index.js @@ -8,7 +8,7 @@ const abi = { const TRUSTAKE_CONTRACT_ADDR = "0xa43a7c62d56df036c187e1966c03e2799d8987ed" const MATIC_TOKEN_ADDR = ADDRESSES.ethereum.MATIC -async function tvl(timestamp, block, chainBlocks, { api }) { +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, })) diff --git a/projects/trufin/index.js b/projects/trufin/index.js index 89ea9c5f50f..ab7a53a3abc 100644 --- a/projects/trufin/index.js +++ b/projects/trufin/index.js @@ -4,7 +4,7 @@ const abi = require('./abi.json') const TRUSTAKE_CONTRACT_ADDR = "0xcfab8530ccf1f9936daede537d6ebbc75289006d" const MATIC_TOKEN_ADDR = ADDRESSES.ethereum.MATIC -async function tvl(timestamp, block, chainBlocks, { api }) { +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, })) diff --git a/projects/tsunami-fi/index.js b/projects/tsunami-fi/index.js index 82d227ef0d3..e6eec999ca2 100644 --- a/projects/tsunami-fi/index.js +++ b/projects/tsunami-fi/index.js @@ -1,7 +1,7 @@ const { gmxExports } = require("../helper/gmx"); const { function_view, hexToString } = require("../helper/chain/aptos"); -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const [data] = await function_view({ functionStr: "0x1786191d0ce793debfdef9890868abdcdc7053f982ccdd102a72732b3082f31d::basket::get_all_basket_coins_by_basket", diff --git a/projects/ttswap/index.js b/projects/ttswap/index.js index 8b402040e91..d6b80941441 100644 --- a/projects/ttswap/index.js +++ b/projects/ttswap/index.js @@ -4,7 +4,7 @@ const { nullAddress } = require("../helper/tokenMapping") const sdk = require('@defillama/sdk') const { sliceIntoChunks, sleep } = require("../helper/utils") -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const factory = '0xcE393b11872EE5020828e443f6Ec9DE58CD8b6c5' const logs = await getLogs({ api, diff --git a/projects/turbos/index.js b/projects/turbos/index.js index 7f3c6c58dd5..48e9adcfa68 100644 --- a/projects/turbos/index.js +++ b/projects/turbos/index.js @@ -1,6 +1,6 @@ const sui = require("../helper/chain/sui"); -async function tvl(_timestamp, _block, _chainBlocks, { api }) { +async function tvl(api) { const poolFactoryConfig = '0xc294552b2765353bcafa7c359cd28fd6bc237662e5db8f09877558d81669170c'; const parent = await sui.getObject(poolFactoryConfig); const poolFields = await sui.getDynamicFieldObjects({ diff --git a/projects/tutellus/index.js b/projects/tutellus/index.js index 057baf8f134..16dcde339e5 100644 --- a/projects/tutellus/index.js +++ b/projects/tutellus/index.js @@ -9,7 +9,7 @@ module.exports = { methodology: "Counts the number of TUT tokens locked in Tutellus contracts.", } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const endpoint = 'https://backend.tutellus.io/api' const data = await get(endpoint + `/tvl`, { data: { id: 1, jsonrpc: "2.0", method: "invokefunction", }}); api.add('0x12a34A6759c871C4C1E8A0A42CFc97e4D7Aaf68d', data.bigNumber); diff --git a/projects/txBridge/index.js b/projects/txBridge/index.js index 877d04be4a4..5e7d9d935dd 100644 --- a/projects/txBridge/index.js +++ b/projects/txBridge/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ diff --git a/projects/typus-finance/index.js b/projects/typus-finance/index.js index 6da24de79ae..e9ca02f4c9b 100644 --- a/projects/typus-finance/index.js +++ b/projects/typus-finance/index.js @@ -3,7 +3,7 @@ const sui = require("../helper/chain/sui"); const SINGLE_DEPOSIT_VAULT_REGISTRY = "0xd67cf93a0df61b4b3bbf6170511e0b28b21578d9b87a8f4adafec96322dd284d"; const fud_token = "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD"; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const depositVaultFields = await sui.getDynamicFieldObjects({ parent: SINGLE_DEPOSIT_VAULT_REGISTRY, }); diff --git a/projects/uma/index.js b/projects/uma/index.js index f498c342af7..485f217750a 100644 --- a/projects/uma/index.js +++ b/projects/uma/index.js @@ -29,7 +29,8 @@ const ethEmpCreators = [ ]; // Captures TVL for EMP contracts on Ethereum -async function ethEmp(timestamp, block, _1, { api }) { +async function ethEmp(api) { + const block = api.block const balances = {}; for (let i = 0; i < ethEmpCreators.length; i++) { const logs = await getLogs({ @@ -58,7 +59,8 @@ async function ethEmp(timestamp, block, _1, { api }) { } // Captures TVL for LSP contracts on Ethereum -async function ethLsp(timestamp, block, _1, { api }) { +async function ethLsp(api) { + const block = api.block const balances = {}; for (let i = 0; i < ethLspCreators.length; i++) { const logs = await getLogs({ @@ -87,10 +89,10 @@ async function ethLsp(timestamp, block, _1, { api }) { } // Captures TVL for LSP contracts on Polygon -async function polygonLsp(timestamp, block, chainBlocks, { api }) { +async function polygonLsp(api) { + const block = api.block const balances = {}; const transform = await getChainTransform('polygon'); - block = await getBlock(timestamp, "polygon", chainBlocks); for (let i = 0; i < polygonLspCreators.length; i++) { const logs = await getLogs({ @@ -122,11 +124,11 @@ async function polygonLsp(timestamp, block, chainBlocks, { api }) { } // Captures TVL for LSP contracts on Boba -async function bobaLsp(timestamp, block, chainBlocks, { api }) { +async function bobaLsp(api) { + const block = api.block const chain = "boba"; const balances = {}; const transform = await getChainTransform(chain); - block = await getBlock(timestamp, chain, chainBlocks); for (let i = 0; i < bobaLspCreators.length; i++) { const lspCreatorAddress = bobaLspCreators[i]; diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js index 659f19baef3..ea372a743cc 100644 --- a/projects/umamifinance/index.js +++ b/projects/umamifinance/index.js @@ -1,6 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') const { stakings } = require("../helper/staking"); -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const UMAMI = "0x1622bf67e6e5747b81866fe0b85178a93c7f86e3"; @@ -11,7 +10,6 @@ const mUMAMI = "0x2adabd6e8ce3e82f52d9998a7f64a90d294a92a4"; const OHM_STAKING_sUMAMI = "0xc9ecFeF2fac1E38b951B8C5f59294a8366Dfbd81"; // glpUSDC vault is now deprecated const glpUSDC = "0x2e2153fd13459eba1f277ab9acd624f045d676ce"; -const glpInitBlock = 18703806; const USDC = ADDRESSES.arbitrum.USDC; const v2Vaults = [ @@ -26,38 +24,17 @@ const v2Vaults = [ module.exports = { doublecounted: true, - timetravel: true, start: 1657027865, // UMAMI deployment block ts arbitrum: { staking: stakings([mUMAMI, OHM_STAKING_sUMAMI], UMAMI, "arbitrum"), - tvl: async (_, _b, { arbitrum: block }, { api }) => { - const balances = {}; + tvl: async (api) => { - if (!block || block > glpInitBlock + 10) { - const totalAssets = await sdk.api.abi.call({ - abi: abi.totalAssets, - target: glpUSDC, - chain: "arbitrum", - block, - }); - sdk.util.sumSingleBalance( - balances, - `arbitrum:${USDC}`, - totalAssets.output - ); - } + const totalAssets = await api.call({ abi: abi.totalAssets, target: glpUSDC, }); + api.add(USDC, totalAssets); const assets = await api.multiCall({ abi: 'address:asset', calls: v2Vaults }); const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: v2Vaults }); - for (let i = 0; i < assets.length; i++) { - sdk.util.sumSingleBalance( - balances, - `arbitrum:${assets[i]}`, - bals[i] - ); - } - - return balances; + api.add(assets, bals) }, }, }; diff --git a/projects/umbria/index.js b/projects/umbria/index.js index 097c1ab4b84..17972395a4d 100644 --- a/projects/umbria/index.js +++ b/projects/umbria/index.js @@ -1,77 +1,15 @@ -const abi = require("./abi.json"); -const { staking } = require("../helper/staking"); -const { pool2BalanceFromMasterChefExports } = require("../helper/pool2"); -const { addFundsInMasterChef } = require("../helper/masterchef"); - -const farmContract = "0xdF9401225cC62d474C559E9c4558Fb193137bCEB"; -const UMBR = "0xa4bbe66f151b22b167127c770016b15ff97dd35c"; - -const farmContract_polygon = "0x3756a26De28d6981075a2CD793F89e4Dc5A0dE04"; -const UMBR_polygon = "0x2e4b0fb46a46c90cb410fe676f24e466753b469f"; - -const ethTvl = async (chainBlocks) => { - const balances = {}; - - await addFundsInMasterChef( - balances, - farmContract, - chainBlocks["ethereum"], - "ethereum", - (id) => id, - abi.poolInfo, - [], - true, - true, - UMBR - ); - - return balances; -}; - -const polygonTvl = async (chainBlocks) => { - const balances = {}; - - const transformAddress = i => `polygon:${i}`; - await addFundsInMasterChef( - balances, - farmContract_polygon, - chainBlocks["polygon"], - "polygon", - transformAddress, - abi.poolInfo, - [], - true, - true, - UMBR_polygon - ); - - return balances; -}; - -module.exports = { - misrepresentedTokens: true, - ethereum: { - staking: staking(farmContract, UMBR), - pool2: pool2BalanceFromMasterChefExports( - farmContract, - UMBR, - "ethereum", - (id) => id, - abi.poolInfo - ), - tvl: ethTvl, - }, - polygon: { - staking: staking(farmContract_polygon, UMBR_polygon, "polygon"), - pool2: pool2BalanceFromMasterChefExports( - farmContract_polygon, - UMBR_polygon, - "polygon", - (addr) => `polygon:${addr}`, - abi.poolInfo - ), - tvl: polygonTvl, - }, - methodology: - "Counts liquidty of LPs on the Farms and the Assets on the Bridge Pool through Farm Contracts and metrics: https://bridgeapi.umbria.network/api/pool/getTvlAll/?&network=ethereum", -}; +const { masterchefExports, } = require('../helper/unknownTokens'); +const { mergeExports } = require("../helper/utils"); + +module.exports = mergeExports([ + masterchefExports({ + chain: 'ethereum', + nativeToken: '0xa4bbe66f151b22b167127c770016b15ff97dd35c', + masterchef: '0xdF9401225cC62d474C559E9c4558Fb193137bCEB', + }), + masterchefExports({ + chain: 'polygon', + nativeToken: '0x2e4b0fb46a46c90cb410fe676f24e466753b469f', + masterchef: '0x3756a26De28d6981075a2CD793F89e4Dc5A0dE04', + }) +]) \ No newline at end of file diff --git a/projects/unamano/index.js b/projects/unamano/index.js index 8b64744266e..18deb6ec41d 100644 --- a/projects/unamano/index.js +++ b/projects/unamano/index.js @@ -8,7 +8,7 @@ const abis = { module.exports = { ethereum:{ - tvl: async (_, b, cb, { api }) => { + 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/undeadfinance/index.js b/projects/undeadfinance/index.js index e4f6a6e3e24..4abbee42057 100644 --- a/projects/undeadfinance/index.js +++ b/projects/undeadfinance/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens') - -const chef = "0x18E84FEe58980473f6bEf65391e35eDC08C72af8" -const undead = "0x89dD4d82F4aF70df521A76A4f0997b5Dc571917E" -const undeadFtmLP = "0xa09a118a370cf88204834495b07aba34c67552dd" -const undeadUsdcLP = "0xc756b9bcc8113ab78a15b4d2c923ca8e4992371e"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [undead, undeadFtmLP, undeadUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, undead, "fantom"), - pool2: pool2Exports(chef, [undeadFtmLP, undeadUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + masterchef: '0x18E84FEe58980473f6bEf65391e35eDC08C72af8', + nativeToken: '0x89dD4d82F4aF70df521A76A4f0997b5Dc571917E', +}) \ No newline at end of file diff --git a/projects/unicrypt-v3/index.js b/projects/unicrypt-v3/index.js index ad604fab0b2..1e1efbf65e7 100644 --- a/projects/unicrypt-v3/index.js +++ b/projects/unicrypt-v3/index.js @@ -26,7 +26,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { reserves, } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, _cb, { api }) => { + 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/unieth/index.js b/projects/unieth/index.js index 70551ef29f6..3c968f960ab 100644 --- a/projects/unieth/index.js +++ b/projects/unieth/index.js @@ -3,7 +3,7 @@ const { nullAddress } = require("../helper/tokenMapping"); const UNIETH_TOKEN = '0xf1376bcef0f78459c0ed0ba5ddce976f1ddf51f4'; const UNIETH_STAKING = "0x4beFa2aA9c305238AA3E0b5D17eB20C045269E9d"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const totalSupply = await api.call({ abi: 'erc20:totalSupply', target: UNIETH_TOKEN, diff --git a/projects/uniiotx/index.js b/projects/uniiotx/index.js index 61a815d0db6..a2099f79f34 100644 --- a/projects/uniiotx/index.js +++ b/projects/uniiotx/index.js @@ -3,7 +3,7 @@ const { nullAddress } = require("../helper/tokenMapping"); const UNIIOTX_TOKEN_CONTRACT = '0x236f8c0a61dA474dB21B693fB2ea7AAB0c803894'; const IOTX_STAKING_CONTRACT = "0x2c914Ba874D94090Ba0E6F56790bb8Eb6D4C7e5f"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const totalSupply = await api.call({ abi: 'erc20:totalSupply', target: UNIIOTX_TOKEN_CONTRACT, diff --git a/projects/unilend-v2/index.js b/projects/unilend-v2/index.js index 5e00561466b..c9c0a786160 100644 --- a/projects/unilend-v2/index.js +++ b/projects/unilend-v2/index.js @@ -6,12 +6,12 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 (_, _b, _cb, { api, }) => { + borrowed: async (api) => { const data = await getPools(api) const pools = data.map(i => i.pool) const token0s = data.map(i => i.token0) diff --git a/projects/union-finance/index.js b/projects/union-finance/index.js index d459713331b..daeafe76502 100644 --- a/projects/union-finance/index.js +++ b/projects/union-finance/index.js @@ -27,8 +27,7 @@ const abi = { totalBorrows: "uint256:totalBorrows", }; -async function tvl() { - const { api } = arguments[3] +async function tvl(api) { const { userManager, DAI, uDAI } = config[api.chain] const bals = await api.batchCall([ { target: userManager, abi: abi.totalStaked }, @@ -38,8 +37,7 @@ async function tvl() { bals.forEach(i => api.add(DAI, i)) } -async function borrowed() { - const { api } = arguments[3] +async function borrowed(api) { const { DAI, uDAI } = config[api.chain] const borrows = await api.call({ target: uDAI, abi: abi.totalBorrows, }) api.add(DAI, borrows) diff --git a/projects/unipilot/index.js b/projects/unipilot/index.js index 6a2f2b63389..74039450c36 100644 --- a/projects/unipilot/index.js +++ b/projects/unipilot/index.js @@ -97,7 +97,7 @@ async function getVaultLogs(vaults, factoryType, api) { return vaults; } -async function tvl(timestamp, block, chainBlocks, { api }) { +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', `{ diff --git a/projects/unirexfinance/index.js b/projects/unirexfinance/index.js index 87d8fb0ff44..b938b8c81a5 100644 --- a/projects/unirexfinance/index.js +++ b/projects/unirexfinance/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens'); - -const chef = "0x75417a5647b88dc50f341cbed5db9ad6c3027ed5" -const funirex = "0x350a911687eb9710f1d36792f26d419577b127a8" -const funirexFtmLP = "0x4ff57fafa10d375aac73e3bddd30f4ceaea1554f" -const funirexUsdcLP = "0xed16cf3f8b5f05a3bc26fed6ba8b650fef2246ce"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [funirex, funirexFtmLP, funirexUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: staking(chef, funirex, "fantom"), - pool2: pool2Exports(chef, [funirexFtmLP, funirexUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + nativeToken: '0x350a911687eb9710f1d36792f26d419577b127a8', + masterchef: '0x75417a5647b88dc50f341cbed5db9ad6c3027ed5', +}) \ No newline at end of file diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 121b2070f7d..ae3914036ff 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -21,7 +21,7 @@ const blacklists = { } function v3TvlPaged(chain) { - return async (_, _b, _2, { api }) => { + return async (api) => { const block = await api.getBlock() let graphQueryPaged = ` @@ -42,7 +42,7 @@ function v3TvlPaged(chain) { } } -async function filecoinTvl(_, _b, _cb, { api, }) { +async function filecoinTvl(api) { const { result: { pools } } = await configPost('oku-trade/filecoin', 'https://cush.apiary.software/filecoin', { "jsonrpc": "2.0", "method": "cush_topPools", diff --git a/projects/uniswap/v1.js b/projects/uniswap/v1.js index 2ddde5bdf00..00bd5d2e642 100644 --- a/projects/uniswap/v1.js +++ b/projects/uniswap/v1.js @@ -7,7 +7,8 @@ const START_BLOCK = 6627917; const FACTORY = '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95'; const ETH = ADDRESSES.null.toLowerCase(); -async function tvl(timestamp, block, _1, { api }) { +async function tvl(api) { + const block = api.block const logs = (await getLogs({ api, target: FACTORY, diff --git a/projects/uniswap/v3/index.js b/projects/uniswap/v3/index.js index ae228d1d00b..77654df444e 100644 --- a/projects/uniswap/v3/index.js +++ b/projects/uniswap/v3/index.js @@ -10,7 +10,7 @@ const startBlocks = { } function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks, { api }) => { + return async (api) => { const START_BLOCK = startBlocks[chain] const logs = ( await getLogs({ diff --git a/projects/universeftm/index.js b/projects/universeftm/index.js index 7c8d6bf5e0b..97df923456c 100644 --- a/projects/universeftm/index.js +++ b/projects/universeftm/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking, stakingPricedLP } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens'); - -const chef = "0x5b996C1F5bc7Ba09fB8d69FBB1c495f0a9D6b7D9" -const universe = "0xf346362004540F714a45c6E80c719767e087a649" -const universeFtmLP = "0xa86d64f6f1e23f36f2237b5e7012a46b62188529" -const universeUsdcLP = "0xf6d442bcb58bedb27fa128405ff808951d3111dc"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [universe, universeFtmLP, universeUsdcLP],true,true,universe); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: stakingPricedLP(chef, universe, "fantom",universeFtmLP, "fantom"), - pool2: pool2Exports(chef, [universeFtmLP, universeUsdcLP], "fantom"), - }, - -} // node test.js projects/universeftm/index.js \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + nativeToken: '0xf346362004540F714a45c6E80c719767e087a649', + masterchef: '0x5b996C1F5bc7Ba09fB8d69FBB1c495f0a9D6b7D9', +}) \ No newline at end of file diff --git a/projects/unlimited-trade/index.js b/projects/unlimited-trade/index.js index d8dbac40ac9..84ecf46f223 100644 --- a/projects/unlimited-trade/index.js +++ b/projects/unlimited-trade/index.js @@ -13,7 +13,7 @@ const config = { Object.keys(config).forEach(chain => { const { pools } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const tokens = await api.multiCall({ abi: 'address:asset', calls: pools}) return sumTokens2({ api, tokensAndOwners2: [tokens, pools] }) } diff --git a/projects/unlockd/helper/index.js b/projects/unlockd/helper/index.js index 909a327257a..d23b24a2018 100644 --- a/projects/unlockd/helper/index.js +++ b/projects/unlockd/helper/index.js @@ -2,7 +2,7 @@ const abi = require("./abi/abi"); const address = require("./addresses"); const { sumTokens2 } = require("../../helper/unwrapLPs") -async function tvl(chain, timestamp, chainBlocks, { api }) { +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) @@ -17,7 +17,7 @@ async function tvl(chain, timestamp, chainBlocks, { api }) { return sumTokens2({ api, tokensAndOwners2: [tokens, owners] }); } -async function borrowed(chain, timestamp, chainBlocks, { api }) { +async function borrowed(api) { const reservesData = await api.call({ target: address.ethereum.UiPoolDataProvider, params: [address.ethereum.LendPoolAddressProvider], diff --git a/projects/uno-farm/index.js b/projects/uno-farm/index.js index b277c242c84..5952131f31f 100644 --- a/projects/uno-farm/index.js +++ b/projects/uno-farm/index.js @@ -69,9 +69,9 @@ async function quickswapTVL({ balances, chain, block, app }) { }); } -async function tvl(_, _1, chainBlocks, { api }) { +async function tvl(api) { const chain = api.chain; - const block = chainBlocks[chain]; + const block = api.block; let balances = {}; const promises = []; const arrayOfApps = apps[chain]; diff --git a/projects/unore/index.js b/projects/unore/index.js index 143ef5d2615..09b5f13902c 100644 --- a/projects/unore/index.js +++ b/projects/unore/index.js @@ -48,8 +48,8 @@ module.exports = { Object.keys(config).forEach(chain => { const { pools, uToken, tokensAndOwners, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api,}) => sumTokens2({api, tokensAndOwners}) + tvl: async (api) => sumTokens2({api, tokensAndOwners}) } if (uToken) - module.exports[chain].staking = async (_, _b, _cb, { api,}) => sumTokens2({api, tokens: [uToken], owners: pools}) + module.exports[chain].staking = async (api) => sumTokens2({api, tokens: [uToken], owners: pools}) }) \ No newline at end of file diff --git a/projects/unsheth/index.js b/projects/unsheth/index.js index 08fbcab65a8..74d6180158d 100644 --- a/projects/unsheth/index.js +++ b/projects/unsheth/index.js @@ -5,7 +5,7 @@ const { getLogs } = require('../helper/cache/getLogs') const LSDVAULT_CONTRACT_V1 = "0xE76Ffee8722c21b390eebe71b67D95602f58237F"; const LSDVAULT_CONTRACT_V2 = "0x51A80238B5738725128d3a3e06Ab41c1d4C05C74"; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, target: LSDVAULT_CONTRACT_V2, diff --git a/projects/v3s-finance/index.js b/projects/v3s-finance/index.js index d0e119a89e5..efd4ac48bd4 100644 --- a/projects/v3s-finance/index.js +++ b/projects/v3s-finance/index.js @@ -1,62 +1,29 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { stakingUnknownPricedLP, stakingPricedLP } = require("../helper/staking"); +const { stakingPricedLP } = require("../helper/staking"); +const { masterchefExports, } = require('../helper/unknownTokens'); -const sdk = require("@defillama/sdk"); const { pool2 } = require('../helper/pool2'); +const { mergeExports } = require('../helper/utils'); const vshare = "0xdcC261c03cD2f33eBea404318Cdc1D9f8b78e1AD"; -const krx = "0xf0681bb7088ac68a62909929554aa22ad89a21fb"; -const krx_usdc = "0x9504a7cEd300B2C79e64FC63f368fC27011Fe916"; const masterchefV3S = "0xEe38B8d70382c50cDD020785D0aC551d259Cec84"; const boardroom = "0x3F728308A0fb99a8cE4F3F4F87E4e67a38F66746"; const v3sVvspAddress = "0x57b975364140e4a8d1C96FAa00225b855BaB0E8E"; const vShareCroAddress = "0xcb0704BC4E885384ac96F0ED22B9204C3adD91AD" const vShareRewardsAddr = "0x569608516A81C0B1247310A3E0CD001046dA0663"; -const usdc = ADDRESSES.cronos.USDC.toLowerCase(); - -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - - //V3S Reward Pools - await addFundsInMasterChef( - balances, - masterchefV3S, - chainBlocks.cronos, - "cronos", - (addr) => `cronos:${addr}`, - undefined, - [krx,], - true, - true, - vshare - ); - - //get staking KRX token. Have to calculate manually becase cannot get KRX price - let krxBalance = await stakingUnknownPricedLP( - masterchefV3S, - krx, - "cronos", - krx_usdc - )(timestamp, block, chainBlocks); - sdk.util.sumSingleBalance( - balances, - `cronos:${usdc}`, - krxBalance[`cronos:${usdc}`] - ); - - return balances; -} const pool2LPs = [ v3sVvspAddress, vShareCroAddress, ]; -module.exports = { + +module.exports = mergeExports([masterchefExports({ + chain: 'cronos', + nativeToken: vshare, + masterchef: masterchefV3S, +}), { cronos: { - tvl: tvl, pool2: pool2(vShareRewardsAddr, pool2LPs), staking: stakingPricedLP(boardroom, vshare, "cronos", vShareCroAddress, "wrapped-cro") }, -}; +}]) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index 943ab1913fc..85c31daa45f 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -22,7 +22,7 @@ module.exports = { ], arbitrum: { - tvl: async (_, _b, _cb, { api }) => { + tvl: async (api) => { const vaults = [ "0x0081772FD29E4838372CbcCdD020f53954f5ECDE", // VodkaVault "0x6df0018b0449bB4468BfAE8507E13021a7aa0583", // WaterVault diff --git a/projects/veax/index.js b/projects/veax/index.js index f3b6a24ca3b..e7351081430 100644 --- a/projects/veax/index.js +++ b/projects/veax/index.js @@ -1,6 +1,6 @@ const { sumTokens, call, } = require('../helper/chain/near') -const tvl = async (_, _1, _2, { api }) => { +const tvl = async (api) => { const contract = 'veax.near' const tokens = await call(contract, 'get_verified_tokens') return sumTokens({ owners: [contract], tokens}) diff --git a/projects/vector/index.js b/projects/vector/index.js index 8b072700a6a..8a07a886235 100644 --- a/projects/vector/index.js +++ b/projects/vector/index.js @@ -19,7 +19,7 @@ const VectorLPPools = [ VectorPoolsInfo.PTP_XPTP, VectorPoolsInfo.JOE_ZJOE, ]; -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const balancerPools = [ '0x26fa40f1f29e3b495ec3c4c46b24df7EcDE796d9', '0x0708b37dD778E459bEAB114FDF1C431068888379', diff --git a/projects/vectorreserve/index.js b/projects/vectorreserve/index.js index b2df18d97d9..3ccda43a60e 100644 --- a/projects/vectorreserve/index.js +++ b/projects/vectorreserve/index.js @@ -3,7 +3,7 @@ const { staking } = require('../helper/staking') const VETH_CONTRACT = '0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0'; const VEC_CONTRACT = '0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokens = await api.fetchList({ lengthAbi: 'approvedTokens', itemAbi: 'approvedRestakedLSTs', target: VETH_CONTRACT }) return api.sumTokens({ owner: VETH_CONTRACT, tokens, }) } diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js index d3cf44ee983..57d6692f7b3 100644 --- a/projects/vega-protocol/index.js +++ b/projects/vega-protocol/index.js @@ -26,7 +26,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { bridge, fromBlock, vega, stakingContract, assetPool, vestingContract } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: bridge, diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js index c544470b1f8..791db2f4720 100644 --- a/projects/vela-exchange/index.js +++ b/projects/vela-exchange/index.js @@ -6,8 +6,7 @@ const VELA = '0x088cd8f5eF3652623c22D48b1605DCfE860Cd704' const arbitrumEndpoint = "https://api.thegraph.com/subgraphs/name/velaexchange/vela-exchange-official" const baseEndpoint = "https://api.thegraph.com/subgraphs/name/velaexchange/vela-exchange-official-base" -async function staking_arbitrum_() { - const { api } = arguments[3] +async function staking_arbitrum_(api) { const query = ` query { @@ -25,8 +24,7 @@ async function staking_arbitrum_() { api.add(VELA, graphRes?.pid3) } -async function staking_base_() { - const { api } = arguments[3] +async function staking_base_(api) { const query = ` query { diff --git a/projects/velocore-v2/index.js b/projects/velocore-v2/index.js index bd7ad79faff..f1967b859e5 100644 --- a/projects/velocore-v2/index.js +++ b/projects/velocore-v2/index.js @@ -30,7 +30,7 @@ const cannonicalPoolsAbi = "function canonicalPools(address user, uint256 begin, Object.keys(config).forEach(chain => { const { factory, blacklistedTokens, vault, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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}) diff --git a/projects/velvet-capital-v2/index.js b/projects/velvet-capital-v2/index.js index 923e036d509..886462ae45b 100644 --- a/projects/velvet-capital-v2/index.js +++ b/projects/velvet-capital-v2/index.js @@ -1,6 +1,6 @@ const { sumTokens2, } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +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 }), diff --git a/projects/velvet-capital/index.js b/projects/velvet-capital/index.js index c1e89e22376..a805844df84 100644 --- a/projects/velvet-capital/index.js +++ b/projects/velvet-capital/index.js @@ -1,7 +1,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const { getConfig } = require('../helper/cache') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const response = await getConfig('velvet-capital', "https://defivas.xyz/api/portfolio") const indexes = response.data; const ownerTokens = [] diff --git a/projects/vendor-finance-v2/index.js b/projects/vendor-finance-v2/index.js index c085884ef9f..8190c9b908b 100644 --- a/projects/vendor-finance-v2/index.js +++ b/projects/vendor-finance-v2/index.js @@ -5,7 +5,7 @@ const abi = { colBalance: "function colBalance() view returns (uint256)" } -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const { factory, fromBlock } = config[api.chain] const logs = await getLogs({ api, diff --git a/projects/vendor-finance/index.js b/projects/vendor-finance/index.js index 50665e7dcf5..f33e6c54eb0 100644 --- a/projects/vendor-finance/index.js +++ b/projects/vendor-finance/index.js @@ -1,7 +1,7 @@ const { getLogs } = require("../helper/cache/getLogs"); const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { const { factory, fromBlock } = config[api.chain] const logs = await getLogs({ api, @@ -11,12 +11,11 @@ async function tvl(timestamp, block, chainBlocks, { api }) { eventAbi: 'event DeployPool (address _poolAddress, address _deployer, uint256 _mintRatio, address _colToken, address _lendToken, uint48 _protocolFee, uint48 _protocolColFee, uint48 _expiry, address[] _borrowers)' }) - block = chainBlocks.arbitrum; const balances = {}; const tokensAndOwners = [] for (const { args: { _poolAddress, _colToken, _lendToken, _expiry }} of logs) { - if (_expiry < timestamp) continue; + if (_expiry < api.timestamp) continue; tokensAndOwners.push([_colToken, _poolAddress]) tokensAndOwners.push([_lendToken, _poolAddress]) } diff --git a/projects/venofinance/index.js b/projects/venofinance/index.js index b6649171a76..bc87e4f1818 100644 --- a/projects/venofinance/index.js +++ b/projects/venofinance/index.js @@ -4,7 +4,7 @@ const fountain_contract_address = "0xb4be51216f4926ab09ddf4e64bc20f499fd6ca95"; const reservoir_contract_address = "0x21179329c1dcfd36ffe0862cca2c7e85538cca07"; const vno_contract_address = "0xdb7d0a1ec37de1de924f8e8adac6ed338d4404e9"; -async function tvlCronos(timestamp, ethBlock, chainBlocks, { api }) { +async function tvlCronos(api) { const lcro_contract_address = "0x9Fae23A2700FEeCd5b93e43fDBc03c76AA7C08A6"; const latom_contract_address = "0xac974ee7fc5d083112c809ccb3fce4a4f385750d"; @@ -16,7 +16,7 @@ async function tvlCronos(timestamp, ethBlock, chainBlocks, { api }) { return api.getBalances() } -async function tvlEra(timestamp, ethBlock, chainBlocks, { api }) { +async function tvlEra(api) { const leth_contract_address = "0xE7895ed01a1a6AAcF1c2E955aF14E7cf612E7F9d"; const eth_pooled = await api.call({ abi: "uint256:getTotalPooledToken", target: leth_contract_address, }) diff --git a/projects/venus-isolated-pools/index.js b/projects/venus-isolated-pools/index.js index a2201f8a065..d3fb595a04c 100644 --- a/projects/venus-isolated-pools/index.js +++ b/projects/venus-isolated-pools/index.js @@ -24,14 +24,14 @@ async function getPools(api) { } async function tvl(...args) { - const [_, _b, _cb, { api, }] = args + const [api] = args const pools = await getPools(api) const tvls = pools.map(i => compoundExports2({ comptroller: i, fetchBalances: true, })) return sdk.util.sumChainTvls(tvls.map(i => i.tvl))(...args) } async function borrowed(...args) { - const [_, _b, _cb, { api, }] = args + const [api] = args const pools = await getPools(api) const tvls = pools.map(i => compoundExports2({ comptroller: i, fetchBalances: true, })) return sdk.util.sumChainTvls(tvls.map(i => i.borrowed))(...args) diff --git a/projects/veritable.js b/projects/veritable.js index ee30669d1aa..de9faafa8e0 100644 --- a/projects/veritable.js +++ b/projects/veritable.js @@ -1,28 +1,9 @@ -const { addFundsInMasterChef } = require("./helper/masterchef") - -const token = "0x6397835430a5a5f8530F30C412CB217CE3f0943b"; -const masterchef = "0xE139E30D5C375C59140DFB6FD3bdC91B9406201c"; const abi = 'function poolInfo(uint256) view returns (address lpToken, uint256 allocPoint, uint256 lastRewardTime, uint256 accVRTPerShare)' - -async function tvl(timestamp, blokc, chainBlocks) { - const balances = {}; - const transform = i => `polygon:${i}`; - - await addFundsInMasterChef( - balances, - masterchef, - chainBlocks.polygon, - 'polygon', - transform, - abi, - [], - true, - true, - token - ); - - return balances; -} -module.exports = { - polygon: {tvl} -}; \ No newline at end of file +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/vesta/index.js b/projects/vesta/index.js index 04867fa7c61..f1fee166614 100644 --- a/projects/vesta/index.js +++ b/projects/vesta/index.js @@ -23,39 +23,32 @@ const LP_VST_FRAX_ADDRESS = "0x59bF0545FCa0E5Ad48E13DA269faCD2E8C886Ba4"; const TROVE_MANAGER_ADDRESS = "0x100EC08129e0FD59959df93a8b914944A3BbD5df"; -const chain = "arbitrum"; -async function tvl(_, block, chainBlocks) { - block = chainBlocks.arbitrum; - const transform = i => `arbitrum:${i}` +async function tvl(api) { const balances = {} - const calls = Object.values(VaultTokens).map(token => ({ params: [token] })) - const { output } = await sdk.api.abi.multiCall({ - calls, block, chain: 'arbitrum', target: TROVE_MANAGER_ADDRESS, abi: "function getEntireSystemColl(address _asset) view returns (uint256 entireSystemColl)" - , + 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(({ input: { params: [token] }, output }) => { + output.forEach((output, i) => { + const token = calls[i].toLowerCase() if (token.toLowerCase() === VaultTokens.renBTC) output /= 1e10 // fix renBTC balance - const llamaTokenAddress = transform(token.toLowerCase() === VaultTokens.GLP ? FEGLP_ADDRESS : token) // convert sGLP to feGLP address for price api - - sdk.util.sumSingleBalance(balances, llamaTokenAddress, output) + 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(_timestamp, block, chainBlocks, { api }) { - block = chainBlocks.arbitrum; - const balances = {}; - const transform = i => `arbitrum:${i}` - await sumBalancerLps(balances, [[LP_VSTA_ETH_ADDRESS, VSTA_FARMING_ADDRESS]], chainBlocks.arbitrum, chain, transform); +async function pool2(api) { + const balances = {} + await sumBalancerLps(balances, [[LP_VSTA_ETH_ADDRESS, VSTA_FARMING_ADDRESS]], api.block, api.chain); - const curveBalances = ( - await sdk.api.abi.call({ target: VST_FARMING_ADDRESS, abi: "uint256:totalStaked", block, params: [], chain, }) - ).output; - sdk.util.sumSingleBalance(balances,LP_VST_FRAX_ADDRESS,curveBalances, api.chain) + const curveBalances = await api.call({ target: VST_FARMING_ADDRESS, abi: "uint256:totalStaked" }) + sdk.util.sumSingleBalance(balances, LP_VST_FRAX_ADDRESS, curveBalances, api.chain) return balances; } diff --git a/projects/vesync/index.js b/projects/vesync/index.js index cc536473e66..f30e5b83ded 100644 --- a/projects/vesync/index.js +++ b/projects/vesync/index.js @@ -16,7 +16,7 @@ module.exports = { useDefaultCoreAssets: true, hasStablePools: true, }), - staking: async (_, _b, cb, { api } = {}) => { + 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 diff --git a/projects/vires/index.js b/projects/vires/index.js index 5440a28609f..1e1bb773f88 100644 --- a/projects/vires/index.js +++ b/projects/vires/index.js @@ -34,13 +34,13 @@ const aTokens = [ ] -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { return sumTokens({ owners: aTokens, api, includeWaves: true, }) } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { await Promise.all(aTokens.map(async (token) => { const assetId = (await call({ target: token, key: 'assetId'})).split('_')[0] const res = (await call({ target: token, key: 'reserveGlobalData'})).split('|')[2] diff --git a/projects/virtuswap/index.js b/projects/virtuswap/index.js index 920e2db3967..879592d25a1 100644 --- a/projects/virtuswap/index.js +++ b/projects/virtuswap/index.js @@ -15,7 +15,7 @@ Object.keys(config).forEach(chain => { }) -async function tvl(_, _1, _2, { api }) { +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 }) diff --git a/projects/visor/index.js b/projects/visor/index.js index b930a4b9397..595add42c60 100644 --- a/projects/visor/index.js +++ b/projects/visor/index.js @@ -14,7 +14,7 @@ module.exports = { Object.keys(config).forEach(chain => { let { blacklistedHypes = [], registries, LIQUIDITY_MINING_POOLS } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { if (LIQUIDITY_MINING_POOLS) { const bals = await api.multiCall({ abi: hypervisorAbi.getHyperVisorData, calls: LIQUIDITY_MINING_POOLS, }); diff --git a/projects/vivaleva/index.js b/projects/vivaleva/index.js index a81061c8ebd..f43dda54f75 100644 --- a/projects/vivaleva/index.js +++ b/projects/vivaleva/index.js @@ -5,7 +5,7 @@ const getAllPositionsByIdsABI = "function getAllPositionsByIds(address vaultAddr module.exports = { timetravel: false, era: { - async tvl(_, _1, _2, { api }) { + async tvl(api) { const _data = await getConfig('vivaleva', "https://sbb.sooho.io/api/v1/external/vivaleva/defiLlama") const data = { diff --git a/projects/vmex-fi/index.js b/projects/vmex-fi/index.js index 104db83b7a2..ccc141b75d9 100644 --- a/projects/vmex-fi/index.js +++ b/projects/vmex-fi/index.js @@ -6,11 +6,11 @@ const config = { Object.keys(config).forEach(chain => { const { pool } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const reserveData = await getReserveData(api) return api.sumTokens({ tokensAndOwners: reserveData.map(i => [i.token, i.aTokenAddress])}) }, - borrowed: async (_, _b, _cb, { api, }) => { + 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) diff --git a/projects/void/index.js b/projects/void/index.js index ec5904fe5f6..c2152039561 100644 --- a/projects/void/index.js +++ b/projects/void/index.js @@ -2,7 +2,7 @@ module.exports = { fantom: { tvl: () => 0, - staking: async (_, _1, _2, { api }) => { + staking: async (api) => { const bal = await api.call({ abi: 'uint256:getTotalInvested', target: '0xe0d4ed2613f6c8737234d28d24b9c5d7f106bd28' }) api.add('0x80F2B8CdbC470c4DB4452Cc7e4a62F5277Db7061', bal) }, diff --git a/projects/volta-finance/index.js b/projects/volta-finance/index.js index 24aff5ca3b4..1c98a1f3fa0 100644 --- a/projects/volta-finance/index.js +++ b/projects/volta-finance/index.js @@ -7,7 +7,7 @@ const erc4626 = [ '0x39ff5098081FBE1ab241c31Fe0a9974FE9891d04', // voltGNS ] -async function tvl(_, _1, _2, { api }) { +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}) diff --git a/projects/voltage-liquidstaking/index.js b/projects/voltage-liquidstaking/index.js index 1fee43f4e83..369805e65a9 100644 --- a/projects/voltage-liquidstaking/index.js +++ b/projects/voltage-liquidstaking/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const FUSE_STAKING_ADDRESS = "0xa3dc222eC847Aac61FB6910496295bF344Ea46be".toLowerCase() -async function tvl(timestamp, block, chainBlocks, { api }) { +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() diff --git a/projects/voltz/index.js b/projects/voltz/index.js index afbc7607e4f..01953ba33fb 100644 --- a/projects/voltz/index.js +++ b/projects/voltz/index.js @@ -16,7 +16,7 @@ async function getTokensAndOwners(api) { return logs.map(i => ([i.underlyingToken, i.marginEngine])) } -async function tvl(_, block, _1, { api }) { +async function tvl(api) { return sumTokens2({ api, tokensAndOwners: await getTokensAndOwners(api), }) } diff --git a/projects/warp/index.js b/projects/warp/index.js index 3be4c1a74d8..d9f6c370dff 100644 --- a/projects/warp/index.js +++ b/projects/warp/index.js @@ -1,7 +1,7 @@ const { sumTokens2, } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -async function tvl(_timestamp, block, _1, { api }) { +async function tvl(api) { const owners = [] const tokens = [] for (const group of tokenHolderMap) { diff --git a/projects/wasabi/index.js b/projects/wasabi/index.js index 3506aa7feac..7051d8d4576 100644 --- a/projects/wasabi/index.js +++ b/projects/wasabi/index.js @@ -20,7 +20,7 @@ Object.keys(config).forEach(chain => { let { pools, fromBlock, tokens = [], } = config[chain] pools = Object.values(pools) module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = (await Promise.all(pools.map(target => getLogs({ api, target, diff --git a/projects/waterfallfinance/index.js b/projects/waterfallfinance/index.js index e0babe9fa2a..4c48023dc58 100644 --- a/projects/waterfallfinance/index.js +++ b/projects/waterfallfinance/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { stakingPricedLP } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens'); - -const chef = "0x4Be7079064537867b40829119Be49Ee8CC76570e" -const waterfall = "0x6b2a7B82d3F7a6e1F5A5831aB40666Ec717645d5" -const waterfallFtmLP = "0xc4ec70361f57ba0ca0ac82319677fb95b9837a78" -const waterfallUsdcLP = "0x7080f230f42b3b76828ba6392b50433edc0909fa"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [waterfall, waterfallFtmLP, waterfallUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: stakingPricedLP(chef, waterfall, "fantom", "0xc4Ec70361f57Ba0Ca0Ac82319677fB95B9837A78", "wrapped-fantom"), - pool2: pool2Exports(chef, [waterfallFtmLP, waterfallUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + nativeToken: '0x6b2a7B82d3F7a6e1F5A5831aB40666Ec717645d5', + masterchef: '0x4Be7079064537867b40829119Be49Ee8CC76570e', +}) \ No newline at end of file diff --git a/projects/waves-exchange/index.js b/projects/waves-exchange/index.js index dc4ce7152ca..29a81149348 100644 --- a/projects/waves-exchange/index.js +++ b/projects/waves-exchange/index.js @@ -65,7 +65,7 @@ async function getPoolsData(factoryContract, restContract, api) { return transformDexBalances({ api, data, }); } -async function WXPoolsTVL(_, _b, _cb, { api, }) { +async function WXPoolsTVL(api) { return getPoolsData(factoryContract, WXPoolsRestContract, api); } diff --git a/projects/wbtc.js b/projects/wbtc.js index 39e9bc8f89d..84b706887f6 100644 --- a/projects/wbtc.js +++ b/projects/wbtc.js @@ -6,7 +6,7 @@ async function tvl(ts, block) { [ADDRESSES.ethereum.WBTC]: (await sdk.api.erc20.totalSupply({ target: ADDRESSES.ethereum.WBTC, block })).output } } -async function tvlTron(ts, block, _, { api }) { +async function tvlTron(api) { return { [ADDRESSES.ethereum.WBTC]: (await api.call({ target: 'TXpw8XeWYeTUd4quDskoUqeQPowRh4jY65', abi: 'erc20:totalSupply' })), ['ethereum:'+ADDRESSES.null]: (await api.call({ target: 'TXWkP3jLBqRGojUih1ShzNyDaN5Csnebok', abi: 'erc20:totalSupply' })), diff --git a/projects/weave/index.js b/projects/weave/index.js index 2412fc89137..a748a47a369 100644 --- a/projects/weave/index.js +++ b/projects/weave/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const WKAVA = ADDRESSES.kava.WKAVA; const STRATEGY_CONTRACT = '0x9633a42E4f73F465DD421b22C09E2787493DaAdA' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const strategyBalance = await api.call({ abi: 'erc20:balanceOf', target: WKAVA, diff --git a/projects/weft-finance/index.js b/projects/weft-finance/index.js index 20b5da308e7..ef7168c525f 100644 --- a/projects/weft-finance/index.js +++ b/projects/weft-finance/index.js @@ -24,7 +24,7 @@ async function fetchData(addresses) { return await queryAddresses({ addresses }); } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const [poolData, priceData] = await Promise.all([ fetchData(pools.map((item) => item.pool)), fetchData(pools.map((item) => item.priceFeed)), @@ -45,7 +45,7 @@ async function tvl(_, _b, _cb, { api, }) { return { 'radix': totalValueLocked }; } -async function borrowed(_, _b, _cb, { api, }) { +async function borrowed(api) { const [poolData, priceData] = await Promise.all([ fetchData(pools.map((item) => item.pool)), fetchData(pools.map((item) => item.priceFeed)), diff --git a/projects/wemix-liquid-staking/index.js b/projects/wemix-liquid-staking/index.js index 5051d72fdda..07daa070636 100644 --- a/projects/wemix-liquid-staking/index.js +++ b/projects/wemix-liquid-staking/index.js @@ -1,7 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const token = '0x9B377bd7Db130E8bD2f3641E0E161cB613DA93De' -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const supply = await api.call({ abi: 'uint256:totalSupply', target: token, }); api.add(ADDRESSES.null, supply) } diff --git a/projects/wemix-staking/index.js b/projects/wemix-staking/index.js index f86cc0fac03..5def48b7ca7 100644 --- a/projects/wemix-staking/index.js +++ b/projects/wemix-staking/index.js @@ -18,7 +18,7 @@ const abi = { 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(timestamp, block, chainBlocks, { api }) { +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 }) diff --git a/projects/westater/index.js b/projects/westater/index.js index 88301318ece..5a60f5d1bc6 100644 --- a/projects/westater/index.js +++ b/projects/westater/index.js @@ -16,7 +16,7 @@ const farms = [ }, ] -async function tvl(timestamp, block, _, { api }) { +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}) diff --git a/projects/whalegame/index.js b/projects/whalegame/index.js index e3922dded61..b4a6d6e93bd 100644 --- a/projects/whalegame/index.js +++ b/projects/whalegame/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const GAME_CONTRACT_ADDRESS = "0xF1baf16Db25405856f5379246Beba2B694e1449D"; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const whaleTokenAddress = await api.call({ abi: abi.whaleToken, target: GAME_CONTRACT_ADDRESS, }); const owners = [GAME_CONTRACT_ADDRESS, whaleTokenAddress] diff --git a/projects/wildcat-fi/index.js b/projects/wildcat-fi/index.js index 400f16678a8..e7052d9659b 100644 --- a/projects/wildcat-fi/index.js +++ b/projects/wildcat-fi/index.js @@ -7,11 +7,11 @@ const config = { Object.keys(config).forEach(chain => { const { archController } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const { markets, tokens } = await getMarkets(api) return api.sumTokens({ tokensAndOwners2: [tokens, markets] }) }, - borrowed: async (_, _b, _cb, { api, }) => { + 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 }) diff --git a/projects/wildcredit/index.js b/projects/wildcredit/index.js index 85765df263e..d38e9f0cc01 100644 --- a/projects/wildcredit/index.js +++ b/projects/wildcredit/index.js @@ -1,31 +1,20 @@ -const sdk = require("@defillama/sdk"); -const { default: BigNumber } = require("bignumber.js"); const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -BigNumber.config({ EXPONENTIAL_AT: 100 }) - const PAIR_FACTORY = "0x0fC7e80090bbc1740595b1fcCd33E0e82547212F"; const START_BLOCK = 13847198 -const calculateTokenTotal = async (balances, block, pairs, abi) => { - const pairsTokenBalances = (await sdk.api.abi.multiCall({ +const calculateTokenTotal = async (api, pairs, abi) => { + const pairsTokenBalances = await api.multiCall({ calls: pairs.map(pair => ({ target: pair.pair, params: pair.token })), abi, - block - })).output.map(result => result.output); - - for (let index = 0; index < pairs.length; index++) { - sdk.util.sumSingleBalance( - balances, - pairs[index].token, - pairsTokenBalances[index] - ); - } + }) + const tokens = pairs.map(pair => pair.token) + api.add(tokens, pairsTokenBalances) } const getPairs = async (api) => { @@ -45,30 +34,22 @@ const getPairs = async (api) => { }) } -const ethTvl = async (timestamp, ethBlock, chainBlocks, { api }) => { - const balances = {}; - +const ethTvl = async (api) => { const pairs = await getPairs(api) - await calculateTokenTotal(balances, ethBlock, getTokenPairs(pairs, 'tokenA'), abi.totalSupplyAmount) - await calculateTokenTotal(balances, ethBlock, getTokenPairs(pairs, 'tokenB'), abi.totalSupplyAmount) + await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenA'), abi.totalSupplyAmount) + await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenB'), abi.totalSupplyAmount) - await sumTokens2({ balances, resolveUniV3: true, owners: pairs.map(pair => pair.pair), block: ethBlock, }) - - return balances; + 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 (timestamp, ethBlock, chainBlocks, { api }) => { - const balances = {}; - +const borrowed = async (api) => { const pairs = await getPairs(api) - await calculateTokenTotal(balances, ethBlock, getTokenPairs(pairs, 'tokenA'), abi.totalDebtAmount) - await calculateTokenTotal(balances, ethBlock, getTokenPairs(pairs, 'tokenB'), abi.totalDebtAmount) - - return balances + await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenA'), abi.totalDebtAmount) + await calculateTokenTotal(api, getTokenPairs(pairs, 'tokenB'), abi.totalDebtAmount) } module.exports = { diff --git a/projects/wise-lending/index.js b/projects/wise-lending/index.js index ace99411926..2e86ad01d82 100644 --- a/projects/wise-lending/index.js +++ b/projects/wise-lending/index.js @@ -1,7 +1,7 @@ const lendingContract = '0x37e49bf3749513A02FA535F0CbC383796E8107E4' const feeManager = '0x0bc24e61daad6293a1b3b53a7d01086bff0ea6e5' -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const pools = await api.fetchList({ lengthAbi: 'uint256:getPoolTokenAddressesLength', itemAbi: 'function getPoolTokenAdressesByIndex(uint256) view returns (address)', target: feeManager }) const isATokens = await api.multiCall({ abi: 'function isAaveToken(address) view returns (bool)', calls: pools, target: feeManager }) const aTokens = pools.filter((_, i) => isATokens[i]) diff --git a/projects/wombat-exchange/index.js b/projects/wombat-exchange/index.js index ee32c52115d..ca32b89c2e3 100644 --- a/projects/wombat-exchange/index.js +++ b/projects/wombat-exchange/index.js @@ -5,7 +5,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); Object.keys(config).forEach((chain) => { let { pools, wom, veWom } = config[chain]; module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }, { api }) => { + tvl: async (api) => { pools = Object.values(pools); let allUnderlying = await api.multiCall({ diff --git a/projects/wombex/index.js b/projects/wombex/index.js index 79095b827db..9c9d64fd2b2 100644 --- a/projects/wombex/index.js +++ b/projects/wombex/index.js @@ -40,7 +40,7 @@ async function veWomBalanceCrutch(masterWombat, voterProxy, wmxLocker, wmx, wom, api.add(wom, womBal) } -async function tvl(masterWombat, voterProxy, wmxLocker, wmx, wom, veWom, timestamp, ethereumBlock, chainBlocks, { api }) { +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) diff --git a/projects/words/index.js b/projects/words/index.js index 2267350bf92..f18430ef96f 100644 --- a/projects/words/index.js +++ b/projects/words/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0xeFb73Ae2247d8a5A87D1EF5e9FD0b815BAb262ef"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/wyndao-lsd/index.js b/projects/wyndao-lsd/index.js index 0832bd56669..c28b3543eda 100644 --- a/projects/wyndao-lsd/index.js +++ b/projects/wyndao-lsd/index.js @@ -4,7 +4,7 @@ const { queryContract, totalSupply } = require('../helper/chain/cosmos') module.exports = { timetravel: false, juno: { - tvl: async (_, _1, _2, { api }) => { + tvl: async (api) => { let { supply: { bond_denom, total_bonded }} = await queryContract({ chain: api.chain, contract: 'juno1snv8z7j75jwfce4uhkjh5fedpxjnrx9v20ffflzws57atshr79yqnw032r', data: { supply: {}}}) api.add(bond_denom, total_bonded) } diff --git a/projects/x2y2/index.js b/projects/x2y2/index.js index c2cd6d6135c..8765fab0062 100644 --- a/projects/x2y2/index.js +++ b/projects/x2y2/index.js @@ -11,7 +11,7 @@ const XY3_v1 = "0xC28F7Ee92Cd6619e8eEC6A70923079fBAFb86196"; const XY3_v2 = "0xFa4D5258804D7723eb6A934c11b1bd423bC31623" const XY3_v3 = "0xB81965DdFdDA3923f292a47A1be83ba3A36B5133" -async function tvl(timestamp, block, chainBlocks, { api }) { +async function tvl(api) { return sumTokens2({ api, owners: [XY3_v1, XY3_v2, XY3_v3], resolveNFTs: true}) } diff --git a/projects/xWinFinance/index.js b/projects/xWinFinance/index.js index 6ac76cf048b..5e51881a6f4 100644 --- a/projects/xWinFinance/index.js +++ b/projects/xWinFinance/index.js @@ -2,7 +2,7 @@ const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') const Helper = require("./Helper.js"); const { farms: { MasterChefAddress, LockStakingAddress }, abi, token: { XWIN } } = require('./Helper.js'); -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const vaults = [ ...Object.values(Helper.Strategies), ...Object.values(Helper.PublicVault), @@ -13,7 +13,7 @@ async function tvl(_, _1, _2, { api }) { api.addTokens(tokens, bals) } -async function pool2(_, _1, _2, { api }) { +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] }) } diff --git a/projects/xave-finance/index.js b/projects/xave-finance/index.js index f614b2f802f..2e432364bc4 100644 --- a/projects/xave-finance/index.js +++ b/projects/xave-finance/index.js @@ -1,7 +1,7 @@ const { ethers } = require("ethers"); const { getLogs } = require("../helper/cache/getLogs"); -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const factories = config[api.chain]; const promises = factories.map(async ({ factory, fromBlock, name }) => { diff --git a/projects/xbanking/index.js b/projects/xbanking/index.js index f1b328f71e1..62521da57bc 100644 --- a/projects/xbanking/index.js +++ b/projects/xbanking/index.js @@ -16,14 +16,14 @@ const tokens = [ contracts.TOMB, ] -async function tvl(_, _b, _cb, { api, }) { +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(_, _b, _cb, { api, }) { +async function borrowed(api) { const vaults0 = vaults.slice(0, 2); const vaults1 = vaults.slice(2); const tokens0 = tokens.slice(0, 2); diff --git a/projects/xdai/index.js b/projects/xdai/index.js index d53a4630bb8..6cab74c42c1 100644 --- a/projects/xdai/index.js +++ b/projects/xdai/index.js @@ -15,7 +15,7 @@ const owners = [ const xDaiBridge = "0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016"; const owlToken = "0x1a5f9352af8af974bfc03399e3767df6370d82e4"; const owlBridge = "0xed7e6720ac8525ac1aeee710f08789d02cd87ecb"; -async function eth(timestamp, block, _, { api }) { +async function eth(api) { const ownerTokens = [ [tokenAddresses, xDaiBridge], [[owlToken], owlBridge], diff --git a/projects/xdefi/index.js b/projects/xdefi/index.js index a12cc2f2b41..96ceba93ad4 100644 --- a/projects/xdefi/index.js +++ b/projects/xdefi/index.js @@ -1,6 +1,6 @@ const { getLogs } = require('../helper/cache/getLogs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0x23c088198347edb873946fcff77e42401a1a93d2', diff --git a/projects/xena/index.js b/projects/xena/index.js index df152b4406a..0326767d4b1 100644 --- a/projects/xena/index.js +++ b/projects/xena/index.js @@ -7,7 +7,7 @@ const Contracts = { LOCKED_XEN_ETH_LP: "0x57A480007DFbce2803147DCcBeAFAEb50BDe64Fb", }; -async function tvl(_, _b, _cb, { api }) { +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 }) } diff --git a/projects/xensa/index.js b/projects/xensa/index.js index 85cd426457e..204a5ea1bd4 100644 --- a/projects/xensa/index.js +++ b/projects/xensa/index.js @@ -3,7 +3,7 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const _xensaCoreAddress = '0xd1242313461dd533279f0cac0dbc06ecdb878a79'; -async function tvl(timestamp, _ethBlock, chainBlocks, { api }) { +async function tvl(api) { const reserves_xensa = ( await api.call({ target: _xensaCoreAddress, diff --git a/projects/xfai/index.js b/projects/xfai/index.js index 947078d41a3..cc4a44c4254 100644 --- a/projects/xfai/index.js +++ b/projects/xfai/index.js @@ -5,7 +5,7 @@ module.exports = { methodology: `Sums on-chain tvl by getting pools using xfai factory`, start: 1692347965 , // Aug-18-2023 08:39:25 AM +UTC linea: { - tvl: async (timestamp, _, chainBlocks, { api }) => { + 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]) diff --git a/projects/xmaspast/index.js b/projects/xmaspast/index.js index d03ea1b26ca..540fa16dba5 100644 --- a/projects/xmaspast/index.js +++ b/projects/xmaspast/index.js @@ -1,27 +1,7 @@ -const abi = require("../helper/abis/masterchef.json") -const { addFundsInMasterChef } = require("../helper/masterchef"); -const { staking, stakingPricedLP } = require("../helper/staking"); -const { pool2Exports } = require('../helper/pool2') +const { masterchefExports, } = require('../helper/unknownTokens'); - -const chef = "0x138c4dB5D4Ab76556769e4ea09Bce1D452c2996F" -const xpast = "0xD3111Fb8BDf936B11fFC9eba3b597BeA21e72724" -const xpastFtmLP = "0x9665067DceF6a88d2dCf042ee25A2d98a2DDF8D6" -const xpastUsdcLP = "0x73B019D2B6fD28D85eeAD4E85909d69Cc0472D5F"; - -async function tvl(timestamp, block, chainBlocks) { - const balances = {} - const transformAddress = i => `fantom:${i}`; - await addFundsInMasterChef(balances, chef, chainBlocks.fantom, "fantom", transformAddress, abi.poolInfo, [xpast, xpastFtmLP, xpastUsdcLP]); - return balances; -} - -module.exports = { - methodology: "TVL includes all farms in MasterChef contract", - fantom: { - tvl, - staking: stakingPricedLP(chef, xpast, "fantom","0x9665067DceF6a88d2dCf042ee25A2d98a2DDF8D6", "fantom"), - pool2: pool2Exports(chef, [xpastFtmLP, xpastUsdcLP], "fantom"), - }, - -} \ No newline at end of file +module.exports = masterchefExports({ + chain: 'fantom', + nativeToken: '0xD3111Fb8BDf936B11fFC9eba3b597BeA21e72724', + masterchef: '0x138c4dB5D4Ab76556769e4ea09Bce1D452c2996F', +}) \ No newline at end of file diff --git a/projects/xtoken/index.js b/projects/xtoken/index.js index b39db597569..c0509ecd56b 100644 --- a/projects/xtoken/index.js +++ b/projects/xtoken/index.js @@ -89,7 +89,7 @@ const config = { Object.keys(config).forEach(chain => { const { factory, fromBlock } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ api, target: factory, diff --git a/projects/y2b-finance/index.js b/projects/y2b-finance/index.js index e90457e14ac..d61e36d21ec 100644 --- a/projects/y2b-finance/index.js +++ b/projects/y2b-finance/index.js @@ -1,7 +1,7 @@ const { sumTokens2, sumTokensExport } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -async function tvl(timestamp, _b, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, fromBlock: 16310967, diff --git a/projects/y2k-finance/index.js b/projects/y2k-finance/index.js index 148b5c573b3..85b34a7009c 100644 --- a/projects/y2k-finance/index.js +++ b/projects/y2k-finance/index.js @@ -3,7 +3,7 @@ const { getLogs } = require('../helper/cache/getLogs') const chain = 'arbitrum' -async function tvl(timestamp, _b, chainBlocks, { api }) { +async function tvl(api) { const logs = await getLogs({ api, fromBlock: 33934273, diff --git a/projects/y2k-v2/index.js b/projects/y2k-v2/index.js index 8eb721bdd31..6340500ab48 100644 --- a/projects/y2k-v2/index.js +++ b/projects/y2k-v2/index.js @@ -9,7 +9,7 @@ const config = { Object.keys(config).forEach(chain => { const _config = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = (await Promise.all(_config.map(({ factory, fromBlock, }) => getLogs({ api, target: factory, diff --git a/projects/y2r/index.js b/projects/y2r/index.js index bcc26b6923c..4b9200e0394 100644 --- a/projects/y2r/index.js +++ b/projects/y2r/index.js @@ -20,7 +20,7 @@ const vaultAddresses = { vFlowUSDT: '0xE1b05d4f2A61c32B3deAD4fc6BA0f07d595a4f8B', } -async function tvl(_, _b, _cb, { api, }) { +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 }) diff --git a/projects/yama-finance/index.js b/projects/yama-finance/index.js index d5b775592f4..e16eb38a290 100644 --- a/projects/yama-finance/index.js +++ b/projects/yama-finance/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { CDP, fromBlock, PSM, USDT } = config[api.chain] const logs = await getLogs({ api, diff --git a/projects/yaxis/index.js b/projects/yaxis/index.js index eef00d02ced..99e18a06ed1 100644 --- a/projects/yaxis/index.js +++ b/projects/yaxis/index.js @@ -2,8 +2,7 @@ const { staking } = require('../helper/staking') const { abi } = require("../yaxis/abi.js"); const constants = require("../yaxis/constants.js"); -async function tvl(timestamp, block) { - const { api } = arguments[3] +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) @@ -12,8 +11,7 @@ async function tvl(timestamp, block) { api.addTokens(tokens, bals) } -async function staking_(time, block) { - const { api } = arguments[3] +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 })) diff --git a/projects/yearn-ether/index.js b/projects/yearn-ether/index.js index 2079152b23c..2077e35232b 100644 --- a/projects/yearn-ether/index.js +++ b/projects/yearn-ether/index.js @@ -1,6 +1,6 @@ const YETH_POOL = '0x2cced4ffA804ADbe1269cDFc22D7904471aBdE63'; -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { const tokens = await api.fetchList({ lengthAbi: 'num_assets', itemAbi: 'assets', target: YETH_POOL}) return api.sumTokens({ tokens, owner: YETH_POOL }) } diff --git a/projects/yearn/index.js b/projects/yearn/index.js index 9c8b9a99546..a753745a904 100644 --- a/projects/yearn/index.js +++ b/projects/yearn/index.js @@ -41,7 +41,7 @@ const blacklist = [ ...v1Vaults, ] -async function tvl(timestamp, _, _1, { api }) { +async function tvl(api) { if(api.chain==="polygon"){ const data = await getConfig('yearn/' + api.chain, `https://ydaemon.yearn.finance/vaults/all?chainids=137&limit=100000`) await api.erc4626Sum({ calls: data.filter(v=>v.kind==="Multi Strategy").map(v=>v.address), balanceAbi: 'totalAssets', tokenAbi: "asset" }) diff --git a/projects/yfx-v3/index.js b/projects/yfx-v3/index.js index 3788ed02b6e..ec531f9d8fd 100644 --- a/projects/yfx-v3/index.js +++ b/projects/yfx-v3/index.js @@ -1,7 +1,7 @@ const manager = '0x29bd0372A8A087e4d34d4098259Cd298d554BAc4'; const vault = '0x48F4B8f77b1E0EFBBF17b2082F12829b87FD1933'; -async function tvl(timestamp, block, chainBlocks, { api }) { +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}) diff --git a/projects/yiedl-vaults/index.js b/projects/yiedl-vaults/index.js index a05901304d0..c3754382f19 100644 --- a/projects/yiedl-vaults/index.js +++ b/projects/yiedl-vaults/index.js @@ -78,10 +78,10 @@ async function _computeTvl(vault, eligibleBlock) { return sum; } -async function tvl(timestamp, block, _, { api }) { +async function tvl(api) { const vaultTypes = Object.keys(VAULTS); for (const vaultType of vaultTypes) { - const amount = await tvlPerVault(timestamp, block, VAULTS[vaultType]); + const amount = await tvlPerVault(api.timestamp, api.block, VAULTS[vaultType]); api.add(SUSD, amount.toNumber()); } } diff --git a/projects/yieldbank/index.js b/projects/yieldbank/index.js index 5366964be81..3576a0da1f4 100644 --- a/projects/yieldbank/index.js +++ b/projects/yieldbank/index.js @@ -1,5 +1,5 @@ const { sumUnknownTokens } = require('../helper/unknownTokens') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const vaults = [ '0x605E65d82A6fa21A7383990D4B2eAbe343040b52', ] diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js index 24282dd46eb..f7d0d989eef 100644 --- a/projects/yieldflow/index.js +++ b/projects/yieldflow/index.js @@ -20,7 +20,7 @@ const managers = [ '0x0F6EEFd958287FDF80F5B1D4Ea79B928F9Ae933d' ] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { 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]})) }) diff --git a/projects/yieldhubfinance/index.js b/projects/yieldhubfinance/index.js index 4ec3b6d9599..5779b702de6 100644 --- a/projects/yieldhubfinance/index.js +++ b/projects/yieldhubfinance/index.js @@ -27,7 +27,7 @@ const vaults = [ "0x8bF553291D2810C772ea43bBA77eDFf92191b450" ] -async function tvl(_, _b, _cb, { api, }) { +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) diff --git a/projects/yieldis/index.js b/projects/yieldis/index.js index f09ab5350c8..d21cac1d1a3 100644 --- a/projects/yieldis/index.js +++ b/projects/yieldis/index.js @@ -49,7 +49,7 @@ module.exports = { Object.keys(config).forEach(chain => { const { ladle, fromBlock, oldPools, blacklistedTokens, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + tvl: async (api) => { const logs = await getLogs({ target: ladle, fromBlock, api, topic: 'PoolAdded(bytes6,address)', diff --git a/projects/yieldyak-staked-avax/index.js b/projects/yieldyak-staked-avax/index.js index a7d151829a1..c283738089d 100644 --- a/projects/yieldyak-staked-avax/index.js +++ b/projects/yieldyak-staked-avax/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const yieldYak_id = "45756385483164763772015628191198800763712771278583181747295544980036831301432"; -async function avax(timestamp, ethBlock, chainBlocks, { api }) { +async function avax(api) { const supply = await api.call({ abi: "function totalSupply(uint256 id) view returns (uint256)", diff --git a/projects/yieldyak/index.js b/projects/yieldyak/index.js index d14da835936..5d77fe99e15 100644 --- a/projects/yieldyak/index.js +++ b/projects/yieldyak/index.js @@ -4,7 +4,7 @@ const { cachedGraphQuery, getConfig } = require('../helper/cache') const graphUrl = 'https://api.thegraph.com/subgraphs/name/yieldyak/reinvest-tracker' const graphQuery = `{ farms(first: 1000) { id }}`; -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +async function tvl(api) { const { farms } = await cachedGraphQuery('yieldyak/avax', graphUrl, graphQuery) const tokens = await api.multiCall({ abi: 'address:depositToken', calls: farms.map(i => i.id), permitFailure: true, }) const vals = await api.multiCall({ abi: 'uint256:totalDeposits', calls: farms.map(i => i.id), permitFailure: true, }) @@ -13,7 +13,7 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) { api.add(token, vals[i]) }) } -async function arbiTvl(timestamp, ethBlock, chainBlocks, { api }) { +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, }) diff --git a/projects/yldr/index.js b/projects/yldr/index.js index b626c228833..c97f9ee996d 100644 --- a/projects/yldr/index.js +++ b/projects/yldr/index.js @@ -26,13 +26,13 @@ Object.keys(config).forEach(chain => { } module.exports[chain] = { - tvl: async (_, _b, _cb, { api, }) => { + 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 (_, _b, _cb, { api, }) => { + 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) }) diff --git a/projects/yslio/index.js b/projects/yslio/index.js index 5d6e755ad22..40b2da6098e 100644 --- a/projects/yslio/index.js +++ b/projects/yslio/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const masterChefContract = "0xEE7Bc7727436D839634845766f567fa354ba8C56"; -async function tvl(_, _b, _cb, { api, }) { +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) diff --git a/projects/yup/index.js b/projects/yup/index.js index 67b73a98d85..1ad46ce06b9 100644 --- a/projects/yup/index.js +++ b/projects/yup/index.js @@ -8,15 +8,15 @@ const ETH_LP_BRIDGED = '0x5b51f8a6651e4d45d0e3d0131e73b30b7e3443f4' const POLY_ETH_MASTERCHEF = '0xa378721517B5030D9D17CaF68623bB1f2CcF5c2e' module.exports = { - timetravel: true, + timetravel: false, polygon: { tvl: async () => ({}), pool2: pool2(POLY_MASTERCHEF, POLY_LP), }, ethereum: { tvl: async () => ({}), - pool2: async (ts, block, chainBlocks, { api }) => { - const { output: LPbalance } = await sdk.api.erc20.balanceOf({ target: ETH_LP_BRIDGED, owner: POLY_ETH_MASTERCHEF, block: chainBlocks.polygon, chain: 'polygon' }) + 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/zapper-channels/index.js b/projects/zapper-channels/index.js index a8a96248e33..b8b866ebee9 100644 --- a/projects/zapper-channels/index.js +++ b/projects/zapper-channels/index.js @@ -2,7 +2,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); const contract = "0xbC98176DC471CB67Dc19fA4558104f034D8965Fa"; -async function tvl(time, ethBlock, _b, { api }) { +async function tvl(api) { return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } diff --git a/projects/zenlink/index.js b/projects/zenlink/index.js index e901a4723f2..4c4a4c902bd 100644 --- a/projects/zenlink/index.js +++ b/projects/zenlink/index.js @@ -5,7 +5,7 @@ const stableSwapAbi = require('./abis/StableSwap.json'); function getStableSwapPool(contracts) { - return async (_, _1, _2, { api }) => { + 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])) diff --git a/projects/zeroliquid/index.js b/projects/zeroliquid/index.js index 7eb505f0176..6ee17e32b9a 100644 --- a/projects/zeroliquid/index.js +++ b/projects/zeroliquid/index.js @@ -1,6 +1,6 @@ const { staking } = require('../helper/staking') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const vault = '0x0246e28C6B161764492E54CBF852e28A4DA2D672' const tokens = await api.call({ abi: 'address[]:getSupportedYieldTokens', target: vault }) return api.sumTokens({ owner: vault, tokens, }) diff --git a/projects/zeta/index.js b/projects/zeta/index.js index 244ba7caf4e..4350568d117 100644 --- a/projects/zeta/index.js +++ b/projects/zeta/index.js @@ -15,7 +15,7 @@ module.exports = { }, }; -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const legacyZetaGroupAddrs = [ new PublicKey("CoGhjFdyqzMFr5xVgznuBjULvoFbFtNN4bCdQzRArNK2"), new PublicKey("5XC7JWvLGGds4tjaawgY8FwMdotUb5rrEUmxcmyp5ZiW"), diff --git a/projects/zetaEarn/index.js b/projects/zetaEarn/index.js index 0c41e99fb9b..4411f0b53d2 100644 --- a/projects/zetaEarn/index.js +++ b/projects/zetaEarn/index.js @@ -1,4 +1,4 @@ -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { api.addGasToken(await api.call({target: '0x45334a5b0a01ce6c260f2b570ec941c680ea62c0', abi: 'uint256:getTotalPooledZETA'})) } diff --git a/projects/zeus-finance/index.js b/projects/zeus-finance/index.js index a0be4f5b22d..f99cd2c2146 100644 --- a/projects/zeus-finance/index.js +++ b/projects/zeus-finance/index.js @@ -1,28 +1,10 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const {addFundsInMasterChef} = require("../helper/masterchef"); -const {stakingUnknownPricedLP} = require("../helper/staking"); -const {pool2BalanceFromMasterChefExports} = require("../helper/pool2") -const token = "0x813658e307fA4DAF9B25e7CE1dE3b40012CA2B74"; -const masterchef = "0xCb0349992fCA780b9D6F95Fbbc88d318Ac092A5d"; +const { masterchefExports, } = require('../helper/unknownTokens'); -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - await addFundsInMasterChef(balances, masterchef, chainBlocks.cronos, "cronos", addr=>{ - if (addr.toLowerCase() === "0xf2001b145b43032aaf5ee2884e456ccd805f677d") { - return ADDRESSES.ethereum.DAI - } - return `cronos:${addr}` - }, undefined, [token], true, true, token); - return balances; -} +module.exports = masterchefExports({ + chain: 'cronos', + nativeToken: '0x813658e307fA4DAF9B25e7CE1dE3b40012CA2B74', + masterchef: '0xCb0349992fCA780b9D6F95Fbbc88d318Ac092A5d', +}) - -module.exports = { - deadFrom: 1648765747, - cronos: { - tvl, - staking: stakingUnknownPricedLP(masterchef, token, "cronos", "0x0A833865703639cf1f9125FEDCA5F2094Fc56d90"), - pool2: pool2BalanceFromMasterChefExports(masterchef, token, "cronos", addr=>`cronos:${addr}`) - } -} +module.exports.deadFrom = 1648765747 \ No newline at end of file diff --git a/projects/zilch/index.js b/projects/zilch/index.js index 8a8e5e957c4..2a3542d8ceb 100644 --- a/projects/zilch/index.js +++ b/projects/zilch/index.js @@ -2,7 +2,7 @@ const abi = require('./abi') const { sumTokens2 } = require('../helper/unwrapLPs') const farm = "0xa65D04f79633BeBdC4Dd785498269e8ABD6A1476" -async function tvl(_, _b, _cb, { api }) { +async function tvl(api) { const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: farm }) let pools = poolInfos.map(i => i.lpToken) const stakingPools = pools.slice(0, 3) diff --git a/projects/zircon-gamma/index.js b/projects/zircon-gamma/index.js index af8f5beb6ec..1bef1ae1bea 100644 --- a/projects/zircon-gamma/index.js +++ b/projects/zircon-gamma/index.js @@ -6,7 +6,7 @@ const sdk = require('@defillama/sdk') const movrUniTvl = getUniTVL({ chain: 'moonriver', factory: '0x6B6071Ccc534fcee7B699aAb87929fAF8806d5bd', useDefaultCoreAssets: true, }) const bscUniTvl = getUniTVL({ chain: 'bsc', factory: '0x18b7f6A60d5BEE3c3a953A3f213eEa25F7eF43E9', useDefaultCoreAssets: true, }) -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0x09f8E0aeA93Bcb511276A166e6e57E02e5cc1E0a', @@ -21,7 +21,7 @@ async function tvl(_, _b, _cb, { api, }) { } -async function bscTvl(_, _b, _cb, { api, }) { +async function bscTvl(api) { const logs = await getLogs({ api, target: '0x05d5E46F9d17591f7eaCdfE43E3d6a8F789Df698', diff --git a/projects/zk-swap-dex/index.js b/projects/zk-swap-dex/index.js index ea67a2ab965..40b184d7e37 100644 --- a/projects/zk-swap-dex/index.js +++ b/projects/zk-swap-dex/index.js @@ -2,27 +2,25 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const FACTORY = '0x91C94381a0F0B7F03d911676bD59d32Bb3410060' -const CHAIN = 'era' async function getFactoryLogs(api) { return getLogs({ api, target: FACTORY, fromBlock: 7891758, - topic: 'PoolCreated(address,address,uint24,int24,address)', eventAbi: 'event PoolCreated(address indexed token0,address indexed token1,uint24 indexed swapFeeUnits,int24 tickDistance,address pool)', onlyArgs: true, }) } -async function tvl(timestamp, ethBlock, chainBlocks, { api }) { +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({ chain: CHAIN, ethBlock, tokensAndOwners: balanceRequests }) + return sumTokens2({ api, tokensAndOwners: balanceRequests }) } module.exports = { diff --git a/projects/zkBoost/index.js b/projects/zkBoost/index.js index 5076afaa9d2..911a29f019f 100644 --- a/projects/zkBoost/index.js +++ b/projects/zkBoost/index.js @@ -6,7 +6,8 @@ module.exports = {} Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (timestamp, _block, { [chain]: block }, { api }) => { + 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 }) diff --git a/projects/zklend/index.js b/projects/zklend/index.js index e219d7c45a4..ae98bd9c9bd 100644 --- a/projects/zklend/index.js +++ b/projects/zklend/index.js @@ -14,11 +14,11 @@ const assets = [ ADDRESSES.starknet.STRK ] -async function tvl(_, _1, _2, { api }) { +async function tvl(api) { return sumTokens({ api, owner: market, tokens: assets }) } -async function borrowed(_, _1, _2, { api }) { +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) diff --git a/projects/zkswap/index.js b/projects/zkswap/index.js index 300059846f4..d9033052013 100644 --- a/projects/zkswap/index.js +++ b/projects/zkswap/index.js @@ -11,7 +11,7 @@ module.exports = { start: 1613135160, // 02/12/2021 @ 01:06pm UTC ethereum: { tvl: sdk.util.sumChainTvls(configs.map(i => { - return async function tvl(timestamp, block, _1, { api }) { + 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) diff --git a/projects/zksync-lite/index.js b/projects/zksync-lite/index.js index 3f9588f0f80..5fb4f12c179 100644 --- a/projects/zksync-lite/index.js +++ b/projects/zksync-lite/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owner: "0xaBEA9132b05A70803a4E85094fD0e1800777fBEF", diff --git a/projects/zksynth/index.js b/projects/zksynth/index.js index 626d0995d20..cb3cfa07247 100644 --- a/projects/zksynth/index.js +++ b/projects/zksynth/index.js @@ -10,7 +10,7 @@ const query = `{ } }` -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const { pools } = await cachedGraphQuery('zksynth', 'https://api.thegraph.com/subgraphs/name/prasad-kumkar/zksynth-mainnet', query) const tokensAndOwners = pools.map(i => i.collaterals).flat().map(i => [i.token.id, i.pool.id]) return sumTokens2({ api, tokensAndOwners }) diff --git a/projects/zoodao/index.js b/projects/zoodao/index.js index 8103b670122..222986e77fb 100644 --- a/projects/zoodao/index.js +++ b/projects/zoodao/index.js @@ -25,14 +25,14 @@ const stakingContracts = [ X_ZOO_CONTRACT ] -async function tvl(_, _1, _2, { api }) { +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(_, _1, _2, { api }) { +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]) diff --git a/projects/zookeeper.js b/projects/zookeeper.js index 9a654e896cc..34d50a91ffa 100644 --- a/projects/zookeeper.js +++ b/projects/zookeeper.js @@ -6,13 +6,13 @@ const abi = { "poolLength": "uint256:poolLength", } -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const masterchef = '0x1aC6332f1f1892B49Fb26aD1934F74F4Cd8C9dB9' await addMasterchef(masterchef, api) } -async function wanTvl(_, _b, _cb, { api, }) { +async function wanTvl(api) { const masterchef = '0x4E4Cb1b0b4953EA657EAF29198eD79C22d1a74A2' await addMasterchef(masterchef, api) return sumUnknownTokens({ api, useDefaultCoreAssets: true, resolveLP: true }) diff --git a/projects/zunami/index.js b/projects/zunami/index.js index 1e31912dfe1..c961c6bd981 100644 --- a/projects/zunami/index.js +++ b/projects/zunami/index.js @@ -4,7 +4,7 @@ const abi = require("./abi.json"); const zunUSD = "0x8C0D76C9B18779665475F3E212D9Ca1Ed6A1A0e6"; const zunUSDAps = "0x28e487bbF6b64867C29e61DccbCD17aB64082889"; -async function ethTvl(timestamp, block, _, { api }) { +async function ethTvl(api) { api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunUSD, })) api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunUSDAps, })) } diff --git a/projects/zyberswap-stableswap/index.js b/projects/zyberswap-stableswap/index.js index a2bbc8b15e4..50dc29ce6eb 100644 --- a/projects/zyberswap-stableswap/index.js +++ b/projects/zyberswap-stableswap/index.js @@ -1,7 +1,7 @@ const { getLogs } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') -async function tvl(_, _b, _cb, { api, }) { +async function tvl(api) { const logs = await getLogs({ api, target: '0xc25e230afb1b67162350cd405add199a002c6abd', diff --git a/test.js b/test.js index 8515d4466f2..037a97aec04 100644 --- a/test.js +++ b/test.js @@ -41,11 +41,12 @@ async function getTvl( isFetchFunction, storedKey, ) { + const chain = storedKey.split('-')[0] + const api = new sdk.ChainApi({ chain, block: chainBlocks[chain], timestamp: unixTimestamp, storedKey, }) + api.api = api + api.storedKey = storedKey if (!isFetchFunction) { - const chain = storedKey.split('-')[0] - const block = chainBlocks[chain] - const api = new sdk.ChainApi({ chain, block: chainBlocks[chain], timestamp: unixTimestamp, }) - let tvlBalances = await tvlFunction(unixTimestamp, ethBlock, chainBlocks, { api, chain, block, storedKey }); + let tvlBalances = await tvlFunction(api, ethBlock, chainBlocks, api); if (!tvlBalances && Object.keys(api.getBalances()).length) tvlBalances = api.getBalances() const tvlResults = await computeTVL(tvlBalances, "now"); await diplayUnknownTable({ tvlResults, storedKey, tvlBalances, }) @@ -54,7 +55,7 @@ async function getTvl( usdTokenBalances[storedKey] = tvlResults.usdTokenBalances; } else { usdTvls[storedKey] = Number( - await tvlFunction(unixTimestamp, ethBlock, chainBlocks) + await tvlFunction(api, ethBlock, chainBlocks, api) ); } if ( From 44de32b1b4ec448f09fac513a4796386a56a0604 Mon Sep 17 00:00:00 2001 From: Kevin Cheng Date: Thu, 21 Mar 2024 02:50:00 -0700 Subject: [PATCH 0837/2004] Add new USDC market on Base (#9471) --- projects/compound-v3/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js index 5ce6dc42387..913e750b6ed 100644 --- a/projects/compound-v3/index.js +++ b/projects/compound-v3/index.js @@ -9,17 +9,18 @@ module.exports = compoundV3Exports({ }, arbitrum: { markets: [ - '0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA', - '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf' + '0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA', // USDC.e Market + '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', // USDC Market ], }, polygon: { - markets: ['0xF25212E676D1F7F89Cd72fFEe66158f541246445'], + markets: ['0xF25212E676D1F7F89Cd72fFEe66158f541246445'], // USDC.e Market }, base: { markets: [ '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', // USDbC Market '0x46e6b214b524310239732D51387075E0e70970bf', // ETH Market + '0xb125E6687d4313864e53df431d5425969c15Eb2F', // USDC Market ], } }) From 0af5430128f7527f0f990f125e8b0faae496d3c7 Mon Sep 17 00:00:00 2001 From: ytrobert <91405156+ytrobert@users.noreply.github.com> Date: Thu, 21 Mar 2024 17:51:39 +0800 Subject: [PATCH 0838/2004] Update index.js (#9472) update project: aboard-exchange, to add chain: scroll, base, mantle, manta, polygon_zkevm tvl. --- projects/aboard-exchange/index.js | 52 +++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/projects/aboard-exchange/index.js b/projects/aboard-exchange/index.js index 21472aee317..91a9cf2515b 100644 --- a/projects/aboard-exchange/index.js +++ b/projects/aboard-exchange/index.js @@ -1,12 +1,14 @@ //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'); //arbitrum const ownerArbitrum = '0x7a08b29A7Ad4A19A5ECa0c82F5F082872488D135'; // contract address const tokensArbitrum = [ - ADDRESSES.arbitrum.USDC, // USDC + ADDRESSES.arbitrum.USDC, // USDC.e + ADDRESSES.arbitrum.USDC_CIRCLE, // USDC ADDRESSES.null, // ETH ADDRESSES.arbitrum.USDT, // USDT ADDRESSES.arbitrum.WBTC, // WBTC @@ -26,6 +28,37 @@ const tokensEra = [ ADDRESSES.era.USDC, // USDC ADDRESSES.null, // ETH ]; +//scroll +const ownerScroll = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address +const tokensScroll = [ + ADDRESSES.scroll.USDC, // USDC + ADDRESSES.null, // ETH +]; +//base +const ownerBase = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address +const tokensBase = [ + ADDRESSES.base.USDC, // USDC + ADDRESSES.null, // ETH +]; +//mantle +const ownerMantle = '0x8712FA9569658c27556d95C820f775939513faEf'; // contract address +const tokensMantle = [ + ADDRESSES.mantle.USDC, // USDC +]; +//manta +const ownerManta = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address +const tokensManta = [ + ADDRESSES.manta.USDC, // USDC + "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", // MANTA + "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", // STONE +]; +//polygon_zkevm +const ownerPolygonZkevm = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address +const tokensPolygonZkevm = [ + ADDRESSES.polygon_zkevm.USDC, // USDC + ADDRESSES.polygon_zkevm.USDC_CIRCLE, //USDC.E +]; + module.exports = { methodology: "TVL is equal to users' deposits minus withdrawals", @@ -38,5 +71,20 @@ module.exports = { }, era: { tvl: sumTokensExport({ owner:ownerEra, tokens:tokensEra }) - } + }, + scroll: { + tvl: sumTokensExport({ owner:ownerScroll, tokens:tokensScroll }) + }, + base: { + tvl: sumTokensExport({ owner:ownerBase, tokens:tokensBase }) + }, + mantle: { + tvl: sumTokensExport({ owner:ownerMantle, tokens:tokensMantle }) + }, + manta: { + tvl: sumTokensExport({ owner:ownerManta, tokens:tokensManta }) + }, + polygon_zkevm: { + tvl: sumTokensExport({ owner:ownerPolygonZkevm, tokens:tokensPolygonZkevm }) + }, }; From e0d801d9b501765c813a40821712b020f8c15d0e Mon Sep 17 00:00:00 2001 From: VSB Date: Thu, 21 Mar 2024 02:56:50 -0700 Subject: [PATCH 0839/2004] add-kinto-chain (#9476) --- projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 4 ++++ projects/helper/env.js | 1 + projects/kinto/index.js | 16 ++++++++++++++++ 4 files changed, 22 insertions(+) create mode 100644 projects/kinto/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 890bfec7f4e..0c3edde8ac0 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -134,6 +134,7 @@ "kava", "kcc", "kekchain", + "kinto", "kintsugi", "klaytn", "kujira", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 06b131d7ade..4f6410491d8 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -41,6 +41,7 @@ "LUSD": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", "sUSD_OLD": "0x57ab1e02fee23774580c119740129eac7081e9d3", "sUSD": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", + "sUSDe": "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", "SUSHI": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", @@ -1660,5 +1661,8 @@ }, "zklink": { "WETH": "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169" + }, + "kinto":{ + "WETH": "0x7526B5318Cbe690FBd3eC8DD7ad122f4F1b1d76F" } } diff --git a/projects/helper/env.js b/projects/helper/env.js index bc59f2edf8b..1613bfa50d4 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -21,6 +21,7 @@ const DEFAULTS = { ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", ZKLINK_RPC: "https://rpc.zklink.io", + KINTO_RPC: "https://rpc.kinto-rpc.com" } const ENV_KEYS = [ diff --git a/projects/kinto/index.js b/projects/kinto/index.js new file mode 100644 index 00000000000..8b1af461a35 --- /dev/null +++ b/projects/kinto/index.js @@ -0,0 +1,16 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: (_, _b, _c, { api }) => + sumTokens2({ + api, + owners: [ + "0x0f1b7bd7762662B23486320AA91F30312184f70C", + "0x859a53Fe2C8DA961387030E7CB498D6D20d0B2DB", + "0x7870D5398DB488c669B406fBE57b8d05b6A35e42" + ], + fetchCoValentTokens: true, + }), + }, +}; From e523fecffa74d944a8b73cda3ca899e8a7ac8c30 Mon Sep 17 00:00:00 2001 From: Rodrigo Eduardo Date: Thu, 21 Mar 2024 07:02:48 -0300 Subject: [PATCH 0840/2004] Update Bitflow adapter (#9474) * feat: add aeUSDC-sUSDT pair * add USDA-aeUSDC new pair --- projects/bitflow/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/bitflow/index.js b/projects/bitflow/index.js index 374ed12d9ca..e593034ac11 100644 --- a/projects/bitflow/index.js +++ b/projects/bitflow/index.js @@ -8,6 +8,7 @@ const PAIRS = [ `${BITFLOW_ADDRESS}.stableswap-usda-susdt-v-1-2`, `${BITFLOW_ADDRESS}.stableswap-abtc-xbtc-v-1-2`, `${BITFLOW_ADDRESS}.stableswap-aeusdc-susdt-v-1-2`, + `${BITFLOW_ADDRESS}.stableswap-usda-aeusdc-v-1-2`, ]; module.exports = { From b75dc2391cbb12503b629382aa3116d3bb2441c9 Mon Sep 17 00:00:00 2001 From: tec05 <73139131+tec05@users.noreply.github.com> Date: Thu, 21 Mar 2024 03:03:37 -0700 Subject: [PATCH 0841/2004] Adding Archly v2 TVL tracking for Blast, Filecoin, and Fraxtal (#9475) * Add Avalanche, Cronos, Mantle, Metis, and Neon for Archly TVL * Adding Archly TVL tracking for Blast, Filecoin, and Fraxtal --- projects/archly-finance-v2/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js index 11f28f6c9c3..a2a9bee8f57 100644 --- a/projects/archly-finance-v2/index.js +++ b/projects/archly-finance-v2/index.js @@ -11,8 +11,11 @@ const config = { arbitrum: { lp: '0x1e99d0c1f55cC082badD0E42B41C0Cfa31F99aD3' }, arbitrum_nova: { lp: '0x66a185f87A7bc337E38eA988fc8DEcf2F35a28d1' }, base: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, + blast: { lp: '0x6255290D88Cdd837bC27E83A11c39E12CD1B2111' }, bsc: { lp: '0xf53aFC5c5D5eE21DC68350AbF8eAb6A4d8e6E186' }, fantom: { lp: '0x263677110c07Ec272f8b1fe08a473700e6777eDd' }, + filecoin: { lp: '0x1a77798C1E3f6E93C0bc98596882580Dbc6BD6A0' }, + fraxtal: { lp: '0x51cb81CF0bA5c632a0D043131914f5570B41d30d' }, kava: { lp: '0x90e267b0bF52F9993d32DfAB9A415e2B00A870d0' }, optimism: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, polygon: { lp: '0xc01d8ee3A405f758a3bD9f8cA253F00B9EDec2be' }, From b0483a0970a0293e79b529ba14ce58a0bbd974b4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:04:21 +0100 Subject: [PATCH 0842/2004] minor fix --- projects/aboard-exchange/index.js | 127 +++++++++++------------------- projects/kinto/index.js | 2 +- 2 files changed, 47 insertions(+), 82 deletions(-) diff --git a/projects/aboard-exchange/index.js b/projects/aboard-exchange/index.js index 91a9cf2515b..7478d5e87d7 100644 --- a/projects/aboard-exchange/index.js +++ b/projects/aboard-exchange/index.js @@ -4,87 +4,52 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); -//arbitrum -const ownerArbitrum = '0x7a08b29A7Ad4A19A5ECa0c82F5F082872488D135'; // contract address -const tokensArbitrum = [ - ADDRESSES.arbitrum.USDC, // USDC.e - ADDRESSES.arbitrum.USDC_CIRCLE, // USDC - ADDRESSES.null, // ETH - ADDRESSES.arbitrum.USDT, // USDT - ADDRESSES.arbitrum.WBTC, // WBTC -]; -//avalanche -const ownerAvalanche = '0xd8b0D18faE7eA29F2AD95d01FFb479E0021a9A5e'; // contract address -const tokensAvalanche = [ - ADDRESSES.avax.USDC, // USDC - ADDRESSES.null, // AVAX - ADDRESSES.avax.BTC_b, // BTC.b - ADDRESSES.avax.WETH_e, // WETH.e - ADDRESSES.avax.USDt, // USDt -]; -//zkSync Era -const ownerEra = '0xa1795B95C543428AFf866dA613e43895457bf1C1'; // contract address -const tokensEra = [ - ADDRESSES.era.USDC, // USDC - ADDRESSES.null, // ETH -]; -//scroll -const ownerScroll = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address -const tokensScroll = [ - ADDRESSES.scroll.USDC, // USDC - ADDRESSES.null, // ETH -]; -//base -const ownerBase = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address -const tokensBase = [ - ADDRESSES.base.USDC, // USDC - ADDRESSES.null, // ETH -]; -//mantle -const ownerMantle = '0x8712FA9569658c27556d95C820f775939513faEf'; // contract address -const tokensMantle = [ - ADDRESSES.mantle.USDC, // USDC -]; -//manta -const ownerManta = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address -const tokensManta = [ - ADDRESSES.manta.USDC, // USDC - "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", // MANTA - "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", // STONE -]; -//polygon_zkevm -const ownerPolygonZkevm = '0xaA830eA4Ca3C7b13be85a8D3ab8441db5cA0Cc5F'; // contract address -const tokensPolygonZkevm = [ - ADDRESSES.polygon_zkevm.USDC, // USDC - ADDRESSES.polygon_zkevm.USDC_CIRCLE, //USDC.E -]; - - module.exports = { methodology: "TVL is equal to users' deposits minus withdrawals", start: 1641625200, // Jan-08-2022 07:00:00 AM +UTC - arbitrum: { - tvl: sumTokensExport({ owner:ownerArbitrum, tokens:tokensArbitrum }) - }, - avax: { - tvl: sumTokensExport({ owner:ownerAvalanche, tokens:tokensAvalanche }) - }, - era: { - tvl: sumTokensExport({ owner:ownerEra, tokens:tokensEra }) - }, - scroll: { - tvl: sumTokensExport({ owner:ownerScroll, tokens:tokensScroll }) - }, - base: { - tvl: sumTokensExport({ owner:ownerBase, tokens:tokensBase }) - }, - mantle: { - tvl: sumTokensExport({ owner:ownerMantle, tokens:tokensMantle }) - }, - manta: { - tvl: sumTokensExport({ owner:ownerManta, tokens:tokensManta }) - }, - polygon_zkevm: { - tvl: sumTokensExport({ owner:ownerPolygonZkevm, tokens:tokensPolygonZkevm }) - }, -}; +} + +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 + "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", // 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/kinto/index.js b/projects/kinto/index.js index 8b1af461a35..f66356153e8 100644 --- a/projects/kinto/index.js +++ b/projects/kinto/index.js @@ -2,7 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (_, _b, _c, { api }) => + tvl: (api) => sumTokens2({ api, owners: [ From 5e3524d18682938c34fa5e972c6849c97269ef9e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:13:21 +0100 Subject: [PATCH 0843/2004] Native (#9478) * add aqua to defillama for tvl * feat: add aqua vaullt to tvl * chore: lint --------- Co-authored-by: hcheng826 Co-authored-by: silvercondor Co-authored-by: hung <23033847+hcheng826@users.noreply.github.com> --- projects/native/index.js | 122 ++++++++++++++++++++++++++++++--------- 1 file changed, 95 insertions(+), 27 deletions(-) diff --git a/projects/native/index.js b/projects/native/index.js index 64be5061940..7ce6e10ca04 100644 --- a/projects/native/index.js +++ b/projects/native/index.js @@ -1,38 +1,106 @@ -const { getLogs } = require('../helper/cache/getLogs'); -const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); +const { getLogs } = require("../helper/cache/getLogs"); +const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); module.exports = { - methodology: "includes the liquidity provided to the infrasturcture and ecosystem of Native", -} + methodology: + "includes the liquidity provided to the infrasturcture and ecosystem of Native", +}; 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, }, -} + 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, + vault: "0xbe5D56B08055d7b6e9f780DfeA262512a2D2d950", + vaultFromBlock: 42536874, + }, + mantle: { + factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", + fromBlock: 10250349, + }, + manta: { + factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", + fromBlock: 1063398, + }, + zeta: { + factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", + fromBlock: 1520070, + }, + zklink: { + factory: "0x335c04321E88631A99F78fD7D7C4f49A921ed924", + fromBlock: 443, + vault: "0x4AC97E2727B0e92AE32F5796b97b7f98dc47F059", + vaultFromBlock: 452, + }, +}; -Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] +Object.keys(config).forEach((chain) => { + const { factory, fromBlock, vault, vaultFromBlock } = config[chain]; module.exports[chain] = { tvl: async (api) => { - const logs = await getLogs({ + // tvl from aqua + // read from AquaVault to get allMarkets and the token list + // sum the balance of those tokens in the vault + if (vault) { + const lpTokenCreationLogs = await getLogs({ + api, + target: vault, + topic: "MarketListed(address)", + eventAbi: "event MarketListed(address lpToken)", + onlyArgs: true, + fromBlock: vaultFromBlock, + }); + const lpTokens = lpTokenCreationLogs.map((i) => i.lpToken); + // get underlying of each ctoken + const underlyingTokens = await api.multiCall({ + abi: "address:underlying", + calls: lpTokens, + }); + // get balances in vault + await sumTokens2({ api, owner: vault, tokens: underlyingTokens }); + } + // 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)', + 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 = logs.map(i => i.treasury) - const pools = logs.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 sumTokens2({ api, ownerTokens: treasuries.map((v, i) => [[nullAddress, ...tokenAs[i], ...tokenBs[i]], v]) }) - } - } -}) + }); + 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, + ]), + }); + }, + }; +}); From ec5f07475b92e9d50dba5d4606168b716b38e66f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:33:53 +0100 Subject: [PATCH 0844/2004] track ctez --- projects/ctez/index.js | 19 +++++++++++++++++++ projects/helper/chain/tezos.js | 1 + 2 files changed, 20 insertions(+) create mode 100644 projects/ctez/index.js diff --git a/projects/ctez/index.js b/projects/ctez/index.js new file mode 100644 index 00000000000..17e7f9892c3 --- /dev/null +++ b/projects/ctez/index.js @@ -0,0 +1,19 @@ +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/helper/chain/tezos.js b/projects/helper/chain/tezos.js index ffc822135ed..5bc17101dc5 100644 --- a/projects/helper/chain/tezos.js +++ b/projects/helper/chain/tezos.js @@ -112,4 +112,5 @@ module.exports = { addDexPosition, resolveLPPosition, getBigMapById, + getTezosBalance, } From de60fe50cba5d16111a8ff7ef2f28352de6349cb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:40:07 +0100 Subject: [PATCH 0845/2004] bugfix --- projects/arcx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/arcx.js b/projects/arcx.js index c317213bebb..eb3fb73d93b 100644 --- a/projects/arcx.js +++ b/projects/arcx.js @@ -1,6 +1,6 @@ const stakingContract = '0x9bffad7a6d5f52dbc51cae33e419793c72fd7d9d' const ARCx = '0x1321f1f1aa541a56c31682c57b80ecfccd9bb288' -const { staking } = require('../helper/staking') +const { staking } = require('./helper/staking') module.exports = { methodology: "ARCx can be staked in the protocol", From 9765be6a7708133ef71397b597791f3406e99c8f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:55:04 +0100 Subject: [PATCH 0846/2004] update openeden --- projects/openeden-tbill/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/openeden-tbill/index.js b/projects/openeden-tbill/index.js index f83032ffd1b..a14084e0801 100644 --- a/projects/openeden-tbill/index.js +++ b/projects/openeden-tbill/index.js @@ -1,5 +1,6 @@ async function tvl(api) { - const contract = '0xdd50C053C096CB04A3e3362E2b622529EC5f2e8a' + let contract = '0xdd50C053C096CB04A3e3362E2b622529EC5f2e8a' + if (api.chain === 'arbitrum') contract = '0xF84D28A8D28292842dD73D1c5F99476A80b6666A' const [bal, token] = await api.batchCall([ { abi: 'uint256:totalAssets', target: contract }, { abi: 'address:underlying', target: contract }, @@ -9,4 +10,5 @@ async function tvl(api) { module.exports = { ethereum: { tvl }, + arbitrum: { tvl }, } \ No newline at end of file From 97ee4392d12648c863df1d751c85427df864283c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 12:49:31 +0100 Subject: [PATCH 0847/2004] track imx zkevm --- projects/helper/chains.json | 41 ++++++++++++++++---------------- projects/helper/env.js | 2 +- projects/helper/tokenMapping.js | 30 +++++++++++++---------- projects/pancakeswap-v3/index.js | 1 + projects/quickswap-v3/index.js | 5 ++-- 5 files changed, 44 insertions(+), 35 deletions(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 0c3edde8ac0..28d73614e15 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -1,8 +1,8 @@ [ "acala", "airdao", - "algorand", "alephium", + "algorand", "alv", "aptos", "arbitrum", @@ -30,8 +30,8 @@ "boba", "boba_avax", "boba_bnb", - "borrowed", "bone", + "borrowed", "bostrom", "bsc", "btn", @@ -44,8 +44,8 @@ "celestia", "celo", "chainx", - "chz", "chihuahua", + "chz", "clover", "clv", "cmp", @@ -81,9 +81,9 @@ "energi", "energyweb", "enuls", + "eon", "eos", "eos_evm", - "eon", "equilibrium", "era", "ergo", @@ -91,15 +91,16 @@ "ethereumclassic", "ethf", "ethpow", + "europa", "everscale", "evmos", - "europa", "fantom", - "findora", "filecoin", + "findora", "firechain", "flare", "flow", + "fraxtal", "fsc", "ftn", "functionx", @@ -122,10 +123,11 @@ "hydradx", "icon", "icp", + "imx", + "inevm", "injective", "interlay", "iotex", - "inevm", "jbc", "juno", "kadena", @@ -137,8 +139,8 @@ "kinto", "kintsugi", "klaytn", - "kujira", "kroma", + "kujira", "kusama", "lachain", "lamden", @@ -179,12 +181,12 @@ "neon_evm", "neutron", "new", + "nolus", "nos", "nova", - "nolus", "nuls", - "oasis", "oas", + "oasis", "obyte", "okexchain", "omax", @@ -193,8 +195,8 @@ "onus", "op_bnb", "optimism", - "ore", "orai", + "ore", "osmosis", "ozone", "palette", @@ -213,10 +215,9 @@ "proton", "pulse", "q", - "quicksilver", "quasar", + "quicksilver", "radixdlt", - "sapphire", "reef", "regen", "rei", @@ -225,9 +226,10 @@ "ripple", "rollux", "ronin", + "rpg", "rsk", "rvn", - "rpg", + "sapphire", "scroll", "secret", "sei", @@ -237,8 +239,8 @@ "sifchain", "smartbch", "solana", - "songbird", "sommelier", + "songbird", "sora", "stacks", "stafi", @@ -283,11 +285,10 @@ "xdc", "xpla", "zeniq", + "zeta", "zilliqa", "zkfair", + "zklink", "zksync", - "zyx", - "zeta", - "fraxtal", - "zklink" -] + "zyx" +] \ No newline at end of file diff --git a/projects/helper/env.js b/projects/helper/env.js index 1613bfa50d4..873eb10637d 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -21,7 +21,7 @@ const DEFAULTS = { ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", DEFIVERSE_RPC: "https://rpc.defi-verse.org/", ZKLINK_RPC: "https://rpc.zklink.io", - KINTO_RPC: "https://rpc.kinto-rpc.com" + KINTO_RPC: "https://rpc.kinto-rpc.com", } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7905cb72daf..af6e27d4373 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -41,25 +41,31 @@ const fixBalancesTokens = { 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wstx-token::wstx': { coingeckoId: "blockstack", decimals: 6 }, }, waves: { - 'WAVES': { coingeckoId: 'waves', decimals: 8 }, - 'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7': { coingeckoId: 'waves', decimals: 8 }, + 'WAVES': { coingeckoId: 'waves', decimals: 8 }, + 'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7': { coingeckoId: 'waves', decimals: 8 }, '3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13': { coingeckoId: 'ethereum', decimals: 8 }, '2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, - '66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo': { coingeckoId: 'binancecoin', decimals: 8 }, - 'QGDb5VHmjUMfHPAvRJ4g36nmU5qYByYyYzReJN71nad': { coingeckoId: 'chainlink', decimals: 8 }, - '2x8CpnEDNw2nsuyvEptEmEbVrkxh9regRDNrqTWThJTZ': { coingeckoId: 'maker', decimals: 8 }, - '78ePJGDo2H6cZUDYsAMzqxe2iSRNgz4QBnYYg58ZxdgH': { coingeckoId: 'uniswap', decimals: 8 }, - 'AhGJvjtYmRG2pKwXvTh8N6sX1M2wNTpkjxaWKQfzJe7q': { coingeckoId: 'matic-network', decimals: 8 }, - 'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8': { coingeckoId: 'binance-bitcoin', decimals: 8 }, - 'FmsB2B21fVVetWvZm7Q48cC2Bvs2hEZtft49TBn3guV1': { coingeckoId: 'curve-dao-token', decimals: 8 }, - '5Ga8eJdR5PoBWLC2xaq6F6PAGCM5hWVNhuyycgsNn4jR': { coingeckoId: 'crvusd', decimals: 6 }, - 'Fwvk46RZ4iBg4L9GzwjQ7jwVsEScn4aPD32V6wftTLHQ': { coingeckoId: 'tron', decimals: 6 }, - + '66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo': { coingeckoId: 'binancecoin', decimals: 8 }, + 'QGDb5VHmjUMfHPAvRJ4g36nmU5qYByYyYzReJN71nad': { coingeckoId: 'chainlink', decimals: 8 }, + '2x8CpnEDNw2nsuyvEptEmEbVrkxh9regRDNrqTWThJTZ': { coingeckoId: 'maker', decimals: 8 }, + '78ePJGDo2H6cZUDYsAMzqxe2iSRNgz4QBnYYg58ZxdgH': { coingeckoId: 'uniswap', decimals: 8 }, + 'AhGJvjtYmRG2pKwXvTh8N6sX1M2wNTpkjxaWKQfzJe7q': { coingeckoId: 'matic-network', decimals: 8 }, + 'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8': { coingeckoId: 'binance-bitcoin', decimals: 8 }, + 'FmsB2B21fVVetWvZm7Q48cC2Bvs2hEZtft49TBn3guV1': { coingeckoId: 'curve-dao-token', decimals: 8 }, + '5Ga8eJdR5PoBWLC2xaq6F6PAGCM5hWVNhuyycgsNn4jR': { coingeckoId: 'crvusd', decimals: 6 }, + 'Fwvk46RZ4iBg4L9GzwjQ7jwVsEScn4aPD32V6wftTLHQ': { coingeckoId: 'tron', decimals: 6 }, + 'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS': { coingeckoId: 'waves-ducks', decimals: 8 }, 'GAzAEjApmjMYZKPzri2g2VUXNvTiQGF7KDYZFFsP3AEq': { coingeckoId: 'pete', decimals: 8 }, '2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21': { coingeckoId: 'power-token', decimals: 8 }, 'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS': { coingeckoId: 'puzzle-swap', decimals: 8 }, }, + imx: { + [nullAddress]: { coingeckoId: 'immutable-x', decimals: 18 }, + '0x3A0C2Ba54D6CBd3121F01b96dFd20e99D1696C9D': { coingeckoId: 'immutable-x', decimals: 18 }, + '0x52a6c53869ce09a731cd772f245b97a4401d3348': { coingeckoId: 'ethereum', decimals: 18 }, + '0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2': { coingeckoId: 'usd-coin', decimals: 6 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index 94d1fd0865e..5e4511df828 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -23,4 +23,5 @@ module.exports = uniV3Export({ ]}, base: { factory, fromBlock: 2912007, }, op_bnb: { factory, fromBlock: 1721753, }, + imx: { factory: '0x464Ea59a3AA5Ea35e961Ff8aA4CCC7183eAA197e', fromBlock: 2863799, }, }) diff --git a/projects/quickswap-v3/index.js b/projects/quickswap-v3/index.js index 8036a43faed..5c6dcb3a2b6 100644 --- a/projects/quickswap-v3/index.js +++ b/projects/quickswap-v3/index.js @@ -6,10 +6,11 @@ module.exports = uniV3Export({ polygon_zkevm: { factory: '0x4B9f4d2435Ef65559567e5DbFC1BbB37abC43B57', fromBlock: 300, isAlgebra: true, }, manta: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 357492, }, astrzk: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 93668, }, + imx: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 356091, }, }) async function tvl(api) { - const { pools } = await cachedGraphQuery('quickswap-v3/'+api.chain, 'https://graph-node.dogechain.dog/subgraphs/name/quickswap/dogechain-info', `{ + const { pools } = await cachedGraphQuery('quickswap-v3/' + api.chain, 'https://graph-node.dogechain.dog/subgraphs/name/quickswap/dogechain-info', `{ pools(first:1000) { token0 { id @@ -20,7 +21,7 @@ async function tvl(api) { id } }`) - const ownerTokens = pools.map(p=>[[p.token0.id, p.token1.id], p.id]) + const ownerTokens = pools.map(p => [[p.token0.id, p.token1.id], p.id]) return api.sumTokens({ ownerTokens, }) } From 16c1069e0934c764e3f383be730f5232a492b383 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 15:21:19 +0100 Subject: [PATCH 0848/2004] track velar amm tvl --- projects/helper/coreAssets.json | 1 + projects/helper/tokenMapping.js | 2 ++ projects/velar-amm/api.js | 29 +++++++++++++++++++++++++++++ projects/velar-amm/index.js | 7 +++++++ 4 files changed, 39 insertions(+) create mode 100644 projects/velar-amm/api.js create mode 100644 projects/velar-amm/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 4f6410491d8..ea94098abd8 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1405,6 +1405,7 @@ "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": { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index af6e27d4373..4628809369e 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -39,6 +39,8 @@ const fixBalancesTokens = { }, stacks: { 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wstx-token::wstx': { coingeckoId: "blockstack", decimals: 6 }, + 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx': { coingeckoId: "blockstack", decimals: 6 }, + 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc': { coingeckoId: "bitcoin", decimals: 8 }, }, waves: { 'WAVES': { coingeckoId: 'waves', decimals: 8 }, diff --git a/projects/velar-amm/api.js b/projects/velar-amm/api.js new file mode 100644 index 00000000000..0357b39ec48 --- /dev/null +++ b/projects/velar-amm/api.js @@ -0,0 +1,29 @@ +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' + +module.exports = { + stacks: { tvl } +} + +async function tvl() { + const data = [] + const pairCount = +(await call({ target: factory, abi: 'get-nr-pools' })).toString() + for (let i = 1; i <= pairCount; i++) { + const { + token0, token1, reserve0, reserve1, + } = await call({ target: factory, abi: 'do-get-pool', inputArgs: [{ type: 'uint', value: i }] }) + data.push({ + token0: token0.value, + token1: token1.value, + token0Bal: reserve0.value, + token1Bal: reserve1.value, + }) + sdk.log(`velar-amm: ${i}/${pairCount}`) + await sleep(2100) + } + return transformDexBalances({ chain: 'stacks', data }) +} \ No newline at end of file diff --git a/projects/velar-amm/index.js b/projects/velar-amm/index.js new file mode 100644 index 00000000000..69dcfb5e7a3 --- /dev/null +++ b/projects/velar-amm/index.js @@ -0,0 +1,7 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + ...getExports("velar-amm", ['stacks']), +} From 97b6bcc667e2a81bbad4871d66264ae0737b4536 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 21 Mar 2024 16:45:46 +0100 Subject: [PATCH 0849/2004] mmo: stop doublecounting LP tokens --- projects/mmo-finance-polygon/index.js | 84 +---------- projects/mmo-finance/index.js | 197 +------------------------- 2 files changed, 8 insertions(+), 273 deletions(-) diff --git a/projects/mmo-finance-polygon/index.js b/projects/mmo-finance-polygon/index.js index 793a0f037e4..f6b2b03e28b 100644 --- a/projects/mmo-finance-polygon/index.js +++ b/projects/mmo-finance-polygon/index.js @@ -1,84 +1,8 @@ -const sdk = require("@defillama/sdk"); -const abi = 'function tvlOfPool(address pool) view returns (uint256 tvl)' -const BigNumber = require("bignumber.js"); - -const dashboardPolygon = "0xFAacEA541e23F0D3eC7d4E202E791923Ce273787"; - -const poolsPolygon = [ - "0x7f64624C36d8356E05E85d7AfCD2F998d3C45bC1", - "0xdC58C5F1BF1090E44AB976Eba60bA3bAe89c1b07", - "0x5CfDf337993555E1FC3E94871642c13703eAb3b9", - "0x56cB79209462A2e3454Cc84FE6B3FE5DC62389f6", - "0x06515Aeb17448D0AeE00A28e3eB617cE7aFe9318", - "0x658188a45B84c36407776320B01b98BD9eDCE9Cd", - "0x95258eB8a10Ba6f8bB61666339eC65bdd380F941", - "0x7dC29143C099919D9380dC74B9Eb95fF847e6536", - "0x804Dc5352f1B3206FF3b0Df58035B80B421CD456", -] - -const stakingPolygon = [ - "0x2b9299f80a644CA60c0d398e257cb72488875d2A", - "0x7f64624C36d8356E05E85d7AfCD2F998d3C45bC1", -] - -const ZERO = new BigNumber(0); -const ETHER = new BigNumber(10).pow(18); - -async function TVLPoolPolygon(timestamp, ethBlock, chainBlock) { - const block = chainBlock.polygon; - const total = ( - await sdk.api.abi.multiCall({ - calls: poolsPolygon.map((address) => ({ - target: dashboardPolygon, - params: address, - })), - block, - abi: abi, - chain: "polygon", - }) - ).output.reduce((tvl, call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - return tvl.plus(value.dividedBy(ETHER)); - } - return tvl; - }, ZERO); - - return { - tether: total.toNumber(), - }; -} - -async function singleStakingPolygon(timestamp, ethBlock, chainBlock) { - const block = chainBlock.polygon; - const total = ( - await sdk.api.abi.multiCall({ - calls: stakingPolygon.map((address) => ({ - target: dashboardPolygon, - params: address, - })), - block, - abi: abi, - chain: "polygon", - }) - ).output.reduce((tvl, call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - return tvl.plus(value.dividedBy(ETHER)); - } - return tvl; - }, ZERO); - - return { - tether: total.toNumber(), - }; -} +const { staking } = require('../helper/staking') module.exports = { - methodology: `Total value in pools`, - misrepresentedTokens: true, polygon: { - tvl: TVLPoolPolygon, - staking: singleStakingPolygon + 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 index aa19af2210d..2900e24607b 100644 --- a/projects/mmo-finance/index.js +++ b/projects/mmo-finance/index.js @@ -1,197 +1,8 @@ -const sdk = require("@defillama/sdk"); -const abi = 'function tvlOfPool(address pool) view returns (uint256 tvl)'; -const genericVaultBalance = "uint256:balance" -const valueOfAsset = 'function valueOfAsset(address asset, uint256 amount) view returns (uint256 valueInCRO, uint256 valueInUSD)' -const BigNumber = require("bignumber.js"); - -const dashboardCronos = "0x55f040E3A6e0ff69f5095B3cbF458919C5e02A0B"; -const calculator = "0xa2B417088D63400d211A4D5EB3C4C5363f834764" - -const poolsCronos = [ - "0x443ec402BeC44dA7138a54413b6e09037Cf9CF41", - "0xB130a35acD62eb4604c6Ba6479D660D97a0A5aBE", - "0xD2B3BDd43Bf5f6f28bD8b12d432afA46a3B20234", - "0x08d7EBb6fd9dC10EA21a6AA788693aB763616951", - "0xe4bc967855Eb076fA971a40c0Aa4B16Ba206aec2", - "0xFf89646FE7Ee62EA96050379A7A8c532dD431d10", - "0xe2ca90FC315356DecF71133Ba5938153596433f3", - "0x7A42441f5Cf40cF0fBdA98F494fA2cc500177e86", - "0x55B5540B5C48a27FD17ebe2B9E6a06911f8aa45A", - "0x00Db5925892274F276846F25C7fE81DEc3F3B769", - "0x34375b4c4094eCaAb494E22DFFe1f88f1D5143af", - "0x7D35398F35F1dAD6e7a48d6f6E470CB11C77fc46", -]; - -const specialPools = [ - "0xcA37dcfC10D0366DBA41B19e9EBe7354bbF1aEC2", //METF - MMF - "0x1B27765F0606904eD8ebB5a915df22981ea4A261", //MSHARE-MMF - "0xc385C326133078Be00cd32D3587c21934E29c2aB", //SVN-MMF -] - -const staking = [ - "0x692db42F84bb6cE6A6eA62495c804C71aA6887A7", //MMO single sided - "0xe4bc967855Eb076fA971a40c0Aa4B16Ba206aec2", //VVS single - "0x443ec402BeC44dA7138a54413b6e09037Cf9CF41", //MMF single -] - -const vaultsLPAddresses = ["0xd7385f46FFb877d8c8Fe78E5f5a7c6b2F18C05A7", -"0xc924da29d37f3b8C62c4c3e4e6958bF2b5ebF677", - "0xB6E1705BfAFcf1efEE83C135C0F0210653bAB8F0", -] - -const vaultToLP = { - "0xcA37dcfC10D0366DBA41B19e9EBe7354bbF1aEC2": "0xd7385f46FFb877d8c8Fe78E5f5a7c6b2F18C05A7", - "0x1B27765F0606904eD8ebB5a915df22981ea4A261": "0xc924da29d37f3b8C62c4c3e4e6958bF2b5ebF677", - "0xc385C326133078Be00cd32D3587c21934E29c2aB": "0xB6E1705BfAFcf1efEE83C135C0F0210653bAB8F0" -} - -const ZERO = new BigNumber(0); -const ETHER = new BigNumber(10).pow(18); - -async function fetchSavannaLPPrice(timestamp, ethBlock, chainBlock) { - const mmfBalance = {} - const block = chainBlock.cronos; - - let data1 = await sdk.api.abi.multiCall({ - calls: vaultsLPAddresses.map((address) => ({ - target: "0x97749c9B61F878a880DfE312d2594AE07AEd7656", - params: address, - })), - block, - abi: 'erc20:balanceOf', - chain: "cronos", - }) - - data1.output.forEach((call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - mmfBalance[call.input.params[0]] = value.dividedBy(ETHER); - } - }); - - const totalSupply = {} - - let data2 = await sdk.api.abi.multiCall({ - calls: vaultsLPAddresses.map((address) => ({ - target: address, - params: [], - })), - block, - abi: 'erc20:totalSupply', - chain: "cronos", - }) - - data2.output.forEach((call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - totalSupply[call.input.target] = value.dividedBy(ETHER); - } - }); - - let priceOfMMF = 0; - let data3 = await sdk.api.abi.multiCall({ - calls: [{ - target: calculator, - params: ["0x97749c9B61F878a880DfE312d2594AE07AEd7656", "1000000000000000000"], - }], - block, - abi: valueOfAsset, - chain: "cronos", - }); - data3.output.forEach((call) => { - let value = call && call.output && new BigNumber(call.output.valueInUSD); - if (value) { - priceOfMMF = value.dividedBy(ETHER); - } - }); - const finalLPPrices = {} - Object.keys(mmfBalance).forEach(x => { - finalLPPrices[x] = mmfBalance[x].dividedBy(totalSupply[x]).times(priceOfMMF).times(2); - }) - return finalLPPrices -} - -async function TVLPool(timestamp, ethBlock, chainBlock) { - const block = chainBlock.cronos; - try { - - let LPPRices = await fetchSavannaLPPrice(timestamp, ethBlock, chainBlock); - - const specialBalance = {} - let data1 = await sdk.api.abi.multiCall({ - calls: specialPools.map((address) => ({ - target: address, - params: [], - })), - block, - abi: genericVaultBalance, - chain: "cronos", - }) - - const total2 = data1.output.reduce((tvl, call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - specialBalance[call.input.target] = value.dividedBy(ETHER) * LPPRices[vaultToLP[call.input.target]]; - return tvl.plus(value.dividedBy(ETHER) * LPPRices[vaultToLP[call.input.target]]); - } - }, ZERO); - - const total = ( - await sdk.api.abi.multiCall({ - calls: poolsCronos.map((address) => ({ - target: dashboardCronos, - params: address, - })), - block, - abi: abi, - chain: "cronos", - }) - ).output.reduce((tvl, call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - return tvl.plus(value.dividedBy(ETHER)); - } - return tvl; - }, ZERO); - - return { - tether: total.plus(total2).toNumber(), - }; - } catch (err) { - console.error(err) - } -} - -async function singleStaking(timestamp, ethBlock, chainBlock) { - const block = chainBlock.cronos; - const total = ( - await sdk.api.abi.multiCall({ - calls: staking.map((address) => ({ - target: dashboardCronos, - params: address, - })), - block, - abi: abi, - chain: "cronos", - }) - ).output.reduce((tvl, call) => { - let value = call && call.output && new BigNumber(call.output); - if (value) { - return tvl.plus(value.dividedBy(ETHER)); - } - return tvl; - }, ZERO); - - return { - tether: total.toNumber(), - }; -} +const { staking } = require('../helper/staking') module.exports = { - methodology: `Total value in pools`, - misrepresentedTokens: true, cronos: { - tvl: TVLPool, - staking: singleStaking + tvl: () => ({}), + staking: staking('0x692db42F84bb6cE6A6eA62495c804C71aA6887A7', '0x50c0c5bda591bc7e89a342a3ed672fb59b3c46a7') }, -}; +} \ No newline at end of file From d8d5bd655a9abb2833aeb8936986c14b7256175c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 21 Mar 2024 23:28:48 +0000 Subject: [PATCH 0850/2004] huobi litecoin --- projects/huobi/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/huobi/index.js b/projects/huobi/index.js index ed37465987b..ff2134e3d34 100644 --- a/projects/huobi/index.js +++ b/projects/huobi/index.js @@ -75,7 +75,12 @@ const config = { ] }, litecoin: { - owners: ['MNky8PL58UjL14mcZm3ESvEkYQkzMY9kfu'] + owners: [ + 'MNky8PL58UjL14mcZm3ESvEkYQkzMY9kfu', + 'LYmdXiH1u6UN2bFetfTGnNuFgEG64FWVLU', + 'MGZv8pEkrsmpa2YAXRVXTtdCPBMnnR28fY', + 'MCRXTQ5uuBh6Qt8t4LuqZNvruZ5SmWXjrY' + ] }, solana: { owners: [ From aef19f8a6657117fc41efff939aba5bab36e273b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 08:27:03 +0100 Subject: [PATCH 0851/2004] fix ociswap --- projects/ociswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ociswap/index.js b/projects/ociswap/index.js index 4982012ba4b..06937ba02ec 100644 --- a/projects/ociswap/index.js +++ b/projects/ociswap/index.js @@ -21,7 +21,7 @@ module.exports = { } }) 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) + const owners = data.map(i => i.metadata.items.find(i => i.key === 'liquidity_pool').value?.typed?.value).filter(i => i) return sumTokens({ owners, api, }) }, }, From e9740441f0de736beaa4c111ef1b651f14c002ca Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 08:28:30 +0100 Subject: [PATCH 0852/2004] slowdown siennaswap --- projects/sienna/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/sienna/index.js b/projects/sienna/index.js index 19115f71699..2d81984793a 100644 --- a/projects/sienna/index.js +++ b/projects/sienna/index.js @@ -2,6 +2,7 @@ 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"] @@ -20,7 +21,7 @@ async function getExchanges(factory, data) { sdk.log(factory, exchanges.length, pools.length, hasMore) pools.push(...exchanges) - const { errors } = await PromisePool.withConcurrency(3) + const { errors } = await PromisePool.withConcurrency(1) .for(exchanges) .process(async (i) => { let { address, contract } = i @@ -32,6 +33,7 @@ async function getExchanges(factory, data) { token1: transformToken(pair_info.pair.token_1, pair_info), token1Bal: pair_info.amount_1, }) + await sleep(1000) }) if (errors && errors.length) From e6b8377216e277cecc9c257cbecdbe1b3f6e5c58 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:33:03 +0100 Subject: [PATCH 0853/2004] minor fix --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4628809369e..1a2ea8417db 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -68,6 +68,9 @@ const fixBalancesTokens = { '0x52a6c53869ce09a731cd772f245b97a4401d3348': { coingeckoId: 'ethereum', decimals: 18 }, '0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2': { coingeckoId: 'usd-coin', decimals: 6 }, }, + sapphire: { + [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain From bda5d36ad2b76e6821c5f5c394052b7859c6d645 Mon Sep 17 00:00:00 2001 From: VineMoney <158014926+VineMoney@users.noreply.github.com> Date: Fri, 22 Mar 2024 16:33:24 +0800 Subject: [PATCH 0854/2004] Add vine tvl (#9492) * Add vine tvl Add vine tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/vine/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/vine/index.js diff --git a/projects/vine/index.js b/projects/vine/index.js new file mode 100644 index 00000000000..db87fd3aaa6 --- /dev/null +++ b/projects/vine/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') + +module.exports = { + start: 1706475600, + sapphire: { + tvl: sumTokensExport({ owner: '0x1882560361578F2687ddfa2F4CEcca7ae2e614FD', tokens: [nullAddress] }), + }, +} From 48243dd104d540630ac5399fc68a68d55c0c81d8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 10:31:14 +0100 Subject: [PATCH 0855/2004] track lolpad & warpgate --- projects/lolpad/index.js | 5 +++++ projects/pancakeswap-v3/index.js | 1 - projects/warpgate/index.js | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 projects/lolpad/index.js create mode 100644 projects/warpgate/index.js diff --git a/projects/lolpad/index.js b/projects/lolpad/index.js new file mode 100644 index 00000000000..659cb79a432 --- /dev/null +++ b/projects/lolpad/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + scroll: { 'factory': '0x54E3c605f52B6f297fca5afFC6B9a221fFd65ec2', fromBlock: 4204651, } +}) \ No newline at end of file diff --git a/projects/pancakeswap-v3/index.js b/projects/pancakeswap-v3/index.js index 5e4511df828..94d1fd0865e 100644 --- a/projects/pancakeswap-v3/index.js +++ b/projects/pancakeswap-v3/index.js @@ -23,5 +23,4 @@ module.exports = uniV3Export({ ]}, base: { factory, fromBlock: 2912007, }, op_bnb: { factory, fromBlock: 1721753, }, - imx: { factory: '0x464Ea59a3AA5Ea35e961Ff8aA4CCC7183eAA197e', fromBlock: 2863799, }, }) diff --git a/projects/warpgate/index.js b/projects/warpgate/index.js new file mode 100644 index 00000000000..89f17bfaf16 --- /dev/null +++ b/projects/warpgate/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + imx: { factory: '0x464Ea59a3AA5Ea35e961Ff8aA4CCC7183eAA197e', fromBlock: 2863799, }, +}) \ No newline at end of file From 5317c6d22a0947393bb2210d770ed1baa8298e58 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Fri, 22 Mar 2024 17:33:36 +0800 Subject: [PATCH 0856/2004] add hiveswap-pro adapter (#9494) --- projects/hiveswap-pro/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/hiveswap-pro/index.js diff --git a/projects/hiveswap-pro/index.js b/projects/hiveswap-pro/index.js new file mode 100644 index 00000000000..f3940b91f0f --- /dev/null +++ b/projects/hiveswap-pro/index.js @@ -0,0 +1,10 @@ +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 From 16d6341fd5bf82956a4fe2e4c55a9e0fad73e5b5 Mon Sep 17 00:00:00 2001 From: Vojtch Date: Fri, 22 Mar 2024 10:36:26 +0100 Subject: [PATCH 0857/2004] update: pwn (#9493) * update: pwn * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pwn/index.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/projects/pwn/index.js b/projects/pwn/index.js index 220d8f97d02..b4f34810cdb 100644 --- a/projects/pwn/index.js +++ b/projects/pwn/index.js @@ -8,10 +8,12 @@ const PWN_BUNDLER_MAINNET = "0x19e3293196aee99BB3080f28B9D3b4ea7F232b8d"; const PWN_BUNDLER_POLYGON = "0xe52405604bF644349f57b36Ca6E85cf095faB8dA"; const PWN_BUNDLER_CRONOS = "0x973E09e96E64E4bf17e383a8A497Fb566284c707"; const PWN_BUNDLER_BASE = "0x6fD3f5439aB1C103599385929d5f4c19acdBd264"; -const PWN_BUNDLER_MANTLE = "0x67c86D5900a6494a08EE48448e95781DcF33c804"; +const PWN_BUNDLER_OPTIMISM = "0x43Ffd9dF079451Fe7D16Ac2c51E13DF2a173B71E"; +const PWN_BUNDLER_ARBITRUM = "0x448E3D0a4BAa00FE511a03E7B27177AeDE6d9636"; +const PWN_BUNDLER_BSC = "0x4A75a527E97d853109aA6998a2B9E45a87A31e9f"; const PWN_V1_SIMPLE_LOAN = "0x50160ff9c19fbE2B5643449e1A321cAc15af2b2C"; -const PWN_V1_1_SIMPLE_LOAN_A = "0x57c88D78f6D08b5c88b4A3b7BbB0C1AA34c3280A"; // Polygon and Mainnet -const PWN_V1_1_SIMPLE_LOAN_B = "0x4188C513fd94B0458715287570c832d9560bc08a"; // Cronos, Base, Mantle +const PWN_V1_1_SIMPLE_LOAN_A = "0x57c88D78f6D08b5c88b4A3b7BbB0C1AA34c3280A"; // Mainnet, Polygon, Arbitrum, BSC +const PWN_V1_1_SIMPLE_LOAN_B = "0x4188C513fd94B0458715287570c832d9560bc08a"; // Cronos, Base, Optimism module.exports = { misrepresentedTokens: true, @@ -52,9 +54,20 @@ module.exports = { owners: [PWN_BUNDLER_BASE, PWN_V1_1_SIMPLE_LOAN_B], fetchCoValentTokens: true, }), }, - mantle: { + arbitrum: { tvl: sumTokensExport({ - owners: [PWN_BUNDLER_MANTLE, PWN_V1_1_SIMPLE_LOAN_B], fetchCoValentTokens: true, tokenConfig: { useCovalent: true, }, - }) - } + owners: [PWN_BUNDLER_ARBITRUM, PWN_V1_1_SIMPLE_LOAN_A], fetchCoValentTokens: true, + }), + }, + optimism: { + tvl: sumTokensExport({ + owners: [PWN_BUNDLER_OPTIMISM, PWN_V1_1_SIMPLE_LOAN_B], fetchCoValentTokens: true, + }), + }, + bsc: { + tvl: sumTokensExport({ + owners: [PWN_BUNDLER_BSC, PWN_V1_1_SIMPLE_LOAN_A], fetchCoValentTokens: true, + }), + }, + mantle: { tvl: () => ({}) }, }; From e1a69465b1e4c824d11be979349c41e028ebf7b9 Mon Sep 17 00:00:00 2001 From: dtx-devs <164329664+dtx-devs@users.noreply.github.com> Date: Fri, 22 Mar 2024 17:45:32 +0800 Subject: [PATCH 0858/2004] add DTX tvl (#9480) * add DTX tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dtx/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/dtx/index.js diff --git a/projects/dtx/index.js b/projects/dtx/index.js new file mode 100644 index 00000000000..53e4b9f4199 --- /dev/null +++ b/projects/dtx/index.js @@ -0,0 +1,16 @@ +const { sumERC4626VaultsExport } = require("../helper/erc4626") + +module.exports = { + blast: { + tvl: sumERC4626VaultsExport({ + vaults: [ + "0x56e0f6DF03883611C9762e78d4091E39aD9c420E", + "0x3D4621fa5ff784dfB2fcDFd5B293224167F239db", + "0xe97D34E531E1b299047A94Fc6854289830362d8f", + "0xBa95FCe6c2683C29bD963dd201CA8ee8f3605801", + "0x037A168876d3027b1384FD1752fEAa52407726dB", + ], + isOG4626: true, + }), + }, +} From b2840774f4006b10ae7394bc3147dceffa888f09 Mon Sep 17 00:00:00 2001 From: Singularx <164344872+singularxapp@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:50:15 +0300 Subject: [PATCH 0859/2004] add SingularX (#9481) --- projects/singularx/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/singularx/index.js diff --git a/projects/singularx/index.js b/projects/singularx/index.js new file mode 100644 index 00000000000..4d26f2eaa77 --- /dev/null +++ b/projects/singularx/index.js @@ -0,0 +1,22 @@ +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: 1685817000, + ethereum: { tvl: sumTokensExport({ owners: ethereumContracts, tokens: ethereumTokens, }) }, +}; \ No newline at end of file From 41c613a551b926961005243d3ef4eaf116e24a90 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Fri, 22 Mar 2024 17:54:45 +0800 Subject: [PATCH 0860/2004] Add network eth, bsc, merlin (#9483) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/index.js | 105 +++++++++++++++++--------- 1 file changed, 69 insertions(+), 36 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index e77c43642dd..5d081436582 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -11,20 +11,33 @@ const graphUrlList = { bsc: 'https://api.thegraph.com/subgraphs/name/slov-payable/solv-v3-earn-factory', arbitrum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-arbitrum/version/latest', mantle: 'http://api.0xgraph.xyz/subgraphs/name/solv-payable-factory-mentle-0xgraph', + merlin: 'http://solv-subgraph-server-alb-694489734.us-west-1.elb.amazonaws.com:8000/subgraphs/name/solv-payable-factory-merlin/graphql', } const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-protocol-rwa-slot/main/slot.json'; const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; +async function tvl(api) { + let address = (await getConfig('solv-protocol/funds', addressUrl)); + + await gm(api, address); + await mux(api, address); + await klp(api, address); + await iziswap(api, address); + await lendle(api, address); + await vaultBalance(api); + + return api.getBalances(); +} + async function borrowed(api) { - const ts = api.timestamp const network = api.chain; let address = (await getConfig('solv-protocol/funds', addressUrl)); const depositAddress = filterDepositAddress(network, address); - const graphData = await getGraphData(ts, network, api); + const graphData = await getGraphData(api.timestamp, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; @@ -37,7 +50,7 @@ async function borrowed(api) { abi: abi.getSubscribeNav, calls: pools.map((index) => ({ target: index.navOracle, - params: [index.poolId, ts * 1000] + params: [index.poolId, api.timestamp * 1000] })), }) @@ -62,26 +75,45 @@ async function borrowed(api) { calls: poolBaseInfos.map(i => i[1]), }) + let vaults = {}; + for (const key in pools) { + if (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]; - const balance = BigNumber(poolTotalValues[i]).div(BigNumber(10).pow(18 - decimals)).times(BigNumber(nav[i].nav_).div(BigNumber(10).pow(decimals))).toNumber(); + 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 + } + api.add(poolBaseInfos[i][1], balance) } } return api.getBalances() } -async function tvl(api) { - let address = (await getConfig('solv-protocol/funds', addressUrl)); - - await gm(api, address); - await mux(api, address); - await vaultBalance(api, address); - - return api.getBalances(); -} - async function gm(api, address) { + if (!address[api.chain] || !address[api.chain]["gm"]) { + return; + } let gm = address[api.chain]["gm"]; let tokens = [] @@ -95,6 +127,9 @@ async function gm(api, address) { } 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 }); @@ -102,19 +137,10 @@ async function mux(api, address) { api.add(mux.lp, amount) } - -async function mantleTvl(api) { - let address = (await getConfig('solv-protocol/funds', addressUrl)); - - await klp(api, address); - await iziswap(api, address); - await lendle(api, address); - await vaultBalance(api, address); - - return api.getBalances(); -} - 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({ @@ -131,6 +157,9 @@ async function klp(api, address) { } async function iziswap(api, address) { + if (!address[api.chain] || !address[api.chain]["iziswap"]) { + return; + } let iziswapData = address[api.chain]["iziswap"]; const iziswap = iziswapData.liquidityManager; @@ -223,6 +252,9 @@ async function concrete(slots, api) { } async function lendle(api, address) { + if (!address[api.chain] || !address[api.chain]["lendle"]) { + return; + } let lendleData = address[api.chain]["lendle"]; const balance = await api.call({ abi: abi.balanceOf, target: lendleData.aToken, params: lendleData.account.user }); @@ -230,7 +262,7 @@ async function lendle(api, address) { api.add(lendleData.account.ethAddress, balance) } -async function vaultBalance(api, address) { +async function vaultBalance(api) { const network = api.chain; const graphData = await getGraphData(api.timestamp, network, api); @@ -282,7 +314,11 @@ async function getGraphData(timestamp, chain, api) { openFundShareSlot } }`; - const data = (await cachedGraphQuery(`solv-protocol/funds-graph-data/${chain}`, graphUrlList[chain], slotDataQuery, { api, })); + + 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) { @@ -323,14 +359,11 @@ function filterDepositAddress(network, address) { return depositAddresses; } + // node test.js projects/solv-protocol-funds -module.exports = { - arbitrum: { +['ethereum', 'bsc', 'polygon', 'arbitrum', 'mantle', 'merlin'].forEach(chain => { + module.exports[chain] = { tvl, - borrowed: borrowed, - }, - mantle: { - tvl: mantleTvl, - borrowed: borrowed, + borrowed } -}; +}) From 286ccd4b67556e13ff93dcef246dd415de323a74 Mon Sep 17 00:00:00 2001 From: TJ <58812386+TJ-2@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:55:25 +0000 Subject: [PATCH 0861/2004] Meridian lend (#9486) * Add Meter to Meridian-Lend * Add Meter to Meridian Lend --- projects/meridian-lend/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/meridian-lend/index.js b/projects/meridian-lend/index.js index fcc10986cb3..f948c824a42 100644 --- a/projects/meridian-lend/index.js +++ b/projects/meridian-lend/index.js @@ -14,4 +14,6 @@ function v2(chain, v2Registry) { module.exports = { telos: v2("telos", "0xb84171C0824B4F3C0B415706C99A4A8ED5779b75"), + meter: v2("meter", "0x64Be9ee529E555860DA0705819138F41247e76E6"), + } \ No newline at end of file From a550336caa78ef79007184989f31af6acfcdca41 Mon Sep 17 00:00:00 2001 From: daiwanwei <93238466+daiwanwei@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:13:49 +0800 Subject: [PATCH 0862/2004] teahouse: skip specific address (#9488) * feat: skip specific address * Update index.js --------- Co-authored-by: Wade Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/teahouse-v3/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 05ea06c3f94..14665dac5e0 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -11,6 +11,10 @@ async function getVaultContractsAddress(chain) { vaults.forEach((element) => { // v3 vaults if (element.isDeFi == true && element.isActive == true) { + if ( + element.share.address.toLowerCase() === '0xf9b099f8EebCC675B63E4f0a4657c10F246af77A'.toLowerCase() && + element.chain === "arbitrum" + ) return; if (element.chain === chain) plAddress.push(element.share.address); } }); From 8d6746477afed8d3c56b625cfc85c61b32d9f250 Mon Sep 17 00:00:00 2001 From: 0xRusty <84294992+CryptoTrades20@users.noreply.github.com> Date: Fri, 22 Mar 2024 21:14:42 +1100 Subject: [PATCH 0863/2004] Clipper - Include Base TVL (#9489) Update Clipper -> index.js --- projects/clipper/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/clipper/index.js b/projects/clipper/index.js index 4636aeaa1d9..dff254e4ab7 100644 --- a/projects/clipper/index.js +++ b/projects/clipper/index.js @@ -14,6 +14,6 @@ module.exports = { methodology: `Counts the tokens in pool address in different chains` }; -['ethereum', 'polygon', 'moonbeam', 'arbitrum', 'optimism', 'mantle'].forEach(chain => { +['ethereum', 'polygon', 'moonbeam', 'arbitrum', 'optimism', 'mantle', 'base'].forEach(chain => { module.exports[chain] = { tvl } }) From 8220c3f66e4248b1641faefe8a8f17738f719a05 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:15:42 +0800 Subject: [PATCH 0864/2004] add new Ether.fi Liquid vault into tvl (#9491) --- projects/airpuff/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 11ee15c4ebf..0cf7efcb7ef 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -13,6 +13,7 @@ const contractAbis = { type: "function", }, // balanceOf: "function balanceOf(address) external view returns (uint256)", + getPrice: "function answer() external view returns (uint256)", }; module.exports = { @@ -26,6 +27,27 @@ module.exports = { await api.sumTokens({ tokensAndOwners: [[ADDRESSES.ethereum.WETH, lendingMain.eth]], }); + + const eETH = { + vault: "0xE543eBa28a3793d5ae747A2164A306DB1767cDAe", + reStakingToken: "0xeA1A6307D9b18F8d1cbf1c3Dd6aad8416C06a221", + oracle: "0xb09cbB6Aa95A004F9aeE4349DF431aF5ad03ECe4", + }; + + const eETHPrice = await api.call({ + target: eETH.oracle, + abi: contractAbis.getPrice, + }); + + const eETHBal = await api.call({ + abi: contractAbis.balanceOf, + target: eETH.reStakingToken, + params: [eETH.vault], + }); + + const eETHBalInETH = (eETHBal * eETHPrice) / 1e18; + + api.add(ADDRESSES.ethereum.WETH, eETHBalInETH); // leverage users const ezETH = { vault: "0x32a0ce2bDfc37eE606aB905b4f9fC286049A774f", From 3e1c93a2d54c26d8f4f37566c21158454de242ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Manojlovi=C4=87?= Date: Fri, 22 Mar 2024 12:12:31 +0100 Subject: [PATCH 0865/2004] Add UNO to Nostra Money Market (#9497) --- projects/nostra/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/nostra/index.js b/projects/nostra/index.js index 79edc24c149..b16b13d9d7d 100644 --- a/projects/nostra/index.js +++ b/projects/nostra/index.js @@ -47,6 +47,11 @@ const supplyTokens = [ "0x0142af5b6c97f02cac9c91be1ea9895d855c5842825cb2180673796e54d73dc5", "0x78a40c85846e3303bf7982289ca7def68297d4b609d5f588208ac553cff3a18", "0x67a34ff63ec38d0ccb2817c6d3f01e8b0c4792c77845feb43571092dcf5ebb5", + // UNO + "0x1325caf7c91ee415b8df721fb952fa88486a0fc250063eafddd5d3c67867ce7", + "0x2a3a9d7bcecc6d3121e3b6180b73c7e8f4c5f81c35a90c8dd457a70a842b723", + "0x6757ef9960c5bc711d1ba7f7a3bff44a45ba9e28f2ac0cc63ee957e6cada8ea", + "0x7d717fb27c9856ea10068d864465a2a8f9f669f4f78013967de06149c09b9af", ]; const debtTokens = [ "0x0491480f21299223b9ce770f23a2c383437f9fbf57abc2ac952e9af8cdb12c97", @@ -58,6 +63,7 @@ const debtTokens = [ "0x35778d24792bbebcf7651146896df5f787641af9e2a3db06480a637fbc9fff8", "0x1258eae3eae5002125bebf062d611a772e8aea3a1879b64a19f363ebd00947", "0x292be6baee291a148006db984f200dbdb34b12fb2136c70bfe88649c12d934b", + "0x4b036839a8769c04144cc47415c64b083a2b26e4a7daa53c07f6042a0d35792", ]; function* chunks(arr, n) { From 041a047084252dba21270b29076fa4b9b110b2a4 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Fri, 22 Mar 2024 19:17:47 +0800 Subject: [PATCH 0866/2004] add BedRock UniETH pools into TVL (#9496) --- projects/airpuff/index.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 0cf7efcb7ef..7a668daf46a 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -85,7 +85,19 @@ module.exports = { oracle: "0x1250BbACBC9302D2C0B5F4E48cc9907a6C1Aa67D", }; - const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x]; + const bedRockETH = { + vault: "0x291B812D84707EEB256D618C4c333Ff5F451321F", + reStakingToken: "0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4", + oracle: "0x1bEB65b15689cCAeb5dA191c9fd5F94513923Cab", + }; + + const bedRockETH1x = { + vault: "0x8E2afd8E9C64097b9908c453fCd939fe81b102AF", + reStakingToken: "0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4", + oracle: "0x1bEB65b15689cCAeb5dA191c9fd5F94513923Cab", + }; + + const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x]; for (const strategy of strategies) { const bal = await api.call({ From 123141fd2d10948f6ae2d6e174b4d36da17251b3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:28:45 +0100 Subject: [PATCH 0867/2004] update muito --- projects/muito-finance/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index dcceb94eb38..d7e8108e005 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -17,6 +17,8 @@ async function getTvl(api, farmAddress) { } async function tvl(api) { + const MUTO_V3_FARM = "0xD7372abc6693702fF09536ec3824780eB264b2eF"; + await sumTokens2({ api, uniV3nftsAndOwners: [['0x5752F085206AB87d8a5EF6166779658ADD455774', MUTO_V3_FARM]] }) await getTvl(api, MUTO_FARM); return await getTvl(api, MUTO_MULTI_FARM); } From 7e83234d3948e66da4706e6846b75dfb1f0850be Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 22 Mar 2024 15:39:53 +0000 Subject: [PATCH 0868/2004] add sdai to cex helper (#9504) --- projects/helper/cex.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 426b904e12d..facae40c461 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -95,7 +95,8 @@ const defaultTokens = { '0x61e90a50137e1f645c9ef4a0d3a4f01477738406', // LOKA '0x64d0f55Cd8C7133a9D7102b13987235F486F2224', // BORG '0x925206b8a707096Ed26ae47C84747fE0bb734F59', //WBT - ADDRESSES.ethereum.FDUSD, // FDUSD + ADDRESSES.ethereum.FDUSD, // FDUSD, + '0x83F20F44975D03b1b09e64809B757c47f942BEeA' //sdai ], tron: [ nullAddress, From 2463ee86c60e334cdd9ebddb594c6af484d06657 Mon Sep 17 00:00:00 2001 From: Lucidao <94130970+lucidao-developer@users.noreply.github.com> Date: Fri, 22 Mar 2024 16:46:50 +0100 Subject: [PATCH 0869/2004] add Altr Lend tvl (#9484) * add Altr Lend tvl * bug fix * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/altr-lend/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/altr-lend/index.js diff --git a/projects/altr-lend/index.js b/projects/altr-lend/index.js new file mode 100644 index 00000000000..7da6e46a0ba --- /dev/null +++ b/projects/altr-lend/index.js @@ -0,0 +1,24 @@ +// 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("https://api.thegraph.com/subgraphs/name/lucidao-developer/altr-lend", 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: 1707874007, + polygon: { + tvl: () => ({}), + borrowed, + }, +} From 9d15a94a394261c38d4c37ebcd9a36522ba1b7c4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 16:58:17 +0100 Subject: [PATCH 0870/2004] Refactor tvl function and import sumERC4626VaultsExport --- projects/fx-Protocol/index.js | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/projects/fx-Protocol/index.js b/projects/fx-Protocol/index.js index be04a66eeb6..be192099b7f 100644 --- a/projects/fx-Protocol/index.js +++ b/projects/fx-Protocol/index.js @@ -1,24 +1,15 @@ -const ADDRESSES = require("../helper/coreAssets.json"); +const { sumERC4626VaultsExport} = require("../helper/erc4626"); -const stETHTreasury = "0x0e5CAA5c889Bdf053c9A76395f62267E653AFbb0"; -const stETH = ADDRESSES.ethereum.STETH; -const fxUSD_wstETHTreasury = "0xED803540037B0ae069c93420F89Cd653B6e3Df1f"; -const fxUSD_sfrxETHTreasury = "0xcfEEfF214b256063110d3236ea12Db49d2dF2359"; -const wstETH = ADDRESSES.ethereum.WSTETH; -const sfrxETH = ADDRESSES.ethereum.sfrxETH; - -async function tvl(api) { - const totalSupply = await api.call({ target: stETH, abi: "erc20:balanceOf", params: stETHTreasury, }) - const fxUSDWstETHtotalSupply = await api.call({ target: fxUSD_wstETHTreasury, abi: "uint256:totalBaseToken", }) - const fxUSDSfrxETHtotalSupply = await api.call({ target: fxUSD_sfrxETHTreasury, abi: "uint256:totalBaseToken", }) - api.add(stETH, totalSupply) - api.add(wstETH, fxUSDWstETHtotalSupply) - api.add(sfrxETH, fxUSDSfrxETHtotalSupply) -} +const treasuries = [ + "0x0e5CAA5c889Bdf053c9A76395f62267E653AFbb0", + "0xED803540037B0ae069c93420F89Cd653B6e3Df1f", + "0xcfEEfF214b256063110d3236ea12Db49d2dF2359", + "0x781BA968d5cc0b40EB592D5c8a9a3A4000063885", +] module.exports = { doublecounted: true, ethereum: { - tvl, + tvl: sumERC4626VaultsExport({ vaults: treasuries, tokenAbi: 'baseToken', balanceAbi: 'totalBaseToken' }), }, }; From cf950ef767b5273fb8aa88d1707b9083cca70e6f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 17:04:38 +0100 Subject: [PATCH 0871/2004] Amulet (#9505) * tvl for velodrome on op * add amtSol staking * minor fix --------- Co-authored-by: tinaOVO Co-authored-by: alex-MetaRisk <96643839+alexandrosgoh@users.noreply.github.com> Co-authored-by: Alex --- projects/amulet-v2/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/amulet-v2/index.js b/projects/amulet-v2/index.js index e59256cc229..ce72f872876 100644 --- a/projects/amulet-v2/index.js +++ b/projects/amulet-v2/index.js @@ -1,5 +1,6 @@ const erc4626Abi = require("./erc4626.json"); const { sumTokens2 } = require("../helper/solana"); +const { sumTokens2: sumTokensEVM } = require("../helper/unwrapLPs"); const erc4626Vaults = { "ethereum": [ @@ -8,6 +9,12 @@ const erc4626Vaults = { "0x6B0825b3E079fad25086431F7154acB3073f933B", "0xf06e004caB43F326AA3668C8723A8bDBCF5bD165", "0xfCB69E5E535e04A809dC8Af7eba59c2FED4b2868", + ], + "optimism": [ + "0x2CD4B4EB84028F70e1090B053859B813ef9ad160", + "0xAD1999728F840082aC3Bf9eA09b30D19a7923bbC", + "0xCE05f5d12e7DaF74C2239A2264c99d38176ac3B4", + "0xa850550A115062a860A951a3f77bFD4c22A441fA", ] } @@ -94,7 +101,7 @@ async function tvl(api) { if (idleCdos[api.chain]) await getERC4626IdleVaultFundsByChain(api); - return api.getBalances() + return sumTokensEVM({ api, resolveLP: true, }) } async function SolanaTvl() { @@ -102,6 +109,7 @@ async function SolanaTvl() { ['mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'AkkGFKVJY8o5MRqBf2St4Q8NQnfTTi2bSssMMk9zXAMr'], ['J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn', '86vJYeZiXc9Uq1wmtLzERDfQzAnpoJgs2oF5Y4BirKkn'], ['bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1', '8HpEPmkKb6T7xNDzhheWhK2P6BEdp2nGv7JbcEoDmDST'], + ['SoLW9muuNQmEAoBws7CWfYQnXRXMVEG12cQhy6LE2Zf', '6iK6zK2nDQswaCrpELNYnnbuo4vwzpFsEpZYyqwpRWbD'] ] return sumTokens2({ tokensAndOwners }) From 246a79de240891385de513295557db129ce9854d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 17:11:31 +0100 Subject: [PATCH 0872/2004] Glyph (#9506) * glyph exchange tvl and staking data * minor fix --------- Co-authored-by: bswan --- package-lock.json | 6 +++--- projects/GlyphExchange/index.js | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 projects/GlyphExchange/index.js diff --git a/package-lock.json b/package-lock.json index fd4d57d24b9..f78928d8877 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.42", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.42.tgz", - "integrity": "sha512-9Iss3LFXIH9KNnjYSOUmN2nEw/Yx1dbRRz76scgStZzTbMlXrrtJ28IwVMWi5Q6uiMS+yJN/SO6eCUFICfcQ5A==", + "version": "5.0.43", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.43.tgz", + "integrity": "sha512-G4fwGOncsFtvfPa9tff9lSdLEoQEcuI5TlMFC+0w3H6Z5kokcJeiz+0w0taDTlT9/avQL2rz3aVrgy5my401FA==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/GlyphExchange/index.js b/projects/GlyphExchange/index.js new file mode 100644 index 00000000000..9bac41b2d48 --- /dev/null +++ b/projects/GlyphExchange/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('core', '0x3e723c7b6188e8ef638db9685af45c7cb66f77b9') \ No newline at end of file From f220ced8b941499842f26766ad747fb03e1bfee0 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 22 Mar 2024 16:13:13 +0000 Subject: [PATCH 0873/2004] add another wbone --- projects/helper/coreAssets.json | 1 + projects/woofswap/index.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index ea94098abd8..8d82c6905bb 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1491,6 +1491,7 @@ "BONE_2": "0x6c19a35875217b134e963ca9e61b005b855cad21", "BONE_3": "0x1b2f364032f12bd8a4c89e672e6272de03ae2680", "BONE_4": "0xa2899c776baaf9925d432f83c950d5054a6cf59c", + "BONE_5": "0x839FdB6cc98342B428E074C1573ADF6D48CA3bFd", "DAI": "0x50c5725949a6f0c72e6c4a641f24049a917db0cb" }, "nos": { diff --git a/projects/woofswap/index.js b/projects/woofswap/index.js index 7d3f8b59fb6..58fcc8bfbbc 100644 --- a/projects/woofswap/index.js +++ b/projects/woofswap/index.js @@ -1,3 +1,3 @@ const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('shibarium', '0xB9fbdFA27B7ba8BB2d4bB4aB399e4c55F0F7F83a', { hasStablePools: true, }) \ No newline at end of file +module.exports = uniTvlExport('shibarium', '0xB9fbdFA27B7ba8BB2d4bB4aB399e4c55F0F7F83a', { hasStablePools: true }) \ No newline at end of file From 9fa38110f30272bb74e7493b2536ec28c0183437 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 22 Mar 2024 17:03:47 +0000 Subject: [PATCH 0874/2004] add treasury --- projects/treasury/altr-lend.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/treasury/altr-lend.js diff --git a/projects/treasury/altr-lend.js b/projects/treasury/altr-lend.js new file mode 100644 index 00000000000..fc6491527fe --- /dev/null +++ b/projects/treasury/altr-lend.js @@ -0,0 +1,13 @@ +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 From 465dedc604436c5a5f458b202361e9052715d060 Mon Sep 17 00:00:00 2001 From: 0xdapper <94534135+0xdapper@users.noreply.github.com> Date: Fri, 22 Mar 2024 23:42:15 +0530 Subject: [PATCH 0875/2004] feat: umami's gm btc vaults (#9507) --- projects/umamifinance/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js index ea372a743cc..a2d93b1157a 100644 --- a/projects/umamifinance/index.js +++ b/projects/umamifinance/index.js @@ -20,6 +20,8 @@ const v2Vaults = [ "0x37c0705A65948EA5e0Ae1aDd13552BCaD7711A23", "0x959f3807f0Aa7921E18c78B00B2819ba91E52FeF", // gmUSDC "0x4bCA8D73561aaEee2D3a584b9F4665310de1dD69", // gmWETH + "0x5f851F67D24419982EcD7b7765deFD64fBb50a97", // BTC gmUSDC + "0xcd8011AaB161A75058eAb24e0965BAb0b918aF29", // gmWBTC ]; module.exports = { From d16f0e88bfe7f9cf4ab7847cb04d5b440040bd2a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 19:32:08 +0100 Subject: [PATCH 0876/2004] Fungify (#9508) * added Fungify's SDK adapter * code refactor --------- Co-authored-by: fungify <87287926+fungify@users.noreply.github.com> --- projects/fungify/index.js | 21 +++++++++++++++++++++ projects/helper/utils.js | 7 ++++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 projects/fungify/index.js diff --git a/projects/fungify/index.js b/projects/fungify/index.js new file mode 100644 index 00000000000..2c92b7a8c5c --- /dev/null +++ b/projects/fungify/index.js @@ -0,0 +1,21 @@ +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/helper/utils.js b/projects/helper/utils.js index 96c90ac23e9..c4f41380ec4 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -40,14 +40,15 @@ function getParamCalls(length) { } 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 = [ +const blacklisted_LPS = new Set([ '0xb3dc4accfe37bd8b3c2744e9e687d252c9661bc7', '0xf146190e4d3a2b9abe8e16636118805c628b94fe', '0xCC8Fa225D80b9c7D42F96e9570156c65D6cAAa25', '0xaee4164c1ee46ed0bbc34790f1a3d1fc87796668', '0x93669cfce302c9971169f8106c850181a217b72b', '0x253f67aacaf0213a750e3b1704e94ff9accee10b', -].map(i => i.toLowerCase()) + '0x524cab2ec69124574082676e6f654a18df49a048', +].map(i => i.toLowerCase())) function isICHIVaultToken(symbol, token, chain) { if (symbol === 'ICHI_Vault_LP') return true @@ -58,7 +59,7 @@ function isICHIVaultToken(symbol, token, chain) { function isLP(symbol, token, chain) { // sdk.log(symbol, chain, token) if (!symbol) return false - if (token && blacklisted_LPS.includes(token.toLowerCase()) || symbol.includes('HOP-LP-')) 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 From 9847bd3c35dd481af7b1bfbc98feb9a5b9421b79 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 22 Mar 2024 23:36:09 +0100 Subject: [PATCH 0877/2004] Smilee (#9510) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Smilee Project * code refactor --------- Co-authored-by: Giuseppe Scarfò --- projects/smilee-finance/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/smilee-finance/index.js diff --git a/projects/smilee-finance/index.js b/projects/smilee-finance/index.js new file mode 100644 index 00000000000..4c61403965d --- /dev/null +++ b/projects/smilee-finance/index.js @@ -0,0 +1,22 @@ +module.exports = { + methodology: 'Sum of balances from vault contracts associated with each DVP retrieved by the registry.', + start: 190367425, +} + +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)] }) + } + } +}) From 084cfe436e3a1f694ec9b608c9e81af918b2d7f8 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sat, 23 Mar 2024 12:25:36 +0000 Subject: [PATCH 0878/2004] add kucoin new wallet (Cex) (#9514) * add kucoin new wallet (Cex) * final kucoin --- projects/kucoin/index.js | 169 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 157 insertions(+), 12 deletions(-) diff --git a/projects/kucoin/index.js b/projects/kucoin/index.js index 58c14f57b90..78bd1974047 100644 --- a/projects/kucoin/index.js +++ b/projects/kucoin/index.js @@ -3,34 +3,158 @@ const { cexExports } = require('../helper/cex') const config = { ethereum: { owners: [ - '0x2b5634c42055806a59e9107ed44d43c426e58258', - '0x689c56aef474df92d44a1b70850f808488f9769c', - '0xa1d8d972560c2f8144af871db508f0b0b10a3fbf', - '0x4ad64983349c49defe8d7a4686202d24b25d0ce8', + '0x061f7937b7b2bc7596539959804f86538b6368dc', '0x1692e170361cefd1eb7240ec13d048fd9af6d667', - '0xd6216fc19db775df9774a6e33526131da7d19a2c', - '0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91', + '0x41e29c02713929f800419abe5770faa8a5b4dadc', + '0x441454b3d857fe365b7defe8cb3e4f498ec91eac', + '0x446b86a33e2a438f569b15855189e3da28d027ba', + '0x45300136662dd4e58fc0df61e6290dffd992b785', + '0x58edf78281334335effa23101bbe3371b6a36a51', + '0x738cf6903e6c4e699d1c2dd9ab8b67fcdb3121ea', + '0x7491f26a0fcb459111b3a1db2fbfc4035d096933', + '0x77f59b595cac829575e262b4c8bbcb17abadb33a', + '0x7b915c27a0ed48e2ce726ee40f20b2bf8a88a1b3', + '0x83c41363cbee0081dab75cb841fa24f3db46627e', + '0x88bd4d3e2997371bceefe8d9386c6b5b4de60346', + '0x9f4cf329f4cf376b7aded854d6054859dd102a2a', + '0xa152f8bb749c55e9943a3a0a3111d18ee2b3f94e', + '0xa649ffc455ac7c5acc1bc35726fce54e25eb59f9', + '0xaa99fc695eb1bbfb359fbad718c7c6dafc03a839', + '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23', '0xcad621da75a66c7a8f4ff86d30a2bf981bfc8fdd', + '0xce0d2213a0eaff4176d90b39879b7b4f870fa428', + '0xd6216fc19db775df9774a6e33526131da7d19a2c', '0xd89350284c7732163765b23338f2ff27449e0bf5', - '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23', + '0xd91efec7e42f80156d1d9f660a69847188950747', '0xec30d02f10353f8efc9601371f56e808751f396f', - '0x88bd4d3e2997371bceefe8d9386c6b5b4de60346', + '0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91', + '0xf8da05c625a6e601281110cba52b156e714e1dc2', + '0xf97deb1c0bb4536ff16617d29e5f4b340fe231df', ], }, tron: { owners: [ - 'TUpHuDkiCCmwaTZBHZvQdwWzGNm5t8J2b9', 'TEWzF5ZsaWMh6sTNDPrYaPJrK8TTMGfwCC', 'TQeNNo5zVarhdKm5EiJSekfNXg6H1tRN4n', 'TRYL7PKCG4b4xRCM554Q5J6o8f1UjUmfnY', + 'TSGEXDSRMtzt9swPSgzr8MKefcgEawEdmb', + 'TUpHuDkiCCmwaTZBHZvQdwWzGNm5t8J2b9', ] }, bitcoin: { owners: [ + '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' ] }, arbitrum: { @@ -38,20 +162,31 @@ const config = { '0xd6216fc19db775df9774a6e33526131da7d19a2c', '0x03e6fa590cadcf15a38e86158e9b3d06ff3399ba', '0xf3f094484ec6901ffc9681bcb808b96bafd0b8a8', + '0x00f3e09abe73aec2d6ad7b8820049b60ebc73f94', + '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23' ], }, algorand: { - owners: ['T6MXHXMGXURKJ7AD5NCB4IYPLWXYXKKFLLO5KAPJ56GKS7BFXHNHOODZCM'], + owners: [ // added on 23/03/24 + 'T6MXHXMGXURKJ7AD5NCB4IYPLWXYXKKFLLO5KAPJ56GKS7BFXHNHOODZCM', + '2X2GV36S66B64URLMRZ4O4IGLWSM5MEKIE6J5VREIZC62GVKCSH25IG4PM', + 'IMGMVBZEPMM36AIMWI7FZHG2G44KEESC5ALZHWX7B7SBNBDY6Z7COYMO6U', + 'NDVDIGWEP77WQDDU5M6F7AAS77AOFXLML7DNNPUEVLQMKTIFHYTTMAG6OU', + 'WBI5LT2BQ7FFYBXW2PEDVB6KBX2F3C77WXBJ2FPVERBXXBUV6SC7XXPGWM', + 'YXDKDH5XHXL6OYMH2HYCJCXOZWPOBEUNK5ICFVJRFW3JVQXZ6HQ6QPVQVA', + '3CIPOIS4KLKSA3XOCIRKX2TVUJ2V3F5A4P525VGMFCPGN7QFKDDYUABYOY', + ], }, kcc: { owners: [ - '0x2a8c8b09bd77c13980495a959b26c1305166a57f', '0x14ea40648fc8c1781d19363f5b9cc9a877ac2469', + '0x2a8c8b09bd77c13980495a959b26c1305166a57f', '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23', + '0xd6216fc19db775df9774a6e33526131da7d19a2c', ], }, eos: { - owners: ['qlwzviixzm1h', 'kucoinrise11'], + owners: ['qlwzviixzm1h', 'kucoinrise11', 'kucoinatwarm'], }, optimism: { owners: [ @@ -59,6 +194,16 @@ const config = { '0xebb8ea128bbdff9a1780a4902a9380022371d466', '0xd6216fc19db775df9774a6e33526131da7d19a2c', ], + }, + solana: { + owners: [ + 'BmFdpraQhkiDQE6SnfG5omcA1VwzqfXrwtNYBwWTymy6', + 'EkUy8BB574iEVAQE9dywEiMhp9f2mFBuFu6TBKAkQxFY', + 'HVh6wHNBAsG3pq1Bj5oCzRjoWKVogEDHwUHkRz3ekFgt', + 'BmFdpraQhkiDQE6SnfG5omcA1VwzqfXrwtNYBwWTymy6', + 'EkUy8BB574iEVAQE9dywEiMhp9f2mFBuFu6TBKAkQxFY', + 'HVh6wHNBAsG3pq1Bj5oCzRjoWKVogEDHwUHkRz3ekFgt' + ], } } From 2d82d4d3d844ad3fa56919db65068fe61a20faee Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sat, 23 Mar 2024 13:47:47 +0000 Subject: [PATCH 0879/2004] cryptovalley --- projects/cryptovalley/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/cryptovalley/index.js diff --git a/projects/cryptovalley/index.js b/projects/cryptovalley/index.js new file mode 100644 index 00000000000..81ac2bf5f7e --- /dev/null +++ b/projects/cryptovalley/index.js @@ -0,0 +1,8 @@ +const { staking } = require('../helper/staking') + +module.exports = { + blast: { + tvl: () => ({}), + staking: staking("0x6b4e27661ea80f47b9a48331fe6d0260b1ecb28a", "0x67fa2887914fa3729e9eed7630294fe124f417a0") + } +} \ No newline at end of file From dc2e318ba1c33c24dd3c920a25d950be07588e69 Mon Sep 17 00:00:00 2001 From: Satoshi-Finance <155980966+Satoshi-Finance@users.noreply.github.com> Date: Sun, 24 Mar 2024 01:01:32 +0800 Subject: [PATCH 0880/2004] add adapter for Satoshi Finance (#9516) --- projects/satoshi-finance/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/satoshi-finance/index.js diff --git a/projects/satoshi-finance/index.js b/projects/satoshi-finance/index.js new file mode 100644 index 00000000000..210429b4cd1 --- /dev/null +++ b/projects/satoshi-finance/index.js @@ -0,0 +1,18 @@ +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 = '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c' + +module.exports = { + bsc: { + tvl: getLiquityTvl(SATOSHI_TROVE_MANAGER, {collateralToken: BTCB}), + staking: staking(SATOSHI_SATO_STAKING, SATO) + } +} \ No newline at end of file From d77bb15e23a4ae66e420ca8a3a6e64d0b91f6bff Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 23 Mar 2024 21:07:56 +0000 Subject: [PATCH 0881/2004] add adapter --- projects/bank-ai/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/bank-ai/index.js diff --git a/projects/bank-ai/index.js b/projects/bank-ai/index.js new file mode 100644 index 00000000000..b50971fb183 --- /dev/null +++ b/projects/bank-ai/index.js @@ -0,0 +1,8 @@ +const { staking } = require('../helper/staking') + +module.exports = { + ethereum: { + tvl: () => ({}), + staking: staking("0x140Fae0A43190A3D0Cbf8DBdB347200EB84E81d1", "0xf19693068120185664E211F619c4F0530cE07088") + } +} \ No newline at end of file From c013c80c18acb460c3212aa87edc60bb95e42e32 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 23 Mar 2024 21:26:22 +0000 Subject: [PATCH 0882/2004] add missing pool --- projects/asymetrix/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/asymetrix/index.js b/projects/asymetrix/index.js index fb3e87041b9..92f12ee2250 100644 --- a/projects/asymetrix/index.js +++ b/projects/asymetrix/index.js @@ -2,12 +2,14 @@ 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], tokens: [ST_ETH_TOKEN_CONTRACT]}), + tvl: sumTokensExport({ owners: [STAKE_PRIZE_POOL_CONTRACT, EETH_PRIZE_POOL_CONTRACT], tokens: [ST_ETH_TOKEN_CONTRACT, E_ETH_TOKEN_CONTRACT]}), }, }; From af563f42982ef18a1f0c8fe821d2db72dea01389 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 25 Mar 2024 16:17:15 +0400 Subject: [PATCH 0883/2004] Manta and Zeta Contracts update (#9534) * add VLX token for BSC * zeta and manta total supply --------- Co-authored-by: Evgeny Rozanov --- projects/accumulated-finance/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/accumulated-finance/index.js b/projects/accumulated-finance/index.js index 2e74baff3d9..48eebdbcd49 100644 --- a/projects/accumulated-finance/index.js +++ b/projects/accumulated-finance/index.js @@ -32,7 +32,7 @@ const config = { { "manta": { token: '0x95cef13441be50d20ca4558cc0a27b601ac544e5', - "LST": "0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547" + "LST": "0xcba2aeec821b0b119857a9ab39e09b034249681a" } } ], @@ -40,7 +40,7 @@ const config = { { "zeta": { "baseToken": '0xf091867ec603a6628ed83d274e835539d82e9cc8', - "LST": '0x7ac168c81f4f3820fa3f22603ce5864d6ab3c547' + "LST": '0xcba2aeec821b0b119857a9ab39e09b034249681a' } }, { From 0ec3545d7320cb5aba719d1100baa5d066cb3b45 Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Mon, 25 Mar 2024 20:18:19 +0800 Subject: [PATCH 0884/2004] add new pool (#9533) Co-authored-by: muito --- projects/muito-finance/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index d7e8108e005..034362e136b 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -2,6 +2,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const MUTO_FARM = "0x30b0e706fB7a6BfaFcdcd0C8290d8542b5E9C5a0"; const MUTO_MULTI_FARM = "0xBD08D27ED845a0b75e87A756226E6a2Bc1cDc4dA"; +const MUTO_MULTI_FARM2 = "0x8f04DE4bE0521F768e8aeB4b5b9c63466B16f1ae"; const NATIVE_TOKEN = "0x029d924928888697d3F3d169018d9d98d9f0d6B4".toLowerCase(); async function getTvl(api, farmAddress) { @@ -18,16 +19,22 @@ async function getTvl(api, farmAddress) { async function tvl(api) { const MUTO_V3_FARM = "0xD7372abc6693702fF09536ec3824780eB264b2eF"; - await sumTokens2({ api, uniV3nftsAndOwners: [['0x5752F085206AB87d8a5EF6166779658ADD455774', MUTO_V3_FARM]] }) + await sumTokens2({ + api, + uniV3nftsAndOwners: [ + ["0x5752F085206AB87d8a5EF6166779658ADD455774", MUTO_V3_FARM], + ], + }); await getTvl(api, MUTO_FARM); + await getTvl(api, MUTO_MULTI_FARM2); 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() + api.add(NATIVE_TOKEN, target.tvl); + return api.getBalances(); } module.exports = { From f54236f26cf94e83983c180a3a03a2ae1010b40c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 13:32:25 +0100 Subject: [PATCH 0885/2004] Update adapter (#9535) * Added adapter * Update adapter * Updated adapter * Refactor PyreSwap index.js to use forEach loop for chain configurations --------- Co-authored-by: KiaDezoSC <142165654+KiaDezoSC@users.noreply.github.com> --- projects/PyreSwap/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/PyreSwap/index.js diff --git a/projects/PyreSwap/index.js b/projects/PyreSwap/index.js new file mode 100644 index 00000000000..bd1797bd0ee --- /dev/null +++ b/projects/PyreSwap/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require('../helper/unknownTokens'); + +module.exports = { + misrepresentedTokens: true, +}; + +['fantom', 'bsc', 'avax'].forEach(chain => { + module.exports[chain] = { + tvl: getUniTVL({ factory: '0x045d720873f0260e23da812501a7c5930e510aa4', useDefaultCoreAssets: true, fetchBalances: true, }) + } +}) \ No newline at end of file From 32a77c99ad75e0c78837892b994600226efd9116 Mon Sep 17 00:00:00 2001 From: tokenstore <164578450+tokenstoreapp@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:37:59 +0300 Subject: [PATCH 0886/2004] Add tokenstore adapter (#9511) --- projects/tokenstore/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/tokenstore/index.js diff --git a/projects/tokenstore/index.js b/projects/tokenstore/index.js new file mode 100644 index 00000000000..155136bda97 --- /dev/null +++ b/projects/tokenstore/index.js @@ -0,0 +1,12 @@ +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 From a12e470503c216eeadaa5d87a1c9575c85d6b9b9 Mon Sep 17 00:00:00 2001 From: Delphi <164637664+akropolisfinance@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:43:27 +0300 Subject: [PATCH 0887/2004] add Akropolis (#9515) * add Akropolis Finance * Refactor AKRO token staking in index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/akropolis/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/akropolis/index.js diff --git a/projects/akropolis/index.js b/projects/akropolis/index.js new file mode 100644 index 00000000000..41bd6e827b3 --- /dev/null +++ b/projects/akropolis/index.js @@ -0,0 +1,5 @@ +const { staking } = require('../helper/staking') + +module.exports = { + ethereum: { tvl: () => ({}), staking: staking('0x3501Ec11d205fa249f2C42f5470e137b529b35D0', '0x8Ab7404063Ec4DBcfd4598215992DC3F8EC853d7') } +}; From d10bed88865be12a4039d9f2e31b9abc4f18d76e Mon Sep 17 00:00:00 2001 From: Shell Yu Date: Mon, 25 Mar 2024 20:44:33 +0800 Subject: [PATCH 0888/2004] add adapter for Euclid Finance (#9518) Co-authored-by: yulodl --- projects/ngad-euclid/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/ngad-euclid/index.js diff --git a/projects/ngad-euclid/index.js b/projects/ngad-euclid/index.js new file mode 100644 index 00000000000..f0e63e74a72 --- /dev/null +++ b/projects/ngad-euclid/index.js @@ -0,0 +1,22 @@ +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 = { + ethereum: { + tvl + } +}; + From 51b10fab405f8c8ab376596459c3f2dc574a9238 Mon Sep 17 00:00:00 2001 From: 3F Mutual <164644067+3fmutual@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:46:43 +0300 Subject: [PATCH 0889/2004] 3F Mutual listing, add TVL adapter (#9519) --- projects/3fmutual/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/3fmutual/index.js diff --git a/projects/3fmutual/index.js b/projects/3fmutual/index.js new file mode 100644 index 00000000000..1b18f0aaac7 --- /dev/null +++ b/projects/3fmutual/index.js @@ -0,0 +1,15 @@ +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 }) } +}; From 1fcd1091e83ca58c20fffba8174464be7eddb47b Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Mon, 25 Mar 2024 05:48:02 -0700 Subject: [PATCH 0890/2004] Update config.js (#9521) --- projects/visor/config.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index e50c153d9fa..b7e82fbae5d 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -102,6 +102,9 @@ const HYPE_REGISTRY = { astrzk: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 306151], // Quickswap ], + imx: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 3951377], // Quickswap + ], blast: [ ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster ], From ce82629321bb322df24e51a2553eac076321dedd Mon Sep 17 00:00:00 2001 From: DEGO <164676850+degofinance@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:53:48 +0300 Subject: [PATCH 0891/2004] add TVL adapter Dego Finance (#9524) --- projects/degofinance/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/degofinance/index.js diff --git a/projects/degofinance/index.js b/projects/degofinance/index.js new file mode 100644 index 00000000000..e9030d5b23f --- /dev/null +++ b/projects/degofinance/index.js @@ -0,0 +1,20 @@ +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 }) + } +}; From 4214cb5f8e0305dea226a47b7df1305cf6326a28 Mon Sep 17 00:00:00 2001 From: hoomp3 Date: Mon, 25 Mar 2024 09:25:53 -0400 Subject: [PATCH 0892/2004] Update Juice Finance (#9527) * feat: add weth lending pool * feat: add weth lending pool * feat: add weth lending pool * fix: add collateral manager, ezeth, and munchables lockdrop * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/juice-finance/index.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index c65aa3dca6f..9e296189f18 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -2,15 +2,24 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') const LENDING_POOL_USDB = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a" const LENDING_POOL_WETH = "0x44f33bC796f7d3df55040cd3C631628B560715C2"; -const COLLATERAL_VAULT = "0x6301795aa55B90427CF74C18C8636E0443F2100b" -const COLLATERAL_VAULT_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0" +const COLLATERAL_MANAGER = "0x6301795aa55B90427CF74C18C8636E0443F2100b" +const COLLATERAL_MANAGER_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0" +const WETH_COLLATERAL_MANAGER = "0x23eBa06981B5c2a6f1a985BdCE41BD64D18e6dFA" +const EZETH_COLLATERAL_MANAGER = "0xc81A630806d1aF3fd7509187E1AfC501Fd46e818" +const MUNCHABLE_WETH_COLLATERAL_MANAGER = "0x4A355D57fc1A5eEB33C0a19539744A2144220027" + +const EZETH = "0x2416092f143378750bb29b79eD961ab195CcEea5" + +const MUNCHABLE_LOCKDROP_VAULT = "0x01F7dF622DDE3B7d234aadBE282DDA24CEAd9D21" const vaults = [ ["0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df", "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], - [ADDRESSES.blast.WETH, "0x4A355D57fc1A5eEB33C0a19539744A2144220027"], ['0x4bed2a922654cacc2be974689619768fabf24855', "0x0CA56aa647E83A8F0a5f7a81a2fdcA393bC68D78"], + [EZETH, '0x741011f52B7499ca951f8b8Ee547DD3Cdd813Fda'], ] +const wethHolders = [LENDING_POOL_WETH, COLLATERAL_MANAGER, COLLATERAL_MANAGER_V2, WETH_COLLATERAL_MANAGER, MUNCHABLE_WETH_COLLATERAL_MANAGER, ].map(a => [ADDRESSES.blast.WETH, a]) + async function tvl(api) { const thrusterv2LPs = [ // [LP, contract] ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', '0x8034b01555487C26D4e21F4E33b7A30fbc90d181'], @@ -20,7 +29,7 @@ async function tvl(api) { 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) - await sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL_USDB], [ADDRESSES.blast.WETH, LENDING_POOL_WETH], [ADDRESSES.blast.WETH, COLLATERAL_VAULT], [ADDRESSES.blast.WETH, COLLATERAL_VAULT_V2], ...vaults], }) + await sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL_USDB], [EZETH, EZETH_COLLATERAL_MANAGER], ...wethHolders, ...vaults], }) } module.exports = { @@ -28,4 +37,4 @@ module.exports = { blast: { tvl } -} \ No newline at end of file +} From f2a470f368003dc45c5fb9a74fa42d64cc948669 Mon Sep 17 00:00:00 2001 From: Joe Petrakovich Date: Mon, 25 Mar 2024 22:31:56 +0900 Subject: [PATCH 0893/2004] Added Rosy Burnt Steak protocol adapter. (#9528) * Added Rosy Burnt Steak protocol adapter. * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 1 + projects/rosy-burnt-steak/index.js | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 projects/rosy-burnt-steak/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 1a2ea8417db..2d2bc8fc321 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -70,6 +70,7 @@ const fixBalancesTokens = { }, sapphire: { [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, + '0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8': { coingeckoId: 'rosy', decimals: 18 }, }, // Sample Code ozone: { diff --git a/projects/rosy-burnt-steak/index.js b/projects/rosy-burnt-steak/index.js new file mode 100644 index 00000000000..bdbfad1d95d --- /dev/null +++ b/projects/rosy-burnt-steak/index.js @@ -0,0 +1,13 @@ +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: 1711020000, + sapphire: { + tvl: () => ({}), + staking: staking(STEAK_CONTRACT, ROSY_TOKEN_CONTRACT) + } +}; \ No newline at end of file From 5bdd0dbdce37aacf75eaece72948c02964e9b326 Mon Sep 17 00:00:00 2001 From: webmass Date: Mon, 25 Mar 2024 17:32:09 +0400 Subject: [PATCH 0894/2004] inverse: move DBR to ownTokens (#9529) --- projects/treasury/inverse.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/treasury/inverse.js b/projects/treasury/inverse.js index 35b10eb5e47..078f9d88b5e 100644 --- a/projects/treasury/inverse.js +++ b/projects/treasury/inverse.js @@ -38,14 +38,14 @@ module.exports = treasuryExports({ "0xf24d8651578a55b0c119b9910759a351a3458895", // sdBAL "0x445494F823f3483ee62d854eBc9f58d5B9972A25", // 50DOLA-50DBR "0xb204BF10bc3a5435017D3db247f56dA601dFe08A", // 50DOLA-50WETH - "0x7e05540A61b531793742fde0514e6c136b5fbAfE", // xFODL - "0xAD038Eb671c44b853887A7E32528FaB35dC5D710", // DBR + "0x7e05540A61b531793742fde0514e6c136b5fbAfE", // xFODL "0x0a6B1d9F920019BAbc4De3F10c94ECB822106104", "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", ], owners: [anchorTreasury, treasurymultisig, pcmultisig, bugbountymultisig, fedchair], ownTokens: [ inv, + "0xAD038Eb671c44b853887A7E32528FaB35dC5D710", // DBR "0x73E02EAAb68a41Ea63bdae9Dbd4b7678827B2352", // Uniswap INV/ETH LP "0xA5D7A7690B72a89B7b720E43fC9cBda5419d0C71", // 50INV-50DOLA Aura Deposit Vault ], From 41b6691870262daae768831ee650453e73fb9549 Mon Sep 17 00:00:00 2001 From: Switcheo Finance <164585088+switcheofinance@users.noreply.github.com> Date: Mon, 25 Mar 2024 17:05:55 +0300 Subject: [PATCH 0895/2004] TVL adapter for Switcheo Finance (#9512) --- projects/switcheofinance/index.js | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 projects/switcheofinance/index.js diff --git a/projects/switcheofinance/index.js b/projects/switcheofinance/index.js new file mode 100644 index 00000000000..2c9b3b66560 --- /dev/null +++ b/projects/switcheofinance/index.js @@ -0,0 +1,33 @@ +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 }) } +}; From d7a6914550f1beb36b754b8580a58b18fde0297f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:40:29 +0100 Subject: [PATCH 0896/2004] track betfolio.co --- projects/betfolio/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/betfolio/index.js diff --git a/projects/betfolio/index.js b/projects/betfolio/index.js new file mode 100644 index 00000000000..c328ab6abe9 --- /dev/null +++ b/projects/betfolio/index.js @@ -0,0 +1,20 @@ +const { getConfig } = require('../helper/cache') +const ADDRESSES = require('../helper/coreAssets.json') + +const config = { + polygon: ADDRESSES.polygon.USDC_CIRCLE, +} + +async function getContracts() { + const { data: { list } } = await getConfig('betfolio', 'https://api.betfolio.co/api/v1/user/predictionList?limit=1000&duration=&type=') + return list.map(i => i.contract_address) +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: async (api) => { + const owners = await getContracts(api) + return api.sumTokens({ owners, tokens: [config[chain]] }) + } + } +}) \ No newline at end of file From 9ca81eb9d3702c1cdb7880555d8bbdebc772d4b1 Mon Sep 17 00:00:00 2001 From: Michael Silberling <4006780+MSilb7@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:47:56 -0400 Subject: [PATCH 0897/2004] [WIP] Add Zora to Uniswap V2 TVL (#9517) * add zora factory * Update chains.json * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 3 ++- projects/helper/tokenMapping.js | 3 +++ projects/uniswap-v2/index.js | 5 +++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 28d73614e15..786fb720931 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -290,5 +290,6 @@ "zkfair", "zklink", "zksync", + "zora", "zyx" -] \ No newline at end of file +] diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2d2bc8fc321..8de1deefb1d 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -62,6 +62,9 @@ const fixBalancesTokens = { '2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21': { coingeckoId: 'power-token', decimals: 8 }, 'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS': { coingeckoId: 'puzzle-swap', decimals: 8 }, }, + zora: { + '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + }, imx: { [nullAddress]: { coingeckoId: 'immutable-x', decimals: 18 }, '0x3A0C2Ba54D6CBd3121F01b96dFd20e99D1696C9D': { coingeckoId: 'immutable-x', decimals: 18 }, diff --git a/projects/uniswap-v2/index.js b/projects/uniswap-v2/index.js index 6844f203231..f6c9eca2897 100644 --- a/projects/uniswap-v2/index.js +++ b/projects/uniswap-v2/index.js @@ -21,7 +21,8 @@ const config = { base: '0x8909dc15e40173ff4699343b6eb8132c65e18ec6', bsc: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6', polygon: '0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C', - celo: '0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f' + celo: '0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f', + zora: '0x0F797dC7efaEA995bB916f268D919d0a1950eE3C' } Object.keys(config).forEach(chain => { @@ -29,4 +30,4 @@ Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) } -}) \ No newline at end of file +}) From e0452bf514c7053783131f8bdef92fcba6a9158a Mon Sep 17 00:00:00 2001 From: eddiewong88 <142790303+eddiewong88@users.noreply.github.com> Date: Mon, 25 Mar 2024 22:47:40 +0700 Subject: [PATCH 0898/2004] feat: add project brrr (#9537) --- projects/brrr/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/brrr/index.js diff --git a/projects/brrr/index.js b/projects/brrr/index.js new file mode 100644 index 00000000000..cb9d4ee4a44 --- /dev/null +++ b/projects/brrr/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +const NFT_CONTRACT = "0x47efb5793b3aa8e15808c6fa794e6d7c93394047"; + +module.exports = { + blast: { + tvl: sumTokensExport({ owners: [NFT_CONTRACT], tokens: [ADDRESSES.null] }), + }, + methodology: "Sum contract token balance", +}; From 951abe00d063b10b32d9b304ea157b9d3e36f63f Mon Sep 17 00:00:00 2001 From: Yield Wars <164681176+yieldwarsxyz@users.noreply.github.com> Date: Mon, 25 Mar 2024 18:52:33 +0300 Subject: [PATCH 0899/2004] add Yield Wars TVL adapter (#9536) * add Yield Wars TVL adapter * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/yieldwars/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/yieldwars/index.js diff --git a/projects/yieldwars/index.js b/projects/yieldwars/index.js new file mode 100644 index 00000000000..85c0d1c5fef --- /dev/null +++ b/projects/yieldwars/index.js @@ -0,0 +1,24 @@ +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] }) + } +}; From 4c0254750ecb36af4cab3136b7fedfbb92058fd0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 19:55:53 +0100 Subject: [PATCH 0900/2004] IXS (#9540) * Add ixswap * code refactor --------- Co-authored-by: thi-investax --- projects/ixswap/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/ixswap/index.js diff --git a/projects/ixswap/index.js b/projects/ixswap/index.js new file mode 100644 index 00000000000..31154e2017a --- /dev/null +++ b/projects/ixswap/index.js @@ -0,0 +1,14 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +const { staking } = require('../helper/staking') + +const IXS_POLYGON = "0x1BA17C639BdaeCd8DC4AAc37df062d17ee43a1b8" +const STAKING_CONTRACTS = [ + "0xad644F3cC768bc6dceF97096790e2210D5191cec", // stake bank +] + +module.exports = { + polygon:{ + tvl: getUniTVL({ factory: '0xc2D0e0bc81494adB71Ce9Aa350cC875DaE12D81D', fetchBalances: true, blacklistedTokens: [IXS_POLYGON] }), + staking: staking(STAKING_CONTRACTS, IXS_POLYGON), + }, +} \ No newline at end of file From 71a54c2352866d41975bbf117eaff351e7245cf0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 20:04:44 +0100 Subject: [PATCH 0901/2004] Add Swych Perpetual DEX (#9541) * Add Swych Perpetual DEX Initial version * code refactor --------- Co-authored-by: itsmenikolaos --- projects/swych/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/swych/index.js diff --git a/projects/swych/index.js b/projects/swych/index.js new file mode 100644 index 00000000000..ac371ba0949 --- /dev/null +++ b/projects/swych/index.js @@ -0,0 +1,17 @@ +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), }) + }, +} \ No newline at end of file From 44a921a1de29b265b4214afaa685daef1e7e4f50 Mon Sep 17 00:00:00 2001 From: Jeff Wu Date: Mon, 25 Mar 2024 12:08:48 -0700 Subject: [PATCH 0902/2004] fix: add mainnet (#9539) --- projects/notional-v3/index.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/projects/notional-v3/index.js b/projects/notional-v3/index.js index 44bd0856005..cbf2b9ba94b 100644 --- a/projects/notional-v3/index.js +++ b/projects/notional-v3/index.js @@ -3,11 +3,15 @@ const abi = require('../notional/abi'); const { cachedGraphQuery } = require('../helper/cache') const SUBGRAPHS = { - arbitrum: 'https://api.studio.thegraph.com/query/36749/notional-v3-arbitrum/version/latest' + arbitrum: 'https://api.studio.thegraph.com/query/36749/notional-v3-arbitrum/version/latest', + ethereum: 'https://api.studio.thegraph.com/query/36749/notional-v3-mainnet/version/latest' }; const vaultsQuery = `{ vaultConfigurations { id } }` -const contract = "0x1344A36A1B56144C3Bc62E7757377D288fDE0369" +const CONTRACTS = { + arbitrum: "0x1344A36A1B56144C3Bc62E7757377D288fDE0369", + ethereum: "0x6e7058c91F85E0F6db4fc9da2CA41241f5e4263f" +} async function addVaultTvl(api) { let { vaultConfigurations } = await cachedGraphQuery(`notional-v3/${api.chain}`, SUBGRAPHS[api.chain], vaultsQuery) @@ -18,14 +22,15 @@ async function addVaultTvl(api) { } async function tvl(api) { - let oracles = await api.fetchList({ lengthAbi: abi.getMaxCurrencyId, itemAbi: abi.getPrimeCashHoldingsOracle, target: contract, startFromOne: true, }) + 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: contract, api }) + return sumTokens2({ tokens, owner: CONTRACTS[api.chain], api }) } module.exports = { - arbitrum: { tvl } + arbitrum: { tvl }, + ethereum: { tvl } }; \ No newline at end of file From 63390d0935a06e072d87d2b23a8ed2ee54df6618 Mon Sep 17 00:00:00 2001 From: rogi-sh <46889545+rogi-sh@users.noreply.github.com> Date: Mon, 25 Mar 2024 20:24:30 +0100 Subject: [PATCH 0903/2004] TVL Adapter for Javsphere (#9523) * add javsphere tvl * add javsphere tvl description * add defimetachain as l2 for defichain * remove defimetachain and use defichain instead * prices not needed since from coingecko and better description * code refactor * bugfix --------- Co-authored-by: igorshelkovenkov Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/javsphere/index.js | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 projects/javsphere/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 786fb720931..5dffef53931 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -64,6 +64,7 @@ "darwinia", "dash", "defichain", + "defichain_evm", "defiverse", "dexit", "dfk", diff --git a/projects/helper/env.js b/projects/helper/env.js index 873eb10637d..fe0305db72e 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -22,6 +22,7 @@ const DEFAULTS = { DEFIVERSE_RPC: "https://rpc.defi-verse.org/", ZKLINK_RPC: "https://rpc.zklink.io", KINTO_RPC: "https://rpc.kinto-rpc.com", + DEFICHAIN_EVM_RPC: "https://dmc.mydefichain.com/mainnet,https://dmc01.mydefichain.com/mainnet", } const ENV_KEYS = [ diff --git a/projects/javsphere/index.js b/projects/javsphere/index.js new file mode 100644 index 00000000000..68bd33d975e --- /dev/null +++ b/projects/javsphere/index.js @@ -0,0 +1,27 @@ +const { get } = require('../helper/http') +const vaultUrl = "https://mainnet.ocean.jellyfishsdk.com/v0/mainnet/address/df1q7zkdpw6hd5wzcxudx28k72vjvpefa4pyqls2grnahhyw4u8kf0zqu2cnz6/vaults"; + +const ONE_YEAR_LOCKING_MAINNET = '0xD88Bb8359D694c974C9726b6201479a123212333' +const TWO_YEARS_LOCKING_MAINNET = '0xc5B7aAc761aa3C3f34A3cEB1333f6431d811d638' + +async function tvl(api) { + const tvls = await api.multiCall({ abi: 'uint256:currentTvl', calls: [ONE_YEAR_LOCKING_MAINNET, TWO_YEARS_LOCKING_MAINNET] }) + const dusdTVL = tvls.reduce((agg, i) => agg + i / 1e18, 0) + api.addCGToken('decentralized-usd', dusdTVL) +} + +async function defichainTvl(api) { + const { data: [vault] } = await get(vaultUrl) + const vaultTvl = +vault.collateralValue - +vault.loanValue + api.addCGToken('decentralized-usd', vaultTvl) +} + +module.exports = { + methodology: `We count the total value locked in DUSD from all current products (dusd staking is a vault in defichain L1, + 1 year bond and 2 year bond are smart contracts on defimetachain L2). `, + defichain_evm: { + tvl + }, defichain: { + tvl: defichainTvl + }, +} From e26e798a6b37583f306fce707a326c51dd5cece4 Mon Sep 17 00:00:00 2001 From: itsmenikolaos <152904278+itsmenikolaos@users.noreply.github.com> Date: Mon, 25 Mar 2024 23:24:47 +0400 Subject: [PATCH 0904/2004] Add events (#9542) --- projects/swych/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/swych/index.js b/projects/swych/index.js index ac371ba0949..0893d5384b0 100644 --- a/projects/swych/index.js +++ b/projects/swych/index.js @@ -14,4 +14,8 @@ module.exports = { bsc: { tvl: sumTokensExport({ owner: POOL, tokens: Object.values(tokens), }) }, + hallmarks: [ + [Math.floor(new Date('2024-02-26') / 1e3), 'Max leverage increase to 100x'], + [Math.floor(new Date('2024-03-05') / 1e3), 'Solana integration'], + ], } \ No newline at end of file From 506fd92f07ff38541712f8bf0ebf0a449063b0c2 Mon Sep 17 00:00:00 2001 From: James <157150672+0xJ3@users.noreply.github.com> Date: Tue, 26 Mar 2024 03:26:07 +0800 Subject: [PATCH 0905/2004] add echelon (#9522) --- projects/echelon/index.js | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 projects/echelon/index.js diff --git a/projects/echelon/index.js b/projects/echelon/index.js new file mode 100644 index 00000000000..fd13d9e7157 --- /dev/null +++ b/projects/echelon/index.js @@ -0,0 +1,46 @@ +const sdk = require("@defillama/sdk"); +const { getResource, } = require("../helper/chain/aptos"); +const { transformBalances } = require("../helper/portedTokens"); + +const contractAddress = "0xc6bc659f1649553c1a3fa05d9727433dc03843baac29473c817d06d39e7621ba"; + +async function getMarketAddresses() { + const lending = await getResource(contractAddress, `${contractAddress}::lending::Lending`); + return lending.market_objects.map(obj => obj.inner); +} + +async function getMarket(marketAddress) { + const market = await getResource(marketAddress, `${contractAddress}::lending::Market`); + const coinInfo = await getResource(marketAddress, `${contractAddress}::lending::CoinInfo`); + return { cash: market.total_cash, liability: market.total_liability, fee: market.total_reserve, coin: coinInfo.type_name }; +} + +module.exports = { + timetravel: false, + methodology: + "Aggregates TVL for all markets in Echelon.", + aptos: { + tvl: async () => { + const balances = {}; + + const marketAddresses = await getMarketAddresses(); + const markets = await Promise.all(marketAddresses.map(marketAddress => getMarket(marketAddress))); + markets.forEach(({ cash, coin }) => { + sdk.util.sumSingleBalance(balances, coin, cash); + }); + + return transformBalances("aptos", balances); + }, + borrowed: async () => { + const balances = {}; + + const marketAddresses = await getMarketAddresses(); + const markets = await Promise.all(marketAddresses.map(marketAddress => getMarket(marketAddress))); + markets.forEach(({ liability, coin }) => { + sdk.util.sumSingleBalance(balances, coin, liability); + }); + + return transformBalances("aptos", balances); + } + }, +}; \ No newline at end of file From 157087a221783e9b262f64bd1745d7c80e85aa65 Mon Sep 17 00:00:00 2001 From: alkinemk <71387893+alkinemk@users.noreply.github.com> Date: Mon, 25 Mar 2024 21:42:52 +0200 Subject: [PATCH 0906/2004] feat: sanctum infinity adapter (#9438) * feat: infinity adapter * feat: sanctum validator LSTs adapter * Revert "feat: sanctum validator LSTs adapter" This reverts commit 61b61646eaca6347c283c92eeb08cbe2445ea68b. * fix: revert formatting changes * fix: revert formatting changes * fix: revert formatting changes * fix: revert formatting changes --- projects/helper/utils/solana/layout.js | 2 + .../solana/layouts/sanctum-infinity-layout.js | 37 +++++++++++++++++++ projects/sanctum-infinity/index.js | 22 +++++++++++ 3 files changed, 61 insertions(+) create mode 100644 projects/helper/utils/solana/layouts/sanctum-infinity-layout.js create mode 100644 projects/sanctum-infinity/index.js diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index 422b3074649..c4ab4b8af7d 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -7,6 +7,7 @@ const { INVESTIN_FUND_DATA, } = require('./layouts/investin-layout') const { MARKET_STATE_LAYOUT_V3, OPEN_ORDERS_LAYOUT_V2 } = require('./layouts/openbook-layout') const { ReserveLayout, ReserveLayoutLarix, MintLayout, AccountLayout, TokenSwapLayout, ESOLStakePoolLayout, } = require('./layouts/mixed-layout'); const { SCN_STAKE_POOL } = require("./layouts/scnSOL"); +const { SANCTUM_INFINITY } = require("./layouts/sanctum-infinity-layout"); const parseReserve = (info) => { const pubkey = PublicKey.default @@ -53,6 +54,7 @@ const customDecoders = { scnStakePool: defaultParseLayout(SCN_STAKE_POOL), fluxbeam: defaultParseLayout(TokenSwapLayout), phoenix: parsePhoenix, + sanctumInfinity: defaultParseLayout(SANCTUM_INFINITY), } function decodeAccount(layout, accountInfo) { diff --git a/projects/helper/utils/solana/layouts/sanctum-infinity-layout.js b/projects/helper/utils/solana/layouts/sanctum-infinity-layout.js new file mode 100644 index 00000000000..42dbaeb8a33 --- /dev/null +++ b/projects/helper/utils/solana/layouts/sanctum-infinity-layout.js @@ -0,0 +1,37 @@ +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/sanctum-infinity/index.js b/projects/sanctum-infinity/index.js new file mode 100644 index 00000000000..d98a2f5b0ed --- /dev/null +++ b/projects/sanctum-infinity/index.js @@ -0,0 +1,22 @@ +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 }, +}; From e29216cbc62575960cc37ff6296e88d3d5e0b8cd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 20:51:20 +0100 Subject: [PATCH 0907/2004] Add token mappings for Oasis Network and Tether --- projects/helper/tokenMapping.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8de1deefb1d..434a9c7fb7d 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -73,7 +73,9 @@ const fixBalancesTokens = { }, sapphire: { [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, + '0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019': { coingeckoId: 'oasis-network', decimals: 18 }, '0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8': { coingeckoId: 'rosy', decimals: 18 }, + '0x9ca066f00e55b90623efe323feb2a649686538b6': { coingeckoId: 'tether', decimals: 6 }, }, // Sample Code ozone: { From f6e14cd94e4a4ed3f830cfe47095bd9db43597d7 Mon Sep 17 00:00:00 2001 From: Xenomorph <41480689+darkalienlord@users.noreply.github.com> Date: Mon, 25 Mar 2024 21:01:31 +0100 Subject: [PATCH 0908/2004] Add staked ALB to Alienbase TVL (#9543) * Add USD Coin to Alien Base, Add Area51 to Alienbase * Add staked ALB (Alienbase) to TVL --- projects/alienbase/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/alienbase/index.js b/projects/alienbase/index.js index 809f518f3f2..3f1509f395f 100644 --- a/projects/alienbase/index.js +++ b/projects/alienbase/index.js @@ -1,4 +1,5 @@ const { getUniTVL } = require('../helper/unknownTokens') +const { staking } = require('../helper/staking') const ALB = "0x1dd2d631c92b1aCdFCDd51A0F7145A50130050C4"; const FACTORY = "0x3E84D913803b02A4a7f027165E8cA42C14C0FdE7" @@ -7,6 +8,7 @@ module.exports = { misrepresentedTokens: true, methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, base: { + staking: staking("0x52eaecac2402633d98b95213d0b473e069d86590", ALB), tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }), } }; From 014d04a2263dcda3fde00b355af9ef1041972e39 Mon Sep 17 00:00:00 2001 From: nelsonmurua913 <127567224+nelsonmurua913@users.noreply.github.com> Date: Mon, 25 Mar 2024 18:53:20 -0300 Subject: [PATCH 0909/2004] feat: add new project for getting munchables TVL (#9546) --- projects/munchables/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/munchables/index.js diff --git a/projects/munchables/index.js b/projects/munchables/index.js new file mode 100644 index 00000000000..f8453007b79 --- /dev/null +++ b/projects/munchables/index.js @@ -0,0 +1,11 @@ +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + blast: { + tvl: sumTokensExport({ + owner: "0x29958E8E4d8a9899CF1a0aba5883DBc7699a5E1F", + tokens: [ADDRESSES.null, ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], + }), + }, +}; From e1a9b78c96047e148ccfaeb182c96cb0c482bc00 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 22:59:55 +0100 Subject: [PATCH 0910/2004] Add Aloe adapter (#9547) * Add Aloe adapter * Formatting * code refactor --------- Co-authored-by: Hayden Shively <17186559+haydenshively@users.noreply.github.com> --- projects/aloe/index.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/aloe/index.js diff --git a/projects/aloe/index.js b/projects/aloe/index.js new file mode 100644 index 00000000000..7a7171e76bc --- /dev/null +++ b/projects/aloe/index.js @@ -0,0 +1,37 @@ +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, }, +}; + +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, isOG4626: true }); +} + +module.exports = { + doublecounted: true, + methodology: + "Sums up deposits and borrows across Aloe's ERC4626 lending vaults to get TVL. Does not include collateral value.", +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 6520e26212a57872c6af0b9551fe7af8f754b0a1 Mon Sep 17 00:00:00 2001 From: alkinemk <71387893+alkinemk@users.noreply.github.com> Date: Tue, 26 Mar 2024 00:02:52 +0200 Subject: [PATCH 0911/2004] feat: sanctum lsts adapter (#9545) --- projects/helper/utils/solana/layout.js | 2 + .../layouts/sanctum-validators-lsts-layout.js | 43 ++++++++++++++++ projects/sanctum-validator-lsts/index.js | 49 +++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js create mode 100644 projects/sanctum-validator-lsts/index.js diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index c4ab4b8af7d..ba56dcf5c84 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -8,6 +8,7 @@ const { MARKET_STATE_LAYOUT_V3, OPEN_ORDERS_LAYOUT_V2 } = require('./layouts/ope const { ReserveLayout, ReserveLayoutLarix, MintLayout, AccountLayout, TokenSwapLayout, ESOLStakePoolLayout, } = require('./layouts/mixed-layout'); const { SCN_STAKE_POOL } = require("./layouts/scnSOL"); const { SANCTUM_INFINITY } = require("./layouts/sanctum-infinity-layout"); +const { parseSanctumLstStateList } = require("./layouts/sanctum-validators-lsts-layout"); const parseReserve = (info) => { const pubkey = PublicKey.default @@ -55,6 +56,7 @@ const customDecoders = { fluxbeam: defaultParseLayout(TokenSwapLayout), phoenix: parsePhoenix, sanctumInfinity: defaultParseLayout(SANCTUM_INFINITY), + sanctumValidatorLsts: parseSanctumLstStateList, } function decodeAccount(layout, accountInfo) { diff --git a/projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js b/projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js new file mode 100644 index 00000000000..46d85aac925 --- /dev/null +++ b/projects/helper/utils/solana/layouts/sanctum-validators-lsts-layout.js @@ -0,0 +1,43 @@ +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/sanctum-validator-lsts/index.js b/projects/sanctum-validator-lsts/index.js new file mode 100644 index 00000000000..6750b16dc16 --- /dev/null +++ b/projects/sanctum-validator-lsts/index.js @@ -0,0 +1,49 @@ +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 stake pool pools + const poolAccounts = await connection.getParsedProgramAccounts(new PublicKey("SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"), { + filters: [ + { + dataSize: 611, // number of bytes + }, + ], + }) + + // decode pool data + const poolAccountsDecoded = poolAccounts.map(poolAccount => decodeAccount("scnStakePool", poolAccount.account)) + + const poolMints = poolAccountsDecoded.map(value => value.poolMint) + + // get all lsts inside infinity + const lstStateListAccount = await connection.getAccountInfo( + new PublicKey("Gb7m4daakbVbrFLR33FKMDVMHAprRZ66CSYt4bpFwUgS") + ); + + // decode state list data + const infinityLstsAccount = decodeAccount("sanctumValidatorLsts", lstStateListAccount); + + // filter out non sanctum deployed lsts + const sanctumDeployedLstsInfinity = infinityLstsAccount.filter(item => poolMints.find(mint => mint.equals(item.mint))); + + + const totalSanctumDeployedLstsStake = poolAccountsDecoded.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 the SPL Stake Pool SDK to fetch the total supply of deposited SOL into the various Sanctum-powered stake pools", + solana: { + tvl, + }, +}; From a6f5ea53472597f7e2470fb9cf15015a683e74e2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 25 Mar 2024 23:23:54 +0100 Subject: [PATCH 0912/2004] track hercules --- projects/hercules-v2/index.js | 3 +++ projects/hercules-v3/index.js | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 projects/hercules-v2/index.js create mode 100644 projects/hercules-v3/index.js diff --git a/projects/hercules-v2/index.js b/projects/hercules-v2/index.js new file mode 100644 index 00000000000..967561e2f27 --- /dev/null +++ b/projects/hercules-v2/index.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000000..a6218fea93e --- /dev/null +++ b/projects/hercules-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + metis: { factory: "0xC5BfA92f27dF36d268422EE314a1387bB5ffB06A", fromBlock: 8836412, isAlgebra: true, }, +}) \ No newline at end of file From 484be57835f15b08a39ac625c8d3de6a126490da Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 00:06:50 +0100 Subject: [PATCH 0913/2004] track openswap --- package-lock.json | 6 +++--- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 6 ++++++ projects/izumi-iziswap/index.js | 1 + projects/openswap/index.js | 3 +++ 6 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 projects/openswap/index.js diff --git a/package-lock.json b/package-lock.json index f78928d8877..d12ac51f599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.43", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.43.tgz", - "integrity": "sha512-G4fwGOncsFtvfPa9tff9lSdLEoQEcuI5TlMFC+0w3H6Z5kokcJeiz+0w0taDTlT9/avQL2rz3aVrgy5my401FA==", + "version": "5.0.46", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.46.tgz", + "integrity": "sha512-fANQAVsb+I/Ha9TlAB3T6VdWLh+SWWvhWYSOxm+x0fD6fjYNFkt8N6N1nEa6U8DIcl0vHetfBLQll4D+o3Rt5A==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 5dffef53931..ab0a0f53de4 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -229,6 +229,7 @@ "ronin", "rpg", "rsk", + "rss3_vsl", "rvn", "sapphire", "scroll", diff --git a/projects/helper/env.js b/projects/helper/env.js index fe0305db72e..12d28458dec 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -23,6 +23,7 @@ const DEFAULTS = { ZKLINK_RPC: "https://rpc.zklink.io", KINTO_RPC: "https://rpc.kinto-rpc.com", DEFICHAIN_EVM_RPC: "https://dmc.mydefichain.com/mainnet,https://dmc01.mydefichain.com/mainnet", + RSS3_VSL_RPC: "https://rpc.rss3.io", } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 434a9c7fb7d..aa871016fb7 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -71,6 +71,12 @@ const fixBalancesTokens = { '0x52a6c53869ce09a731cd772f245b97a4401d3348': { coingeckoId: 'ethereum', decimals: 18 }, '0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2': { coingeckoId: 'usd-coin', decimals: 6 }, }, + merlin: { + '0xB880fd278198bd590252621d4CD071b1842E9Bcd': { coingeckoId: 'bitcoin', decimals: 18 }, + }, + rss3_vsl: { + '0xe27d019909738d98ab7f850c05ee07806c30c71d': { coingeckoId: 'rss3', decimals: 18 }, + }, sapphire: { [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, '0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019': { coingeckoId: 'oasis-network', decimals: 18 }, diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index c7475290ef4..58d54f0c188 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -38,6 +38,7 @@ const blacklistedTokens = [ '0x1382628e018010035999A1FF330447a0751aa84f', ADDRESSES.bsc.iUSD, // mantle iUSD '0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD + '0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D', // merlin iUSD ] Object.keys(poolHelpers).forEach(chain => { diff --git a/projects/openswap/index.js b/projects/openswap/index.js new file mode 100644 index 00000000000..d54feebfbdf --- /dev/null +++ b/projects/openswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport('rss3_vsl', '0x2F6d9dac92e197bE02aC2DE8BBD7E02837E2dB8d') \ No newline at end of file From 18759de2d19e960fc4fecc9610d16a4d66093452 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 00:48:10 +0100 Subject: [PATCH 0914/2004] bugfix --- projects/debtdao/index.js | 1 + projects/ester/index.js | 5 -- projects/handlefi-fxpreps/index.js | 58 +----------------- projects/helper/chain/starknet.js | 2 +- projects/lightning-network/index.js | 4 +- projects/quicksilver/index.js | 5 +- projects/reserve/index.js | 6 +- projects/solo/abi.json | 3 - projects/solo/index.js | 93 ++++++----------------------- projects/tinlake/index.js | 8 ++- 10 files changed, 37 insertions(+), 148 deletions(-) delete mode 100644 projects/solo/abi.json diff --git a/projects/debtdao/index.js b/projects/debtdao/index.js index 6ff48020f39..0e8724ea6d7 100644 --- a/projects/debtdao/index.js +++ b/projects/debtdao/index.js @@ -87,6 +87,7 @@ Object.keys(config).forEach(chain => { // api.add(i.token, i.interestRepaid * -1) }) })) + return api.getBalances() } } }) \ No newline at end of file diff --git a/projects/ester/index.js b/projects/ester/index.js index 29ee29cda56..14862936f79 100644 --- a/projects/ester/index.js +++ b/projects/ester/index.js @@ -8,10 +8,5 @@ module.exports = mergeExports([ masterchef: '0xA6151b608f49Feb960e951F1C87F4C766850de31', nativeToken: '0x181f3f22c9a751e2ce673498a03e1fdfc0ebbfb6', poolInfoABI: abi.poolInfo - }), - masterchefExports({ - chain: 'fantom', - masterchef: '0x78e9D247541ff7c365b50D2eE0defdd622016498', - nativeToken: '0x181f3f22c9a751e2ce673498a03e1fdfc0ebbfb6', }) ]) \ No newline at end of file diff --git a/projects/handlefi-fxpreps/index.js b/projects/handlefi-fxpreps/index.js index cc5f8afcbaa..fc5bb9d7bde 100644 --- a/projects/handlefi-fxpreps/index.js +++ b/projects/handlefi-fxpreps/index.js @@ -1,27 +1,10 @@ const { gmxExports } = require('../helper/gmx') const perpsVault = "0x1785e8491e7e9d771b2A6E9E389c25265F06326A" -const chain = 'arbitrum' -const sdk = require('@defillama/sdk') -const { getDecimals } = require('../helper/utils') - -const oracles = { - "fxAUD": "0x9854e9a850e7c354c1de177ea953a6b1fba8fc22", - "fxPHP": "0xff82aaf635645fd0bcc7b619c3f28004cdb58574", - // "fxUSD": "0xd558Dd65583F7118F9ED921e8b94Ae3A295C83Bb", - "fxEUR": "0xa14d53bc1f1c0f31b4aa3bd109344e5009051a84", - "fxKRW": "0x85bb02e0ae286600d1c68bb6ce22cc998d411916", - "fxCNY": "0xcc3370bde6afe51e1205a5038947b9836371eccb", - "fxCHF": "0xe32accc8c4ec03f6e75bd3621bfc9fbb234e1fc3", - "fxCAD": "0xf6da27749484843c4f02f5ad1378cee723dd61d4", - "fxGBP": "0x9c4424fd84c6661f97d8d6b3fc3c1aac2bedd137", - "fxJPY": "0x3dd6e51cb9cae717d5a8778cf79a04029f9cfdf8", - "fxSGD": "0xf0d38324d1f86a176ac727a4b0c43c9f9d9c5eb1", -} const fxTokens = { "fxAUD": "0x7E141940932E3D13bfa54B224cb4a16510519308", "fxPHP": "0x3d147cD9aC957B2a5F968dE9d1c6B9d0872286a0", - // "fxUSD": "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", + "fxUSD": "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", "fxEUR": "0x116172B2482c5dC3E6f445C16Ac13367aC3FCd35", "fxKRW": "0xF4E8BA79d058fFf263Fd043Ef50e1010c1BdF991", "fxCNY": "0x2C29daAce6Aa05e3b65743EFd61f8A2C448302a3", @@ -35,43 +18,6 @@ const fxTokens = { module.exports = { misrepresentedTokens: true, arbitrum: { - tvl: async (api) => { - const fxConfig = [] - const tokens = [] - - Object.entries(fxTokens).forEach(([key, token]) => { - tokens.push(token) - if (!oracles[key]) throw new Error('Missing oracle') - const label = `${chain}:${token.toLowerCase()}` - fxConfig.push({ token, label, oracle: oracles[key] }) - }) - const balances = await(gmxExports({ vault: perpsVault, })(api)) - const block = api.chain - const calls = fxConfig.map(i => ({ target: i.oracle })) - const { output: price } = await sdk.api.abi.multiCall({ - abi: abis.latestAnswer, calls, chain, block, - }) - const { output: decimals } = await sdk.api.abi.multiCall({ - abi: 'erc20:decimals', calls, chain, block, - }) - const tokenDecimals = await getDecimals(chain, tokens) - const fxUSD = 'arbitrum:0x8616e8ea83f048ab9a5ec513c9412dd2993bce3f' - if (balances[fxUSD]) { - sdk.util.sumSingleBalance(balances, 'tether', balances[fxUSD]/1e18) - delete balances[fxUSD] - } - - fxConfig.forEach(({ label, token }, i) => { - const bal = balances[label] - if (!bal) return; - delete balances[label] - sdk.util.sumSingleBalance(balances, 'tether', price[i].output * bal / (10 ** (+decimals[i].output + +tokenDecimals[token] ))) - }) - return balances - } + tvl: gmxExports({ vault: perpsVault,blacklistedTokens: Object.values(fxTokens) }) }, -}; - -const abis = { - latestAnswer: "int256:latestAnswer" } \ No newline at end of file diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index 436c5cb1221..32fd3637706 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -148,7 +148,7 @@ const defaultAbis = { } function dexExport({ factory, abis = {}, fetchBalances = false }) { - return () => getUniTVL({ factory, abis: { ...defaultAbis, ...abis }, fetchBalances })(undefined, undefined, undefined, { api, chain: 'starknet' }) + return () => getUniTVL({ factory, abis: { ...defaultAbis, ...abis }, fetchBalances })(api, undefined, undefined, { api, chain: 'starknet' }) } module.exports = { diff --git a/projects/lightning-network/index.js b/projects/lightning-network/index.js index c365cddb62a..6aeb3aa7d32 100644 --- a/projects/lightning-network/index.js +++ b/projects/lightning-network/index.js @@ -28,11 +28,11 @@ async function getFromTxStat() { } async function getChannelCapacity(timestamp) { - const day = new Date(timestamp * 1000).toISOString().slice(0,10) + const day = new Date(timestamp * 1000).toISOString().slice(0, 10) return dayHistory[day] } -async function tvl(timestamp) { +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 diff --git a/projects/quicksilver/index.js b/projects/quicksilver/index.js index 107cae4b627..9fe89b8c48b 100644 --- a/projects/quicksilver/index.js +++ b/projects/quicksilver/index.js @@ -3,6 +3,7 @@ const { get } = require("../helper/http"); const { endPoints } = require("../helper/chain/cosmos"); const coinGeckoIds = { + adydx: "dydx-chain", uatom: "cosmos", uosmo: "osmosis", usomm: "sommelier", @@ -25,7 +26,9 @@ async function tvl() { const balance = supply.find((coin) => { return coin.denom === zone.local_denom; }); - const amount = balance.amount / 1e6; + let amount = balance.amount / 1e6; + if (zone.base_denom === "adydx") + amount = balance.amount / 1e18 const id = coinGeckoIds[zone.base_denom] if (!id) { diff --git a/projects/reserve/index.js b/projects/reserve/index.js index bbb0950e95f..80ed41cfe71 100644 --- a/projects/reserve/index.js +++ b/projects/reserve/index.js @@ -91,7 +91,7 @@ async function tvl(api) { }); const aTokenWrappers = allTokens.filter((_, i) => - allNames[i].startsWith("Static Aave") + allNames[i].startsWith("Static Aave") && (_.toLowerCase() !== '0x093cB4f405924a0C468b43209d5E466F1dd0aC7d'.toLowerCase() || chain !== 'ethereum') ); const cUsdcV3Wrappers = allTokens.filter((_, i) => @@ -152,6 +152,10 @@ async function tvl(api) { ...cUsdcV3Wrappers, ...morphoWrappers ); + if (chain === "ethereum") { + blacklistedTokens.push('0x093cB4f405924a0C468b43209d5E466F1dd0aC7d'); + ownerTokens.push([['0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c'], '0x093cB4f405924a0C468b43209d5E466F1dd0aC7d']); + } cTokens.forEach((v, i) => ownerTokens.push([[v], cTokenWrappers[i]])); aTokens.forEach((v, i) => ownerTokens.push([[v], aTokenWrappers[i]])); morphoUnderlyingTokens.forEach((v, i) => diff --git a/projects/solo/abi.json b/projects/solo/abi.json deleted file mode 100644 index eb81522c676..00000000000 --- a/projects/solo/abi.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "getGlobalStatistics": "function getGlobalStatistics() view returns (uint256, uint256)" -} \ No newline at end of file diff --git a/projects/solo/index.js b/projects/solo/index.js index 586f6db2378..62744a96d50 100644 --- a/projects/solo/index.js +++ b/projects/solo/index.js @@ -1,77 +1,18 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); -const BigNumber = require("bignumber.js") -const abi = require('./abi.json'); - -const CHAIN_HECO = "heco" -const CHAIN_BSC = "bsc" -const CHAIN_POLYGON = "polygon" -const CHAIN_OEC = "okexchain" - -const VAULT_HECO_1 = "0x1cF73836aE625005897a1aF831479237B6d1e4D2" -const VAULT_HECO_2 = "0xE1f39a72a1D012315d581c4F35bb40e24196DAc8" -const VAULT_BSC = "0x7033A512639119C759A51b250BfA461AE100894b" -const VAULT_POLYGON = "0xE95876787B055f1b9E4cfd5d3e32BDe302BF789d" -const VAULT_OEC = "0xa8AF3199aCE72E47c1DEb56E58BEA1CD41C37c22" - -const USDT_HECO = ADDRESSES.heco.USDT -const USDT_BSC = ADDRESSES.bsc.USDT -const USDT_POLYGON = ADDRESSES.polygon.USDT -const USDT_OEC = ADDRESSES.okexchain.USDT - -const tvlHeco = async (timestamp, blockETH, chainBlocks) => { - let block = chainBlocks[CHAIN_HECO]; - if (block === undefined) { - block = (await sdk.api.util.lookupBlock(timestamp, { chain: CHAIN_HECO })).block; - } - const statistics1 = (await sdk.api.abi.call({ target: VAULT_HECO_1, abi: abi["getGlobalStatistics"], block: block, chain: CHAIN_HECO })).output; - const statistics2 = (await sdk.api.abi.call({ target: VAULT_HECO_2, abi: abi["getGlobalStatistics"], block: block, chain: CHAIN_HECO })).output; - const balances = {} - balances[CHAIN_HECO + ":" + USDT_HECO] = BigNumber(statistics1[0]).plus(BigNumber(statistics2[0])); - return balances; -}; - -const tvlBsc = async (timestamp, blockETH, chainBlocks) => { - let block = chainBlocks[CHAIN_BSC]; - if (block === undefined) { - block = (await sdk.api.util.lookupBlock(timestamp, { chain: CHAIN_BSC })).block; - } - const statistics = (await sdk.api.abi.call({ target: VAULT_BSC, abi: abi["getGlobalStatistics"], block: block, chain: CHAIN_BSC })).output; - const balances = {} - balances[CHAIN_BSC + ":" + USDT_BSC] = statistics[0] - return balances; -}; - -const tvlPolygon = async (timestamp, blockETH, chainBlocks) => { - let block = chainBlocks[CHAIN_POLYGON]; - if (block === undefined) { - block = (await sdk.api.util.lookupBlock(timestamp, { chain: CHAIN_POLYGON })).block; - } - const statistics = (await sdk.api.abi.call({ target: VAULT_POLYGON, abi: abi["getGlobalStatistics"], block: block, chain: CHAIN_POLYGON })).output; - const balances = {} - balances[CHAIN_POLYGON + ":" + USDT_POLYGON] = statistics[0] - return balances; -}; - -const tvlOec = async (timestamp, blockETH, chainBlocks) => { - let block = chainBlocks[CHAIN_OEC]; - const statistics = (await sdk.api.abi.call({ target: VAULT_OEC, abi: abi["getGlobalStatistics"], block: block, chain: CHAIN_OEC })).output; - const balances = {} - balances[CHAIN_OEC + ":" + USDT_OEC] = statistics[0] - return balances; -}; - -module.exports = { - heco: { - tvl: tvlHeco - }, - bsc: { - tvl: tvlBsc - }, - polygon: { - tvl: tvlPolygon - }, - okexchain: { - tvl: tvlOec +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() } -}; + } +}) diff --git a/projects/tinlake/index.js b/projects/tinlake/index.js index 7f4118857eb..9cc5dacb42b 100644 --- a/projects/tinlake/index.js +++ b/projects/tinlake/index.js @@ -18,11 +18,12 @@ query GET_TOTAL_TOKEN_TVL { const dai = ADDRESSES.ethereum.DAI async function getData(api) { - return graphQuery(subgraphUrl, graphTotalTokenTVLQuery, { api, }) + return graphQuery(subgraphUrl, graphTotalTokenTVLQuery, {}, { api, }) } -async function borrowed(timestamp, ethBlock, _, {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 => { @@ -34,8 +35,9 @@ async function borrowed(timestamp, ethBlock, _, {api }) { } } -async function tvl(timestamp, ethBlock, _, {api }) { +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 => { From 4324e6d73e975f78388f76bf214ce1cc002efaf0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 00:52:15 +0100 Subject: [PATCH 0915/2004] bugfix --- projects/solidly-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/solidly-v3/index.js b/projects/solidly-v3/index.js index c8d9de38bf6..58bc1c3f84e 100644 --- a/projects/solidly-v3/index.js +++ b/projects/solidly-v3/index.js @@ -6,7 +6,7 @@ module.exports = uniV3Export({ optimism: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 115235065, }, base: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 9672720, }, arbitrum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 173576189, }, - fantom: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 73057898, }, + fantom: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 73057898, permitFailure: true, }, }); module.exports.hallmarks=[ [1693699200, "Solidly V3 launch"], From 000c270039861e181989da823ede3cc55b5590b8 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 26 Mar 2024 01:43:26 +0000 Subject: [PATCH 0916/2004] add htx --- projects/helper/cex.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index facae40c461..146b5ae407d 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -105,6 +105,7 @@ const defaultTokens = { // 'TFptbWaARrWTX5Yvy3gNG5Lm8BmhPx82Bt', //wbt ADDRESSES.tron.TUSD, 'TThzxNRLrW2Brp9DcTQU8i4Wd9udCWEdZ3', // stUSDT + 'TUPM7K8REVzD2UdV4R5fe5M8XbnR2DdoJ6', // HTX ], polygon: [ nullAddress, From bb7e87bb41f1ee516f070c2a4e4e99b204039b50 Mon Sep 17 00:00:00 2001 From: samuerio <853713419@qq.com> Date: Tue, 26 Mar 2024 17:34:46 +0800 Subject: [PATCH 0917/2004] Update STFIL tvl --- projects/stfil/index.js | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/projects/stfil/index.js b/projects/stfil/index.js index 3733f721805..d2a1c4f8870 100644 --- a/projects/stfil/index.js +++ b/projects/stfil/index.js @@ -1,33 +1,17 @@ const ADDRESSES = require('../helper/coreAssets.json') -const {sumTokens2} = require('../helper/unwrapLPs'); const {get} = require('../helper/http'); +const BN = require("bn.js"); -const poolAddr = '0xC8E4EF1148D11F8C557f677eE3C73901CD796Bf6' // pool address -const tokens = [ - ADDRESSES.null, // FIL -] - -const getActiveMinersFromRPC = async () => { - const resp = await get('https://api.stfil.io/v1/node?delegate=1') - return resp.data.map(({node}) => { - let bytes = Buffer.alloc(20); - bytes.writeUint8(0xff, 0); - bytes.writeBigUint64BE(BigInt(node), 12); - return '0x' + bytes.toString('hex') - }); -} module.exports = { filecoin: { tvl: async (_, _1, _2, {api}) => { - let balances = {}; - await sumTokens2({balances, owner: poolAddr, tokens, api, }); - - let minerAddrs = await getActiveMinersFromRPC(); - await sumTokens2({balances, owners: minerAddrs, tokens, api, }); + const {data: {allMinerValue, poolStFilBalance}} = await get("https://api.stfil.io/v1/info"); + const allMinerValueBN = new BN(allMinerValue); + const poolStFilBalanceBN = new BN(poolStFilBalance); - return balances; + return api.add(ADDRESSES.null, allMinerValueBN.add(poolStFilBalanceBN)); } } } From 23e03f142830e25a1ace5838821b192074690b28 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 13:02:39 +0100 Subject: [PATCH 0918/2004] fix glyph --- projects/GlyphExchange/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/GlyphExchange/index.js b/projects/GlyphExchange/index.js index 9bac41b2d48..67d3c211956 100644 --- a/projects/GlyphExchange/index.js +++ b/projects/GlyphExchange/index.js @@ -1,3 +1,6 @@ const { uniTvlExport } = require('../helper/unknownTokens') +const { staking } = require('../helper/staking') +const ADDRESSES = require('../helper/coreAssets.json') -module.exports = uniTvlExport('core', '0x3e723c7b6188e8ef638db9685af45c7cb66f77b9') \ No newline at end of file +module.exports = uniTvlExport('core', '0x3e723c7b6188e8ef638db9685af45c7cb66f77b9') +module.exports.core.staking = staking("0x6bf16B2645b13db386ecE6038e1dEF76d95696fc", [ADDRESSES.null, "0xb3A8F0f0da9ffC65318aA39E55079796093029AD"]) \ No newline at end of file From edc0a57f60ba1a71e3a96ddb2b058e227eb94ab2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 13:10:51 +0100 Subject: [PATCH 0919/2004] fix glyph --- projects/GlyphExchange/index.js | 4 ++-- projects/helper/tokenMapping.js | 3 +++ projects/helper/utils.js | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/GlyphExchange/index.js b/projects/GlyphExchange/index.js index 67d3c211956..d2814fe62a3 100644 --- a/projects/GlyphExchange/index.js +++ b/projects/GlyphExchange/index.js @@ -1,6 +1,6 @@ -const { uniTvlExport } = require('../helper/unknownTokens') +const { uniTvlExport, sumTokensExport, } = require('../helper/unknownTokens') const { staking } = require('../helper/staking') const ADDRESSES = require('../helper/coreAssets.json') module.exports = uniTvlExport('core', '0x3e723c7b6188e8ef638db9685af45c7cb66f77b9') -module.exports.core.staking = staking("0x6bf16B2645b13db386ecE6038e1dEF76d95696fc", [ADDRESSES.null, "0xb3A8F0f0da9ffC65318aA39E55079796093029AD"]) \ No newline at end of file +module.exports.core.staking = sumTokensExport({ owner: "0x6bf16B2645b13db386ecE6038e1dEF76d95696fc", tokens: [ADDRESSES.null, "0xb3A8F0f0da9ffC65318aA39E55079796093029AD"], lps: ['0x40320a9b3e8458ce3dd3e0ad79fc5208f00510a3'], useDefaultCoreAssets: true, }) \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index aa871016fb7..42b1f084d75 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -77,6 +77,9 @@ const fixBalancesTokens = { rss3_vsl: { '0xe27d019909738d98ab7f850c05ee07806c30c71d': { coingeckoId: 'rss3', decimals: 18 }, }, + core: { + '0x191e94fa59739e188dce837f7f6978d84727ad01': { coingeckoId: 'coredaoorg', decimals: 18 }, + }, sapphire: { [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, '0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019': { coingeckoId: 'oasis-network', decimals: 18 }, diff --git a/projects/helper/utils.js b/projects/helper/utils.js index c4f41380ec4..aed7725d096 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -78,6 +78,7 @@ function isLP(symbol, token, chain) { 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 From 874783cb1124312dcc95e160f77693c6214a02c1 Mon Sep 17 00:00:00 2001 From: Blocto Swap <164959860+bloctoswap@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:13:04 +0300 Subject: [PATCH 0920/2004] add bloctoswap sdk adapter (#9548) --- projects/bloctoswap/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/bloctoswap/index.js diff --git a/projects/bloctoswap/index.js b/projects/bloctoswap/index.js new file mode 100644 index 00000000000..863c8f4f574 --- /dev/null +++ b/projects/bloctoswap/index.js @@ -0,0 +1,20 @@ +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 }) + }, +}; + From d445542b78fa06e81322b72f171a12bd38a32ce3 Mon Sep 17 00:00:00 2001 From: Eric Fan Date: Tue, 26 Mar 2024 20:18:13 +0800 Subject: [PATCH 0921/2004] blast only for synfutures v3 (#9549) --- projects/synfutures-v3/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/synfutures-v3/index.js b/projects/synfutures-v3/index.js index 64f7cdf933f..8137beac85a 100644 --- a/projects/synfutures-v3/index.js +++ b/projects/synfutures-v3/index.js @@ -7,9 +7,6 @@ const { ethers } = require('ethers'); const config = { blast: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], fromBlock: 193856 }, - arbitrum: { gate: '0x6A372dBc1968f4a07cf2ce352f410962A972c257', tokens: [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH], fromBlock: 167216325 }, - // linea: { gate: '0xddEb8BAf1CA8199B127B446fB85E6E93F66A3372', tokens: [], fromBlock: 0 }, - // scroll: { gate: '0xB85738DC2f898737d7D9d0346D59BB0ae82af981', tokens: [], fromBlock: 0 }, } Object.keys(config).forEach(chain => { From f7f5d925c6b48ef1c2477af2a2e1820e0b75a9fd Mon Sep 17 00:00:00 2001 From: Dario Date: Tue, 26 Mar 2024 13:22:16 +0100 Subject: [PATCH 0922/2004] Update Brickken - Add Avalanche (#9557) * add bsc to brickken * add avalanche * fix chain name --- projects/brickken/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/brickken/index.js b/projects/brickken/index.js index 06ef14fd461..6c441a03b91 100644 --- a/projects/brickken/index.js +++ b/projects/brickken/index.js @@ -27,7 +27,8 @@ module.exports = { const config = { ethereum: { factory: '0x91af681C85Ca98Efc5D69C1B62E6F435030969Db', }, bsc: { factory: '0xCe4529Fe88df480BD777d3e32dfD7032e6C685ff', }, - base: { factory: '0x278D7bdc2451B0Fa4087A68ce084a86cB91D4d83', } + base: { factory: '0x278D7bdc2451B0Fa4087A68ce084a86cB91D4d83', }, + avax: { factory: '0xc6c230FA8F40022dE997727436Fae01caAbcDe61', } } Object.keys(config).forEach(chain => { From 4949a591aec66786bac2ff814bb4dfbb3a29c9c6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:38:50 +0100 Subject: [PATCH 0923/2004] Add Project earn-powercity-io (#9558) * Added Project earn-powercity-io * minor fix --------- Co-authored-by: 0xtubanator Co-authored-by: 0xtubanator <102699867+0xtubanator@users.noreply.github.com> --- projects/earn-powercity-io/index.js | 27 +++++++++++++++++++++++++++ projects/helper/coreAssets.json | 1 + 2 files changed, 28 insertions(+) create mode 100644 projects/earn-powercity-io/index.js diff --git a/projects/earn-powercity-io/index.js b/projects/earn-powercity-io/index.js new file mode 100644 index 00000000000..0317a510d8b --- /dev/null +++ b/projects/earn-powercity-io/index.js @@ -0,0 +1,27 @@ +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 = "0x95B303987A60C71504D99Aa1b13B4DA07b0790ab"; + +// 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: 1708418955, + 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/helper/coreAssets.json b/projects/helper/coreAssets.json index 8d82c6905bb..082052c2087 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1386,6 +1386,7 @@ }, "pulse": { "WPLS": "0xa1077a294dde1b09bb078844df40758a5d0f9a27", + "PLSX": "0x95B303987A60C71504D99Aa1b13B4DA07b0790ab", "ETH": "0x02dcdd04e3f455d838cd1249292c58f3b79e3c3c", "USDC": "0x15D38573d2feeb82e7ad5187aB8c1D52810B1f07", "USDT": "0x0Cb6F5a34ad42ec934882A05265A7d5F59b51A2f", From e5d01e17fff526d1b7e1a2195fc39065c5f40c3f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:47:32 +0100 Subject: [PATCH 0924/2004] minor fix --- projects/3xcalibur/index.js | 3 +-- projects/DeNet/index.js | 4 +--- projects/Fountain-Protocol/index.js | 3 +-- projects/GoSwap/index.js | 3 +-- projects/MineFi/index.js | 3 +-- projects/SharpeLabs/index.js | 4 +--- projects/VersaGames/index.js | 3 +-- projects/Zebra/index.js | 3 +-- projects/aave/index.js | 3 +-- projects/aavegotchi/index.js | 3 +-- projects/acryptos/index.js | 3 +-- projects/aftermath-fi-afsui/index.js | 4 +--- projects/agile/index.js | 3 +-- projects/algem/index.js | 4 +--- projects/apeswap-lending/index.js | 4 +--- projects/astriddao/index.js | 3 +-- projects/atlantisloans/index.js | 4 +--- projects/atlendis/index.js | 4 +--- projects/atomic/index.js | 3 +-- projects/aurigami.js | 3 +-- projects/axl-inu/index.js | 4 +--- projects/babyswap/index.js | 3 +-- projects/backbonelabs/index.js | 3 +-- projects/bastion/index.js | 3 +-- projects/benqi/index.js | 4 +--- projects/biconomy/index.js | 3 +-- projects/black-whale/index.js | 3 +-- projects/blackpanther/index.js | 3 +-- projects/blizzfinance/index.js | 3 +-- projects/bluebit/index.js | 4 +--- projects/blur/index.js | 4 +--- projects/bodhfinance/index.js | 4 +--- projects/bow/index.js | 3 +-- projects/bracketX/index.js | 4 +--- projects/capital-dao/index.js | 3 +-- projects/celery/index.js | 3 +-- projects/chainflip/index.js | 4 +--- projects/champagne-swap.js | 3 +-- projects/compound-onchain/index.js | 3 +-- projects/compound-v1/index.js | 3 +-- projects/convergence/index.js | 3 +-- projects/counterstake/index.js | 3 +-- projects/cozy/index.js | 4 +--- projects/cybertime/index.js | 3 +-- projects/damm-finance/index.js | 4 +--- projects/dddx.js | 4 +--- projects/defifranc/index.js | 3 +-- projects/dexpad/apiCache.js | 3 +-- projects/dexpad/index.js | 3 +-- projects/drip/index.js | 4 +--- projects/dyson-money/index.js | 3 +-- projects/eris-protocol/index.js | 3 +-- projects/ethichub/index.js | 4 +--- projects/fei/index.js | 3 +-- projects/flexdao/index.js | 4 +--- projects/fortress-lending/index.js | 3 +-- projects/fountain.js | 3 +-- projects/fujidao/index.js | 3 +-- projects/fuzion-bonds/index.js | 3 +-- projects/fuzion-ignition/index.js | 3 +-- projects/fuzion-plasma/index.js | 3 +-- projects/gale/index.js | 4 +--- projects/geist/index.js | 3 +-- projects/geode/index.js | 6 ++---- projects/glide-finance/index.js | 3 +-- projects/goat-protocol/index.js | 3 +-- projects/gogocoin/index.js | 3 +-- projects/goldfinch/index.js | 3 +-- projects/gooddollar/index.js | 3 +-- projects/hectagon/index.js | 3 +-- projects/helper/compound.js | 4 +--- projects/hermes/index.js | 4 +--- projects/hodltree/index.js | 4 +--- projects/homecoin/index.js | 3 +-- projects/horizon/index.js | 4 +--- projects/hurricaneswap.js | 4 +--- projects/ideamarket/index.js | 3 +-- projects/ironfinance/index.js | 5 ++--- projects/joystickclub/index.js | 3 +-- projects/juice-finance/index.js | 3 +-- projects/juicebox-v1/index.js | 3 +-- projects/juicebox-v2/index.js | 3 +-- projects/juicebox-v3/index.js | 3 +-- projects/justSwap/index.js | 3 +-- projects/kivach/index.js | 3 +-- projects/klap/index.js | 3 +-- projects/klayportal/index.js | 3 +-- projects/klend/index.js | 4 +--- projects/kleros/index.js | 3 +-- projects/kyotoswap/index.js | 4 +--- projects/leNFT/index.js | 3 +-- projects/lendflare/index.js | 3 +-- projects/letsfil/index.js | 3 +-- projects/linear/index.js | 3 +-- projects/liquidswap/index.js | 3 +-- projects/llamalend/index.js | 3 +-- projects/lsdFil/index.js | 4 +--- projects/luaswap/index.js | 3 +-- projects/luchadores/index.js | 3 +-- projects/luckychip/index.js | 3 +-- projects/lusd-chickenbonds/index.js | 4 +--- projects/maker-rwa/index.js | 3 +-- projects/maker/index.js | 3 +-- projects/marginly/index.js | 3 +-- projects/market.xyz/index.js | 3 +-- projects/marspoolin/index.js | 3 +-- projects/metastreet/index.js | 4 +--- projects/metastrike/index.js | 3 +-- projects/minmax-finance/index.js | 3 +-- projects/mm-finance-polygon/index.js | 3 +-- projects/mm-finance/index.js | 3 +-- projects/monster/index.js | 4 +--- projects/morpho-aave/index.js | 3 +-- projects/morpho/index.js | 3 +-- projects/neku/index.js | 4 +--- projects/nestfi/index.js | 4 +--- projects/nomad/index.js | 4 +--- projects/olafinance/index.js | 4 +--- projects/opulous/index.js | 3 +-- projects/orbitalswap/index.js | 4 +--- projects/ostable/index.js | 3 +-- projects/oswap-token/index.js | 3 +-- projects/oswap/index.js | 3 +-- projects/ottopia/index.js | 3 +-- projects/paintswap/index.js | 4 +--- projects/phiat/index.js | 3 +-- projects/phuture/index.js | 3 +-- projects/pirex/index.js | 3 +-- projects/planet-blue/index.js | 3 +-- projects/polaris-finance/index.js | 3 +-- projects/polkaex/index.js | 3 +-- projects/ponyswap/index.js | 4 +--- projects/printerfinancial/index.js | 3 +-- projects/prophet/index.js | 3 +-- projects/pythagorean/index.js | 3 +-- projects/qubit/index.js | 4 +--- projects/quickswap/index.js | 3 +-- projects/redacted/index.js | 3 +-- projects/ren/index.js | 3 +-- projects/sandclock/index.js | 3 +-- projects/scion-finance/index.js | 4 +--- projects/scream/index.js | 4 +--- projects/sculptor-finance/index.js | 3 +-- projects/sense/index.js | 3 +-- projects/sheesha.js | 3 +-- projects/shinobi/index.js | 3 +-- projects/sirius-finance/index.js | 3 +-- projects/skcs/index.js | 4 +--- projects/sommelier/index.js | 4 +--- projects/specfinance.js | 3 +-- projects/spiritswap/index.js | 4 +--- projects/stCelo/index.js | 4 +--- projects/stafi/index.js | 3 +-- projects/stake-ly/index.js | 4 +--- projects/stakedotlink/index.js | 4 +--- projects/standard-tech/index.js | 3 +-- projects/sushiswap-trident/index.js | 3 +-- projects/thorusfi/index.js | 3 +-- projects/tomofinance.js | 3 +-- projects/toros/index.js | 3 +-- projects/toucan-protocol/index.js | 3 +-- projects/traderjoe-lend/index.js | 4 +--- projects/twtstake/index.js | 4 +--- projects/unbk/index.js | 4 +--- projects/unicrypt/index.js | 3 +-- projects/uno-farm/index.js | 3 +-- projects/uplift/index.js | 4 +--- projects/uwulend/index.js | 3 +-- projects/valas/index.js | 3 +-- projects/valerian/index.js | 3 +-- projects/versa/index.js | 3 +-- projects/vesta/index.js | 3 +-- projects/volo-vsui/index.js | 4 +--- projects/waterloan/index.js | 3 +-- projects/weave/index.js | 4 +--- projects/welnance/index.js | 4 +--- projects/wing.js | 3 +-- projects/wingswap/index.js | 3 +-- projects/yamato/index.js | 3 +-- projects/yiedl-vaults/index.js | 3 +-- projects/yumiswap/index.js | 3 +-- projects/zyxswap/index.js | 3 +-- 182 files changed, 184 insertions(+), 422 deletions(-) diff --git a/projects/3xcalibur/index.js b/projects/3xcalibur/index.js index f195d92a9dc..cd5a6b75924 100644 --- a/projects/3xcalibur/index.js +++ b/projects/3xcalibur/index.js @@ -2,8 +2,7 @@ const { uniTvlExport } = require("../helper/calculateUniTvl.js"); module.exports = { misrepresentedTokens: true, - timetravel: true, - start: 1667689200, + start: 1667689200, arbitrum: { tvl: uniTvlExport("0xD158bd9E8b6efd3ca76830B66715Aa2b7Bad2218", "arbitrum", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: true, }), }, diff --git a/projects/DeNet/index.js b/projects/DeNet/index.js index a906c8da65e..e62bff66ac6 100644 --- a/projects/DeNet/index.js +++ b/projects/DeNet/index.js @@ -9,9 +9,7 @@ const owners = [ module.exports = { start: 1691761595, // Friday, 11-Aug-23 13:46:35 UTC methodology: "Total amount of DE tokens used for DeNet storage payments", - timetravel: true, - misrepresentedTokens: false, - + polygon: { tvl: () => ({}), staking: sumTokensExport({ diff --git a/projects/Fountain-Protocol/index.js b/projects/Fountain-Protocol/index.js index 12b2eb0231f..391f1c2ba92 100644 --- a/projects/Fountain-Protocol/index.js +++ b/projects/Fountain-Protocol/index.js @@ -15,8 +15,7 @@ const stable_lending = usdCompoundExports(unitroller_usd_oasis, "oasis", ftoken const lpt_lending = usdCompoundExports(unitroller_lpt_oasis, "oasis", ftoken_lpt_oasis) module.exports={ - timetravel: true, - oasis:{ + oasis:{ tvl: sdk.util.sumChainTvls([classic_lending.tvl, stable_lending.tvl, lpt_lending.tvl]), borrowed: sdk.util.sumChainTvls([classic_lending.borrowed, stable_lending.borrowed, lpt_lending.borrowed]) }, diff --git a/projects/GoSwap/index.js b/projects/GoSwap/index.js index cca7970d461..5961105e58a 100644 --- a/projects/GoSwap/index.js +++ b/projects/GoSwap/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ - timetravel: true, - misrepresentedTokens: true, + 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', chain: 'gochain', useDefaultCoreAssets: true }), diff --git a/projects/MineFi/index.js b/projects/MineFi/index.js index 3fd019b40d5..fe0fb492c44 100644 --- a/projects/MineFi/index.js +++ b/projects/MineFi/index.js @@ -16,8 +16,7 @@ async function tvl(api) { module.exports = { timetravel: false, - misrepresentedTokens: false, - methodology: 'counts the number of pledge filecoins in the minefi contract', + methodology: 'counts the number of pledge filecoins in the minefi contract', filecoin: { tvl } diff --git a/projects/SharpeLabs/index.js b/projects/SharpeLabs/index.js index 3651cf4babb..696bc148859 100644 --- a/projects/SharpeLabs/index.js +++ b/projects/SharpeLabs/index.js @@ -18,9 +18,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the Eth amount of by substracting Supplied stEth amount of vault by borrowed Weth of vault', + methodology: 'counts the Eth amount of by substracting Supplied stEth amount of vault by borrowed Weth of vault', ethereum: { tvl, } diff --git a/projects/VersaGames/index.js b/projects/VersaGames/index.js index 61e4942c67c..a57d667f688 100644 --- a/projects/VersaGames/index.js +++ b/projects/VersaGames/index.js @@ -6,8 +6,7 @@ const versaAddress = config.tokens["versa"].addresses[chain.id]; const xVersaAddress = config.tokens["xversa"].addresses[chain.id]; module.exports = { - timetravel: true, - cronos: { + cronos: { staking: staking(xVersaAddress, versaAddress, chain.name), tvl: () => ({}), }, diff --git a/projects/Zebra/index.js b/projects/Zebra/index.js index 458cb36a03a..c2eb17186d6 100644 --- a/projects/Zebra/index.js +++ b/projects/Zebra/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - misrepresentedTokens: false, - scroll: { + scroll: { tvl: getUniTVL({ factory: '0xa63eb44c67813cad20A9aE654641ddc918412941', useDefaultCoreAssets: true, }) } }; \ No newline at end of file diff --git a/projects/aave/index.js b/projects/aave/index.js index 2878ada8926..db46d6acedc 100644 --- a/projects/aave/index.js +++ b/projects/aave/index.js @@ -50,8 +50,7 @@ function v2(chain, v2Registry){ } module.exports = { - timetravel: true, - methodology: methodologies.lendingMarket, + methodology: methodologies.lendingMarket, ethereum: { staking: staking(aaveStakingContract, aaveTokenAddress), pool2: stakingBalancerTvl, diff --git a/projects/aavegotchi/index.js b/projects/aavegotchi/index.js index 2e73808d4e8..3588ed40c71 100644 --- a/projects/aavegotchi/index.js +++ b/projects/aavegotchi/index.js @@ -109,8 +109,7 @@ const polygonTvl = async (_, _block, chainBlocks) => { }; module.exports = { - timetravel: true, - ethereum: { + ethereum: { tvl: ethTvl, }, polygon: { diff --git a/projects/acryptos/index.js b/projects/acryptos/index.js index 423c70623ff..bcafde6c529 100644 --- a/projects/acryptos/index.js +++ b/projects/acryptos/index.js @@ -20,8 +20,7 @@ function fetchallchain(chainId) { module.exports = { timetravel: false, - misrepresentedTokens: false, - methodology: "Acryptos TVL is the USD value of token within the vault and farm contracts", + methodology: "Acryptos TVL is the USD value of token within the vault and farm contracts", ethereum: { tvl: fetchallchain(1), }, diff --git a/projects/aftermath-fi-afsui/index.js b/projects/aftermath-fi-afsui/index.js index 2c8858f0f38..76d9f53c6bf 100644 --- a/projects/aftermath-fi-afsui/index.js +++ b/projects/aftermath-fi-afsui/index.js @@ -14,9 +14,7 @@ async function suiTVL() { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: "Counts the total number of SUI tokens held in Aftermath's afSUI contract.", + methodology: "Counts the total number of SUI tokens held in Aftermath's afSUI contract.", sui: { tvl: suiTVL, } diff --git a/projects/agile/index.js b/projects/agile/index.js index 3cf0343718f..49d534e3ce6 100644 --- a/projects/agile/index.js +++ b/projects/agile/index.js @@ -12,8 +12,7 @@ const lendingMarket = compoundExports(unitroller, "cronos", "0x2e909694B362c2FcA module.exports = { methodology: "Liquidity on DEX and supplied and borrowed amounts found using the unitroller address(0x643dc7C5105d1a3147Bd9524DFC3c5831a373F1e)", - misrepresentedTokens: false, - cronos: { + cronos: { //staking: stakingPricedLP("0x37619cC85325aFea778830e184CB60a3ABc9210B", "0x9A92B5EBf1F6F6f7d93696FCD44e5Cf75035A756", "moonriver", "0xbBe2f34367972Cb37ae8dea849aE168834440685", "moonriver"), tvl: sdk.util.sumChainTvls([ getUniTVL({ diff --git a/projects/algem/index.js b/projects/algem/index.js index b61d74ba8bf..d66a69e6015 100644 --- a/projects/algem/index.js +++ b/projects/algem/index.js @@ -12,9 +12,7 @@ async function tvl(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the number of ASTR tokens locked in Liquid Staking contract', + methodology: 'counts the number of ASTR tokens locked in Liquid Staking contract', start: 1502025, astar: { tvl, diff --git a/projects/apeswap-lending/index.js b/projects/apeswap-lending/index.js index 93852f88a41..788cafed4b6 100644 --- a/projects/apeswap-lending/index.js +++ b/projects/apeswap-lending/index.js @@ -12,9 +12,7 @@ const lendingMarket = usdCompoundExports(unitroller_bsc, "bsc", "0x34878F6a48400 module.exports = { - timetravel: true, - doublecounted: false, - misrepresentedTokens: true, + misrepresentedTokens: true, bsc:{ tvl: lendingMarket.tvl, borrowed: lendingMarket.borrowed diff --git a/projects/astriddao/index.js b/projects/astriddao/index.js index 00dd6869931..53d43d0f0b5 100644 --- a/projects/astriddao/index.js +++ b/projects/astriddao/index.js @@ -199,8 +199,7 @@ async function tvl(ts, _block, chainBlocks ) { } module.exports = { - timetravel: true, - start: 915830, + start: 915830, methodology: "Total locked collateral assets (in ERC-20 form) in ActivePool and DefaultPool, plus total staked BAI in StabilityPool", astar: { tvl, diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index 59bdac93ff0..e63bd38b711 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -16,9 +16,7 @@ const ALT_BUSD_CakeLP_BNB = "0xaa40dc3ec6ad76db3254b54443c4531e3dfe6bdb"; module.exports = { misrepresentedTokens: true, - timetravel: true, - doublecounted: false, - bsc: { + bsc: { pool2: pool2(lpVaultStakingContract_BNB, ALT_BUSD_CakeLP_BNB, "bsc"), staking: staking(vaultStakingContract_BNB, ATL, "bsc"), // ...compoundExports(comptroller, diff --git a/projects/atlendis/index.js b/projects/atlendis/index.js index 215253223df..218c42d3fd5 100644 --- a/projects/atlendis/index.js +++ b/projects/atlendis/index.js @@ -74,9 +74,7 @@ async function borrowed(timestamp, _, chainBlocks) { module.exports = { - timetravel: true, - misrepresentedTokens: false, - polygon: { + polygon: { tvl, borrowed, } diff --git a/projects/atomic/index.js b/projects/atomic/index.js index f26f00cbece..737b5b572a1 100644 --- a/projects/atomic/index.js +++ b/projects/atomic/index.js @@ -26,8 +26,7 @@ async function tvl(api) { } module.exports = { - misrepresentedTokens: false, - arbitrum: { + arbitrum: { tvl } }; diff --git a/projects/aurigami.js b/projects/aurigami.js index fce65f09444..6df91e0837f 100644 --- a/projects/aurigami.js +++ b/projects/aurigami.js @@ -1,8 +1,7 @@ const { compoundExports } = require("./helper/compound"); module.exports = { - timetravel: true, - aurora: { + aurora: { ...compoundExports( '0x817af6cfAF35BdC1A634d6cC94eE9e4c68369Aeb', 'aurora', diff --git a/projects/axl-inu/index.js b/projects/axl-inu/index.js index 423d731e0f9..6f2b13427cf 100644 --- a/projects/axl-inu/index.js +++ b/projects/axl-inu/index.js @@ -6,9 +6,7 @@ const stakingContractsETH = ["0x440D1c47379CF17CCB7Eb334Ae80DC8291FB14Ad"] const AXL = "0x25b24B3c47918b7962B3e49C4F468367F73CC0E0"; module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'TVL only counts liquidity in the staking pools.', + methodology: 'TVL only counts liquidity in the staking pools.', bsc: { staking: stakings(stakingContractsBSC, AXL, "bsc"), tvl: (async) => ({}), diff --git a/projects/babyswap/index.js b/projects/babyswap/index.js index d1a6999bda1..84eb77d60f2 100644 --- a/projects/babyswap/index.js +++ b/projects/babyswap/index.js @@ -7,8 +7,7 @@ const BABY = "0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657"; /* module.exports = { - timetravel: true, - bsc: { + bsc: { staking: staking(MasterChefContract, BABY, "bsc"), tvl: bscTvl, }, diff --git a/projects/backbonelabs/index.js b/projects/backbonelabs/index.js index cd09b2040c6..f7b40ebbff0 100644 --- a/projects/backbonelabs/index.js +++ b/projects/backbonelabs/index.js @@ -21,8 +21,7 @@ const config = { module.exports = { timetravel: false, - misrepresentedTokens: false, - methodology: "Liquid Staking Protocol", + methodology: "Liquid Staking Protocol", }; Object.keys(config).forEach(chain => { diff --git a/projects/bastion/index.js b/projects/bastion/index.js index 75a5067c80e..3436be4a575 100644 --- a/projects/bastion/index.js +++ b/projects/bastion/index.js @@ -31,8 +31,7 @@ const bastion = [ ]; module.exports = { - timetravel: true, - aurora: { + aurora: { tvl: async (...args) => { let balances = {}; const tvls = await Promise.all(bastion.map(realm => realm.tvl(...args))) diff --git a/projects/benqi/index.js b/projects/benqi/index.js index 728fbe043a8..71c35ed6a7e 100644 --- a/projects/benqi/index.js +++ b/projects/benqi/index.js @@ -2,9 +2,7 @@ const {compoundExports} = require('../helper/compound') const {pool2} = require('../helper/pool2') module.exports={ - timetravel: true, - doublecounted: false, - methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", + methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", avax:{ ...compoundExports("0x486af39519b4dc9a7fccd318217352830e8ad9b4", "avax"), pool2: pool2("0x784da19e61cf348a8c54547531795ecfee2affd1", "0xe530dc2095ef5653205cf5ea79f8979a7028065c", "avax") diff --git a/projects/biconomy/index.js b/projects/biconomy/index.js index 9878d65379d..e54c18eb5a3 100644 --- a/projects/biconomy/index.js +++ b/projects/biconomy/index.js @@ -76,8 +76,7 @@ const config = { } module.exports = { - misrepresentedTokens: false, - hallmarks:[ + hallmarks:[ [1651881600, "UST depeg"], ], methodology: diff --git a/projects/black-whale/index.js b/projects/black-whale/index.js index fc5f93c022e..6fcf87f111b 100644 --- a/projects/black-whale/index.js +++ b/projects/black-whale/index.js @@ -5,8 +5,7 @@ async function tvl() { } module.exports = { - doublecounted: false, - kujira: { + kujira: { tvl, }, } \ No newline at end of file diff --git a/projects/blackpanther/index.js b/projects/blackpanther/index.js index b7f3c8f6f38..e579185da67 100644 --- a/projects/blackpanther/index.js +++ b/projects/blackpanther/index.js @@ -22,8 +22,7 @@ async function farm2Tvl(chain, contract, api) { module.exports = { timetravel: false, misrepresentedTokens: true, - doublecounted: false, -}; + }; Object.keys(config).forEach(chain => { const { farms } = config[chain] diff --git a/projects/blizzfinance/index.js b/projects/blizzfinance/index.js index 420e6e7bf6a..b4c0c774b01 100644 --- a/projects/blizzfinance/index.js +++ b/projects/blizzfinance/index.js @@ -2,8 +2,7 @@ const { aaveExports } = require('../helper/aave') const methodologies = require('../helper/methodologies') module.exports={ - timetravel: true, - methodology: methodologies.lendingMarket, + methodology: methodologies.lendingMarket, avax:{ tvl: aaveExports("avax", "0xfF50b540c9152F1841edF47b49dA69696Be59783").tvl, borrowed: ()=>({}) // hacked, it's all bad debt diff --git a/projects/bluebit/index.js b/projects/bluebit/index.js index dd1d64b3571..8a4948e074a 100644 --- a/projects/bluebit/index.js +++ b/projects/bluebit/index.js @@ -29,9 +29,7 @@ const tvl = async (timestamp, block, chainBlocks) => { module.exports = { methodology: "The vaults on https://bluebit.fi are included in TVL.", - timetravel: true, - misrepresentedTokens: false, - start: 62936418, + start: 62936418, aurora: { tvl: tvl, staking: staking(veToken, token, "aurora"), diff --git a/projects/blur/index.js b/projects/blur/index.js index 6c00b683073..7bd7c2cdf49 100644 --- a/projects/blur/index.js +++ b/projects/blur/index.js @@ -23,9 +23,7 @@ module.exports = { hallmarks: [ [1676376000,"BLUR token launch"] ], - timetravel: true, - misrepresentedTokens: false, - methodology: 'TVL counts ETH tokens in the Blur Bidding address:0x0000000000A39bb272e79075ade125fd351887Ac', + methodology: 'TVL counts ETH tokens in the Blur Bidding address:0x0000000000A39bb272e79075ade125fd351887Ac', ethereum: { staking: staking("0xeC2432a227440139DDF1044c3feA7Ae03203933E", "0x5283d291dbcf85356a21ba090e6db59121208b44"), diff --git a/projects/bodhfinance/index.js b/projects/bodhfinance/index.js index 5e37a1b6923..f2f06ea70f8 100644 --- a/projects/bodhfinance/index.js +++ b/projects/bodhfinance/index.js @@ -9,8 +9,6 @@ const { tvl, borrowed } = compoundExports( unitroller, "boba", bETH, WETH, ); module.exports = { - timetravel: true, - doublecounted: false, - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", + methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", boba: { tvl, borrowed } } diff --git a/projects/bow/index.js b/projects/bow/index.js index 7c1f8895d3c..354b1e416fe 100644 --- a/projects/bow/index.js +++ b/projects/bow/index.js @@ -14,8 +14,7 @@ async function tvl() { } module.exports = { - doublecounted: false, - kujira: { + kujira: { tvl, }, } \ No newline at end of file diff --git a/projects/bracketX/index.js b/projects/bracketX/index.js index 3d87f941d76..55ef535ab83 100644 --- a/projects/bracketX/index.js +++ b/projects/bracketX/index.js @@ -13,9 +13,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Count the number of WETH tokens locked in the protocol contract.', + methodology: 'Count the number of WETH tokens locked in the protocol contract.', start: 1704412800, arbitrum: { tvl, diff --git a/projects/capital-dao/index.js b/projects/capital-dao/index.js index d5fd788c343..077b13ebb4b 100644 --- a/projects/capital-dao/index.js +++ b/projects/capital-dao/index.js @@ -6,8 +6,7 @@ const lpWethCds = '0x0be902716176d66364f1c2ecf25829a6d95c5bee'; const stakingAddress = '0x0a6bfa6aaaef29cbb6c9e25961cc01849b5c97eb'; module.exports = { - timetravel: true, - methodology: "TVL includes all farms in staking and swap contract", + methodology: "TVL includes all farms in staking and swap contract", ethereum:{ tvl: async ()=>({}), staking: staking(stakingAddress, cdsAddress), diff --git a/projects/celery/index.js b/projects/celery/index.js index 2ac7c560f9f..61d22b7275d 100644 --- a/projects/celery/index.js +++ b/projects/celery/index.js @@ -6,8 +6,7 @@ const CHAIN = "smartbch" const CLY = "0x7642df81b5beaeeb331cc5a104bd13ba68c34b91" module.exports = { - misrepresentedTokens: false, - methodology: "Staked CLY tokens are counted towards staking metric", + methodology: "Staked CLY tokens are counted towards staking metric", smartbch: { tvl: () => ({}), staking: staking(CLY, CLY, CHAIN, "celery", 18), diff --git a/projects/chainflip/index.js b/projects/chainflip/index.js index 0339520f7f1..ba8ccc93fe4 100644 --- a/projects/chainflip/index.js +++ b/projects/chainflip/index.js @@ -4,9 +4,7 @@ const STATE_CHAIN_GATEWAY_CONTRACT = '0x826180541412D574cf1336d22c0C0a287822678A const FLIP_TOKEN = '0x6995ab7c4d7f4b03f467cf4c8e920427d9621dbd' module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the number of FLIP tokens in the Chainflip State Chain Gateway Contract.', + methodology: 'counts the number of FLIP tokens in the Chainflip State Chain Gateway Contract.', start: 1700740800, // FLIP went live on 2023-11-23 12:00 UTC ethereum: { tvl: () => 0, diff --git a/projects/champagne-swap.js b/projects/champagne-swap.js index 9a77c91ec29..80c0f8bb41d 100644 --- a/projects/champagne-swap.js +++ b/projects/champagne-swap.js @@ -6,8 +6,7 @@ const champagneToken = '0x4957c1c073557BFf33C01A7cA1436D0d2409d439' const masterChef = '0x15C17442eb2Cd3a56139e877ec7784b2dbD97270' module.exports = { - timetravel: true, - misrepresentedTokens: true, + 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, 'bsc'), diff --git a/projects/compound-onchain/index.js b/projects/compound-onchain/index.js index 5290615ac16..50130ca42f0 100644 --- a/projects/compound-onchain/index.js +++ b/projects/compound-onchain/index.js @@ -135,8 +135,7 @@ module.exports = { [1632873600, "Comptroller vulnerability exploit"], [1592226000, "COMP distribution begins"] ], - timetravel: true, - ethereum: { + ethereum: { tvl, borrowed }, diff --git a/projects/compound-v1/index.js b/projects/compound-v1/index.js index aba463d33e5..f42bbd12eb6 100644 --- a/projects/compound-v1/index.js +++ b/projects/compound-v1/index.js @@ -51,8 +51,7 @@ async function tvl(timestamp, block) { } module.exports = { - timetravel: true, - ethereum: { + ethereum: { tvl, borrowed }, diff --git a/projects/convergence/index.js b/projects/convergence/index.js index 41a945345b3..a0c69348d7b 100644 --- a/projects/convergence/index.js +++ b/projects/convergence/index.js @@ -5,8 +5,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { start: 1621220505, //2021-05-17 00:00:00 +UTC misrepresentedTokens: true, - timetravel: true, - ethereum: { + ethereum: { tvl: getUniTVL({ factory: ETH_FACTORY, useDefaultCoreAssets: true, diff --git a/projects/counterstake/index.js b/projects/counterstake/index.js index 0c534232f2b..ee60d77fe5c 100644 --- a/projects/counterstake/index.js +++ b/projects/counterstake/index.js @@ -160,8 +160,7 @@ const tryToGetUSDPriceOfUnknownTokens = async (sum, api) => { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + 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, " + diff --git a/projects/cozy/index.js b/projects/cozy/index.js index f9dba73acfe..fd1662199db 100644 --- a/projects/cozy/index.js +++ b/projects/cozy/index.js @@ -9,8 +9,6 @@ const transform = addr=>{ } module.exports={ - timetravel: true, - doublecounted: false, - methodology: "Count tokens the same way we count for compound", + methodology: "Count tokens the same way we count for compound", ethereum: compoundExports('0x895879b2c1fbb6ccfcd101f2d3f3c76363664f92', "ethereum", undefined, undefined, transform) } \ No newline at end of file diff --git a/projects/cybertime/index.js b/projects/cybertime/index.js index 51ad4a45285..13405a0a5c3 100644 --- a/projects/cybertime/index.js +++ b/projects/cybertime/index.js @@ -98,8 +98,7 @@ const bscTvl = async (api) => { }; module.exports = { - timetravel: true, - bsc: { + bsc: { staking: Staking, pool2: pool2s(pool2FarmContracts, lpPool2, "bsc"), tvl: bscTvl, diff --git a/projects/damm-finance/index.js b/projects/damm-finance/index.js index 3325faabd29..5274ec161d8 100644 --- a/projects/damm-finance/index.js +++ b/projects/damm-finance/index.js @@ -9,9 +9,7 @@ const { tvl, borrowed } = compoundExports( unitroller, "ethereum", bETH, WETH, ); module.exports = { - timetravel: true, - doublecounted: false, - methodology: "Same as Compound Finance, we just count all the tokens supplied (not borrowed money) on the lending markets", + 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/dddx.js b/projects/dddx.js index f85ce36e7ed..74a17009ea4 100644 --- a/projects/dddx.js +++ b/projects/dddx.js @@ -3,9 +3,7 @@ const { stakings } = require("./helper/staking"); module.exports = { misrepresentedTokens: true, - doublecounted: false, - timetravel: true, - incentivized: true, + incentivized: true, bsc: { tvl: getUniTVL({ factory: '0xb5737A06c330c22056C77a4205D16fFD1436c81b', useDefaultCoreAssets: true }), staking: stakings( diff --git a/projects/defifranc/index.js b/projects/defifranc/index.js index 6a7a887e788..c56eb397c3d 100644 --- a/projects/defifranc/index.js +++ b/projects/defifranc/index.js @@ -35,7 +35,6 @@ module.exports = { staking: staking(MON_STAKING_POOL, MON_TOKEN), }, start: 1664074800, - timetravel: true, - methodology: + methodology: "Total deposits of ETH and wBTC for borrowed DCHF.", }; \ No newline at end of file diff --git a/projects/dexpad/apiCache.js b/projects/dexpad/apiCache.js index 330efc66dbc..45f0e74f6c3 100644 --- a/projects/dexpad/apiCache.js +++ b/projects/dexpad/apiCache.js @@ -67,8 +67,7 @@ function tvl(args) { } } module.exports = { - timetravel: true, - methodology: + methodology: `Counts each LP pair's native token and stable balance, adjusted to reflect locked pair's value. Balances and merged across multiple diff --git a/projects/dexpad/index.js b/projects/dexpad/index.js index e08ecc68d05..3e64c46084b 100644 --- a/projects/dexpad/index.js +++ b/projects/dexpad/index.js @@ -56,8 +56,7 @@ function tvl(args){ } } module.exports = { - timetravel: true, - methodology: + methodology: `Counts each LP pair's native token and stable balance, adjusted to reflect locked pair's value. Balances and merged across multiple diff --git a/projects/drip/index.js b/projects/drip/index.js index ab000b11864..1e99a8ac727 100644 --- a/projects/drip/index.js +++ b/projects/drip/index.js @@ -4,9 +4,7 @@ const TOKEN_CONTRACT = "0x20f663CEa80FaCE82ACDFA3aAE6862d246cE0333"; const VAULT_CONTRACT = "0xBFF8a1F9B5165B787a00659216D7313354D25472"; module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: + methodology: "Counts the native tokens staked in the vault contract as staking.", bsc: { tvl: async () => ({}), diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js index da334764fc5..341087bd347 100644 --- a/projects/dyson-money/index.js +++ b/projects/dyson-money/index.js @@ -62,8 +62,7 @@ function fetchNetworkTVL(network) { module.exports = { doublecounted: true, - misrepresentedTokens: false, - methodology: "Counts the tokens locked in the contracts.", + methodology: "Counts the tokens locked in the contracts.", polygon: { tvl: polygonTvl, staking: staking(ylSPHEREvault, sphere_token, "polygon") diff --git a/projects/eris-protocol/index.js b/projects/eris-protocol/index.js index ace818456f4..2d68297c92d 100644 --- a/projects/eris-protocol/index.js +++ b/projects/eris-protocol/index.js @@ -399,8 +399,7 @@ async function productsTvl(chain) { module.exports = { timetravel: false, - misrepresentedTokens: false, - methodology: "Liquid Staking and Arbitrage Protocol", + methodology: "Liquid Staking and Arbitrage Protocol", terra2: { tvl: () => productsTvl("terra2") }, terra: { tvl: () => productsTvl("terra") }, kujira: { tvl: () => productsTvl("kujira") }, diff --git a/projects/ethichub/index.js b/projects/ethichub/index.js index fb380061df8..993becbc851 100644 --- a/projects/ethichub/index.js +++ b/projects/ethichub/index.js @@ -14,9 +14,7 @@ const ETHIX_TOKEN_CELO = ADDRESSES.celo.ETHIX; const STAKED_ETHIX_CELO = '0xCb16E29d0B667BaD7266E5d0Cd59b711b6273C6B'; module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Count of the tokens in pools, reserves...', + methodology: 'Count of the tokens in pools, reserves...', start: 1608640693, ethereum: { tvl: () => ({}), diff --git a/projects/fei/index.js b/projects/fei/index.js index 384a0f4e621..1c8b547d128 100644 --- a/projects/fei/index.js +++ b/projects/fei/index.js @@ -69,8 +69,7 @@ async function tvl(timestamp, block) { } module.exports = { - timetravel: true, - ethereum: { tvl }, + ethereum: { tvl }, }; module.exports.hallmarks = [ [1651325520, "Exploit $80M FEI"], diff --git a/projects/flexdao/index.js b/projects/flexdao/index.js index 17f88b3e0c4..9e5f479df6c 100644 --- a/projects/flexdao/index.js +++ b/projects/flexdao/index.js @@ -10,9 +10,7 @@ const chain = 'smartbch' const decimals = 18 module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Counting all FLEX tokens staked in the DAO', + methodology: 'Counting all FLEX tokens staked in the DAO', start: 2153800, [chain]: { tvl: ()=>({}), diff --git a/projects/fortress-lending/index.js b/projects/fortress-lending/index.js index e6eb037d6f4..a3b0cc4754b 100644 --- a/projects/fortress-lending/index.js +++ b/projects/fortress-lending/index.js @@ -5,8 +5,7 @@ const { compoundExports } = require("../helper/compound"); const {tvl:lendingTvl, borrowed} = compoundExports("0x67340bd16ee5649a37015138b3393eb5ad17c195", "bsc", "0xE24146585E882B6b59ca9bFaaaFfED201E4E5491", ADDRESSES.bsc.WBNB) module.exports = { - timetravel: true, - bsc: { + bsc: { tvl: sdk.util.sumChainTvls([lendingTvl]), borrowed }, diff --git a/projects/fountain.js b/projects/fountain.js index e74cbdb5832..41f47558ed6 100644 --- a/projects/fountain.js +++ b/projects/fountain.js @@ -2,8 +2,7 @@ const ADDRESSES = require('./helper/coreAssets.json') const { compoundExports } = require("./helper/compound"); module.exports = { - timetravel: true, - oasis: { + oasis: { ...compoundExports( '0xA7684aE7e07Dac91113900342b3ef25B9Fd1D841', 'oasis', diff --git a/projects/fujidao/index.js b/projects/fujidao/index.js index 946cfd5c9a1..d19864da3a6 100644 --- a/projects/fujidao/index.js +++ b/projects/fujidao/index.js @@ -99,8 +99,7 @@ async function optimism(_timestamp, ethBlock, chainBlocks){ module.exports = { timetravel: false, - misrepresentedTokens: false, - methodology: "Counts on-chain balance of receipt tokens in F1155 contracts for all vaults.", + methodology: "Counts on-chain balance of receipt tokens in F1155 contracts for all vaults.", ethereum:{ tvl:eth }, diff --git a/projects/fuzion-bonds/index.js b/projects/fuzion-bonds/index.js index 562e907eadb..729af65388b 100644 --- a/projects/fuzion-bonds/index.js +++ b/projects/fuzion-bonds/index.js @@ -25,8 +25,7 @@ async function staking() { module.exports = { - doublecounted: false, - kujira: { + kujira: { tvl, staking, }, } \ No newline at end of file diff --git a/projects/fuzion-ignition/index.js b/projects/fuzion-ignition/index.js index 81c4434db84..808a4d86cd4 100644 --- a/projects/fuzion-ignition/index.js +++ b/projects/fuzion-ignition/index.js @@ -16,8 +16,7 @@ async function tvl() { } module.exports = { - doublecounted: false, - kujira: { + kujira: { tvl, }, } \ No newline at end of file diff --git a/projects/fuzion-plasma/index.js b/projects/fuzion-plasma/index.js index c07c96b07be..ba37a274eea 100644 --- a/projects/fuzion-plasma/index.js +++ b/projects/fuzion-plasma/index.js @@ -14,8 +14,7 @@ async function tvl() { } module.exports = { - doublecounted: false, - kujira: { + kujira: { tvl, }, } \ No newline at end of file diff --git a/projects/gale/index.js b/projects/gale/index.js index a893ac975aa..848bd361818 100644 --- a/projects/gale/index.js +++ b/projects/gale/index.js @@ -12,9 +12,7 @@ const config = { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - bsc: { + bsc: { tvl: () => ({}), staking: staking(config.bsc.windmillContract, config.bsc.tokenContract, "bsc"), }, diff --git a/projects/geist/index.js b/projects/geist/index.js index 9258983a75e..e4d4c5f1163 100644 --- a/projects/geist/index.js +++ b/projects/geist/index.js @@ -23,8 +23,7 @@ function lending(borrowed) { } module.exports = { - timetravel: true, - methodology: methodologies.lendingMarket, + methodology: methodologies.lendingMarket, fantom: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/geode/index.js b/projects/geode/index.js index 5d2de65fc08..714ef1db55f 100644 --- a/projects/geode/index.js +++ b/projects/geode/index.js @@ -85,11 +85,9 @@ async function avax(timestamp, ethBlock, chainBlocks) { module.exports = { start: 16328353, - misrepresentedTokens: false, - methodology: + methodology: "All Staking Derivatives are included to the TVL with relative underlying price. Also counted the Avax within the Dynamic Withdrawal Pools.", - timetravel: true, - doublecounted: true, + doublecounted: true, hallmarks: [[1658869201, "Launch of yyAVAX"]], avax: { tvl: avax, diff --git a/projects/glide-finance/index.js b/projects/glide-finance/index.js index 38afbce902f..47502c82019 100644 --- a/projects/glide-finance/index.js +++ b/projects/glide-finance/index.js @@ -2,8 +2,7 @@ const { getUniTVL } = require('../helper/unknownTokens') const { stakingPricedLP } = require('../helper/staking') module.exports={ - timetravel: true, - misrepresentedTokens: true, + 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', chain: 'elastos', useDefaultCoreAssets: true }), diff --git a/projects/goat-protocol/index.js b/projects/goat-protocol/index.js index 73ef82d5046..5970675ba28 100644 --- a/projects/goat-protocol/index.js +++ b/projects/goat-protocol/index.js @@ -9,8 +9,7 @@ const REWARD_POOL_CONTRACT = '0xAD9CE8580a1Cd887038405275cB02443E8fb88aC'; module.exports = { timetravel: false, - misrepresentedTokens: false, - doublecounted: true, + doublecounted: true, [chain]: { tvl: async (_, _b, { [chain]: block }) => { const pools = await getConfig('goat-protocol', 'https://raw.githubusercontent.com/goatfi/goat-address-book/main/vault-registry/arbitrum.json'); diff --git a/projects/gogocoin/index.js b/projects/gogocoin/index.js index 46d2bfea51b..107bd1de9e4 100644 --- a/projects/gogocoin/index.js +++ b/projects/gogocoin/index.js @@ -49,8 +49,7 @@ async function pool2X(...args) { } module.exports = { - timetravel: true, - start: 1638388550, + start: 1638388550, polygon: { staking: stakingX, pool2: pool2X, diff --git a/projects/goldfinch/index.js b/projects/goldfinch/index.js index d09b6eeba3d..5e9293655e9 100644 --- a/projects/goldfinch/index.js +++ b/projects/goldfinch/index.js @@ -125,8 +125,7 @@ const borrowed = async (api) => { }; module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, ethereum: { tvl, borrowed, diff --git a/projects/gooddollar/index.js b/projects/gooddollar/index.js index 7691240746b..bf06b1bde37 100644 --- a/projects/gooddollar/index.js +++ b/projects/gooddollar/index.js @@ -86,8 +86,7 @@ async function fuse(timestamp, ethBlock, chainBlocks) { 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, - timetravel: true, - ethereum: { + ethereum: { tvl: eth }, fuse: { diff --git a/projects/hectagon/index.js b/projects/hectagon/index.js index 71eef4b6fba..e4c49b25df1 100644 --- a/projects/hectagon/index.js +++ b/projects/hectagon/index.js @@ -10,8 +10,7 @@ const TREASURY_ADDRESS = "0x4059c4a0b8a2B528C4f2E101A3bB8fB169aBa4fB"; const HECTA_BUSD_ADDRESS = "0xc7cee4cea7c76e11e9f5e5e5cbc5e3b798a1c4d0"; module.exports = { - timetravel: true, - methodology: + methodology: "Total Value Lock in Hectagon protocol is calculated by sum of: Treasury locked value", start: 20195418, bsc: { diff --git a/projects/helper/compound.js b/projects/helper/compound.js index 25488986ef2..1431b9681c3 100644 --- a/projects/helper/compound.js +++ b/projects/helper/compound.js @@ -293,9 +293,7 @@ function compoundExportsWithAsyncTransform(comptroller, chain, cether, cetheEqui function fullCoumpoundExports(comptroller, chain, cether, cetheEquivalent, transformAdress) { return { - timetravel: true, - doublecounted: false, - [chain]: compoundExports(comptroller, chain, cether, cetheEquivalent, transformAdress) + [chain]: compoundExports(comptroller, chain, cether, cetheEquivalent, transformAdress) } } diff --git a/projects/hermes/index.js b/projects/hermes/index.js index c76c3ad21a8..4061c850fc7 100644 --- a/projects/hermes/index.js +++ b/projects/hermes/index.js @@ -1,9 +1,7 @@ const { getUniTVL, staking, } = require('../helper/unknownTokens') module.exports = { - timetravel: true, - doublecounted: false, - misrepresentedTokens: true, + 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: { diff --git a/projects/hodltree/index.js b/projects/hodltree/index.js index 48c9fe2fd79..5701812cb1c 100644 --- a/projects/hodltree/index.js +++ b/projects/hodltree/index.js @@ -6,9 +6,7 @@ module.exports = { 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 `, - timetravel: true, - misrepresentedTokens: false, - ethereum: { + ethereum: { tvl: calculateHodltreeBalancesEth }, polygon: { diff --git a/projects/homecoin/index.js b/projects/homecoin/index.js index 5d912559f5f..87375a41a39 100644 --- a/projects/homecoin/index.js +++ b/projects/homecoin/index.js @@ -50,8 +50,7 @@ const borrowed = async (_, ethBlock) => { }; module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, start: HOME_START, ethereum: { tvl, diff --git a/projects/horizon/index.js b/projects/horizon/index.js index 0020b335933..e804dca5a4d 100644 --- a/projects/horizon/index.js +++ b/projects/horizon/index.js @@ -27,9 +27,7 @@ const lpStaking = [ ] module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Counts liquidty on the token staking and lp staking contracts', + 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), 'bsc'), diff --git a/projects/hurricaneswap.js b/projects/hurricaneswap.js index 690b4af6666..2d3bc46fc55 100644 --- a/projects/hurricaneswap.js +++ b/projects/hurricaneswap.js @@ -18,9 +18,7 @@ const chainTvl = getUniTVL({ }) module.exports = { - timetravel: true, - doublecounted: false, - misrepresentedTokens: true, + misrepresentedTokens: true, avax: { tvl: sdk.util.sumChainTvls([chainTvl, staking(masterChefV2, AVAX, "avax")]), staking: stakings( diff --git a/projects/ideamarket/index.js b/projects/ideamarket/index.js index 8ecc1adfe4e..05d899ac550 100644 --- a/projects/ideamarket/index.js +++ b/projects/ideamarket/index.js @@ -17,8 +17,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { } module.exports = { - timetravel: true, - arbitrum: { + arbitrum: { tvl } } \ No newline at end of file diff --git a/projects/ironfinance/index.js b/projects/ironfinance/index.js index 85508e9c281..cbf70410913 100644 --- a/projects/ironfinance/index.js +++ b/projects/ironfinance/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const abiPolygon = require('./abi-polygon.json'); const { transformAddress } = require('./utils'); @@ -134,8 +134,7 @@ const {tvl: fantomLending, borrowed: fantomBorrowed} = compoundExports(Contracts.fantom.lend.ironController, "fantom", "0xdfce3E14a8c77D32fe2455a9E56424F149E2F271", Contracts.fantom.wrappedNative) module.exports = { - timetravel: true, - polygon: { + polygon: { tvl: sdk.util.sumChainTvls([polygonTvl, polygonLending]), borrowed: polygonBorrowed }, diff --git a/projects/joystickclub/index.js b/projects/joystickclub/index.js index 992883c4db2..66d5ff95a46 100644 --- a/projects/joystickclub/index.js +++ b/projects/joystickclub/index.js @@ -18,8 +18,7 @@ const staking = async (timestamp, ethBlock, {[chain]: block}) => { } module.exports = { - misrepresentedTokens: false, - methodology: "Total value of NFTs sent to staking contract is counted towards staking metric", + methodology: "Total value of NFTs sent to staking contract is counted towards staking metric", smartbch: { tvl: () => ({}), staking: staking, diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index 9e296189f18..b7a18220238 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -33,8 +33,7 @@ async function tvl(api) { } module.exports = { - misrepresentedTokens: false, - blast: { + blast: { tvl } } diff --git a/projects/juicebox-v1/index.js b/projects/juicebox-v1/index.js index ff731630f68..693c5e83697 100644 --- a/projects/juicebox-v1/index.js +++ b/projects/juicebox-v1/index.js @@ -8,8 +8,7 @@ const Terminal_v1_1 = "0x981c8ECD009E3E84eE1fF99266BF1461a12e5c68"; const ETH = ADDRESSES.null module.exports = { - timetravel: true, - methodology: "Count the value of the Ether in the Juicebox V1 terminals", + methodology: "Count the value of the Ether in the Juicebox V1 terminals", ethereum: { start: 1626369243, // 2021-06-15 17:14:03 (UTC) diff --git a/projects/juicebox-v2/index.js b/projects/juicebox-v2/index.js index 581e168f3ea..8ccfde45aaf 100644 --- a/projects/juicebox-v2/index.js +++ b/projects/juicebox-v2/index.js @@ -7,8 +7,7 @@ const Terminal_V2 = "0x7Ae63FBa045Fec7CaE1a75cF7Aa14183483b8397"; const ETH = ADDRESSES.null module.exports = { - timetravel: true, - methodology: "Count the value of the Ether in the Juicebox V2 terminal", + methodology: "Count the value of the Ether in the Juicebox V2 terminal", ethereum: { start: 1653853643, // 2022-05-29 19:47:23 (UTC) diff --git a/projects/juicebox-v3/index.js b/projects/juicebox-v3/index.js index 7ecf51c0396..55214678807 100644 --- a/projects/juicebox-v3/index.js +++ b/projects/juicebox-v3/index.js @@ -10,8 +10,7 @@ const Terminal_V3_1_2 = "0x1d9619E10086FdC1065B114298384aAe3F680CC0"; const ETH = ADDRESSES.null module.exports = { - timetravel: true, - methodology: "Count the value of the Ether in the Juicebox V3 terminals", + methodology: "Count the value of the Ether in the Juicebox V3 terminals", ethereum: { start: 1663679075, // 2022-10-20 15:04:35(UTC) diff --git a/projects/justSwap/index.js b/projects/justSwap/index.js index 5f46d866324..290cfd101e2 100644 --- a/projects/justSwap/index.js +++ b/projects/justSwap/index.js @@ -32,8 +32,7 @@ async function v2(timestamp){ } module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "We get liquidity from the ablesdxd.link API", tron:{ tvl: sdk.util.sumChainTvls([v1,v2]) diff --git a/projects/kivach/index.js b/projects/kivach/index.js index 28a80c0ada3..954fd6cec8e 100644 --- a/projects/kivach/index.js +++ b/projects/kivach/index.js @@ -54,8 +54,7 @@ async function totalTvl() { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "The TVL is the USD value of all undistributed donations received through Kivach.", obyte: { diff --git a/projects/klap/index.js b/projects/klap/index.js index 6cec8bd3c3c..ff539335d60 100644 --- a/projects/klap/index.js +++ b/projects/klap/index.js @@ -2,7 +2,6 @@ const { aaveExports } = require("../helper/aave"); const methodologies = require("../helper/methodologies"); module.exports = { - timetravel: true, - methodology: methodologies.lendingMarket, + methodology: methodologies.lendingMarket, klaytn: aaveExports('klaytn', '0x969E4A05c2F3F3029048e7943274eC2E762497AB'), } diff --git a/projects/klayportal/index.js b/projects/klayportal/index.js index a9e27960e6b..d3ec1c59d71 100644 --- a/projects/klayportal/index.js +++ b/projects/klayportal/index.js @@ -26,8 +26,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { } module.exports = { - timetravel: true, - methodology: "TVL is equal to the amount of KLAY staked in the Staking pool", + methodology: "TVL is equal to the amount of KLAY staked in the Staking pool", klaytn: { tvl: tvl, }, diff --git a/projects/klend/index.js b/projects/klend/index.js index 14b9faf543d..1cc6f5d58f8 100644 --- a/projects/klend/index.js +++ b/projects/klend/index.js @@ -71,9 +71,7 @@ async function okexPool2(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - doublecounted: false, - bsc: { + bsc: { ...compoundExports(unitroller, "bsc", kBnb, wbnb), pool2: bscPool2 }, diff --git a/projects/kleros/index.js b/projects/kleros/index.js index 7e8c7ce8004..91d11f59357 100644 --- a/projects/kleros/index.js +++ b/projects/kleros/index.js @@ -36,8 +36,7 @@ function getStakedTvl(chain) { module.exports = { methodology: "Counts PNK staked in courts", - timetravel: true, - ethereum: { + ethereum: { tvl: () => ({}), staking: getStakedTvl('ethereum') }, diff --git a/projects/kyotoswap/index.js b/projects/kyotoswap/index.js index 9c44e416fae..b88ecd6a337 100644 --- a/projects/kyotoswap/index.js +++ b/projects/kyotoswap/index.js @@ -8,9 +8,7 @@ const KSWAP = "0x29ABc4D03D133D8Fd1F1C54318428353CE08727E"; module.exports = { methodology: `Uses factory(${FACTORY}) address and whitelisted tokens address to find and price Liquidity Pool pairs`, misrepresentedTokens: true, - doublecounted: false, - timetravel: true, - incentivized: true, + incentivized: true, bsc: { tvl: getUniTVL({ factory: FACTORY, diff --git a/projects/leNFT/index.js b/projects/leNFT/index.js index 3f41dfe799a..a60280aa184 100644 --- a/projects/leNFT/index.js +++ b/projects/leNFT/index.js @@ -46,6 +46,5 @@ async function tvl(api) { } module.exports = { - misrepresentedTokens: false, - ethereum: { tvl }, + ethereum: { tvl }, }; diff --git a/projects/lendflare/index.js b/projects/lendflare/index.js index 9e00d545d38..75b8ed05c0f 100644 --- a/projects/lendflare/index.js +++ b/projects/lendflare/index.js @@ -3,8 +3,7 @@ const supplyBooster = require('./supplyBooster.js'); const sdk = require('@defillama/sdk') module.exports = { - timetravel: true, - ethereum: { + ethereum: { tvl: sdk.util.sumChainTvls([convexBooster.tvl, supplyBooster.tvl]), } }; diff --git a/projects/letsfil/index.js b/projects/letsfil/index.js index 80f90e14be2..56818d03074 100644 --- a/projects/letsfil/index.js +++ b/projects/letsfil/index.js @@ -20,8 +20,7 @@ async function tvl(api) { module.exports = { timetravel: false, - misrepresentedTokens: false, - methodology: 'counts the number of pledge filecoins in the letsfil contract', + methodology: 'counts the number of pledge filecoins in the letsfil contract', filecoin: { tvl } diff --git a/projects/linear/index.js b/projects/linear/index.js index c9de29b7cd9..8aa7faf081d 100644 --- a/projects/linear/index.js +++ b/projects/linear/index.js @@ -27,8 +27,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - methodology: "Counts LINA used to collateralize lUSD", + methodology: "Counts LINA used to collateralize lUSD", bsc: { tvl, pool2: pool2(vaultpools["LP"], "0x392f351fc02a3b74f7900de81a9aaac13ec28e95"), diff --git a/projects/liquidswap/index.js b/projects/liquidswap/index.js index 3668cca1352..11d2cd54603 100644 --- a/projects/liquidswap/index.js +++ b/projects/liquidswap/index.js @@ -1,7 +1,6 @@ module.exports={ - timetravel: true, - 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'", + 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 } diff --git a/projects/llamalend/index.js b/projects/llamalend/index.js index f5b494e2870..42a4f8ebdf9 100644 --- a/projects/llamalend/index.js +++ b/projects/llamalend/index.js @@ -37,8 +37,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - start: 1666638251, + start: 1666638251, methodology: 'TVL is calculated by adding up all the ETH in the pools and the totalBorrowed of every pool', ethereum: { tvl: tvl, diff --git a/projects/lsdFil/index.js b/projects/lsdFil/index.js index f2f2108c6ac..c2e1e0875e8 100644 --- a/projects/lsdFil/index.js +++ b/projects/lsdFil/index.js @@ -14,9 +14,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the number of MINT tokens in the Club Bonding contract.', + methodology: 'counts the number of MINT tokens in the Club Bonding contract.', filecoin: { tvl, } diff --git a/projects/luaswap/index.js b/projects/luaswap/index.js index 3eac6605e9a..abb476d7325 100644 --- a/projects/luaswap/index.js +++ b/projects/luaswap/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - timetravel: true, - misrepresentedTokens: true, + 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: { diff --git a/projects/luchadores/index.js b/projects/luchadores/index.js index bd1ae44477f..f3e6eb3aaaa 100644 --- a/projects/luchadores/index.js +++ b/projects/luchadores/index.js @@ -49,8 +49,7 @@ async function tvl(time, ethBlock, chainBlocks){ } module.exports={ - timetravel: true, - polygon:{ + polygon:{ tvl, staking: staking(luchaStk, LUCHA_polygon, "polygon"), pool2: pool2s([luchaMaticStk, luchaMustStk], [LUCHA_MATIC_comethLp, LUCHA_MUST_comethLp, LUCHA_MATIC_satinLp, LUCHA_CASH_satinLp], "polygon") diff --git a/projects/luckychip/index.js b/projects/luckychip/index.js index b994cd79397..4c43b006076 100644 --- a/projects/luckychip/index.js +++ b/projects/luckychip/index.js @@ -68,8 +68,7 @@ const masterChef = '0x15D2a6FC45aF66A2952dC27c40450C1F06A1eC2b'; // node test.js projects/luckychip/index.js module.exports={ - misrepresentedTokens: false, - methodology: 'TVL comes from the tables of LuckyChip for now.', + methodology: 'TVL comes from the tables of LuckyChip for now.', bsc: { staking: staking(masterChef, lcToken, 'bsc'), tvl, diff --git a/projects/lusd-chickenbonds/index.js b/projects/lusd-chickenbonds/index.js index abd8486671f..d93510fdcd7 100644 --- a/projects/lusd-chickenbonds/index.js +++ b/projects/lusd-chickenbonds/index.js @@ -22,9 +22,7 @@ async function tvl(_, block) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the amount of LUSD tokens in the 3 buckets of the LUSD ChickenBonds protocol.', + methodology: 'counts the amount of LUSD tokens in the 3 buckets of the LUSD ChickenBonds protocol.', start: 15674057, ethereum: { tvl, diff --git a/projects/maker-rwa/index.js b/projects/maker-rwa/index.js index 2558e94a255..83be4d590c6 100644 --- a/projects/maker-rwa/index.js +++ b/projects/maker-rwa/index.js @@ -102,8 +102,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - methodology: `Counts all the tokens being used as collateral of CDPs. + 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: 1513566671, // 12/18/2017 @ 12:00am (UTC) diff --git a/projects/maker/index.js b/projects/maker/index.js index 1c3fa056b96..3775e50cd29 100644 --- a/projects/maker/index.js +++ b/projects/maker/index.js @@ -122,8 +122,7 @@ async function unwrapGunis({ api, toa, balances = {} }) { } module.exports = { - timetravel: true, - methodology: `Counts all the tokens being used as collateral of CDPs. + 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: 1513566671, // 12/18/2017 @ 12:00am (UTC) diff --git a/projects/marginly/index.js b/projects/marginly/index.js index 2c70d6712bc..5da2c07e035 100644 --- a/projects/marginly/index.js +++ b/projects/marginly/index.js @@ -5,8 +5,7 @@ const config = require("./config"); module.exports = { methodology: "Counts the number of base and quote tokens in every marginly pool", - timetravel: true, -}; + }; Object.keys(config).forEach((chain) => { const { factories } = config[chain]; diff --git a/projects/market.xyz/index.js b/projects/market.xyz/index.js index ffd0d977b29..46792355692 100644 --- a/projects/market.xyz/index.js +++ b/projects/market.xyz/index.js @@ -69,8 +69,7 @@ async function fantomBorrowed(timestamp, _, {fantom: block}) { return balances; } module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, polygon: { tvl: polygonTvl, borrowed: polygonBorrowed, diff --git a/projects/marspoolin/index.js b/projects/marspoolin/index.js index 6ceca6f6e43..da8c741b3dd 100644 --- a/projects/marspoolin/index.js +++ b/projects/marspoolin/index.js @@ -81,8 +81,7 @@ const ethTvl = async (timestamp, ethBlock) => { }; module.exports = { - doublecounted: false, - ethereum: { + ethereum: { tvl: ethTvl, }, }; diff --git a/projects/metastreet/index.js b/projects/metastreet/index.js index adde541784c..7c0b8877d84 100644 --- a/projects/metastreet/index.js +++ b/projects/metastreet/index.js @@ -89,8 +89,6 @@ module.exports = { tvl: getMetaStreetTVL(false), borrowed: getMetaStreetTVL(true), }, - timetravel: true, - misrepresentedTokens: false, - 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.', + 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.', start: 14878205 }; \ No newline at end of file diff --git a/projects/metastrike/index.js b/projects/metastrike/index.js index 0224756e187..66b307cb59a 100644 --- a/projects/metastrike/index.js +++ b/projects/metastrike/index.js @@ -19,8 +19,7 @@ const StakingV2Pool4 = '0x38dcC010518E266372DD574fA74a03ccb38Fd30d' const StakingV2Pool5 = '0x6C7EbB352F92003Aa767675a7a4062ca74206e19' module.exports = { - timetravel: true, - methodology: "Total Value Lock in Metastrike protocol is calculated by sum of: Staking and Vesting locked value", + 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], MTS_TOKEN, 'bsc'), vesting: stakings([VestingCEXV1, VestingCEXV2, VestingAdvisors, VestingTeam, VestingMarketing], MTS_TOKEN, 'bsc'), diff --git a/projects/minmax-finance/index.js b/projects/minmax-finance/index.js index 30f9052021d..0572e5a666e 100644 --- a/projects/minmax-finance/index.js +++ b/projects/minmax-finance/index.js @@ -48,8 +48,7 @@ async function tvl(_, _b, {iotex: block}) { } module.exports = { - timetravel: true, - methodology: "All the assets in the pool.", + methodology: "All the assets in the pool.", iotex:{ tvl, }, diff --git a/projects/mm-finance-polygon/index.js b/projects/mm-finance-polygon/index.js index 20a8b406e1d..df641554212 100644 --- a/projects/mm-finance-polygon/index.js +++ b/projects/mm-finance-polygon/index.js @@ -6,8 +6,7 @@ const mmfToken = '0x22a31bD4cB694433B6de19e0aCC2899E553e9481' const masterChef = '0xa2B417088D63400d211A4D5EB3C4C5363f834764' module.exports = { - timetravel: true, - 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)', + 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, 'polygon'), tvl: getUniTVL({ diff --git a/projects/mm-finance/index.js b/projects/mm-finance/index.js index 89cbfe5e0ca..f7bbb270a4a 100644 --- a/projects/mm-finance/index.js +++ b/projects/mm-finance/index.js @@ -7,8 +7,7 @@ const mmfToken = '0x97749c9B61F878a880DfE312d2594AE07AEd7656' const masterChef = '0x6bE34986Fdd1A91e4634eb6b9F8017439b7b5EDc' module.exports = { - timetravel: true, - misrepresentedTokens: true, + 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, 'cronos'), diff --git a/projects/monster/index.js b/projects/monster/index.js index 37beb68f776..81a811d0ed6 100644 --- a/projects/monster/index.js +++ b/projects/monster/index.js @@ -84,9 +84,7 @@ async function pool2(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: + methodology: "counts the number of MST tokens in the ve contract and the pairs in the staking pool", start: 22569995, fantom: { diff --git a/projects/morpho-aave/index.js b/projects/morpho-aave/index.js index 20a4f6e9eae..53d848193a6 100644 --- a/projects/morpho-aave/index.js +++ b/projects/morpho-aave/index.js @@ -58,8 +58,7 @@ const ethereum = (borrowed) => { }; module.exports = { - timetravel: true, - doublecounted: true, + doublecounted: true, methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, ethereum: { tvl: ethereum(false), diff --git a/projects/morpho/index.js b/projects/morpho/index.js index 04edca0d140..37f70e29806 100644 --- a/projects/morpho/index.js +++ b/projects/morpho/index.js @@ -61,8 +61,7 @@ const ethereum = (borrowed) => { } module.exports = { - timetravel: true, - doublecounted: true, + doublecounted: true, methodology: `Collateral (supply minus borrows) in the balance of the Morpho contracts`, ethereum: { tvl: ethereum(false), diff --git a/projects/neku/index.js b/projects/neku/index.js index 6438d5065d8..d53cb04b929 100644 --- a/projects/neku/index.js +++ b/projects/neku/index.js @@ -3,9 +3,7 @@ const { usdCompoundExports } = require('../helper/compound') const unitroller = "0xD5B649c7d27C13a2b80425daEe8Cb6023015Dc6B" // node test.js projects/neku/index.js module.exports = { - timetravel: true, - doublecounted: false, - arbitrum:usdCompoundExports(unitroller, "arbitrum", "0xBC4a19345c598D73939b62371cF9891128ecCB8B"), + arbitrum:usdCompoundExports(unitroller, "arbitrum", "0xBC4a19345c598D73939b62371cF9891128ecCB8B"), moonriver:usdCompoundExports(unitroller, "moonriver", "0xBC4a19345c598D73939b62371cF9891128ecCB8B"), bsc: usdCompoundExports(unitroller, "bsc", "0xBC4a19345c598D73939b62371cF9891128ecCB8B"), } \ No newline at end of file diff --git a/projects/nestfi/index.js b/projects/nestfi/index.js index 2c3674c5518..e87813b5cde 100644 --- a/projects/nestfi/index.js +++ b/projects/nestfi/index.js @@ -41,9 +41,7 @@ async function ethtvl(timestamp, ethBlock, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'TVL counts NEST tokens used as collateral by the protocol.', + methodology: 'TVL counts NEST tokens used as collateral by the protocol.', bsc: { tvl: bsctvl }, diff --git a/projects/nomad/index.js b/projects/nomad/index.js index cad3758a2a2..03d5464f891 100644 --- a/projects/nomad/index.js +++ b/projects/nomad/index.js @@ -86,9 +86,7 @@ module.exports = { hallmarks: [ [1659312000,"trusted root exploit"] ], - timetravel: true, - misrepresentedTokens: false, - methodology: 'counts the total amount of assets locked in the Nomad token bridge.', + methodology: 'counts the total amount of assets locked in the Nomad token bridge.', start: 13983843, ...chainExports(tvl, Object.keys(HOME_CHAINS)) }; diff --git a/projects/olafinance/index.js b/projects/olafinance/index.js index db54a0dcb7b..4b62fa29928 100644 --- a/projects/olafinance/index.js +++ b/projects/olafinance/index.js @@ -9,7 +9,5 @@ const abis = { module.exports={ - timetravel: true, - doublecounted: false, - fantom:usdCompoundExports(unitroller_fantom, "fantom", "0xed8F2C964b47D4d607a429D4eeA972B186E6f111", abis) + fantom:usdCompoundExports(unitroller_fantom, "fantom", "0xed8F2C964b47D4d607a429D4eeA972B186E6f111", abis) } \ No newline at end of file diff --git a/projects/opulous/index.js b/projects/opulous/index.js index ccd5a438805..1148a46c887 100644 --- a/projects/opulous/index.js +++ b/projects/opulous/index.js @@ -33,8 +33,7 @@ const arbitrumTVL = async (api) => { } module.exports = { - // timetravel: true, - // start: 1660827158, + // // start: 1660827158, methodology: `Counts the number of OPUL tokens locked in the staking pool.`, algorand: { tvl: () => ({}), diff --git a/projects/orbitalswap/index.js b/projects/orbitalswap/index.js index b683e3347e9..fbad25791ba 100644 --- a/projects/orbitalswap/index.js +++ b/projects/orbitalswap/index.js @@ -8,9 +8,7 @@ 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, - doublecounted: false, - timetravel: true, - incentivized: true, + incentivized: true, bsc: { tvl: getUniTVL({ factory: '0x1A04Afe9778f95829017741bF46C9524B91433fB', chain: 'bsc', useDefaultCoreAssets: true }), staking: staking(MasterChefContract, ORB, "bsc"), diff --git a/projects/ostable/index.js b/projects/ostable/index.js index dc4c786b59a..847e98b01d4 100644 --- a/projects/ostable/index.js +++ b/projects/ostable/index.js @@ -97,8 +97,7 @@ async function totalTvl(timestamp) { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + 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: { diff --git a/projects/oswap-token/index.js b/projects/oswap-token/index.js index a2455c11ae2..4d114ae69be 100644 --- a/projects/oswap-token/index.js +++ b/projects/oswap-token/index.js @@ -33,8 +33,7 @@ async function staking() { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + 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: { diff --git a/projects/oswap/index.js b/projects/oswap/index.js index 88ced76bea3..6485d504f6c 100644 --- a/projects/oswap/index.js +++ b/projects/oswap/index.js @@ -27,8 +27,7 @@ async function tvl({ timestamp }) { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + 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: { diff --git a/projects/ottopia/index.js b/projects/ottopia/index.js index b166a54b325..4403edb91a3 100644 --- a/projects/ottopia/index.js +++ b/projects/ottopia/index.js @@ -30,8 +30,7 @@ async function tvl({timestamp}, block, chainBlocks) { } module.exports = { - timetravel: true, - methodology: "This adapter uses otterclam's subgraph to fetch tvl data.", + methodology: "This adapter uses otterclam's subgraph to fetch tvl data.", start: 30711580, polygon: { tvl, diff --git a/projects/paintswap/index.js b/projects/paintswap/index.js index e82b7d3da73..318d6cd4697 100644 --- a/projects/paintswap/index.js +++ b/projects/paintswap/index.js @@ -7,9 +7,7 @@ const brush = '0x85dec8c4b2680793661bca91a8f129607571863d' module.exports = { misrepresentedTokens: true, - timetravel: true, - doublecounted: false, - fantom:{ + fantom:{ tvl: getUniTVL({ factory, chain: 'fantom', useDefaultCoreAssets: true }), staking: staking(masterchef, brush, "fantom"), } diff --git a/projects/phiat/index.js b/projects/phiat/index.js index 3aff9055358..e4630e76e7d 100644 --- a/projects/phiat/index.js +++ b/projects/phiat/index.js @@ -21,8 +21,7 @@ function lending(borrowed) { module.exports = { - timetravel: true, - methodology, + methodology, pulse: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/phuture/index.js b/projects/phuture/index.js index ebc3e615e49..59f633ace71 100644 --- a/projects/phuture/index.js +++ b/projects/phuture/index.js @@ -89,8 +89,7 @@ const savingsVaultTvl = (chain) => async (api) => { module.exports = { methodology: "TVL considers tokens deposited to Phuture Products", - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, ethereum: { tvl: sdk.util.sumChainTvls([ indexTvl("ethereum"), diff --git a/projects/pirex/index.js b/projects/pirex/index.js index b5ee415c62a..54a06f8fa45 100644 --- a/projects/pirex/index.js +++ b/projects/pirex/index.js @@ -50,8 +50,7 @@ async function arbitrum() { } module.exports = { - timetravel: true, - methodology: "TVL = Total value of tokens locked in Pirex Vaults", + methodology: "TVL = Total value of tokens locked in Pirex Vaults", ethereum: { tvl: ethereum, }, diff --git a/projects/planet-blue/index.js b/projects/planet-blue/index.js index 576e5cb5e95..e0ff83cf0a8 100644 --- a/projects/planet-blue/index.js +++ b/projects/planet-blue/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - misrepresentedTokens: false, - bsc: { + bsc: { tvl: getUniTVL({ factory: '0xa053582601214FEb3778031a002135cbBB7DBa18', useDefaultCoreAssets: false diff --git a/projects/polaris-finance/index.js b/projects/polaris-finance/index.js index 726e704d79a..0c306474a25 100644 --- a/projects/polaris-finance/index.js +++ b/projects/polaris-finance/index.js @@ -35,8 +35,7 @@ const staking = async (_timestamp, _ethBlock, { [chain]: block }) => { }; module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "Pool2 TVL accounts for all LPs staked in Dawn, Staking TVL accounts for all tokens staked in Sunrise.", aurora: { diff --git a/projects/polkaex/index.js b/projects/polkaex/index.js index 1f30dff5d77..a56e8d8415c 100644 --- a/projects/polkaex/index.js +++ b/projects/polkaex/index.js @@ -82,8 +82,7 @@ const tvls = { } module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "PolkaEx Tvl Calculation", astar: { tvl: tvls.astar, diff --git a/projects/ponyswap/index.js b/projects/ponyswap/index.js index 009a1d1de65..a7edc1e19a9 100644 --- a/projects/ponyswap/index.js +++ b/projects/ponyswap/index.js @@ -1,8 +1,6 @@ const { uniTvlExport } = require("../helper/calculateUniTvl"); module.exports = { - doublecounted: false, - timetravel: true, - start: 1678790700, + start: 1678790700, arbitrum: { tvl: uniTvlExport("0x66020547Ce3c861dec7632495D86e1b93dA6542c", "arbitrum", true), }, diff --git a/projects/printerfinancial/index.js b/projects/printerfinancial/index.js index 9721d4a2a7b..090151ec83b 100644 --- a/projects/printerfinancial/index.js +++ b/projects/printerfinancial/index.js @@ -76,8 +76,7 @@ const chains = [ ]; module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, ...chains .map(c => printerTvl(c.token, c.share, c.rewardPool, c.masonry, c.pool2, c.chain, undefined, false, c.pool2[1]) diff --git a/projects/prophet/index.js b/projects/prophet/index.js index 50f8c89c8c7..ccb2861fe94 100644 --- a/projects/prophet/index.js +++ b/projects/prophet/index.js @@ -25,8 +25,7 @@ async function totalTvl(timestamp) { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "The TVL is the USD value of the assets locked into the autonomous agents that extend the Prophet protocol.", obyte: { diff --git a/projects/pythagorean/index.js b/projects/pythagorean/index.js index 46e9014eb04..f3a5cf2d498 100644 --- a/projects/pythagorean/index.js +++ b/projects/pythagorean/index.js @@ -34,8 +34,7 @@ async function tvl({ timestamp }) { module.exports = { timetravel: false, - doublecounted: false, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "The TVL is the USD value of the assets locked into the autonomous agents that implement the Pythagorean protocol.", obyte: { diff --git a/projects/qubit/index.js b/projects/qubit/index.js index 1fbbd87256b..874e69627bc 100644 --- a/projects/qubit/index.js +++ b/projects/qubit/index.js @@ -78,9 +78,7 @@ module.exports = { hallmarks: [ [1643241600, "tokenAddress hack"] ], - timetravel: true, - doublecounted: false, - methodology: methodologies.lendingMarket, + methodology: methodologies.lendingMarket, bsc: { tvl: tvl(false), //borrowed: tvl(true), // hacked diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js index 8525d89f5aa..a8d6014a819 100644 --- a/projects/quickswap/index.js +++ b/projects/quickswap/index.js @@ -5,8 +5,7 @@ const { staking } = require('../helper/staking'); module.exports = { misrepresentedTokens: true, - timetravel: true, - polygon:{ + polygon:{ staking: staking("0x958d208Cdf087843e9AD98d23823d32E17d723A1", ADDRESSES.polygon.QUICK), tvl: getChainTvl({ polygon: 'https://api.thegraph.com/subgraphs/name/sameepsi/quickswap06' diff --git a/projects/redacted/index.js b/projects/redacted/index.js index 0d1a01a8fa1..8aedcf51b41 100644 --- a/projects/redacted/index.js +++ b/projects/redacted/index.js @@ -121,8 +121,7 @@ async function staking(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - methodology: "tvl = Treasury assets (bonding). staking = rlBTRFLY (locked tokens)", + methodology: "tvl = Treasury assets (bonding). staking = rlBTRFLY (locked tokens)", ethereum:{ tvl, staking diff --git a/projects/ren/index.js b/projects/ren/index.js index 3ce3d800d76..659535bdb40 100644 --- a/projects/ren/index.js +++ b/projects/ren/index.js @@ -159,8 +159,7 @@ async function solana() { } module.exports = { - timetravel: true, - solana: { + solana: { tvl: solana }, ethereum: { diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js index 0724ff632b1..2a69557f98e 100644 --- a/projects/sandclock/index.js +++ b/projects/sandclock/index.js @@ -59,8 +59,7 @@ async function tvl(api) { } module.exports = { - misrepresentedTokens: false, - methodology: 'add underlying asset balances in all the vaults together.', + methodology: 'add underlying asset balances in all the vaults together.', doublecounted: true, start: 15308000, // The first vault YEARN_VAULT was deployed ethereum: { diff --git a/projects/scion-finance/index.js b/projects/scion-finance/index.js index a1133bd8c1f..64af6b5f17d 100644 --- a/projects/scion-finance/index.js +++ b/projects/scion-finance/index.js @@ -33,9 +33,7 @@ async function fantom(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: "Measures the total value deposited in Scion vault contracts", + methodology: "Measures the total value deposited in Scion vault contracts", moonriver: { tvl: moonriver, }, diff --git a/projects/scream/index.js b/projects/scream/index.js index f289189ed26..a133a480501 100644 --- a/projects/scream/index.js +++ b/projects/scream/index.js @@ -20,9 +20,7 @@ module.exports = { [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", - timetravel: true, - doublecounted: false, - fantom: { + fantom: { staking: staking("0xe3d17c7e840ec140a7a51aca351a482231760824", "0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475", "fantom"), tvl: lending(false), borrowed: lending(true), diff --git a/projects/sculptor-finance/index.js b/projects/sculptor-finance/index.js index ea87f2f98fe..74757976b5b 100644 --- a/projects/sculptor-finance/index.js +++ b/projects/sculptor-finance/index.js @@ -22,8 +22,7 @@ function lending(borrowed) { } module.exports = { - timetravel: true, - methodology, + methodology, bsc: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/sense/index.js b/projects/sense/index.js index b315e43ec2e..09ce766ed58 100644 --- a/projects/sense/index.js +++ b/projects/sense/index.js @@ -173,8 +173,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - doublecounted: true, + 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.", diff --git a/projects/sheesha.js b/projects/sheesha.js index 2562c0a91d5..34039f1977a 100644 --- a/projects/sheesha.js +++ b/projects/sheesha.js @@ -10,8 +10,7 @@ async function pool2(timestamp, block, chainBlocks) { module.exports = { misrepresentedTokens: true, - timetravel: true, - bsc: { + bsc: { tvl: () => ({}), pool2, staking: stakingUnknownPricedLP("0xC77CfF4cE3E4c3CB57420C1488874988463Fe4a4", "0x232fb065d9d24c34708eedbf03724f2e95abe768","bsc", "0xb31ecb43645eb273210838e710f2692cc6b30a11"), diff --git a/projects/shinobi/index.js b/projects/shinobi/index.js index eb5fb4c6ad9..4d2ceb5093e 100644 --- a/projects/shinobi/index.js +++ b/projects/shinobi/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "Factory address (0xba831e62ac14d8500cef0367b14f383d7b1b1b0a) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", ubiq: { diff --git a/projects/sirius-finance/index.js b/projects/sirius-finance/index.js index d89cb07fd50..22550552450 100644 --- a/projects/sirius-finance/index.js +++ b/projects/sirius-finance/index.js @@ -24,8 +24,7 @@ async function tvl(timestamp, _block, { astar: block }) { module.exports = { misrepresentedTokens: true, - timetravel: true, - methodology: "All locked tokens includes stable and crypto assets in Sirius's pools.", + methodology: "All locked tokens includes stable and crypto assets in Sirius's pools.", astar: { start: 1650117600, // 2022/04/16 14:00 UTC tvl, // tvl adapter diff --git a/projects/skcs/index.js b/projects/skcs/index.js index 121ba05b3e6..34cf3944b00 100644 --- a/projects/skcs/index.js +++ b/projects/skcs/index.js @@ -15,9 +15,7 @@ async function tvl(timestamp, ethBlock, {kcc: block}) { module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'Staked token and staking rewards are counted as TVL', + methodology: 'Staked token and staking rewards are counted as TVL', start: 12145436, kcc:{ tvl:tvl, diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index 8da1ece6289..b4ea71d9354 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -75,9 +75,7 @@ function filterActiveCellars(cellars, blockHeight) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: + 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: 1656652494, ["ethereum"]: { tvl: ethereum_tvl }, diff --git a/projects/specfinance.js b/projects/specfinance.js index 924c40e3630..4005da6d552 100644 --- a/projects/specfinance.js +++ b/projects/specfinance.js @@ -35,8 +35,7 @@ async function terra2(api) { } module.exports = { - misrepresentedTokens: false, - timetravel: false, + timetravel: false, terra: { tvl: () => ({}), }, diff --git a/projects/spiritswap/index.js b/projects/spiritswap/index.js index 7dc803ab577..6928e634f0c 100644 --- a/projects/spiritswap/index.js +++ b/projects/spiritswap/index.js @@ -11,9 +11,7 @@ const ammTvl2 = getUniTVL({ chain, factory: factory2, useDefaultCoreAssets: fals module.exports = { - timetravel: true, - doublecounted: false, - fantom:{ + fantom:{ tvl: sdk.util.sumChainTvls([ammTvl,ammTvl2]), staking: staking("0x2fbff41a9efaeae77538bd63f1ea489494acdc08", "0x5cc61a78f164885776aa610fb0fe1257df78e59b", 'fantom') }, diff --git a/projects/stCelo/index.js b/projects/stCelo/index.js index 2a38e5bb550..5fd621a142c 100644 --- a/projects/stCelo/index.js +++ b/projects/stCelo/index.js @@ -30,9 +30,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'TVL counts Celo staked by the protocol.', + methodology: 'TVL counts Celo staked by the protocol.', start: 14330000, celo: { tvl diff --git a/projects/stafi/index.js b/projects/stafi/index.js index da7757101b5..ffc88b3b76f 100644 --- a/projects/stafi/index.js +++ b/projects/stafi/index.js @@ -55,8 +55,7 @@ function chainTvl(chain){ } module.exports = { - timetravel: true, - ethereum: { + ethereum: { tvl: sdk.util.sumChainTvls([chainTvl('polygon'), ethereum]), staking: getTvlFunction("RFIS", "stafi") }, diff --git a/projects/stake-ly/index.js b/projects/stake-ly/index.js index 771aa48d036..6f0f46927cb 100644 --- a/projects/stake-ly/index.js +++ b/projects/stake-ly/index.js @@ -17,9 +17,7 @@ async function tvl(timestamp, _ethBlock, {klaytn: block}) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: + methodology: "TVL is KLAY staked by the users and rewards accrued from node staking", start: 1663585837, klaytn: { diff --git a/projects/stakedotlink/index.js b/projects/stakedotlink/index.js index 77fc4608923..29c957dca07 100644 --- a/projects/stakedotlink/index.js +++ b/projects/stakedotlink/index.js @@ -22,9 +22,7 @@ async function staking(api) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: + methodology: "Queries LINK staking/priority pools and SDL staking pool for the total amount of tokens staked", start: 1670337984, ethereum: { diff --git a/projects/standard-tech/index.js b/projects/standard-tech/index.js index a6947d1c876..d2cdbc8cb25 100644 --- a/projects/standard-tech/index.js +++ b/projects/standard-tech/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ - timetravel: true, - misrepresentedTokens: true, + 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', chain: 'shiden', useDefaultCoreAssets: true }), diff --git a/projects/sushiswap-trident/index.js b/projects/sushiswap-trident/index.js index 226b5e27053..9c30abbb977 100644 --- a/projects/sushiswap-trident/index.js +++ b/projects/sushiswap-trident/index.js @@ -19,8 +19,7 @@ trident_chains.forEach((chain) => { }); module.exports = { - misrepresentedTokens: false, - ...modulesToExport, + ...modulesToExport, }; module.exports.kava = { tvl: () => 0} \ No newline at end of file diff --git a/projects/thorusfi/index.js b/projects/thorusfi/index.js index 7c690ca89f9..11856a6cc33 100644 --- a/projects/thorusfi/index.js +++ b/projects/thorusfi/index.js @@ -12,8 +12,7 @@ const THO_moonbeam = ADDRESSES.shiden.JPYC; module.exports = { - timetravel: true, - avax:{ + avax:{ tvl: getUniTVL({ useDefaultCoreAssets: true, factory: factoryContract, diff --git a/projects/tomofinance.js b/projects/tomofinance.js index 44c90a83c06..21ed2dd93f5 100644 --- a/projects/tomofinance.js +++ b/projects/tomofinance.js @@ -14,8 +14,7 @@ async function taiSupply(timestamp, ethBlock, {tomochain: block}) { } module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, tomochain: { tvl: taiSupply } diff --git a/projects/toros/index.js b/projects/toros/index.js index 0a78518d9d4..b8bbb5a3629 100644 --- a/projects/toros/index.js +++ b/projects/toros/index.js @@ -27,8 +27,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, start: 1627776000, // Sunday, August 1, 2021 12:00:00 AM methodology: "Aggregates total value of each Toros vault both on Polygon and Optimism", diff --git a/projects/toucan-protocol/index.js b/projects/toucan-protocol/index.js index 5b2d8ea7809..d6a15b488ac 100644 --- a/projects/toucan-protocol/index.js +++ b/projects/toucan-protocol/index.js @@ -49,8 +49,7 @@ const getRegenCredits = () => { module.exports = { start: 1634842800, - timetravel: true, - celo: { + celo: { tvl: getCalculationMethod("celo") }, polygon: { diff --git a/projects/traderjoe-lend/index.js b/projects/traderjoe-lend/index.js index bd737341daf..aeb05ccf433 100644 --- a/projects/traderjoe-lend/index.js +++ b/projects/traderjoe-lend/index.js @@ -5,9 +5,7 @@ const { getCompoundV2Tvl } = require('../helper/compound'); const comptroller = "0xdc13687554205E5b89Ac783db14bb5bba4A1eDaC"; module.exports = { - timetravel: true, - doublecounted: false, - 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.', + 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: getCompoundV2Tvl( comptroller, diff --git a/projects/twtstake/index.js b/projects/twtstake/index.js index f4402c56137..d9f6c3aa435 100644 --- a/projects/twtstake/index.js +++ b/projects/twtstake/index.js @@ -6,9 +6,7 @@ module.exports = { hallmarks: [ [1681948800, "TWTStake Flagged on Twitter"] ], - timetravel: true, - misrepresentedTokens: false, - methodology: 'Counts the number of TWT tokens in the TWT Stake contract.', + methodology: 'Counts the number of TWT tokens in the TWT Stake contract.', start: 1000235, bsc: { tvl: () => 0, diff --git a/projects/unbk/index.js b/projects/unbk/index.js index 106b45655f1..a3014df2808 100644 --- a/projects/unbk/index.js +++ b/projects/unbk/index.js @@ -44,9 +44,7 @@ async function tvl(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: + methodology: "Accross different vaults, counts the total number of assets accumulated on each of them", start: 33000000, fantom: { diff --git a/projects/unicrypt/index.js b/projects/unicrypt/index.js index cad60cc7056..179fbaf629f 100644 --- a/projects/unicrypt/index.js +++ b/projects/unicrypt/index.js @@ -62,8 +62,7 @@ function tvl(args) { } module.exports = { - timetravel: true, - methodology: + methodology: `Counts each LP pair's native token and stable balance, adjusted to reflect locked pair's value. Balances and merged across multiple diff --git a/projects/uno-farm/index.js b/projects/uno-farm/index.js index 5952131f31f..0e832609593 100644 --- a/projects/uno-farm/index.js +++ b/projects/uno-farm/index.js @@ -91,8 +91,7 @@ async function tvl(api) { module.exports = { start: 1656018000, - timetravel: true, - polygon: { + polygon: { tvl, }, bsc: { diff --git a/projects/uplift/index.js b/projects/uplift/index.js index 9aad9687ef7..5eff4a59315 100644 --- a/projects/uplift/index.js +++ b/projects/uplift/index.js @@ -27,9 +27,7 @@ async function tvl(timestamp, block, chainBlocks) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: "Counts the number of LIFT tokens in the Staking contract", + methodology: "Counts the number of LIFT tokens in the Staking contract", start: 1637191200, bsc: { tvl: () => ({}), diff --git a/projects/uwulend/index.js b/projects/uwulend/index.js index 3ca5e71d1e4..782dcc029e3 100644 --- a/projects/uwulend/index.js +++ b/projects/uwulend/index.js @@ -19,8 +19,7 @@ function lending(borrowed) { } module.exports = { - timetravel: true, - methodology, + methodology, ethereum: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/valas/index.js b/projects/valas/index.js index 27753bd5a06..de45d326d24 100644 --- a/projects/valas/index.js +++ b/projects/valas/index.js @@ -22,8 +22,7 @@ function lending(borrowed) { } module.exports = { - timetravel: true, - methodology, + methodology, bsc: { tvl: lending(false), borrowed: lending(true), diff --git a/projects/valerian/index.js b/projects/valerian/index.js index b0f561e47c7..e42686fb312 100644 --- a/projects/valerian/index.js +++ b/projects/valerian/index.js @@ -5,8 +5,7 @@ const stakingContract = "0x99a2278ab93Ee6F590a87D8F37a16EE8f53F97Cc" const arthswapValUsdcPool = "0x56Ce6643eDD621EcD904d9b6C9e88745A125AF6d" module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "TVL is calculated by getting value of staked VAL using Arthswap DEX value of VAL.", astar: { tvl: () => ({}), diff --git a/projects/versa/index.js b/projects/versa/index.js index 95b42e2d39f..0825517809a 100644 --- a/projects/versa/index.js +++ b/projects/versa/index.js @@ -4,7 +4,6 @@ const FACTORIES = "0x4346A7C8C39Bf91b8a80933c2fdb10d815c401dB" const tvl = getUniTVL({ factory:FACTORIES, chain: 'astar', useDefaultCoreAssets: true }) module.exports = { - timetravel: true, - methodology: "Versa Tvl Calculation", + methodology: "Versa Tvl Calculation", astar: { tvl } } diff --git a/projects/vesta/index.js b/projects/vesta/index.js index f1fee166614..ddeaf78332d 100644 --- a/projects/vesta/index.js +++ b/projects/vesta/index.js @@ -58,7 +58,6 @@ module.exports = { pool2, }, start: 1644339600, - timetravel: true, - methodology: + methodology: "Total Value Locked includes all stability pools, troves, and vst pairs", }; diff --git a/projects/volo-vsui/index.js b/projects/volo-vsui/index.js index e467f9f4212..87f158d6ec5 100644 --- a/projects/volo-vsui/index.js +++ b/projects/volo-vsui/index.js @@ -21,9 +21,7 @@ async function tvl() { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: "Calculates the amount of SUI staked in Volo liquid staking contracts.", + methodology: "Calculates the amount of SUI staked in Volo liquid staking contracts.", sui: { tvl, } diff --git a/projects/waterloan/index.js b/projects/waterloan/index.js index 5208580da9a..256fb11dcc9 100644 --- a/projects/waterloan/index.js +++ b/projects/waterloan/index.js @@ -78,8 +78,7 @@ function waterloan(chain, borrowed) { } module.exports = { - timetravel: true, - 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.`, + 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: waterloan("csc", false), borrowed: waterloan("csc", true), diff --git a/projects/weave/index.js b/projects/weave/index.js index a748a47a369..763b0ef4974 100644 --- a/projects/weave/index.js +++ b/projects/weave/index.js @@ -14,9 +14,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - misrepresentedTokens: false, - methodology: 'gets the balance of the strategy contract', + methodology: 'gets the balance of the strategy contract', start: 5793963, kava: { tvl, diff --git a/projects/welnance/index.js b/projects/welnance/index.js index 6766cf201bb..4dd3ede56f8 100644 --- a/projects/welnance/index.js +++ b/projects/welnance/index.js @@ -4,9 +4,7 @@ const { compoundExports } = require("../helper/compound"); const comptroller = "0xdc21c1dAF3277f07fFA6EB09fCD3E07EDc36DC0A"; module.exports = { - timetravel: true, - doublecounted: false, - bsc: { + bsc: { ...compoundExports( comptroller, "bsc", "0x38e22c429e62530cbB59B90bF14a71346C727752", diff --git a/projects/wing.js b/projects/wing.js index 2529653fa95..3633cca4597 100644 --- a/projects/wing.js +++ b/projects/wing.js @@ -22,8 +22,7 @@ const config = { } module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, }; const data = {} diff --git a/projects/wingswap/index.js b/projects/wingswap/index.js index 380aa4f214f..f8e573b5a67 100644 --- a/projects/wingswap/index.js +++ b/projects/wingswap/index.js @@ -3,8 +3,7 @@ const { stakingPricedLP } = require('../helper/staking') module.exports = { - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "Factory address (0xc0719a9A35a2D9eBBFdf1C6d383a5E8E7b2ef7a8) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", fantom: { diff --git a/projects/yamato/index.js b/projects/yamato/index.js index d66d2c6debf..2cde39faa4b 100644 --- a/projects/yamato/index.js +++ b/projects/yamato/index.js @@ -21,8 +21,7 @@ async function tvl(_, block) { } module.exports = { - timetravel: true, - start: 1690387200, + start: 1690387200, ethereum: { tvl, } diff --git a/projects/yiedl-vaults/index.js b/projects/yiedl-vaults/index.js index c3754382f19..3659a661167 100644 --- a/projects/yiedl-vaults/index.js +++ b/projects/yiedl-vaults/index.js @@ -87,8 +87,7 @@ async function tvl(api) { } module.exports = { - timetravel: true, - optimism: { + optimism: { tvl, }, start: 1703073600, // 2023-12-20 12:00:00 UTC diff --git a/projects/yumiswap/index.js b/projects/yumiswap/index.js index 168d1260964..f0eba6c809a 100644 --- a/projects/yumiswap/index.js +++ b/projects/yumiswap/index.js @@ -3,8 +3,7 @@ const { getUniTVL } = require('../helper/unknownTokens') const FACTORIES = "0xD3CFB8A232Ad5D0A7ABc817ae3BD1F3E7AE4b5E0" module.exports = { - timetravel: true, - methodology: "TVL comes from the DEX liquidity pools", + methodology: "TVL comes from the DEX liquidity pools", astar: { tvl: getUniTVL({ factory: FACTORIES, chain: 'astar', useDefaultCoreAssets: true }), } diff --git a/projects/zyxswap/index.js b/projects/zyxswap/index.js index 150c9be2c9d..6b44481cc93 100644 --- a/projects/zyxswap/index.js +++ b/projects/zyxswap/index.js @@ -1,8 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ - timetravel: true, - misrepresentedTokens: true, + misrepresentedTokens: true, methodology: "Factory address (0x26e13874ad1cd512b29795dafe3937e1c6f6d507) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", zyx: { tvl: getUniTVL({ factory: '0x26e13874ad1cd512b29795dafe3937e1c6f6d507', chain: 'zyx', useDefaultCoreAssets: true }), From 514ae773332f8f04099b9733b1ef349389396de5 Mon Sep 17 00:00:00 2001 From: Fueav <104292973+Fueav@users.noreply.github.com> Date: Tue, 26 Mar 2024 21:51:51 +0800 Subject: [PATCH 0925/2004] update: merlin-l2 tvl (#9552) * update: merlin-l2 tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/merlin-l2/index.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index de2e51ef8fc..705e13f24fd 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -21,7 +21,8 @@ const owners = [ "bc1qgxdqf7837dxe8xkhvctgc499kwh5xw7ap3uwhs", // add on 25/02/2024 "bc1pruhkl5exjt0z824cafauf750f5g08azuvgcjctv0enz5csayaj7ss3j5wc", // add on 25/02/2024 "bc1q97vmervc8x9hzr4z4yvzn3x4rk74se6e8x8sgy", // add on 25/02/2024 - "bc1q2lzqzjcq472x8v0kgdcn4m5y8cq95ysnxm6vemu0qsuqgzyge06sqmqdal" // add on 25/02/2024 + "bc1q2lzqzjcq472x8v0kgdcn4m5y8cq95ysnxm6vemu0qsuqgzyge06sqmqdal", // add on 25/02/2024 + "bc1qcmj5lkumeycyn35lxc3yr32k3fzue87yrjrna6", //nft_vault_address ]; module.exports = { @@ -36,20 +37,20 @@ module.exports = { tvl: sumTokensExport({ ownerTokens: [ [["0x7122985656e38BDC0302Db86685bb972b145bD3C"], "0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5",], //sttone - [[ADDRESSES.ethereum.USDC], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183", //usdc - ]] + [[ADDRESSES.ethereum.USDC], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183",],//usdc + [["0x0000000000000000000000000000000000000000"],"0xC40329D3aE56Af6b0757C3fE53941DDCC3d92671",]] //eth }), }, arbitrum: { tvl: sumTokensExport({ - owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183"], + owners: ["0x8bb6cae3f1cada07dd14ba951e02886ea6bba183",], tokens: [ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.USDC_CIRCLE] //usdc and usdt }), }, zkfair: { tvl: sumTokensExport({ owners: ["0x8E3e71f5c016A3c764D0D0210fF71F15BEa46e3b",], - tokens: ["0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b", "0x3f97bf3Cd76B5cA9D4A4E9cD8a73C24E32d6C193", "0x813bCb548F99Bc081e5EFeeAa65e3018befb92Ae"] // eth usdt and wbtc + tokens: ["0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b", "0x3f97bf3Cd76B5cA9D4A4E9cD8a73C24E32d6C193", "0x813bCb548F99Bc081e5EFeeAa65e3018befb92Ae","0x0000000000000000000000000000000000000000","0x1cD3E2A23C45A690a18Ed93FD1412543f464158F",] // eth usdt and wbtc and usdc and zkf }), }, -}; \ No newline at end of file +}; From b7d90271c4a3f451ed73bb152f0f955cfb280920 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:58:30 +0100 Subject: [PATCH 0926/2004] track a51 v3 --- projects/a51-finance-v3/index.js | 92 ++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 projects/a51-finance-v3/index.js diff --git a/projects/a51-finance-v3/index.js b/projects/a51-finance-v3/index.js new file mode 100644 index 00000000000..166c77a403f --- /dev/null +++ b/projects/a51-finance-v3/index.js @@ -0,0 +1,92 @@ +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 ADDRESSES = { + arbitrum: { + CLTBASE: "0x3e0aa2e17fe3e5e319f388c794fdbc3c64ef9da6", + HELPER: "0x9d80597d9403bdb35b3d7d9f400377e790b01053", + }, +} + +const DEFAULT_STRATEGY_CREATION_TOPIC = "StrategyCreated(bytes32)" + +const START_BLOCKS = { + arbitrum: { + CLTBASE: 190945156, + }, +} + +async function getStrategiesLogs(strategies, factoryType, api) { + const chain = api.chain + let topic = DEFAULT_STRATEGY_CREATION_TOPIC + + const strategyLogs = await getLogs({ + target: ADDRESSES[chain][factoryType], + topic, + fromBlock: START_BLOCKS[chain][factoryType], + api, + }) + + for (let log of strategyLogs) + strategies.push(log.topics[1]) + + return strategies +} + +async function tvl(api) { + const chain = api.chain + const strategies = [] + const pools = [] + const reservesCalls = [] + + for (const label of Object.keys(START_BLOCKS[api.chain])) + await getStrategiesLogs(strategies, label, api) + + const strategyDetails = await api.multiCall({ + abi: getStrategiesDetails, + target: ADDRESSES[chain].CLTBASE, + calls: strategies, + }) + + strategyDetails.forEach(({ key: { pool, tickLower, tickUpper }, account }) => { + pools.push(pool) + + reservesCalls.push({ + target: ADDRESSES[chain].HELPER, + 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: ADDRESSES[chain].HELPER, }), + ]) + + reserves.forEach((reserve, index) => { + api.add(token0s[index], reserve.reserves0) + api.add(token1s[index], reserve.reserves1) + }) + + return sumTokens2({ owner: ADDRESSES[chain].CLTBASE, tokens: token0s.concat(token1s), api, }) +} + +module.exports = { + doublecounted: true, +} + +Object.keys(ADDRESSES).forEach((chain) => { + module.exports[chain] = { tvl } +}) + +if (!module.exports.polygon) module.exports.polygon = {} + +module.exports.polygon.staking = staking(A51_STAKING_CONTRACT, A51) \ No newline at end of file From ed26dae5f3e5a7026d3dfba894b54090ce61ae60 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 23:02:53 +0100 Subject: [PATCH 0927/2004] thruster: blacklist YES token --- projects/thruster-fi/index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/thruster-fi/index.js b/projects/thruster-fi/index.js index 3db10311a8a..852d4c3693e 100644 --- a/projects/thruster-fi/index.js +++ b/projects/thruster-fi/index.js @@ -1,6 +1,16 @@ +const sdk = require('@defillama/sdk') const { uniV3Export } = require("../helper/uniswapV3"); const { mergeExports } = require('../helper/utils') module.exports = mergeExports([ uniV3Export({ blast: { factory: "0x71b08f13B3c3aF35aAdEb3949AFEb1ded1016127", fromBlock: 157106, }, }), -]) \ No newline at end of file +]) + +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 From 24b119d57ff2ddcca4ebe1b35236e75ee8ff629c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 26 Mar 2024 23:56:11 +0100 Subject: [PATCH 0928/2004] fix broken adapters --- projects/0x_nodes/index.js | 63 +++------------------ projects/cauldron/index.js | 8 +-- projects/daoventures/abi.json | 5 -- projects/daoventures/index.js | 101 ++++++---------------------------- projects/earnmos/index.js | 1 + projects/hop/index.js | 7 ++- projects/methlab-xyz/index.js | 2 +- projects/umbria/index.js | 28 +++++----- 8 files changed, 48 insertions(+), 167 deletions(-) delete mode 100644 projects/daoventures/abi.json diff --git a/projects/0x_nodes/index.js b/projects/0x_nodes/index.js index 3184233400b..22aa4c7df0b 100644 --- a/projects/0x_nodes/index.js +++ b/projects/0x_nodes/index.js @@ -1,97 +1,49 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { GraphQLClient, gql } = require('graphql-request') -const { getBlock } = require('../helper/http') const { staking } = require('../helper/staking') -const sdk = require('@defillama/sdk') const CONFIG = { ethereum: { - uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11', - strategy_token: ADDRESSES.ethereum.WETH, //wETH bios_token: '0xAACa86B876ca011844b5798ECA7a67591A9743C8', kernel_addr: '0xcfcff4eb4799cda732e5b27c3a36a9ce82dbabe0' }, bsc: { - uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11-bsc', - strategy_token: '0x418D75f65a02b3D53B2418FB8E1fe493759c7605', //wBNB bios_token: '0xcf87d3d50a98a7832f5cfdf99ae1b88c7cfba4a7', kernel_addr: '0x37c12de5367fa61ad05e2bf2d032d7ce5dd31793' }, polygon: { - uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11-polygon', - strategy_token: ADDRESSES.ethereum.MATIC, //wMATIC bios_token: '0xe20d2df5041f8ed06976846470f727295cdd4d23', kernel_addr: '0x267720b5d8dcbdb847fc333ccc68cb284648b816' }, fantom: { - uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11-fantom', - strategy_token: ADDRESSES.ethereum.FTM, //wFTM bios_token: '0x75e0eb8e6d92ab832bb11e46c041d06a89ac5f0d', kernel_addr: '0x9db0e84ea53c5a3c000a721bb4295a6053b3de78' }, avax: { - uri: 'https://api.thegraph.com/subgraphs/name/0xnodes/system11-avalanche', - strategy_token: '0x85f138bfEE4ef8e540890CFb48F620571d67Eda3', //wAVAX bios_token: '0xd7783a275e53fc6746dedfbad4a06059937502a4', kernel_addr: '0x479ea3715682e6255234e788875bdbded6faae41' }, metis: { - uri: 'https://andromeda-graph.metis.io/subgraphs/name/0xnodes/System11-metis', - strategy_token: '0x9E32b13ce7f2E80A01932B42553652E053D6ed8e', //METIS bios_token: '0x3405a1bd46b85c5c029483fbecf2f3e611026e45', kernel_addr: '0xa1DA47F6563e7B17075FcA61DeDC4622aE2F3912' }, } -function offset(chain) { - switch (chain) { - case 'ethereum': - return 110 - case 'bsc': - return 600 - case 'polygon': - return 750 - case 'fantom': - return 1500 - case 'metis': - return 500 - case 'avax': - return 750 - } -} -function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - if (timestamp > 1659527340) return {} - const { [chain]:{ uri }} = CONFIG - const { [chain]:{ strategy_token }} = CONFIG - var graphQLClient = new GraphQLClient(uri) - const block = (await getBlock(timestamp, chain, chainBlocks)) - offset(chain) - var query = gql`{strategyTokenBalances(block: {number: `+block+`}){amount}}` - const results = await graphQLClient.request(query) - let amount = 0 - for (let i = 0; i < results.strategyTokenBalances.length; i++) { //loop through the array - amount += Number(results.strategyTokenBalances[i].amount); //Do the math! - } - const balances = {} - sdk.util.sumSingleBalance(balances, strategy_token, amount) - return balances - } -} + function stakingTvl(chain) { const { [chain]:{ bios_token }} = CONFIG const { [chain]:{ kernel_addr }} = CONFIG - return staking(kernel_addr, bios_token, chain) + return staking(kernel_addr, bios_token) } -function chainExports(chainTvl, stakingTvl, chains){ + +function chainExports(chains){ const chainTvls = chains.reduce((obj, chain) => ({ ...obj, [chain]: { - tvl:chainTvl(chain), + tvl: () => ({}), staking: stakingTvl(chain) } }), {}) return chainTvls } -const tvlExports = chainExports(chainTvl, stakingTvl , ['ethereum', 'bsc', 'polygon', 'fantom', 'metis', 'avax']) +const tvlExports = chainExports(['ethereum', 'bsc', 'polygon', 'fantom', 'metis', 'avax']) module.exports = { hallmarks: [ [1659527340, "Protocol declared insolvent"], @@ -99,6 +51,7 @@ module.exports = { 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: 1633046400, // Friday 1. October 2021 00:00:00 GMT - ...tvlExports + ...tvlExports, + deadFrom: 1659527340, } diff --git a/projects/cauldron/index.js b/projects/cauldron/index.js index 1fa4b5787ef..da279509ee6 100644 --- a/projects/cauldron/index.js +++ b/projects/cauldron/index.js @@ -5,13 +5,13 @@ const axios = require("axios"); -async function tvl(timestamp) { +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)); + 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. diff --git a/projects/daoventures/abi.json b/projects/daoventures/abi.json deleted file mode 100644 index 1cc9fc8ac3e..00000000000 --- a/projects/daoventures/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "getAllPoolInUSD": "uint256:getAllPoolInUSD", - "getAllPoolInUSDProxy": "function getAllPoolInUSD(bool includeVestedILV) view returns (uint256)", - "getTotalValueInPool": "uint256:getTotalValueInPool" -} \ No newline at end of file diff --git a/projects/daoventures/index.js b/projects/daoventures/index.js index dbeeffc32ef..a72b375ff61 100644 --- a/projects/daoventures/index.js +++ b/projects/daoventures/index.js @@ -1,95 +1,26 @@ -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); +const ADDRESSES = require('../helper/coreAssets.json') +const { staking } = require('../helper/staking') -const DAOvault = { +const DAOvault = Object.values({ Elon: "0x2D9a136cF87D599628BCBDfB6C4fe75Acd2A0aA8", Cuban: "0x2AD9F8d4c24652Ea9F8A954F7E1FdB50a3bE1DFD", Citadel: "0x8fE826cC1225B03Aa06477Ad5AF745aEd5FE7066", - FAANG: "0x9ee54014e1E6CF10fD7E9290FdB6101fd0d5D416", - Metaverse: "0x5b3ae8b672a753906b1592d44741f71fbd05ba8c", - //MoneyPrinter: "0x3DB93e95c9881BC7D9f2C845ce12e97130Ebf5f2", -}; - -//timestamp, ethereumBlock, chainBlocks -async function tvl(timestamp, ethereumBlock, chainBlocks) { - let block = await sdk.api.util.lookupBlock(timestamp); - - let [ElonTVL, CubanTVL, CitadelTVL, FAANGTVL, MetaverseTVL] = - await Promise.all([ - sdk.api.abi.call({ - target: DAOvault.Elon, // contract address - abi: abi.getAllPoolInUSD, // erc20:methodName - block: block[block], // Current block number - }), - - sdk.api.abi.call({ - target: DAOvault.Cuban, // contract address - abi: abi.getAllPoolInUSD, // erc20:methodName - block: block[block], // Current block number - }), - sdk.api.abi.call({ - target: DAOvault.Citadel, // contract address - abi: abi.getAllPoolInUSD, // erc20:methodName - block: block[block], // Current block number - }), - - sdk.api.abi.call({ - target: DAOvault.FAANG, // contract address - abi: abi.getTotalValueInPool, // erc20:methodName - block: block[block], // Current block number - }), - - sdk.api.abi.call({ - target: DAOvault.Metaverse, // contract address - abi: abi.getAllPoolInUSDProxy, // erc20:methodName - block: block[block], // Current block number - params: [false], - }), - ]); - - ElonTVL = parseInt(ElonTVL.output) / 10 ** 6; - CitadelTVL = parseInt(CitadelTVL.output) / 10 ** 6; - CubanTVL = parseInt(CubanTVL.output) / 10 ** 6; - MetaverseTVL = parseInt(MetaverseTVL.output) / 10 ** 18; - FAANGTVL = parseInt(FAANGTVL.output) / 10 ** 18; - - const result = { - "Elon Vault": ElonTVL, - "Citadel Vault": CitadelTVL, - "Cuban Vault": CubanTVL, - "Metaverse Vault": MetaverseTVL, - "FAANG Vault": FAANGTVL, - }; - - let balances = 0; - for (const prop in result) { - balances += result[prop]; - } - return { "usd-coin": balances }; -} - -// node test.js projects/daoventures/index.js -async function stakingTvl(timestamp, block) { - let balances = {}; - let { output: balance } = await sdk.api.erc20.balanceOf({ - target: "0x77dce26c03a9b833fc2d7c31c22da4f42e9d9582", - owner: "0x1193c036833B0010fF80a3617BBC94400A284338", - block, - }); - - sdk.util.sumSingleBalance( - balances, - "0x77dce26c03a9b833fc2d7c31c22da4f42e9d9582", - balance - ); - - return balances; + // 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 = { misrepresentedTokens: true, ethereum: { - tvl: tvl, - staking: stakingTvl, + tvl, + staking: staking("0x1193c036833B0010fF80a3617BBC94400A284338", "0x77dce26c03a9b833fc2d7c31c22da4f42e9d9582"), }, -}; +} \ No newline at end of file diff --git a/projects/earnmos/index.js b/projects/earnmos/index.js index 18f500bb1f6..8a75f64dc3f 100644 --- a/projects/earnmos/index.js +++ b/projects/earnmos/index.js @@ -2,6 +2,7 @@ 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]); diff --git a/projects/hop/index.js b/projects/hop/index.js index 9531e644139..a62d093cc06 100644 --- a/projects/hop/index.js +++ b/projects/hop/index.js @@ -10,8 +10,8 @@ const getChainKey = chain => chainMapping[chain] ?? chain // node test.js projects/hop/index.js function chainTvl(chain) { - return async (_, _b, {[chain]: block}) => { - const toa = [] + 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)] @@ -41,7 +41,8 @@ function chainTvl(chain) { } } } - return sumTokens2({ chain, tokensAndOwners: toa, block, }) + toa = toa.filter(([i, j]) => i && j && j !== '0x0000000000000000000000000000000000000000') + return sumTokens2({ api, tokensAndOwners: toa, }) } } diff --git a/projects/methlab-xyz/index.js b/projects/methlab-xyz/index.js index 0b8a5eb2388..44dce3eac3b 100644 --- a/projects/methlab-xyz/index.js +++ b/projects/methlab-xyz/index.js @@ -34,7 +34,7 @@ Object.keys(config).forEach(chain => { // tokensAndOwners.push([result.collToken, callOwners[i]]) // tokensAndOwners.push([result.borrowToken, callOwners[i]]) }) - return api.sumTokens({ owners: vaults, tokens: Array.from(tokenSet) }) + return api.sumTokens({ owners: vaults, tokens: Array.from(tokenSet), blacklistedTokens: ['0x401307732d732dd3b05ac1138b8661c0f55830ea'] }) } } }) diff --git a/projects/umbria/index.js b/projects/umbria/index.js index 17972395a4d..4183be34eaa 100644 --- a/projects/umbria/index.js +++ b/projects/umbria/index.js @@ -1,15 +1,15 @@ -const { masterchefExports, } = require('../helper/unknownTokens'); -const { mergeExports } = require("../helper/utils"); +const { staking } = require('../helper/staking') +const { pool2 } = require('../helper/pool2') -module.exports = mergeExports([ - masterchefExports({ - chain: 'ethereum', - nativeToken: '0xa4bbe66f151b22b167127c770016b15ff97dd35c', - masterchef: '0xdF9401225cC62d474C559E9c4558Fb193137bCEB', - }), - masterchefExports({ - chain: 'polygon', - nativeToken: '0x2e4b0fb46a46c90cb410fe676f24e466753b469f', - masterchef: '0x3756a26De28d6981075a2CD793F89e4Dc5A0dE04', - }) -]) \ No newline at end of file +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 From 8941d3b2fc7ac191c1a225515380089f724983e4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 00:56:23 +0100 Subject: [PATCH 0929/2004] update iziswap --- projects/izumi-iziswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 58d54f0c188..6f97ea81c75 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -27,7 +27,7 @@ const poolHelpers = { 'base': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], 'zkfair': ['0x110dE362cc436D7f54210f96b8C7652C2617887D'], 'zeta': ['0x2db0AFD0045F3518c77eC6591a542e326Befd3D7'], - 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], + // 'merlin': ['0x261507940678Bf22d8ee96c31dF4a642294c0467'], // tracked as part of merlinswap 'blast': ['0x5e7902aDf0Ea0ff827683Cc1d431F740CAD0731b'], 'zklink': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F'], 'mode': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], From fd54dc2d86c735e86a823d2ba49e5698cd790678 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 27 Mar 2024 00:34:42 +0000 Subject: [PATCH 0930/2004] add hallmark --- projects/munchables/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/munchables/index.js b/projects/munchables/index.js index f8453007b79..98eafbec9f5 100644 --- a/projects/munchables/index.js +++ b/projects/munchables/index.js @@ -2,6 +2,9 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { + hallmarks: [ + [1711487351,"Protocol Exploited"] + ], blast: { tvl: sumTokensExport({ owner: "0x29958E8E4d8a9899CF1a0aba5883DBc7699a5E1F", From 21bfebe03ad721a7077d736a4d6fd5bf85ff8dcd Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 09:48:36 +0100 Subject: [PATCH 0931/2004] lint fix --- projects/earnmos/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/earnmos/index.js b/projects/earnmos/index.js index 8a75f64dc3f..489281226d1 100644 --- a/projects/earnmos/index.js +++ b/projects/earnmos/index.js @@ -3,9 +3,9 @@ const {toUSDTBalances} = require('../helper/balances') async function fetch(chainName) { return 0 - const {tvlMap} = await get('https://app.earnmos.fi/defi-llama/tvl-map'); + // const {tvlMap} = await get('https://app.earnmos.fi/defi-llama/tvl-map'); - return toUSDTBalances(tvlMap[chainName]); + // return toUSDTBalances(tvlMap[chainName]); } module.exports = { From afc99b0e50c888c8eabf30357c2ddd9e0169d5b0 Mon Sep 17 00:00:00 2001 From: Brendon Votteler Date: Wed, 27 Mar 2024 19:53:09 +1100 Subject: [PATCH 0932/2004] Add adapter: BOB Fusion - season 1 (#9574) * add BOB fusion season 1 * code refactor * Add Fusion Lock contract and enabled addresses for TVL calculation --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bob-fusion/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/bob-fusion/index.js diff --git a/projects/bob-fusion/index.js b/projects/bob-fusion/index.js new file mode 100644 index 00000000000..f663c7552d4 --- /dev/null +++ b/projects/bob-fusion/index.js @@ -0,0 +1,23 @@ +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 +] + +module.exports = { + ethereum: { tvl: sumTokensExport({ owner: fusionLockContract, tokens: enabledAddresses }) } +} \ No newline at end of file From 7eb2f07abc1ce0db36d64f8a50f8aa661020f2da Mon Sep 17 00:00:00 2001 From: 0xtubanator Date: Wed, 27 Mar 2024 14:24:46 +0530 Subject: [PATCH 0933/2004] Added project core-powercity-io (#9573) --- projects/core-powercity-io/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/core-powercity-io/index.js diff --git a/projects/core-powercity-io/index.js b/projects/core-powercity-io/index.js new file mode 100644 index 00000000000..a2038bde24d --- /dev/null +++ b/projects/core-powercity-io/index.js @@ -0,0 +1,15 @@ +const { sumTokensExport } = require("../helper/unknownTokens.js"); + +const CORE_STAKER = "0xa42BadB71271e9A460ED93C501308ECaab770c37"; +const WATT_TOKEN = "0xDfdc2836FD2E63Bba9f0eE07901aD465Bff4DE71"; +const WATT_PLS_LP = "0x956f097E055Fa16Aad35c339E17ACcbF42782DE6"; + +module.exports = { + start: 1702377175, + 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 From 950400517ea6cd730cdebc6c14670c952fa5fcf4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 10:22:10 +0100 Subject: [PATCH 0934/2004] track rss3 bridge --- projects/rss3-staking/index.js | 13 +++++++++++++ projects/rss3/index.js | 12 ++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 projects/rss3-staking/index.js create mode 100644 projects/rss3/index.js diff --git a/projects/rss3-staking/index.js b/projects/rss3-staking/index.js new file mode 100644 index 00000000000..2cef0278b10 --- /dev/null +++ b/projects/rss3-staking/index.js @@ -0,0 +1,13 @@ +const STAKING_CONTRACT = "0x28F14d917fddbA0c1f2923C406952478DfDA5578" +const RSS3_TOKEN_ETH = "0xc98D64DA73a6616c42117b582e832812e7B8D57F" +const RSS3_TOKEN_VSL = "0x4200000000000000000000000000000000000042" +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 new file mode 100644 index 00000000000..fd6771a9f24 --- /dev/null +++ b/projects/rss3/index.js @@ -0,0 +1,12 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owners: [ + "0x4cbab69108Aa72151EDa5A3c164eA86845f18438", + ], + fetchCoValentTokens: true, + }), + }, +} From 5efa01cbbcad1a2fff059c14b73e8dafad586968 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 10:27:57 +0100 Subject: [PATCH 0935/2004] remove duplicate --- projects/Chocoinu/index.js | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 projects/Chocoinu/index.js diff --git a/projects/Chocoinu/index.js b/projects/Chocoinu/index.js deleted file mode 100644 index 67d71cfa092..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, fetchBalances: true, }), }, -} From f43ea9f3d7a9d53b85d1c42b4eedfedd85c1703a Mon Sep 17 00:00:00 2001 From: diego-p3d <165087519+diego-p3d@users.noreply.github.com> Date: Wed, 27 Mar 2024 12:29:52 +0300 Subject: [PATCH 0936/2004] add Powh3D adapter (#9566) --- projects/powh3d/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/powh3d/index.js diff --git a/projects/powh3d/index.js b/projects/powh3d/index.js new file mode 100644 index 00000000000..0d372dda010 --- /dev/null +++ b/projects/powh3d/index.js @@ -0,0 +1,11 @@ +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] }), + }, +}; From 616b5a4bab9008f20a4b1ad66bbf079d1dc51156 Mon Sep 17 00:00:00 2001 From: Yu-Gi-Oh! <54774811+imyugioh@users.noreply.github.com> Date: Wed, 27 Mar 2024 02:35:19 -0700 Subject: [PATCH 0937/2004] Update preon tvl (#9562) --- projects/preon/index.js | 104 ++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 58 deletions(-) diff --git a/projects/preon/index.js b/projects/preon/index.js index b2fb19d0728..a65fa6d7891 100644 --- a/projects/preon/index.js +++ b/projects/preon/index.js @@ -1,74 +1,62 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); -const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { arbitrum: { ownerTokens: [ - [ - [ - ADDRESSES.null, - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "0xe50fa9b3c56ffb159cb0fca61f5c9d750e8128c8", - ], - "0xA2Ce28868A852f4B01903B5de07d4835feFe9086", - ], - [ - [ - "0x8ffdf2de812095b1d19cb146e4c004587c0a0692", - "0x93b346b6bc2548da6a1e7d98e9a421b42541425b", - ], - "0x8AD15574A87e30061f24977faaA2d99bC45A3169", - ], - [ - [ - ADDRESSES.null, - "0x5979D7b546E38E414F7E9822514be443A4800529", - "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf", - ], - "0x58F046c5374E9cF942b8Eeb056126Ce86dD63EEB", - ], + [["0xe50fa9b3c56ffb159cb0fca61f5c9d750e8128c8"], "0xA2Ce28868A852f4B01903B5de07d4835feFe9086"], // aArbWETH + [["0x8ffdf2de812095b1d19cb146e4c004587c0a0692"], "0x8AD15574A87e30061f24977faaA2d99bC45A3169"], // aArbLUSD - PSM + [["0x5979D7b546E38E414F7E9822514be443A4800529"], "0x58F046c5374E9cF942b8Eeb056126Ce86dD63EEB"], // wstETH ], }, polygon: { ownerTokens: [ - [ - [ - ADDRESSES.null, - ADDRESSES.polygon.WMATIC_2, - "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97", - ], - "0x82CD73E9cc96cC12569D412cC2480E4d5962AfF5", - ], - [ - [ - ADDRESSES.null, - "0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4", - "0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9", - ], - "0x8105Fc3487F117982Eb5A5456D8639b0353242d8", - ], - [ - [ - ADDRESSES.null, - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - ], - "0xdc4552609a3f673f0b72958f678d4a48d0e94ebd", - ], - [ - [ - ADDRESSES.null, - ADDRESSES.polygon.DAI, - "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", - ], - "0xdc4552609a3f673f0b72958f678d4a48d0e94ebd", - ], + [["0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97"], "0x82CD73E9cc96cC12569D412cC2480E4d5962AfF5"], // aPolWMatic + [["0xEA1132120ddcDDA2F119e99Fa7A27a0d036F7Ac9"], "0x8105Fc3487F117982Eb5A5456D8639b0353242d8"], // aPolSTMATIC + [["0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE"], "0xdc4552609a3f673f0b72958f678d4a48d0e94ebd"], // aPolDAI ], }, }; +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 tvl(api) { + await Promise.all([tokenTvl, customTvl].map((fn) => fn(api))); +} + +module.exports = { + methodology: "Adds up the total value locked as collateral on the Preon Finance", +}; + Object.keys(config).forEach((chain) => { module.exports[chain] = { - tvl: sumTokensExport(config[chain]), + tvl, }; }); From f5407f152ebcf80edff9d58f00e0c0dfae7f2e4c Mon Sep 17 00:00:00 2001 From: Antoine <67124021+antoineborg@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:01:31 +0100 Subject: [PATCH 0938/2004] Add new ETH wallet (#9576) --- projects/swissborg/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/swissborg/index.js b/projects/swissborg/index.js index 9ebd506c1f4..0b9711c32e1 100644 --- a/projects/swissborg/index.js +++ b/projects/swissborg/index.js @@ -14,6 +14,7 @@ const config = { '0xff4606bd3884554cdbdabd9b6e25e2fad4f6fc54', '0x22bF0A4C4eff418b3306AbFeE20813D0b6E8Dc74', '0x11444C6389A26C8E41d7FD5CafBfCC511303b7d3', + '0x67FE3293FC4e877F3CDc3F0ed93721a600f72BdE', ], }, bitcoin: { From ba942f898bf4a2974e2d1d2c38b61aa722d9b928 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:19:27 +0100 Subject: [PATCH 0939/2004] Envelop (#9577) * add tvls for all chains * code refactor --------- Co-authored-by: Denis Kostylev Co-authored-by: Denis Kostylev --- projects/envelop/index.js | 117 ++++++++++++++++++++++++++++++++++---- 1 file changed, 107 insertions(+), 10 deletions(-) diff --git a/projects/envelop/index.js b/projects/envelop/index.js index f04ced25c4b..c596f517eb3 100644 --- a/projects/envelop/index.js +++ b/projects/envelop/index.js @@ -1,18 +1,115 @@ const { sumTokensExport } = require("../helper/unwrapLPs"); const ADDRESSES = require('../helper/coreAssets.json'); - -const WRAPPER_ADDRESS = '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128'; +const { staking } = require('../helper/staking') module.exports = { - hallmarks: [ - [1709667755, "Contract created"] - ], methodology: 'TVL is the collateral coins, tokens, NFTs wrapped in Envelop vaults.', +} +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 + ], + 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 + ], + 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', + ], + tokens: [ + ADDRESSES.null, + '0x6ab707Aca953eDAeFBc4fD23bA73294241490620', // Aave Arbitrum USDT (aArbUSDT) + ] + }, + optimism: { + protocolContracts: [ + // '0x5515aEF68f62a6f819BD7E1b86AE9d9a2bfE794B', + ], + tokens: [ + ADDRESSES.null, + ] + }, + avax: { + protocolContracts: [ + '0xc2571eBbc8F2af4f832bB8a2D3A4b0932Ce24773', + ], + tokens: [ + ADDRESSES.null, + ] + }, blast: { - tvl: sumTokensExport({ - owner: WRAPPER_ADDRESS, - tokens: [ADDRESSES.null, ADDRESSES.blast.WETH, ADDRESSES.blast.USDB,], - }), + protocolContracts: [ + '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128' + ], + 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) +}) \ No newline at end of file From f2677d022a90b3f313bc066d8b26127d579b3c48 Mon Sep 17 00:00:00 2001 From: Onino Farm <165096994+oninofarm@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:20:47 +0300 Subject: [PATCH 0940/2004] add Onino Farm staking adapter (#9568) --- projects/oninofarm/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/oninofarm/index.js diff --git a/projects/oninofarm/index.js b/projects/oninofarm/index.js new file mode 100644 index 00000000000..be3c0f02434 --- /dev/null +++ b/projects/oninofarm/index.js @@ -0,0 +1,15 @@ +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 From 9d95e0b73faf5087406f37210b02f2636c8882f5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:26:42 +0100 Subject: [PATCH 0941/2004] Track TVL for Era protocol (#9578) * track increment-protocol tvl * code refactor --------- Co-authored-by: omurovec --- projects/increment-protocol/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/increment-protocol/index.js diff --git a/projects/increment-protocol/index.js b/projects/increment-protocol/index.js new file mode 100644 index 00000000000..0d30a34cf2f --- /dev/null +++ b/projects/increment-protocol/index.js @@ -0,0 +1,8 @@ +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: 1710004200 // 2024-03-09 09:10 +} \ No newline at end of file From 0a232f091c8c9d42d4f4c0ebd3a116128d7d27ab Mon Sep 17 00:00:00 2001 From: blastnamedev <157948146+blastnamedev@users.noreply.github.com> Date: Wed, 27 Mar 2024 18:04:52 +0700 Subject: [PATCH 0942/2004] Add BlastName project (#9563) * Add BlastName project * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blastname/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/blastname/index.js diff --git a/projects/blastname/index.js b/projects/blastname/index.js new file mode 100644 index 00000000000..b6cc0b823af --- /dev/null +++ b/projects/blastname/index.js @@ -0,0 +1,19 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require('../helper/unknownTokens') + +const BNDPoolAddr1 = '0xe875B8D17973a306fd0727B6a578695CE136C2cA' +const BNDPoolAddr2 = '0x56C09e6d859477aF3863408Cf8BA3C427b61782c' +const BNSPoolAddr = '0xb5510aB65418d53961A9fd32A8E6343f942E20Aa' + +module.exports = { + blast: { + tvl: sumTokensExport({ tokensAndOwners: [[ADDRESSES.blast.USDB, BNDPoolAddr1]] }), + pool2: sumTokensExport({ + tokensAndOwners: [ + ['0xa21406a95195D449646EA97D550CC97BD62B4B7A', BNDPoolAddr1], + ['0xD80f694FB00215262169AFF73f8626f7989353A7', BNDPoolAddr2], + ['0x389daCE33EF8a7E020196F388cF107A881799872', BNSPoolAddr], + ['0xdD9B243A18Fb4e46AefFa26D42797f0Be9F9AfC8', BNSPoolAddr],], useDefaultCoreAssets: true, + }), + } +} From 9d44c09a136b867612267a6762d8137e63d57b2e Mon Sep 17 00:00:00 2001 From: MaryamNaveedFunavry <142418936+MaryamNaveedFunavry@users.noreply.github.com> Date: Wed, 27 Mar 2024 16:05:30 +0500 Subject: [PATCH 0943/2004] added farmingpool and reward wallet for staking, added all chains in tvl (#9571) * added farmingpool and reward walet for staking, added all chains in tvl * code refactor * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/chaingpt/index.js | 75 +++++++++++++++++++++----------- projects/helper/cache/getLogs.js | 1 + 2 files changed, 50 insertions(+), 26 deletions(-) diff --git a/projects/chaingpt/index.js b/projects/chaingpt/index.js index ea926804928..c0df8640503 100644 --- a/projects/chaingpt/index.js +++ b/projects/chaingpt/index.js @@ -1,47 +1,70 @@ -const { pool2s } = require("../helper/pool2"); const { stakings } = require("../helper/staking"); const { getLogs } = require('../helper/cache/getLogs') +const { PromisePool } = require('@supercharge/promise-pool') const cgpt = "0x9840652DC04fb9db2C43853633f0F62BE6f00f98"; const stakingpool1 = "0x765a6ee976137801F2661c3644E1fde369A8ED18"; const stakingpool2 = "0x62A402DEf6Ca37E9CA7a544bE34954748088CCEE"; +const stakingpool3 = "0x6eE8D743Eb8bEc665AaCdb535f2F100f040Ca6C5"; + +const config = { + ethereum: { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 17003869 }, + polygon: { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 45136100 }, + bsc: { factory: '0xc263365D628568C23d61BDDa24C8EB27CEF4E917', fromBlock: 30004999 }, + arbitrum: { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 111699000 }, + avax: { factory: '0xF276Bf68Dde58904439f11f6eD1511e89A7f5a4A', fromBlock: 32665049 } +} async function tvl(api) { - const factory0 = '0xfb8c571f7152d2e092b0e650731c4d599cd514e1' - const factory = '0xc263365D628568C23d61BDDa24C8EB27CEF4E917' - const logs = await getLogs({ - api, - target: factory0, - eventAbi: 'event PresalePoolCreated (address token, uint256 openTime, uint256 closeTime, address offeredCurrency, uint256 offeredCurrencyDecimals, uint256 offeredCurrencyRate, address wallet, address owner)', - fromBlock: 30004999, - }) + const { factory, fromBlock } = config[api.chain] const logs2 = await getLogs({ api, target: factory, eventAbi: 'event PresalePoolCreated (address registedBy, address indexed token, address indexed pool, uint256 poolId)', - fromBlock: 30004999, + fromBlock: fromBlock, + + }) + const pools = [] + const poolFromBlocks = {} + logs2.forEach((i) => { + pools.push(i.args.pool) + poolFromBlocks[i.args.pool] = i.blockNumber }) + const ownerTokens = [] const poolTokenMapping = {} - 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; - } + 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 api.sumTokens({ ownerTokens }) + } -module.exports = { - bsc: { - tvl, - staking: stakings([stakingpool1, stakingpool2], cgpt), - }, -}; \ No newline at end of file +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/helper/cache/getLogs.js b/projects/helper/cache/getLogs.js index d23a4fe0348..d0daf3a570c 100644 --- a/projects/helper/cache/getLogs.js +++ b/projects/helper/cache/getLogs.js @@ -51,6 +51,7 @@ async function getLogs({ target, 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 }) From b0b005eff773fc5deeb0cdfda9a8eecd83c59548 Mon Sep 17 00:00:00 2001 From: Poolz Network <165104067+poolznetwork@users.noreply.github.com> Date: Wed, 27 Mar 2024 16:09:42 +0300 Subject: [PATCH 0944/2004] added TVL, staking adapter (#9580) --- projects/poolznetwork/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/poolznetwork/index.js diff --git a/projects/poolznetwork/index.js b/projects/poolznetwork/index.js new file mode 100644 index 00000000000..0d531921390 --- /dev/null +++ b/projects/poolznetwork/index.js @@ -0,0 +1,26 @@ +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), + }, +}; From 09eab12e4ec6232446a2146819f74c66f20e2882 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Wed, 27 Mar 2024 22:10:53 +0900 Subject: [PATCH 0945/2004] add mode network eth market (#9579) * add wemixChain * add manta-eth market * add manta stable market * fix mergeExport * add manta chain manta market * add mode eth market --- projects/shoebillFinance-v2/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index b975eaeba5e..6e5ee6ec896 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -30,4 +30,10 @@ module.exports = mergeExports([ comptroller: "0x4e4b415F5aa78a44CE1fc259D2cEc47BF50A9216", }), }, + { + mode: compoundExports2({ + comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", + cether: "0xD13bE8b716b18265e294831FCb1330d170840BB3", + }), + }, ]); From 8b4a4dd240a0d601ae2d79958d7f820b9e41ffe4 Mon Sep 17 00:00:00 2001 From: helix-integrations <164842727+helix-integrations@users.noreply.github.com> Date: Wed, 27 Mar 2024 20:18:46 +0700 Subject: [PATCH 0946/2004] feat: add HELIX (#9575) * feat: add helix tvl * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helix/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/helix/index.js diff --git a/projects/helix/index.js b/projects/helix/index.js new file mode 100644 index 00000000000..0c201cfb9c7 --- /dev/null +++ b/projects/helix/index.js @@ -0,0 +1,26 @@ +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 From 62b67f7894f26e906bdd2148921ef1f3fcaca223 Mon Sep 17 00:00:00 2001 From: dananderson3999 <165169892+dananderson3999@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:25:02 +0000 Subject: [PATCH 0947/2004] add mode chain to connext tvl (#9582) Add mode chain to connext tvl, there is a $3.5m WETH-nextWETH pool on Mode --- projects/connext/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/connext/index.js b/projects/connext/index.js index 848b6c3e4a8..30819a3ff65 100644 --- a/projects/connext/index.js +++ b/projects/connext/index.js @@ -48,6 +48,7 @@ const chains = [ "xdai", "optimism", "arbitrum", + "mode", // deprecated? "moonriver", From 98cd27073656fec84fdccfa5f20cbae9994cc134 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 14:31:29 +0100 Subject: [PATCH 0948/2004] Revert "remove duplicate" This reverts commit 5efa01cbbcad1a2fff059c14b73e8dafad586968. --- projects/Chocoinu/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/Chocoinu/index.js diff --git a/projects/Chocoinu/index.js b/projects/Chocoinu/index.js new file mode 100644 index 00000000000..67d71cfa092 --- /dev/null +++ b/projects/Chocoinu/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + avax: { tvl: getUniTVL({ factory: '0x49a5044268A54467a94905d1458A88413695afc1', useDefaultCoreAssets: true, fetchBalances: true, }), }, +} From 07e0a62d162a9d8a8e35af33b72901fcca614cd5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 14:33:14 +0100 Subject: [PATCH 0949/2004] fix chocoinu --- projects/chocoInu-masterchef/index.js | 10 ++++++++++ projects/chocoInu/index.js | 6 ------ 2 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 projects/chocoInu-masterchef/index.js delete mode 100644 projects/chocoInu/index.js diff --git a/projects/chocoInu-masterchef/index.js b/projects/chocoInu-masterchef/index.js new file mode 100644 index 00000000000..a2f50c9cbf3 --- /dev/null +++ b/projects/chocoInu-masterchef/index.js @@ -0,0 +1,10 @@ +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/chocoInu/index.js b/projects/chocoInu/index.js deleted file mode 100644 index 67d71cfa092..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, fetchBalances: true, }), }, -} From 61a6a0b4f91d9aeecae8c0c94aa570f5a9e63b3a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:51:36 +0100 Subject: [PATCH 0950/2004] minor fix --- projects/mvl/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/mvl/index.js b/projects/mvl/index.js index 9e262b1c5fd..d525d89d5a5 100644 --- a/projects/mvl/index.js +++ b/projects/mvl/index.js @@ -42,7 +42,6 @@ Object.keys(config).forEach((chain) => { tvl: () => ({}), staking: stakings(staking, token, chain), pool2: pool2s(pool2, [lp], chain), - 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." }; -}); \ No newline at end of file +}) +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." From b925719d45f82086ee7bdb79d0c5727070d83b9d Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 27 Mar 2024 17:12:58 +0000 Subject: [PATCH 0951/2004] add more chains --- projects/treasury/shapeshift.js | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/projects/treasury/shapeshift.js b/projects/treasury/shapeshift.js index 2ae2fc6b4e0..80a92bbf386 100644 --- a/projects/treasury/shapeshift.js +++ b/projects/treasury/shapeshift.js @@ -2,6 +2,17 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const shaTreasury = "0x90A48D5CF7343B08dA12E067680B4C6dbfE551Be"; +const safeOptimism = "0x6268d07327f4fb7380732dc6d63d95F88c0E083b"; + +const safeAvalanche = "0x74d63F31C2335b5b3BA7ad2812357672b2624cEd" ; + +const safePolygon = "0xB5F944600785724e31Edb90F9DFa16dBF01Af000" ; + +const safeGnosis = "0xb0E3175341794D1dc8E5F02a02F9D26989EbedB3" ; + +const safeBSC = "0x8b92b1698b57bEDF2142297e9397875ADBb2297E" ; + +const safeArbitrum = "0x38276553F8fbf2A027D901F8be45f00373d8Dd48" ; const LP = "0x470e8de2eBaef52014A47Cb5E6aF86884947F08c" const FOX = "0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d"; @@ -23,4 +34,46 @@ module.exports = treasuryExports({ owners: [shaTreasury], ownTokens: [FOX, LP, tFOX], }, + arbitrum: { + tokens: [ + nullAddress, + ], + owners: [safeArbitrum], + ownTokens: [], + }, + bsc: { + tokens: [ + nullAddress, + ], + owners: [safeBSC], + ownTokens: [], + }, + xdai: { + tokens: [ + nullAddress, + ], + owners: [safeGnosis], + ownTokens: ["0x21a42669643f45Bc0e086b8Fc2ed70c23D67509d"], + }, + polygon: { + tokens: [ + nullAddress, + ], + owners: [safePolygon], + ownTokens: [], + }, + avax: { + tokens: [ + nullAddress, + ], + owners: [safeAvalanche], + ownTokens: [], + }, + optimism: { + tokens: [ + nullAddress, + ], + owners: [safeOptimism], + ownTokens: ["0xF1a0DA3367BC7aa04F8D94BA57B862ff37CeD174"], + }, }) \ No newline at end of file From 1a4a0b3d8a49981589b6684b7a9a53efada2b15a Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 27 Mar 2024 22:52:25 +0000 Subject: [PATCH 0952/2004] async query for eigenlayer --- projects/eigenlayer/index.js | 22 +++++++++++++--------- projects/helper/allium.js | 4 +++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/projects/eigenlayer/index.js b/projects/eigenlayer/index.js index ec4acdc7b69..3ed90f5bee8 100644 --- a/projects/eigenlayer/index.js +++ b/projects/eigenlayer/index.js @@ -1,10 +1,12 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const { getLogs } = require('../helper/cache/getLogs') -const { queryAllium } = require('../helper/allium') +const { startAlliumQuery, retrieveAlliumResults } = require('../helper/allium') +const { getCache, setCache, } = require('../helper/cache') async function getEigenPods(timestamp) { - for (let i = 1; i < 4; i++) { - const eigenPods = await queryAllium(` + const queryId = await getCache('eigenlayer', 'eigenpods-query') + const offset = 3; + const newQuery = await startAlliumQuery(` select sum(balance) as sum from @@ -24,14 +26,15 @@ async function getEigenPods(timestamp) { from beacon.validator.balances where status = 'active_ongoing' - and slot_timestamp = '${new Date(timestamp * 1e3 - i * 24 * 3600e3).toISOString().split('T')[0]}T23:59:59' + and slot_timestamp = '${new Date(timestamp * 1e3 - offset * 24 * 3600e3).toISOString().split('T')[0]}T23:59:59' ) beacon where pods.params['eigenPod'] = beacon.WITHDRAWAL_ADDRESS`) - const sum = eigenPods[0]?.["sum"] - if (sum !== null) { - return sum - } + await setCache('eigenlayer', 'eigenpods-query', newQuery) + const eigenPods = await retrieveAlliumResults(queryId) + const sum = eigenPods[0]?.["sum"] + if (!sum) { + throw new Error("Empty eigenpods") } - throw new Error("Empty eigenpods") + return sum } async function tvl({timestamp}, _b, _cb, { api, }) { @@ -65,6 +68,7 @@ async function tvl({timestamp}, _b, _cb, { api, }) { // https://github.com/Layr-Labs/eigenlayer-contracts/blob/master/script/output/M1_deployment_mainnet_2023_6_9.json module.exports = { + timetravel: false, ethereum: { tvl, }, diff --git a/projects/helper/allium.js b/projects/helper/allium.js index a37fa7c34a3..ecd7e1cd530 100644 --- a/projects/helper/allium.js +++ b/projects/helper/allium.js @@ -60,5 +60,7 @@ async function queryAllium(sqlQuery) { } module.exports = { - queryAllium + queryAllium, + startAlliumQuery, + retrieveAlliumResults } \ No newline at end of file From ec2e5a146139865d31534efc751fefeba98dde1e Mon Sep 17 00:00:00 2001 From: 0xUncleEnzo <138401348+0xUncleEnzo@users.noreply.github.com> Date: Thu, 28 Mar 2024 04:30:29 -0400 Subject: [PATCH 0953/2004] feat: adapter for Zoro Protocol TVL and borrow (#9589) --- projects/zoro/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/zoro/index.js diff --git a/projects/zoro/index.js b/projects/zoro/index.js new file mode 100644 index 00000000000..022434beefe --- /dev/null +++ b/projects/zoro/index.js @@ -0,0 +1,25 @@ +const sdk = require('@defillama/sdk'); +const { compoundExports2 } = require('../helper/compound'); + +const corePool = { + comptroller: "0x90f2810B85f02122159cB18f6abF2776a7Ca3152", + chain: "era", + cether: "0x3a6F5eA6b9B781C37F25164D9c25534eDd87d290", +}; + +const coreExports = compoundExports2(corePool); + +const degenPool = { + comptroller: "0x410ffcC8f37dCb3116cA8F59B30CCbe4c60F2385", + chain: "era", + cether: "0x2ff7bF02a7C4f63fBc3b764A12c723B2abdA2905", +}; + +const degenExports = compoundExports2(degenPool); + +module.exports = { + era: { + tvl: sdk.util.sumChainTvls([coreExports.tvl, degenExports.tvl]), + borrowed: sdk.util.sumChainTvls([coreExports.borrowed, degenExports.borrowed]) + } +}; From d9224b967cd3bd4f5cadc55422d3110b105db238 Mon Sep 17 00:00:00 2001 From: arata <92546123+0xArata@users.noreply.github.com> Date: Thu, 28 Mar 2024 09:31:51 +0100 Subject: [PATCH 0954/2004] Keller ve(3,3) adapter (#9588) --- projects/keller/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/keller/index.js diff --git a/projects/keller/index.js b/projects/keller/index.js new file mode 100644 index 00000000000..20a9d8a8866 --- /dev/null +++ b/projects/keller/index.js @@ -0,0 +1,11 @@ +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 From 073a760fe5efb1b643cc8cfabc9bb56e5eca0377 Mon Sep 17 00:00:00 2001 From: Tigris of Gaul <81036209+tigris-of-gaul@users.noreply.github.com> Date: Thu, 28 Mar 2024 08:32:31 +0000 Subject: [PATCH 0955/2004] Add Tarot factory for Base (#9586) --- projects/tarot/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/tarot/index.js b/projects/tarot/index.js index 88698212342..779def2d540 100644 --- a/projects/tarot/index.js +++ b/projects/tarot/index.js @@ -18,6 +18,11 @@ const config = { '0xBA47316035E6C95b31cb55BfB93458Ad41E4Da04', // Tarot Velouté ] }, + base: { + factories: [ + '0xEb5809eb0f79aaB6e53E6374258b29A244Dfc12d', // Tarot Aerials + ] + }, arbitrum: { factories: [ '0x2217AEC3440E8FD6d49A118B1502e539f88Dba55', // Tarot Galahad From 7214c9f7c5f65e0acb04f9ca37753c0729e5d33f Mon Sep 17 00:00:00 2001 From: diego-p3d <165087519+diego-p3d@users.noreply.github.com> Date: Thu, 28 Mar 2024 11:34:10 +0300 Subject: [PATCH 0956/2004] added fomo3d TVL adapter (#9585) Co-authored-by: diego-p3d <3dlabs@tuta.io> --- projects/fomo3d/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/fomo3d/index.js diff --git a/projects/fomo3d/index.js b/projects/fomo3d/index.js new file mode 100644 index 00000000000..85b181b92d1 --- /dev/null +++ b/projects/fomo3d/index.js @@ -0,0 +1,13 @@ +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] }), + }, +}; From 14c9a222560317b712af48d1e4353a1915e71880 Mon Sep 17 00:00:00 2001 From: sheykei <47207681+clement4saunier@users.noreply.github.com> Date: Thu, 28 Mar 2024 09:42:54 +0100 Subject: [PATCH 0957/2004] update: Angle Protocol TVL (#9581) * add: USDA & treasuries * add: Angle tokens addresses * add: Angle collaterals * clean * rename: collaterals * add: rebranding date * move: Angle assets + revert: formatting changes * clean * remove: trailing --- projects/angle/addresses.js | 135 ++++++++++++++++++++++++++++++++++++ projects/angle/index.js | 58 ++++++++++++---- 2 files changed, 180 insertions(+), 13 deletions(-) diff --git a/projects/angle/addresses.js b/projects/angle/addresses.js index 80d5cb3b515..1640a311636 100644 --- a/projects/angle/addresses.js +++ b/projects/angle/addresses.js @@ -109,7 +109,142 @@ const guardianAddress = { celo: '0x434153aA505959BCD5aAa7c17445EB8d835086f5', } +const chains = [ + 'arbitrum', + 'ethereum', + 'optimism', + 'polygon', + 'avax', + 'xdai', + 'bsc', + 'celo', +] +const tokens = { + ethereum: { + EURA: '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8', + stEUR: '0x004626A008B1aCdC4c74ab51644093b155e59A23', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', + bC3M: '0x2F123cF3F37CE3328CC9B5b8415f9EC5109b45e7', + EURC: '0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c', + bERNX: '0x3f95AA88dDbB7D9D484aa3D482bf0a80009c52c9', + steakUSDC: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB', + bIB01: '0xCA30c93B02514f86d5C86a6e375E3A330B435Fb5', + }, + arbitrum: { + EURA: '0xFA5Ed56A203466CbBC2430a43c66b9D8723528E7', + stEUR: '0x004626A008B1aCdC4c74ab51644093b155e59A23', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', + }, + optimism: { + EURA: '0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', + VELO: '0x3c8B650257cFb5f272f799F5e2b4e65093a11a05', + }, + polygon: { + EURA: '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + }, + avax: { + sBUSD: '0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd', + EURA: '0xAEC8318a9a59bAEb39861d10ff6C7f7bf1F96C57', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + }, + xdai: { + EURA: '0x4b1E2c2762667331Bc91648052F646d1b0d35984', + stEUR: '0x004626A008B1aCdC4c74ab51644093b155e59A23', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', + }, + bsc: { + TUSD: '0x40af3827f39d0eacbf4a168f8d4ee67c121d11c9', + EURA: '0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89', + USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', + }, + celo: { + EURA: '0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049', + stEUR: '0x004626A008B1aCdC4c74ab51644093b155e59A23', + 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, diff --git a/projects/angle/index.js b/projects/angle/index.js index 955628e87be..726079fcb15 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -9,6 +9,7 @@ const { TreasuryTokenAddresses, governorAddress, guardianAddress, + stablecoins, } = require("./addresses.js"); const ANGLE = "0x31429d1856ad1377a8a0079410b297e1a9e214c2"; @@ -38,6 +39,25 @@ async function getVaultManagersFromAPI(api) { 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; @@ -116,17 +136,16 @@ async function tvl(api) { totPoolTokenSupply; sdk.util.sumSingleBalance(balances, EUROC, eurocBalance); - // Transmuter - if (api.timestamp > 1691656362) { - let collaterals = await api.call({ - abi: transmuter_abi["getCollateralList"], - target: agEUR.transmuter, - }); - - collaterals.forEach((collateral, i) => { - tokensAndOwners.push([collateral, agEUR.transmuter]); - }); - } + //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 @@ -142,9 +161,21 @@ async function tvl(api) { const guardianTokens = TreasuryTokenAddresses["guardian"][chain]; guardianTokens.forEach((token) => { tokensAndOwners.push([token, guardianAddress[chain]]); + }) + + // Treasury - Stablecoins + const treasuriesTokens = stablecoins + .map(({ treasury, treasuryTokens }) => + treasuryTokens?.[chain]?.map((token) => [token, treasury]) + ) + .flat(2) + tokensAndOwners.push(treasuriesTokens) + + return sumTokens2({ + api, + balances, + tokensAndOwners, }); - - return sumTokens2({ balances, api, tokensAndOwners }); } /* @@ -156,6 +187,7 @@ module.exports = { hallmarks: [ [Math.floor(new Date("2023-03-13") / 1e3), "Euler was hacked"], [Math.floor(new Date("2023-08-02") / 1e3), "Migration to v2 (Transmuter)"], + [Math.floor(new Date("2024-03-14") / 1e3), "Rebrading of agEUR to EURA"], ], ethereum: { staking: staking(veANGLE, ANGLE, "ethereum"), From 8400fb0052bec0ebc843f095315573917a856d84 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 28 Mar 2024 09:49:40 +0100 Subject: [PATCH 0958/2004] minor fix --- projects/angle/addresses.js | 4 +- projects/handlefi-hsp/index.js | 2 +- projects/handlefi/abi.json | 6 --- projects/handlefi/index.js | 85 ++-------------------------------- projects/zoro/index.js | 20 +++----- 5 files changed, 14 insertions(+), 103 deletions(-) delete mode 100644 projects/handlefi/abi.json diff --git a/projects/angle/addresses.js b/projects/angle/addresses.js index 1640a311636..81126b08b0b 100644 --- a/projects/angle/addresses.js +++ b/projects/angle/addresses.js @@ -211,7 +211,7 @@ const stablecoin = { 'CRV', 'CVX', 'DAI', - 'EURA', + // 'EURA', 'WETH', 'bC3M', 'EURC', @@ -231,7 +231,7 @@ const stablecoin = { 'CRV', 'CVX', 'DAI', - 'USDA', + // 'USDA', 'WETH', 'VELO', 'bERNX', diff --git a/projects/handlefi-hsp/index.js b/projects/handlefi-hsp/index.js index 1f8f7b5b5da..857ff4d8544 100644 --- a/projects/handlefi-hsp/index.js +++ b/projects/handlefi-hsp/index.js @@ -7,7 +7,7 @@ const fxTokens = { module.exports = { arbitrum: { - tvl: sumTokensExport({ owner: hspPool, tokens: [fxTokens.usd] }), + tvl: sumTokensExport({ owner: hspPool, tokens: [] }), }, methodology: "TVL on arbitrum is the sum of all handle synthetic perpetuals (hSP) deposits", } diff --git a/projects/handlefi/abi.json b/projects/handlefi/abi.json deleted file mode 100644 index d9651e07a73..00000000000 --- a/projects/handlefi/abi.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "rari_dir.pools": "function pools(uint256) view returns (string name, address creator, address comptroller, uint256 blockPosted, uint256 timestampPosted)", - "comptroller.getAllMarkets": "address[]:getAllMarkets", - "comptroller.underlying": "address:underlying", - "comptroller.getCash": "uint256:getCash" -} \ No newline at end of file diff --git a/projects/handlefi/index.js b/projects/handlefi/index.js index 411ce977eee..afce90cae45 100644 --- a/projects/handlefi/index.js +++ b/projects/handlefi/index.js @@ -1,96 +1,19 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk") const { sumTokens2 } = require("../helper/unwrapLPs") -const {pool2 } = require("../helper/pool2") -const abi = require("./abi.json"); +const { staking } = require("../helper/staking") -const chain = 'arbitrum' - -// Arbitrum TVL -const transformArbitrumAddress = addr => `arbitrum:${addr}` const treasuryContract = "0x5710B75A0aA37f4Da939A61bb53c519296627994" -const WETH_arbitrum = ADDRESSES.arbitrum.WETH -const FOREX_arbitrum = "0xDb298285FE4C5410B05390cA80e8Fbe9DE1F259B" -const treasuryTokens = [WETH_arbitrum, ] -const perpsVault = "0x1785e8491e7e9d771b2A6E9E389c25265F06326A" -// Arbitrum Staking const WETH_FOREX_sushi_LP = '0x9745e5cc0522827958ee3fc2c03247276d359186' const LP_staking_contract = '0x5cdeb8ff5fd3a3361e27e491696515f1d119537a' -// Eth-mainnet TVL -const fuse_pool_directory = '0x835482FE0532f169024d5E9410199369aAD5C77E' -const fuse_pool_ids = [72, 116] -const fxTokens = { - aud: "0x7E141940932E3D13bfa54B224cb4a16510519308", - eur: "0x116172B2482c5dC3E6f445C16Ac13367aC3FCd35", - php: "0x3d147cD9aC957B2a5F968dE9d1c6B9d0872286a0", -} - -async function tvl(_, _b, {[chain]: block }) { - const balances = await sumTokens2({ chain, block, tokensAndOwners: [ - // [WETH_arbitrum, perpsVault], - [WETH_arbitrum, treasuryContract], - ] }) - return balances -} - -// Eth-mainnet TVL is locked in RariCapital Fuse pool #72 and #116 -async function ethereum_tvl(timestamp, ethBlock, chainBlocks) { - const balances = {} - - for (const fuse_pool_id of fuse_pool_ids) { - // Get pool 72 or 116 metadata from onchain call - const {output: pool} = await sdk.api.abi.call({ - target: fuse_pool_directory, - params: fuse_pool_id, - abi: abi['rari_dir.pools'], - block: ethBlock, - chain: 'ethereum' - }) - const fuse_comptroller = pool.comptroller - - // Get markets from comptroller - const {output: markets} = await sdk.api.abi.call({ - target: fuse_comptroller, - abi: abi['comptroller.getAllMarkets'], - block: ethBlock, - chain: 'ethereum' - }) - - // Get markets balances of underlying - const [ {output: underlying}, {output: balance}] = await Promise.all([ - sdk.api.abi.multiCall({ - calls: markets.map(m => ({ target: m })), - abi: abi['comptroller.underlying'], - block: ethBlock, - chain: "ethereum", - }), - sdk.api.abi.multiCall({ - calls: markets.map(m => ({ target: m })), - abi: abi['comptroller.getCash'], - block: ethBlock, - chain: "ethereum", - }), - ]) - - underlying.forEach((t, i) => { - sdk.util.sumSingleBalance(balances, t.output, balance[i].output) - }) - } - // Set to zero balance of fxTokens, which are not collateral but are backed by the other assets of rari pools - for (const [key, value] of Object.entries(fxTokens)) { - delete balances[value]; - } - return balances +async function tvl(api) { + return sumTokens2({ api, owner: treasuryContract, tokens: [ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.WETH] }) } module.exports = { arbitrum: { tvl, - pool2: pool2(LP_staking_contract, WETH_FOREX_sushi_LP, "arbitrum") + pool2: staking(LP_staking_contract, WETH_FOREX_sushi_LP) }, - // ethereum: { - // tvl: ethereum_tvl, - // }, 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/zoro/index.js b/projects/zoro/index.js index 022434beefe..515e169deeb 100644 --- a/projects/zoro/index.js +++ b/projects/zoro/index.js @@ -1,25 +1,19 @@ -const sdk = require('@defillama/sdk'); -const { compoundExports2 } = require('../helper/compound'); +const sdk = require('@defillama/sdk') +const { compoundExports2 } = require('../helper/compound') -const corePool = { +const coreExports = compoundExports2({ comptroller: "0x90f2810B85f02122159cB18f6abF2776a7Ca3152", - chain: "era", cether: "0x3a6F5eA6b9B781C37F25164D9c25534eDd87d290", -}; +}) -const coreExports = compoundExports2(corePool); - -const degenPool = { +const degenExports = compoundExports2({ comptroller: "0x410ffcC8f37dCb3116cA8F59B30CCbe4c60F2385", - chain: "era", cether: "0x2ff7bF02a7C4f63fBc3b764A12c723B2abdA2905", -}; - -const degenExports = compoundExports2(degenPool); +}) 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 From 4d18b34a3bc3a1a1a251aacfc84a9bcdb855e137 Mon Sep 17 00:00:00 2001 From: Incognito Person <165199008+incognitofinancial@users.noreply.github.com> Date: Thu, 28 Mar 2024 12:00:45 +0300 Subject: [PATCH 0959/2004] add adapter for Incognito Financial (#9590) --- projects/incognito/config.js | 76 ++++++++++++++++++++++++++++++++++++ projects/incognito/index.js | 14 +++++++ 2 files changed, 90 insertions(+) create mode 100644 projects/incognito/config.js create mode 100644 projects/incognito/index.js diff --git a/projects/incognito/config.js b/projects/incognito/config.js new file mode 100644 index 00000000000..0721eb57d81 --- /dev/null +++ b/projects/incognito/config.js @@ -0,0 +1,76 @@ +const coreAssets = require("../helper/coreAssets.json"); +const contract = "0x43D037A562099A4C2c95b1E2120cc43054450629"; + +module.exports = { + chains: [ + { + name: "ethereum", + tokens: [ + coreAssets.null, + coreAssets.ethereum.DAI, + coreAssets.ethereum.SAI, + coreAssets.ethereum.LINK, + "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "0x4F9254C83EB525f9FCf346490bbb3ed28a81C667", + "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", + "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", + coreAssets.ethereum.BAT, + "0x55296f69f40Ea6d20E478533C15A6B08B654E758", + coreAssets.ethereum.AAVE, + "0x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa", + "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", + "0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d", + "0xf34960d9d60be18cC1D5Afc1A6F012A723a28811", + "0x4c11249814f11b9346808179Cf06e71ac328c1b5", + "0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD", + ], + holders: [contract], + }, + { + name: "bsc", + tokens: [ + coreAssets.null, + coreAssets.bsc.USDC, + coreAssets.bsc.USDT, + "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", + coreAssets.bsc.BUSD, + "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", + "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", + coreAssets.bsc.ETH, + coreAssets.bsc.BTCB, + "0xbA2aE424d960c26247Dd6c32edC70B295c744C43", + "0xd5d0322b6bAb6a762C79f8c81A0B674778E13aeD", + "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", + "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", + coreAssets.bsc.WBNB, + "0x4338665CBB7B2485A8855A139b75D5e34AB0DB94", + ], + holders: [contract], + }, + { + name: "avax", + tokens: [coreAssets.null, coreAssets.avax.USDC, coreAssets.avax.USDt], + holders: [contract], + }, + { + name: "polygon", + tokens: [ + coreAssets.null, + coreAssets.polygon.WMATIC_1, + coreAssets.polygon.USDC, + coreAssets.polygon.USDT, + coreAssets.polygon.WBTC, + coreAssets.polygon.USDC_CIRCLE, + coreAssets.polygon.DAI, + coreAssets.polygon.WETH_1, + "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39", + ], + holders: [contract], + }, + { + name: "fantom", + tokens: [coreAssets.null, coreAssets.fantom.WFTM], + holders: [contract], + }, + ], +}; diff --git a/projects/incognito/index.js b/projects/incognito/index.js new file mode 100644 index 00000000000..b2f7002b2e2 --- /dev/null +++ b/projects/incognito/index.js @@ -0,0 +1,14 @@ +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 }), + }; +}); From f999b1df6632a6c8aeccd18589cef11095bb9b56 Mon Sep 17 00:00:00 2001 From: Gull Network <165013002+GullNetwork@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:05:32 +0800 Subject: [PATCH 0960/2004] Add GullNetwork adapter (#9591) * Add GullNetwork adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gullnetwork/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/gullnetwork/index.js diff --git a/projects/gullnetwork/index.js b/projects/gullnetwork/index.js new file mode 100644 index 00000000000..7c2553ee150 --- /dev/null +++ b/projects/gullnetwork/index.js @@ -0,0 +1,24 @@ + +const FACTORY_SINGLETON_ADDR = '0xFc6387f581d2A827F183A9ea68f07063F99744dE'; + +const tvl = async (api) => { + const vaults = await api.fetchList({ lengthAbi: 'length', itemAbi: 'stakingVaults', target: FACTORY_SINGLETON_ADDR }) + const stakedTokens = await api.multiCall({ calls: vaults, abi: 'address:stakedToken', }) + return api.sumTokens({ tokensAndOwners2: [stakedTokens, vaults] }); +} + +module.exports = { + start: 1710844331, // May-17-2024 12:45:31 PM +UTC + methodology: 'GullNetwork TVL including total values of assets staked in our staking vaults.', +} + +const config = { + ethereum: {}, + bsc: {}, + manta: {}, + base: {}, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 5798edffca34a5e4756daaa9021eb7293c2a6bda Mon Sep 17 00:00:00 2001 From: Behrang Norouzinia Date: Thu, 28 Mar 2024 12:36:51 +0330 Subject: [PATCH 0961/2004] Update Hipo to v2 (#9583) --- projects/hipo/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/hipo/index.js b/projects/hipo/index.js index 84ebee10d09..2291c97adb9 100644 --- a/projects/hipo/index.js +++ b/projects/hipo/index.js @@ -5,10 +5,11 @@ module.exports = { methodology: 'Actual amount of TON staked on Hipo', hallmarks: [ [1698685200, 'Hipo Launch'], + [1710821940, 'Hipo v2'], ], ton: { tvl: async () => { - const result = await call({ target: 'EQBNo5qAG8I8J6IxGaz15SfQVB-kX98YhKV_mT36Xo5vYxUa', abi: 'get_treasury_state' }) + const result = await call({ target: 'EQCLyZHP4Xe8fpchQz76O-_RmUhaVc_9BAoGyJrwJrcbz2eZ', abi: 'get_treasury_state' }) return { 'coingecko:the-open-network': result[0] / 1e9, } From 7dc9315b9cea836aa7572e486a533da0909a5a9d Mon Sep 17 00:00:00 2001 From: 0x0davidxeth <165115594+0x0davidxeth@users.noreply.github.com> Date: Thu, 28 Mar 2024 16:09:51 +0700 Subject: [PATCH 0962/2004] add flast protocol tvl (#9587) * Submit: flast protocol TVL * minor fix --------- Co-authored-by: 0x000000 <0x.cristian.cs@gmail.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/flast-protocol/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/flast-protocol/index.js diff --git a/projects/flast-protocol/index.js b/projects/flast-protocol/index.js new file mode 100644 index 00000000000..8ae381c1230 --- /dev/null +++ b/projects/flast-protocol/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport, nullAddress } = require("../helper/unwrapLPs") + +module.exports = { + methodology: "Value of user deposited ETH on Flast Protocol is considered as TVL", + blast: { + tvl: sumTokensExport({ owner: '0x7474796140775d8719584AA9923102ad7bf56490', tokens: [nullAddress] }), + }, +} \ No newline at end of file From 79b18606ddeb3bc9684f0f5308269dc893b3c51b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:31:47 +0100 Subject: [PATCH 0963/2004] Add BurveProtocol (#9595) * add BurveProtocol * code refactor --------- Co-authored-by: unknown --- projects/burve-protocol/index.js | 21 +++++++++++++++++++++ projects/helper/cache/getLogs.js | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 projects/burve-protocol/index.js diff --git a/projects/burve-protocol/index.js b/projects/burve-protocol/index.js new file mode 100644 index 00000000000..9083ef30b8d --- /dev/null +++ b/projects/burve-protocol/index.js @@ -0,0 +1,21 @@ +const { getLogs2 } = require('../helper/cache/getLogs') +const config = { + bsc: { fromBlock: 35953570 }, + arbitrum: { fromBlock: 184614246 }, +} + +module.exports = { + start: 1707300000, + methodology: "BurveProtocol TVL including total values of assets locked in the tokens which is 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 }) + return api.sumTokens({ tokensAndOwners2: [uTokens, tokens] }) + } + } +}) diff --git a/projects/helper/cache/getLogs.js b/projects/helper/cache/getLogs.js index d0daf3a570c..79614754976 100644 --- a/projects/helper/cache/getLogs.js +++ b/projects/helper/cache/getLogs.js @@ -110,7 +110,13 @@ async function getLogs({ target, } } +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}) { + const res = await getLogs({ target: target ?? factory, topic, keys, fromBlock, toBlock, topics, api, eventAbi, onlyArgs, extraKey, skipCache, onlyUseExistingCache, customCacheFunction, skipCacheRead }) + return res.map(transform) +} + module.exports = { getLogs, + getLogs2, getAddress: s => "0x" + s.slice(26, 66), } \ No newline at end of file From 6afdb4a13b23c9fb04edcc86d4d152c197c3babd Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:28:41 +0000 Subject: [PATCH 0964/2004] add tokens aark (#9596) --- projects/aark/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/aark/index.js b/projects/aark/index.js index b587b7fd42c..83e1c528838 100644 --- a/projects/aark/index.js +++ b/projects/aark/index.js @@ -17,7 +17,9 @@ async function tvl(api) { '0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407', '0xD9535bB5f58A1a75032416F2dFe7880C30575a41', '0xB686BcB112660343E6d15BDb65297e110C8311c4', - '0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8' + '0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8', + ADDRESSES.arbitrum.WBTC, + '0x9bEcd6b4Fb076348A455518aea23d3799361FE95' // weETH-25APR2024 ] }) } From 0891a4c2bc36c9cc219a6c1bb38f53de84b261e6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 28 Mar 2024 12:19:20 +0100 Subject: [PATCH 0965/2004] Add permitFailure flag to tvlConfig --- projects/helper/treasury.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/treasury.js b/projects/helper/treasury.js index 0f3c40a3e7e..34b06626055 100644 --- a/projects/helper/treasury.js +++ b/projects/helper/treasury.js @@ -10,7 +10,7 @@ function treasuryExports(config) { const exportObj = {} chains.forEach(chain => { let { ownTokenOwners = [], ownTokens = [], owners = [], tokens = [], blacklistedTokens = [] } = config[chain] - const tvlConfig = { ...config[chain], } + const tvlConfig = { permitFailure: true, ...config[chain], } if (chain === 'solana') { tvlConfig.solOwners = owners tvlConfig.getAllTokenAccounts = true From 62f80a16cd4ab94d44c1f112a7c72b59615e1a67 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 28 Mar 2024 16:16:02 +0100 Subject: [PATCH 0966/2004] fix ociswap --- projects/ociswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ociswap/index.js b/projects/ociswap/index.js index 06937ba02ec..2dbd9de2347 100644 --- a/projects/ociswap/index.js +++ b/projects/ociswap/index.js @@ -21,7 +21,7 @@ module.exports = { } }) 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) + const owners = data.map(i => i.metadata.items.find(i => i.key === 'liquidity_pool')?.value?.typed?.value).filter(i => i) return sumTokens({ owners, api, }) }, }, From d66f67a097ab0b9188da9463d11bab6857b8e158 Mon Sep 17 00:00:00 2001 From: carlosalv098 <76534971+carlosalv098@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:32:38 -0600 Subject: [PATCH 0967/2004] add Hatom TAO Liquid Staking SDK Adapter (#9600) * add Hatom TAO Liquid Staking SDK Adapter * rename cashReserve to cash * change cash token to wtao --- projects/hatom-tao-liquid-staking/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/hatom-tao-liquid-staking/index.js diff --git a/projects/hatom-tao-liquid-staking/index.js b/projects/hatom-tao-liquid-staking/index.js new file mode 100644 index 00000000000..92a65f4f77c --- /dev/null +++ b/projects/hatom-tao-liquid-staking/index.js @@ -0,0 +1,22 @@ +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, + }, +}; From c9decbf3ec08fd188918b7a76778d3938749cc3b Mon Sep 17 00:00:00 2001 From: Ethereum Flipper <165300338+etherflipdev@users.noreply.github.com> Date: Thu, 28 Mar 2024 19:33:19 +0300 Subject: [PATCH 0968/2004] added an adapter for calculating etherflip TVL (#9601) --- projects/etherflip/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/etherflip/index.js diff --git a/projects/etherflip/index.js b/projects/etherflip/index.js new file mode 100644 index 00000000000..3e38c9bc907 --- /dev/null +++ b/projects/etherflip/index.js @@ -0,0 +1,13 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); +const coreAssets = require("../helper/coreAssets.json"); + +const etherFlipPool = "0xE5a04D98538231b0fAb9ABa60cd73cE4fF3039DF"; + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owners: [etherFlipPool], + tokens: [coreAssets.null], + }), + }, +}; From 894d197d31022cd5df5823f1ba311f83d9234f25 Mon Sep 17 00:00:00 2001 From: Cate <165231790+catepad@users.noreply.github.com> Date: Thu, 28 Mar 2024 19:34:18 +0300 Subject: [PATCH 0969/2004] add staking adapter for Cate (#9599) --- projects/cateventures/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/cateventures/index.js diff --git a/projects/cateventures/index.js b/projects/cateventures/index.js new file mode 100644 index 00000000000..486bf3ee921 --- /dev/null +++ b/projects/cateventures/index.js @@ -0,0 +1,12 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + methodology: "Catecoin staking pool", + bsc: { + tvl: () => ({}), + staking: staking( + "0x2F9FbB154e6C3810f8B2D786cB863F8893E43354", + "0xE4FAE3Faa8300810C835970b9187c268f55D998F" + ), + }, +}; From 2011f4dec5174ef6f1268a6dee28383a530d76a0 Mon Sep 17 00:00:00 2001 From: web3dev00 <120393981+web3dev00@users.noreply.github.com> Date: Thu, 28 Mar 2024 21:44:45 +0500 Subject: [PATCH 0970/2004] chore: added optionBlitz TVL adapter (#9597) --- projects/optionBlitz/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/optionBlitz/index.js diff --git a/projects/optionBlitz/index.js b/projects/optionBlitz/index.js new file mode 100644 index 00000000000..6d58fb2e7ba --- /dev/null +++ b/projects/optionBlitz/index.js @@ -0,0 +1,14 @@ +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 = { + start: 194784191, + arbitrum: { + tvl: sumTokensExport({ owners: [treasury], tokens: assets }), + staking: sumTokensExport({ owners: [treasury], tokens: [BLX] }), + }, +} From e7c589e4bf7fc48a3a01e3515262134ac7d7c49a Mon Sep 17 00:00:00 2001 From: Denis Kostylev Date: Fri, 29 Mar 2024 00:47:14 +0800 Subject: [PATCH 0971/2004] Add missing hallmarks and blast protocol contract (#9593) * add tvls for all chains * add missing hallmarks * add protocol contract to blast * reduce hallmarks list --- projects/envelop/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/envelop/index.js b/projects/envelop/index.js index c596f517eb3..6001a00a6e7 100644 --- a/projects/envelop/index.js +++ b/projects/envelop/index.js @@ -5,6 +5,10 @@ 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: { @@ -98,7 +102,8 @@ const config = { }, blast: { protocolContracts: [ - '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128' + '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128', + '0x2333615f43f898cD4368513fa59b0fDcF945f492' ], tokens: [ ADDRESSES.null, @@ -112,4 +117,4 @@ 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) -}) \ No newline at end of file +}) From f13452ee22c93e9996d68cd096df456520f4a63a Mon Sep 17 00:00:00 2001 From: coke <118247347+cokes123@users.noreply.github.com> Date: Fri, 29 Mar 2024 17:36:56 +0800 Subject: [PATCH 0972/2004] feat: fix Staq wrong address (#9606) Co-authored-by: cokes123 --- projects/bitstaq/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/bitstaq/index.js b/projects/bitstaq/index.js index fec86a8fc66..39a290df990 100644 --- a/projects/bitstaq/index.js +++ b/projects/bitstaq/index.js @@ -4,7 +4,7 @@ async function tvl(api) { const mapLockedAmount = await api.call({ target: "0x000000000000000000000000000000000000d011", abi: "function getAccountTotalLockedGold(address) view returns (uint256)", - params: ["0x2Ef75B32C26bC92977998C6D19e527E49fAD0D9B"], + params: ["0x9bD1E0a3A727D0d4F4e9A6d59022E071DDc79924"], }); api.add(ADDRESSES.map.WMAPO, mapLockedAmount) From 3057a09f3dd248b580285222ef78236481d1c77d Mon Sep 17 00:00:00 2001 From: yuval-weiss <43820038+yuval-weiss@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:18:07 +0100 Subject: [PATCH 0973/2004] add UNO to starknet core assets (#9608) --- projects/helper/coreAssets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 082052c2087..f612af8172b 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1253,7 +1253,8 @@ "ETH": "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", "WSTETH": "0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2", "LUSD": "0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac", - "RETH": "0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610" + "RETH": "0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610", + "UNO": "0x0719b5092403233201aa822ce928bd4b551d0cdb071a724edd7dc5e5f57b7f34" }, "ton": { "TON": "0x0000000000000000000000000000000000000000", From d6279c4d20f2404823fe96f4825655da110bc359 Mon Sep 17 00:00:00 2001 From: SavmDex <165354848+SavmDex@users.noreply.github.com> Date: Fri, 29 Mar 2024 17:38:02 +0700 Subject: [PATCH 0974/2004] SavmDex (#9607) * SavmDex * Update package-lock.json and tokenMapping.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- package-lock.json | 6 +++--- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ projects/savmdex/index.js | 11 +++++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 projects/savmdex/index.js diff --git a/package-lock.json b/package-lock.json index d12ac51f599..cff6555ac7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.46", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.46.tgz", - "integrity": "sha512-fANQAVsb+I/Ha9TlAB3T6VdWLh+SWWvhWYSOxm+x0fD6fjYNFkt8N6N1nEa6U8DIcl0vHetfBLQll4D+o3Rt5A==", + "version": "5.0.49", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.49.tgz", + "integrity": "sha512-CggIAtMd5lwOpIPoGPkTMqS2KYVIectlt1cOHUc/O/tcBOQ9XSy2OfF4JI8tIMuAJQSvYlPnEtxpFkUwuFt27A==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index ab0a0f53de4..353f8ce5c11 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -16,6 +16,7 @@ "avax", "base", "beam", + "bevm", "bfc", "bifrost", "binance", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 42b1f084d75..814f56b43d0 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -86,6 +86,9 @@ const fixBalancesTokens = { '0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8': { coingeckoId: 'rosy', decimals: 18 }, '0x9ca066f00e55b90623efe323feb2a649686538b6': { coingeckoId: 'tether', decimals: 6 }, }, + bevm: { + '0xb5136feba197f5ff4b765e5b50c74db717796dcd': { coingeckoId: 'bitcoin', decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/savmdex/index.js b/projects/savmdex/index.js new file mode 100644 index 00000000000..2e61cf6b5ee --- /dev/null +++ b/projects/savmdex/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + + bevm: { + tvl: getUniTVL({ + factory: "0xc008f29AaddA007b123919a5a0561c1B2E37864A", + useDefaultCoreAssets: true, + }), + }, +}; From e95c7b5fa31bc31dab87df652c8a45a38131f080 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:39:28 +0100 Subject: [PATCH 0975/2004] minor fix --- projects/savmdex/index.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/projects/savmdex/index.js b/projects/savmdex/index.js index 2e61cf6b5ee..40771cff902 100644 --- a/projects/savmdex/index.js +++ b/projects/savmdex/index.js @@ -1,11 +1,2 @@ -const { getUniTVL } = require("../helper/unknownTokens"); -module.exports = { - misrepresentedTokens: true, - - bevm: { - tvl: getUniTVL({ - factory: "0xc008f29AaddA007b123919a5a0561c1B2E37864A", - useDefaultCoreAssets: true, - }), - }, -}; +const { uniTvlExport } = require("../helper/unknownTokens"); +module.exports = uniTvlExport('bevm', '0xc008f29AaddA007b123919a5a0561c1B2E37864A') \ No newline at end of file From 99384d96ee7030789be80f37cc17eb54737bb0c8 Mon Sep 17 00:00:00 2001 From: Meeeeeeds <165335341+meedsfinance@users.noreply.github.com> Date: Fri, 29 Mar 2024 13:41:51 +0300 Subject: [PATCH 0976/2004] add Meeds (#9605) * add meeds sdk adapter * Refactor staking contracts and token in meeds/index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/meeds/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/meeds/index.js diff --git a/projects/meeds/index.js b/projects/meeds/index.js new file mode 100644 index 00000000000..24295af042f --- /dev/null +++ b/projects/meeds/index.js @@ -0,0 +1,9 @@ +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 From 3e78596b08226e2750a33dcaf2f21a4226a2cf10 Mon Sep 17 00:00:00 2001 From: broomdev <158791179+broomdev@users.noreply.github.com> Date: Fri, 29 Mar 2024 06:42:54 -0400 Subject: [PATCH 0977/2004] added tvl for bloom trading (#9604) --- projects/bloom-trading/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/bloom-trading/index.js diff --git a/projects/bloom-trading/index.js b/projects/bloom-trading/index.js new file mode 100644 index 00000000000..dcbf494f261 --- /dev/null +++ b/projects/bloom-trading/index.js @@ -0,0 +1,13 @@ +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 From 3429e68d7c2d431a07ee925ab2296cf0e9d4254a Mon Sep 17 00:00:00 2001 From: RomanYarinski <139853615+RomanYarinski@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:46:12 +0100 Subject: [PATCH 0978/2004] Vest project addapter (#9603) * feat: add vest adapter * Refactor TVL calculation in Vest module --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/vest/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/vest/index.js diff --git a/projects/vest/index.js b/projects/vest/index.js new file mode 100644 index 00000000000..6a9e98895b2 --- /dev/null +++ b/projects/vest/index.js @@ -0,0 +1,10 @@ +const { staking } = require("../helper/staking"); +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + methodology: "Total USDC locked in the Vest Exchange.", + start: 1710709200, + era: { + tvl: staking('0xf7483A1464DeF6b8d5A6Caca4A8ce7E5be8F1F68', ADDRESSES.era.USDC), + }, +} \ No newline at end of file From 262c66cbdfd0d220945f6fb674da104616fc121a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:53:02 +0100 Subject: [PATCH 0979/2004] Add hallmarks and update arbitrum.borrowed function --- projects/lava/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/lava/index.js b/projects/lava/index.js index b1985230c97..9c4e048426b 100644 --- a/projects/lava/index.js +++ b/projects/lava/index.js @@ -91,4 +91,10 @@ module.exports = { methodology: methodologies.lendingMarket, arbitrum: getMetrics(), base: getMetrics(), + hallmarks: [ + [Math.floor(new Date('2024-03-28')/1e3), 'Protocol was exploited'], + ], }; + +module.exports.arbitrum.borrowed = () => ({}) + From a055e93b7cfd039afb07858fb3ab216ded6de9aa Mon Sep 17 00:00:00 2001 From: rudewalt Date: Fri, 29 Mar 2024 15:09:33 +0300 Subject: [PATCH 0980/2004] Marginly: add blast chain (#9610) * add blast chain * fix * remove skipCache argument --------- Co-authored-by: Ivan Sanin --- projects/marginly/config.js | 8 ++++++++ projects/marginly/index.js | 36 ++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/projects/marginly/config.js b/projects/marginly/config.js index 259e58129c5..bea36ae5894 100644 --- a/projects/marginly/config.js +++ b/projects/marginly/config.js @@ -7,4 +7,12 @@ module.exports = { }, ], }, + blast: { + factories: [ + { + factory: "0x1768Faee0A63927FeB81100046f5D63BfE0f08dB", + fromBlock: 501400, + }, + ], + }, }; diff --git a/projects/marginly/index.js b/projects/marginly/index.js index 5da2c07e035..a1765763cf5 100644 --- a/projects/marginly/index.js +++ b/projects/marginly/index.js @@ -5,7 +5,7 @@ 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]; @@ -13,15 +13,31 @@ Object.keys(config).forEach((chain) => { tvl: async (api) => { const ownerTokens = []; for (const { factory, fromBlock } of factories) { - const 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, - }); + let logs; + if (chain === "arbitrum") { + // 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]) ); From c07fe6a49d16e508a9d74908ecd40dbaacb3e46e Mon Sep 17 00:00:00 2001 From: idea2409 <60475612+idea2409@users.noreply.github.com> Date: Fri, 29 Mar 2024 19:12:45 +0700 Subject: [PATCH 0981/2004] add xlipless dex (#9609) Co-authored-by: ideapacito --- projects/fwx/index.js | 66 ++++++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/projects/fwx/index.js b/projects/fwx/index.js index 71aea21e9b1..104004424dd 100644 --- a/projects/fwx/index.js +++ b/projects/fwx/index.js @@ -2,31 +2,59 @@ const { sumTokensExport } = require("../helper/unwrapLPs"); const ADDRESSES = require("../helper/coreAssets.json"); const VECTOR = require("../vector/vectorContracts.json"); -const tokens = { - COQ: "0x420FcA0121DC28039145009570975747295f2329", -}; const coreModuleProxy = "0xceE74C8c242047c85e6833633AbB7A4Cd8465757"; -const pools = { - WAVAX: "0x7F91272ff1A0114743D2df95F5905F9613Fd92b3", - USDC: "0x94732A5319e1feAcc7d08e08Fdc4C2c7f5123143", - COQ: "0xc97d9B3971BfE1B8Ac8EA7f990Df721d8f695223", - SAVAX: "0xe57a4042eA63Df072B2cf6352F9779E4D2445A92", - core: "0xceE74C8c242047c85e6833633AbB7A4Cd8465757", +const xliplessDex = "0x82E90fB94fd9a5C19Bf38648DD2C9639Bde67c74"; + +const tokens = { + USDC: { + pool: "0x94732A5319e1feAcc7d08e08Fdc4C2c7f5123143", + contractAddr: ADDRESSES.avax.USDC, + }, + WAVAX: { + pool: "0x7F91272ff1A0114743D2df95F5905F9613Fd92b3", + contractAddr: ADDRESSES.avax.WAVAX, + }, + SAVAX: { + pool: "0xe57a4042eA63Df072B2cf6352F9779E4D2445A92", + contractAddr: VECTOR.tokens.SAVAX.address, + }, + WETH_e: { + pool: "0xcc7BcEf73d2e57d80d0F42D41088dB2A4C1F9146", + contractAddr: ADDRESSES.avax.WETH_e, + }, + COQ: { + pool: "0xc97d9B3971BfE1B8Ac8EA7f990Df721d8f695223", + contractAddr: "0x420FcA0121DC28039145009570975747295f2329", + }, + QI: { + pool: "0xCfc3d8465cfde6747B8b94968e1893F6E5680045", + contractAddr: "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5", + }, + JOE: { + pool: "0xCB4bd69524A1a398e2112Dc22593F18eD5B3eCD6", + contractAddr: "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd", + }, + GMX: { + pool: "0xDBbA61EE0770c99Adc9150c1C98cbd4DEA2F925A", + contractAddr: "0x62edc0692BD897D2295872a9FFCac5425011c661", + }, + PNG: { + pool: "0x0599C838422Ed46681C41b563AAf179a24316F09", + contractAddr: "0x60781C2586D68229fde47564546784ab3fACA982", + }, }; +let tokenAndOwners = []; +for (const [symbol, token] of Object.entries(tokens)) { + tokenAndOwners.push([token.contractAddr, token.pool]); + tokenAndOwners.push([token.contractAddr, coreModuleProxy]); + tokenAndOwners.push([token.contractAddr, xliplessDex]); +} + module.exports = { avax: { tvl: sumTokensExport({ - tokensAndOwners: [ - [ADDRESSES.avax.WAVAX, pools.WAVAX], - [ADDRESSES.avax.USDC, pools.USDC], - [tokens.COQ, pools.COQ], - [VECTOR.tokens.SAVAX.address, pools.SAVAX], - [ADDRESSES.avax.WAVAX, coreModuleProxy], - [ADDRESSES.avax.USDC, coreModuleProxy], - [tokens.COQ, coreModuleProxy], - [VECTOR.tokens.SAVAX.address, coreModuleProxy], - ], + tokensAndOwners: tokenAndOwners, }), }, }; From 6a1f8bb6f1213decd1d7db942fb2d01e10cbe82f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Mar 2024 13:14:56 +0100 Subject: [PATCH 0982/2004] Update token addresses in project files --- projects/9inch-io/index.js | 3 ++- projects/Atrofarm/index.js | 2 +- projects/aera/index.js | 7 ++++--- projects/angle/addresses.js | 4 ++-- projects/earn-powercity-io/index.js | 3 ++- projects/fwx/index.js | 2 +- projects/helper/cex.js | 2 +- projects/helper/tokenMapping.js | 2 +- projects/hop/index.js | 3 ++- projects/incognito/config.js | 2 +- projects/izumi-iziswap/index.js | 2 +- projects/merlin-l2/index.js | 4 ++-- projects/preon/index.js | 3 ++- projects/rss3-staking/index.js | 3 ++- projects/satoshi-finance/index.js | 3 ++- projects/treasury/bitdao.js | 2 +- projects/treasury/hyperblast.js | 2 +- projects/zkLink/index.js | 14 +++++++------- 18 files changed, 35 insertions(+), 28 deletions(-) diff --git a/projects/9inch-io/index.js b/projects/9inch-io/index.js index d3f5a2a97eb..72c5c7cf42d 100644 --- a/projects/9inch-io/index.js +++ b/projects/9inch-io/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const { sumTokensExport } = require('../helper/unwrapLPs') const config = { @@ -12,7 +13,7 @@ const staking = { ['0x8b4cfb020aF9AcAd95AD80020cE8f67FBB2C700E', '0x0e173B11523feB064FD483209d0eD534831A2a86'], ['0x9565c2036963697786705120Fc59310F747bCfD0', '0xFEF11BfA82A66e845Cb7EF815B83B2d22C324131'], ['0x52Ada28F70BC8EBe5dd4381120d3CD76863919A8', '0x8A402a93469D5820079529CA093595e0d9AF62Ac'], - ['0x95B303987A60C71504D99Aa1b13B4DA07b0790ab', '0x0Ea7f06D7694058B82d46Fb5c9281e1843Aa8702'], + [ADDRESSES.pulse.PLSX, '0x0Ea7f06D7694058B82d46Fb5c9281e1843Aa8702'], ['0xDe0220b69CE3e855a0124433A8E8D093f53A6bE4', '0xa1EAee97ee29e2C80ee9F1321E0132f19b45A26A'], ] }, diff --git a/projects/Atrofarm/index.js b/projects/Atrofarm/index.js index a0cb7d559d9..0b5c48bd180 100644 --- a/projects/Atrofarm/index.js +++ b/projects/Atrofarm/index.js @@ -13,6 +13,6 @@ module.exports = masterchefExports({ module.exports.pulse.tvl = sdk.util.sumChainTvls([module.exports.pulse.tvl, sumTokensExport({ tokensAndOwners: [[ADDRESSES.pulse.DAI, '0x5726f36e62cf761332F5c655b68bc2E5D55ED083'], [ADDRESSES.pulse.WPLS, '0xc4d4fb6cAD2931e65C0BF44b2A3fA9C598ADd37B'], - ['0x95B303987A60C71504D99Aa1b13B4DA07b0790ab', '0x8615545328F1F6c8cefe8b48ad48c231731433ea']], + [ADDRESSES.pulse.PLSX, '0x8615545328F1F6c8cefe8b48ad48c231731433ea']], })]) diff --git a/projects/aera/index.js b/projects/aera/index.js index e8a9f4d0558..68431abbbd1 100644 --- a/projects/aera/index.js +++ b/projects/aera/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { cachedGraphQuery } = require("../helper/cache"); const { sumTokens2, } = require('../helper/unwrapLPs') @@ -12,7 +13,7 @@ const config = { comets: [ { address: '0xF25212E676D1F7F89Cd72fFEe66158f541246445', - baseToken: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' + baseToken: ADDRESSES.polygon.USDC } ], cometReward: '0x45939657d1CA34A8FA39A924B71D28Fe8431e581' @@ -24,11 +25,11 @@ const config = { comets: [ { address: '0xA17581A9E3356d9A858b789D68B4d866e593aE94', - baseToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' + baseToken: ADDRESSES.ethereum.WETH }, { address: '0xc3d688B66703497DAA19211EEdff47f25384cdc3', - baseToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + baseToken: ADDRESSES.ethereum.USDC } ], cometReward: '0x1B0e765F6224C21223AeA2af16c1C46E38885a40' diff --git a/projects/angle/addresses.js b/projects/angle/addresses.js index 81126b08b0b..e36103f28ef 100644 --- a/projects/angle/addresses.js +++ b/projects/angle/addresses.js @@ -148,7 +148,7 @@ const tokens = { USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', }, avax: { - sBUSD: '0xf04d3a8eb17b832fbebf43610e94bdc4fd5cf2dd', + sBUSD: ADDRESSES.avax.sBUSD, EURA: '0xAEC8318a9a59bAEb39861d10ff6C7f7bf1F96C57', USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', }, @@ -159,7 +159,7 @@ const tokens = { stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776', }, bsc: { - TUSD: '0x40af3827f39d0eacbf4a168f8d4ee67c121d11c9', + TUSD: ADDRESSES.bsc.TUSD, EURA: '0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89', USDA: '0x0000206329b97DB379d5E1Bf586BbDB969C63274', }, diff --git a/projects/earn-powercity-io/index.js b/projects/earn-powercity-io/index.js index 0317a510d8b..39d159f06ea 100644 --- a/projects/earn-powercity-io/index.js +++ b/projects/earn-powercity-io/index.js @@ -1,9 +1,10 @@ +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 = "0x95B303987A60C71504D99Aa1b13B4DA07b0790ab"; +const PLSX_ADDRESS = ADDRESSES.pulse.PLSX; // Staking holds LQTY tokens and receive share of protocol revenue const STAKING_ADDRESS = "0xd92DF13b6cd9eA8fc116b1865D2d72Be41d74B1a"; diff --git a/projects/fwx/index.js b/projects/fwx/index.js index 104004424dd..9875315810d 100644 --- a/projects/fwx/index.js +++ b/projects/fwx/index.js @@ -32,7 +32,7 @@ const tokens = { }, JOE: { pool: "0xCB4bd69524A1a398e2112Dc22593F18eD5B3eCD6", - contractAddr: "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd", + contractAddr: ADDRESSES.avax.JOE, }, GMX: { pool: "0xDBbA61EE0770c99Adc9150c1C98cbd4DEA2F925A", diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 146b5ae407d..353d6fe0ce0 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -96,7 +96,7 @@ const defaultTokens = { '0x64d0f55Cd8C7133a9D7102b13987235F486F2224', // BORG '0x925206b8a707096Ed26ae47C84747fE0bb734F59', //WBT ADDRESSES.ethereum.FDUSD, // FDUSD, - '0x83F20F44975D03b1b09e64809B757c47f942BEeA' //sdai + ADDRESSES.ethereum.SDAI //sdai ], tron: [ nullAddress, diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 814f56b43d0..72594d08043 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -63,7 +63,7 @@ const fixBalancesTokens = { 'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS': { coingeckoId: 'puzzle-swap', decimals: 8 }, }, zora: { - '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: 'ethereum', decimals: 18 }, }, imx: { [nullAddress]: { coingeckoId: 'immutable-x', decimals: 18 }, diff --git a/projects/hop/index.js b/projects/hop/index.js index a62d093cc06..a7e811cc0dc 100644 --- a/projects/hop/index.js +++ b/projects/hop/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { chainExports } = require('../helper/exports') const { sumTokens2 } = require('../helper/unwrapLPs') const { getConfig } = require('../helper/cache') @@ -41,7 +42,7 @@ function chainTvl(chain) { } } } - toa = toa.filter(([i, j]) => i && j && j !== '0x0000000000000000000000000000000000000000') + toa = toa.filter(([i, j]) => i && j && j !== ADDRESSES.null) return sumTokens2({ api, tokensAndOwners: toa, }) } } diff --git a/projects/incognito/config.js b/projects/incognito/config.js index 0721eb57d81..327ee7f15a7 100644 --- a/projects/incognito/config.js +++ b/projects/incognito/config.js @@ -10,7 +10,7 @@ module.exports = { coreAssets.ethereum.DAI, coreAssets.ethereum.SAI, coreAssets.ethereum.LINK, - "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + ADDRESSES.ethereum.INU, "0x4F9254C83EB525f9FCf346490bbb3ed28a81C667", "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 6f97ea81c75..f316834f155 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -38,7 +38,7 @@ const blacklistedTokens = [ '0x1382628e018010035999A1FF330447a0751aa84f', ADDRESSES.bsc.iUSD, // mantle iUSD '0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD - '0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D', // merlin iUSD + ADDRESSES.bsc.iUSD, // merlin iUSD ] Object.keys(poolHelpers).forEach(chain => { diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index 705e13f24fd..fe01e9abfdc 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -38,7 +38,7 @@ module.exports = { ownerTokens: [ [["0x7122985656e38BDC0302Db86685bb972b145bD3C"], "0x147A198d803D4a02b8bEc7CC78be1AbE0C3d93E5",], //sttone [[ADDRESSES.ethereum.USDC], "0x8bb6cae3f1cada07dd14ba951e02886ea6bba183",],//usdc - [["0x0000000000000000000000000000000000000000"],"0xC40329D3aE56Af6b0757C3fE53941DDCC3d92671",]] //eth + [[ADDRESSES.null],"0xC40329D3aE56Af6b0757C3fE53941DDCC3d92671",]] //eth }), }, arbitrum: { @@ -50,7 +50,7 @@ module.exports = { zkfair: { tvl: sumTokensExport({ owners: ["0x8E3e71f5c016A3c764D0D0210fF71F15BEa46e3b",], - tokens: ["0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b", "0x3f97bf3Cd76B5cA9D4A4E9cD8a73C24E32d6C193", "0x813bCb548F99Bc081e5EFeeAa65e3018befb92Ae","0x0000000000000000000000000000000000000000","0x1cD3E2A23C45A690a18Ed93FD1412543f464158F",] // eth usdt and wbtc and usdc and zkf + tokens: ["0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b", "0x3f97bf3Cd76B5cA9D4A4E9cD8a73C24E32d6C193", "0x813bCb548F99Bc081e5EFeeAa65e3018befb92Ae",ADDRESSES.null,"0x1cD3E2A23C45A690a18Ed93FD1412543f464158F",] // eth usdt and wbtc and usdc and zkf }), }, }; diff --git a/projects/preon/index.js b/projects/preon/index.js index a65fa6d7891..98fa0793067 100644 --- a/projects/preon/index.js +++ b/projects/preon/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { @@ -5,7 +6,7 @@ const config = { ownerTokens: [ [["0xe50fa9b3c56ffb159cb0fca61f5c9d750e8128c8"], "0xA2Ce28868A852f4B01903B5de07d4835feFe9086"], // aArbWETH [["0x8ffdf2de812095b1d19cb146e4c004587c0a0692"], "0x8AD15574A87e30061f24977faaA2d99bC45A3169"], // aArbLUSD - PSM - [["0x5979D7b546E38E414F7E9822514be443A4800529"], "0x58F046c5374E9cF942b8Eeb056126Ce86dD63EEB"], // wstETH + [[ADDRESSES.arbitrum.WSTETH], "0x58F046c5374E9cF942b8Eeb056126Ce86dD63EEB"], // wstETH ], }, polygon: { diff --git a/projects/rss3-staking/index.js b/projects/rss3-staking/index.js index 2cef0278b10..9fbebb738bd 100644 --- a/projects/rss3-staking/index.js +++ b/projects/rss3-staking/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const STAKING_CONTRACT = "0x28F14d917fddbA0c1f2923C406952478DfDA5578" const RSS3_TOKEN_ETH = "0xc98D64DA73a6616c42117b582e832812e7B8D57F" -const RSS3_TOKEN_VSL = "0x4200000000000000000000000000000000000042" +const RSS3_TOKEN_VSL = ADDRESSES.optimism.OP const { staking } = require("../helper/staking") diff --git a/projects/satoshi-finance/index.js b/projects/satoshi-finance/index.js index 210429b4cd1..cf997d316f3 100644 --- a/projects/satoshi-finance/index.js +++ b/projects/satoshi-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { getLiquityTvl } = require("../helper/liquity"); const { staking } = require("../helper/staking.js"); @@ -8,7 +9,7 @@ const SATOSHI_SATO_STAKING = '0x28c0e5160AB7B821A98745A3236aD2414F5dC041' // Contract address for SATO token const SATO = '0x708bAac4B235d3F62bD18e58c0594b8B20b2ED5B' // Contract address of BTCB collateral -const BTCB = '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c' +const BTCB = ADDRESSES.bsc.BTCB module.exports = { bsc: { diff --git a/projects/treasury/bitdao.js b/projects/treasury/bitdao.js index 4d655ba584f..99027682dd7 100644 --- a/projects/treasury/bitdao.js +++ b/projects/treasury/bitdao.js @@ -72,7 +72,7 @@ const tokenTreasuries = treasuryExports({ '0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9',//FTT '0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272',//xSUSHI "0x52A8845DF664D76C69d2EEa607CD793565aF42B8", - "0x9d39a5de30e57443bff2a8307a4256c8797a3497", //sUSDe + ADDRESSES.ethereum.sUSDe, //sUSDe ], owners: [mTreasuryL1, mTreasuryL1SC,mTreasuryL1O1,mTreasuryL1E1, mTreasuryL1RB1, mTreasuryL1LPE1, ...ecspWallets ], ownTokens: [BIT, MNT], diff --git a/projects/treasury/hyperblast.js b/projects/treasury/hyperblast.js index 7cce521069e..973767399c8 100644 --- a/projects/treasury/hyperblast.js +++ b/projects/treasury/hyperblast.js @@ -9,7 +9,7 @@ module.exports = treasuryExports({ blast: { tokens: [ nullAddress, - "0x4300000000000000000000000000000000000003" //usdb + ADDRESSES.blast.USDB //usdb ], owners: [Treasury], ownTokens: [HYPE], diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 87276725251..89891186647 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -59,9 +59,9 @@ module.exports = { owners: ["0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08"], balances: balances, tokens: [ - "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", //btc - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" , //usdc - "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", //usdt + ADDRESSES.era.WBTC, //btc + ADDRESSES.era.USDC , //usdc + ADDRESSES.era.USDT, //usdt ], blacklistedTokens: [ERA_ETH_ADDRESS], }); @@ -76,10 +76,10 @@ module.exports = { "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", "0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2", ], - tokens: ["0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8", //mnt - "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE", //usdt - "0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111" ,//weth - "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9" , //usdc + tokens: [ADDRESSES.mantle.WMNT, //mnt + ADDRESSES.mantle.USDT, //usdt + ADDRESSES.mantle.WETH ,//weth + ADDRESSES.mantle.USDC , //usdc ], }), }, From a80613a751b6b68677759b35177fe94bb56dbc89 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Mar 2024 14:43:49 +0100 Subject: [PATCH 0983/2004] bugfix --- projects/incognito/config.js | 48 ++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/projects/incognito/config.js b/projects/incognito/config.js index 327ee7f15a7..cf467ba2542 100644 --- a/projects/incognito/config.js +++ b/projects/incognito/config.js @@ -1,4 +1,4 @@ -const coreAssets = require("../helper/coreAssets.json"); +const ADDRESSES = require("../helper/coreAssets.json"); const contract = "0x43D037A562099A4C2c95b1E2120cc43054450629"; module.exports = { @@ -6,17 +6,17 @@ module.exports = { { name: "ethereum", tokens: [ - coreAssets.null, - coreAssets.ethereum.DAI, - coreAssets.ethereum.SAI, - coreAssets.ethereum.LINK, + ADDRESSES.null, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.SAI, + ADDRESSES.ethereum.LINK, ADDRESSES.ethereum.INU, "0x4F9254C83EB525f9FCf346490bbb3ed28a81C667", "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", - coreAssets.ethereum.BAT, + ADDRESSES.ethereum.BAT, "0x55296f69f40Ea6d20E478533C15A6B08B654E758", - coreAssets.ethereum.AAVE, + ADDRESSES.ethereum.AAVE, "0x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa", "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", "0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d", @@ -29,47 +29,47 @@ module.exports = { { name: "bsc", tokens: [ - coreAssets.null, - coreAssets.bsc.USDC, - coreAssets.bsc.USDT, + ADDRESSES.null, + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.USDT, "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", - coreAssets.bsc.BUSD, + ADDRESSES.bsc.BUSD, "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", - coreAssets.bsc.ETH, - coreAssets.bsc.BTCB, + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.BTCB, "0xbA2aE424d960c26247Dd6c32edC70B295c744C43", "0xd5d0322b6bAb6a762C79f8c81A0B674778E13aeD", "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", - coreAssets.bsc.WBNB, + ADDRESSES.bsc.WBNB, "0x4338665CBB7B2485A8855A139b75D5e34AB0DB94", ], holders: [contract], }, { name: "avax", - tokens: [coreAssets.null, coreAssets.avax.USDC, coreAssets.avax.USDt], + tokens: [ADDRESSES.null, ADDRESSES.avax.USDC, ADDRESSES.avax.USDt], holders: [contract], }, { name: "polygon", tokens: [ - coreAssets.null, - coreAssets.polygon.WMATIC_1, - coreAssets.polygon.USDC, - coreAssets.polygon.USDT, - coreAssets.polygon.WBTC, - coreAssets.polygon.USDC_CIRCLE, - coreAssets.polygon.DAI, - coreAssets.polygon.WETH_1, + 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: [coreAssets.null, coreAssets.fantom.WFTM], + tokens: [ADDRESSES.null, ADDRESSES.fantom.WFTM], holders: [contract], }, ], From c3b1cd9bec12e41ec4890b27a46f1486fdc6acf6 Mon Sep 17 00:00:00 2001 From: greqor Date: Fri, 29 Mar 2024 14:47:37 +0100 Subject: [PATCH 0984/2004] colony new staking contract (#9611) --- projects/colony/index.js | 47 ++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/projects/colony/index.js b/projects/colony/index.js index 0a6cd8d8eb6..3dd451d14c4 100644 --- a/projects/colony/index.js +++ b/projects/colony/index.js @@ -1,42 +1,33 @@ -const sdk = require("@defillama/sdk"); - const stakingV1Contract = "0x5B0d74C78F2588B3C5C49857EdB856cC731dc557"; const stakingV2Contract = "0x7CcDa6E26dCeD1Ba275c67CD20235790ed615A8D"; +const stakingV3Contract = "0x62685d3EAacE96D6145D35f3B7540d35f482DE5b"; const colonyGovernanceToken = "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6"; -async function staking(timestamp, block, chainBlocks) { - let balances = {}; +async function staking({ api }) { const stakingV1 = ( - await sdk.api.erc20.balanceOf({ - block: chainBlocks.avax, - target: colonyGovernanceToken, - owner: stakingV1Contract, - chain: "avax", + await api.call({ + abi: "function totalStaked() external view returns (uint256)", + target: stakingV1Contract, }) - ).output; + ) const stakingV2 = ( - await sdk.api.erc20.balanceOf({ - block: chainBlocks.avax, - target: colonyGovernanceToken, - owner: stakingV2Contract, - chain: "avax", + await api.call({ + abi: "function totalStake() external view returns (uint256)", + target: stakingV2Contract, }) - ).output; - - sdk.util.sumSingleBalance( - balances, - `avax:${colonyGovernanceToken}`, - stakingV1 - ); + ) - sdk.util.sumSingleBalance( - balances, - `avax:${colonyGovernanceToken}`, - stakingV2 - ); + const stakingV3 = ( + await api.call({ + abi: "function totalStake() external view returns (uint256)", + target: stakingV3Contract, + }) + ) - return balances; + api.add(colonyGovernanceToken, stakingV1) + api.add(colonyGovernanceToken, stakingV2) + api.add(colonyGovernanceToken, stakingV3) } module.exports = { From 13c7bcdddf50c92415ff2c1fdb43a9c6ef38e597 Mon Sep 17 00:00:00 2001 From: sgmntp <146187995+sgmntp@users.noreply.github.com> Date: Fri, 29 Mar 2024 14:50:49 +0100 Subject: [PATCH 0985/2004] update (Segment Finance) add opBNB chain (#9614) --- projects/segment-finance/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/segment-finance/index.js b/projects/segment-finance/index.js index f5b2d32a45f..4ec7f91a6a7 100644 --- a/projects/segment-finance/index.js +++ b/projects/segment-finance/index.js @@ -3,6 +3,12 @@ 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", + op_bnb: { + ...compoundExports2({ + comptroller: "0x71ac0e9A7113130280040d0189d0556f45a8CBB5", + cether: "0x7e844423510A5081DE839e600F7960C7cE84eb82", + }), + }, bsc: { ...compoundExports2({ comptroller: "0x57E09c96DAEE58B77dc771B017de015C38060173", From b92d62a63d02438e8afaf1eb48d1bf0f670a5838 Mon Sep 17 00:00:00 2001 From: Vladislav Petushkov <1732750+vladislavpetushkov@users.noreply.github.com> Date: Fri, 29 Mar 2024 18:53:13 +0400 Subject: [PATCH 0986/2004] add staking amount in governance to adapter (#9613) * add staking amount in governance to adapter * add on chain code as backup --------- Co-authored-by: Vladislav Petushkov Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/swop/index.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/projects/swop/index.js b/projects/swop/index.js index e97e99921c6..c2d4edacf1b 100644 --- a/projects/swop/index.js +++ b/projects/swop/index.js @@ -1,17 +1,33 @@ +// const { sumTokens, call } = require('../helper/chain/waves'); +// const { getConfig } = require("../helper/cache"); const { get } = require("../helper/http"); const { toUSDTBalances } = require("../helper/balances"); + const swopfiBackendEndpoint = "https://backend.swop.fi"; -const getSwopFiTVL = async () => { +const getSwopFiTVL = async (_, _1, _2, { api }) => { const poolsStats = await get(`${swopfiBackendEndpoint}/pools`); return toUSDTBalances(poolsStats.overall.liquidity); + /* const { pools } = await getConfig('swop', `${swopfiBackendEndpoint}/pools`) + const owners = pools.map(i => i.id) + console.log(owners.length) + 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", waves: { tvl: getSwopFiTVL, + staking: async () => { + const stakingStats = await get(`${swopfiBackendEndpoint}/staking`); + return toUSDTBalances(stakingStats.swop.totalSwopUsdt); + /* const res = await call({target:'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS', key: 'total_GSwop_amount'}) + return { swop: res / 1e8 } */ + } } }; From 4505e9c94ed3bfd264075a567c700c655adc5f4c Mon Sep 17 00:00:00 2001 From: Denis Kostylev Date: Fri, 29 Mar 2024 22:54:31 +0800 Subject: [PATCH 0987/2004] Add protocol contract in blast chain (#9612) * add tvls for all chains * add missing hallmarks * add protocol contract to blast * reduce hallmarks list * add blast contract * Fixed wrong network --- projects/envelop/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/envelop/index.js b/projects/envelop/index.js index 6001a00a6e7..8e559f40628 100644 --- a/projects/envelop/index.js +++ b/projects/envelop/index.js @@ -42,6 +42,7 @@ const config = { "0xF81356B101A52cf62BBe1E34353a139934dE4c17", // Protocol "0x4a80d07a1e8c15069c397cf34c407a627dcb8487", // Protocol "0x0a18Abe3030C9E766329b9b9A05d2D9bD03C4F8F", // Protocol + '0x98CADa78CFE0BCf17BF9aD96dA4B824C96c9d837', ], farming: ['0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8'], NIFTSY: '0x7728cd70b3dD86210e2bd321437F448231B81733', @@ -103,7 +104,7 @@ const config = { blast: { protocolContracts: [ '0xd3807CE2F215DC42ca4bfA616B16C20b0B195128', - '0x2333615f43f898cD4368513fa59b0fDcF945f492' + '0x2333615f43f898cD4368513fa59b0fDcF945f492', ], tokens: [ ADDRESSES.null, From 2271d4268f0fc98be733bfc8ec9ca8fadc415fe5 Mon Sep 17 00:00:00 2001 From: Zethr <165384134+zethr@users.noreply.github.com> Date: Fri, 29 Mar 2024 17:56:33 +0300 Subject: [PATCH 0988/2004] add TVL adapter Zethr (#9615) Co-authored-by: zethr --- projects/zethr/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/zethr/index.js diff --git a/projects/zethr/index.js b/projects/zethr/index.js new file mode 100644 index 00000000000..76cb9b7cb40 --- /dev/null +++ b/projects/zethr/index.js @@ -0,0 +1,17 @@ +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 }), + }, +}; From 1180fd94a4b0c1c4cbcdb4841947a4b1f8c076b7 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 29 Mar 2024 15:35:45 +0000 Subject: [PATCH 0989/2004] add zklink nova --- projects/lineabank/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index 5bbba30ca6e..2e1901f5821 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -4,6 +4,7 @@ const config = { scroll: '0xEC53c830f4444a8A56455c6836b5D2aA794289Aa', manta: '0xB7A23Fc0b066051dE58B922dC1a08f33DF748bbf', mode: '0x80980869D90A737aff47aBA6FbaA923012C1FF50', + zklink: '0x4Ac518DbF0CC730A1c880739CFa98fe0bB284959' } Object.keys(config).forEach(chain => { From b55970aceba804c055dd1eb287a665fee62f6344 Mon Sep 17 00:00:00 2001 From: Chaz Schmidt Date: Fri, 29 Mar 2024 12:28:53 -0400 Subject: [PATCH 0990/2004] Update KlimaDAO TVL adapter (#9602) * added missing treasury tokens * Added more treasury assets * added BCT TVL to KlimaDAO * Add current block check for BCT contract ownership transfer to KlimaDAO * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/klima-dao/index.js | 41 ++++++++++----------------- projects/toucan-protocol/index.js | 41 +++++++++------------------ projects/treasury/klima-dao.js | 46 +++++++++++++++++++------------ 3 files changed, 55 insertions(+), 73 deletions(-) diff --git a/projects/klima-dao/index.js b/projects/klima-dao/index.js index 38eca521123..58cca4736db 100644 --- a/projects/klima-dao/index.js +++ b/projects/klima-dao/index.js @@ -1,31 +1,18 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking') -const { sumTokensAndLPsSharedOwners } = require('../helper/unwrapLPs') - - -const treasury = "0x7Dd4f0B986F032A44F913BF92c9e8b7c17D77aD7" -const daoWallet = "0x65A5076C0BA74e5f3e069995dc3DAB9D197d995c" - -async function tvl(time, ethBlock, chainBlocks) { - const balances = {} - const transform = i => `polygon:${i}` - await sumTokensAndLPsSharedOwners(balances, [ - ["0x2f800db0fdb5223b3c3f354886d907a671414a7f", false], // BCT - ["0xD838290e877E0188a4A44700463419ED96c16107", false], // NCT - [ADDRESSES.polygon.USDC, false], // USDC - ["0x03E3369af9390493CB7CC599Cd5233D50e674Da4", false], // MOSS - ["0x6BCa3B77C1909Ce1a4Ba1A20d1103bDe8d222E48", false], // NBO - ["0x1E67124681b402064CD0ABE8ed1B5c79D2e02f64", true], // USDC-BCT - ["0x9803c7ae526049210a1725f7487af26fe2c24614", true], // KLIMA-BCT - ["0x5786b267d35F9D011c4750e0B0bA584E1fDbeAD1", true], // KLIMA-USDC - ["0x64a3b8cA5A7e406A78e660AE10c7563D9153a739", true], // KLIMA-MOSS - ], [treasury, daoWallet], chainBlocks.polygon, "polygon", transform) - return balances -} module.exports = { + methodology: "TVL counts the TCO2 tokens within the BCT pool. Additionally, tokens held by the DAO and within the treasury as well as the staking contracts are counted toward treasury and staking respectively.", polygon: { - tvl: () => 0, - staking: staking("0x25d28a24Ceb6F81015bB0b2007D795ACAc411b4d", "0x4e78011ce80ee02d2c3e649fb657e45898257815", "polygon") - } -} \ No newline at end of file + 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({ abi: 'erc20:totalSupply', target: bctAddress, }) + api.add(bctAddress, supply) + }, + staking: staking("0x25d28a24Ceb6F81015bB0b2007D795ACAc411b4d", "0x4e78011ce80ee02d2c3e649fb657e45898257815", "polygon"), + }, + hallmarks: [ + [1709828986, "BCT administrative control transferred to KlimaDAO"], + ] +}; \ No newline at end of file diff --git a/projects/toucan-protocol/index.js b/projects/toucan-protocol/index.js index d6a15b488ac..4f14b10255b 100644 --- a/projects/toucan-protocol/index.js +++ b/projects/toucan-protocol/index.js @@ -1,55 +1,40 @@ -const sdk = require("@defillama/sdk"); -const { default: BigNumber } = require("bignumber.js"); +const sdk = require('@defillama/sdk') const { CONFIG_DATA } = require("./config"); -const decimals = 1e18; - const getCalculationMethod = (chain) => { - return async (timestamp, block, chainBlocks) => { - const supplyCalls = [ - { target: CONFIG_DATA[chain].bct }, - { target: CONFIG_DATA[chain].nct } - ]; + return async (api,) => { + const supplyCalls = [CONFIG_DATA[chain].bct, CONFIG_DATA[chain].nct]; - const supplies = ( - await sdk.api.abi.multiCall({ - abi: 'erc20:totalSupply', - calls: supplyCalls, - chain, - block: chainBlocks[chain], - }) - ).output; + let [bct, nct] = await api.multiCall({ abi: 'erc20:totalSupply', calls: supplyCalls, }) - const bct = BigNumber(supplies[0].output); - const nct = BigNumber(supplies[1].output); + // If the current block is later than the date BCT was transferred to KlimaDAO, return 0 + if (api.timestamp > 1709828986) + bct = 0 return { - 'toucan-protocol-base-carbon-tonne': bct.div(decimals).toFixed(0), - 'toucan-protocol-nature-carbon-tonne': nct.div(decimals).toFixed(0), + 'toucan-protocol-base-carbon-tonne': bct / 1e18, + 'toucan-protocol-nature-carbon-tonne': nct / 1e18, }; }; }; const getRegenCredits = () => { - return async (timestamp, block, chainBlocks) => { + return async () => { const transferred = (await sdk.api.abi.call({ abi: 'uint256:totalTransferred', target: CONFIG_DATA['regen'].nct_bridge, chain: 'polygon', - block: chainBlocks['polygon'], })).output; - const nct = BigNumber(transferred); - return { - 'toucan-protocol-nature-carbon-tonne': nct.div(decimals).toFixed(0), + 'toucan-protocol-nature-carbon-tonne': transferred / 1e18, }; }; }; module.exports = { start: 1634842800, - celo: { + celo: { tvl: getCalculationMethod("celo") }, polygon: { @@ -59,6 +44,6 @@ module.exports = { tvl: getRegenCredits() }, hallmarks: [ - [1653429600, "Verra prohibits tokenization"], + [1653429600, "Verra prohibits tokenization"], [1709828986, "BCT administrative control transferred to KlimaDAO"], ] }; diff --git a/projects/treasury/klima-dao.js b/projects/treasury/klima-dao.js index 7644248adc0..07fcc239114 100644 --- a/projects/treasury/klima-dao.js +++ b/projects/treasury/klima-dao.js @@ -1,29 +1,39 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress,treasuryExports } = require("../helper/treasury"); +const { nullAddress, treasuryExports } = require("../helper/treasury"); const klimaTreasury1 = "0x7dd4f0b986f032a44f913bf92c9e8b7c17d77ad7"; +const daoWallet = "0x65A5076C0BA74e5f3e069995dc3DAB9D197d995c" const KLIMA = "0x4e78011ce80ee02d2c3e649fb657e45898257815"; - module.exports = treasuryExports({ polygon: { - tokens: [ - nullAddress, - '0x2F800Db0fdb5223b3C3f354886d907A671414A7F', // BCT - ADDRESSES.polygon.USDC, // USDC - '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 - ], - owners: [klimaTreasury1], + 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], ownTokens: [KLIMA], }, }) From f424e8207decb9f4820d2e9908361ec5013d31d0 Mon Sep 17 00:00:00 2001 From: carlosalv098 <76534971+carlosalv098@users.noreply.github.com> Date: Fri, 29 Mar 2024 10:39:55 -0600 Subject: [PATCH 0991/2004] add Hatom WTAO Bridge SDK Adapter (#9584) * add Hatom WTAO Bridge SDK Adapter * quick fix * Add bittensor query * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hatom-tao-bridge/index.js | 39 ++++++++++++++++++++++++++++++ projects/helper/chains.json | 1 + 2 files changed, 40 insertions(+) create mode 100644 projects/hatom-tao-bridge/index.js diff --git a/projects/hatom-tao-bridge/index.js b/projects/hatom-tao-bridge/index.js new file mode 100644 index 00000000000..dc7376e19f8 --- /dev/null +++ b/projects/hatom-tao-bridge/index.js @@ -0,0 +1,39 @@ +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/helper/chains.json b/projects/helper/chains.json index 353f8ce5c11..d3b72133db3 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -26,6 +26,7 @@ "bitgert", "bitindi", "bitrock", + "bittensor", "bittorrent", "blast", "boba", From 3334fdd2912772dc66ab9187b79e487db9954d1c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Mar 2024 17:59:58 +0100 Subject: [PATCH 0992/2004] bugfix --- projects/helper/unwrapLPs.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 8b8825fbdb6..336deaeb27b 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -342,6 +342,7 @@ async function sumTokensAndLPs(balances, tokens, block, chain = "ethereum", tran const balancerVault = "0xBA12222222228d8Ba445958a75a0704d566BF2C8" async function sumBalancerLps(balances, tokensAndOwners, block, chain, transformAddress) { + if (!transformAddress) transformAddress = await getChainTransform(chain) const poolIds = sdk.api.abi.multiCall({ calls: tokensAndOwners.map(t => ({ target: t[0] From d2eabfdf8ef24b59825234e078fa74438eb9d824 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 29 Mar 2024 18:28:54 +0100 Subject: [PATCH 0993/2004] fix broken adapters --- projects/astra-dao/index.js | 2 +- projects/sushiswap-trident/index.js | 8 +++++++- projects/unifi-protocol-staking/index.js | 11 ++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/projects/astra-dao/index.js b/projects/astra-dao/index.js index 77686b6e358..4eb365bb0b1 100644 --- a/projects/astra-dao/index.js +++ b/projects/astra-dao/index.js @@ -16,7 +16,7 @@ async function tvl(api) { tokens.push(..._tokens); i++; } catch (e) { - if (i === 0) throw e; + // if (i === 0) throw e; gotError = true; } } while (!gotError); diff --git a/projects/sushiswap-trident/index.js b/projects/sushiswap-trident/index.js index 9c30abbb977..34e2431a800 100644 --- a/projects/sushiswap-trident/index.js +++ b/projects/sushiswap-trident/index.js @@ -22,4 +22,10 @@ module.exports = { ...modulesToExport, }; -module.exports.kava = { tvl: () => 0} \ No newline at end of file +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/unifi-protocol-staking/index.js b/projects/unifi-protocol-staking/index.js index b52edc38924..cce19353419 100644 --- a/projects/unifi-protocol-staking/index.js +++ b/projects/unifi-protocol-staking/index.js @@ -20,11 +20,12 @@ module.exports = { function stakingChain(chain) { module.exports[chain] = { tvl: async () => { - 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) + 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) } } } From 1daec00330b0861528779b6979d2a8e4258457d8 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 29 Mar 2024 20:31:27 +0000 Subject: [PATCH 0994/2004] add ethena --- projects/ethena/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/ethena/index.js diff --git a/projects/ethena/index.js b/projects/ethena/index.js new file mode 100644 index 00000000000..b74a15594f3 --- /dev/null +++ b/projects/ethena/index.js @@ -0,0 +1,10 @@ +const USDe = "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3" + +module.exports = { + ethereum: { + tvl: async (api) => { + const supply = await api.call({ abi: 'erc20:totalSupply', target: USDe }) + api.add(USDe, supply) + }, + } +} From f44f5e4c8c5d24ca43d8a96910ea86e1e8ae2a89 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 30 Mar 2024 03:03:00 +0000 Subject: [PATCH 0995/2004] add stek adapter --- projects/helper/tokenMapping.js | 4 ++++ projects/trader-joe-stek/index.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 projects/trader-joe-stek/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 72594d08043..bef7e92c45e 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -89,6 +89,10 @@ const fixBalancesTokens = { bevm: { '0xb5136feba197f5ff4b765e5b50c74db717796dcd': { coingeckoId: 'bitcoin', decimals: 18 }, }, + avax: { + '0xEbB5d4959B2FbA6318FbDa7d03cd44aE771fc999': { coingeckoId: 'kong', decimals: 18 }, + '0x5ac04b69bde6f67c0bd5d6ba6fd5d816548b066a': { coingeckoId: 'tech', decimals: 18 } + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/trader-joe-stek/index.js b/projects/trader-joe-stek/index.js new file mode 100644 index 00000000000..cc1b7f66cf0 --- /dev/null +++ b/projects/trader-joe-stek/index.js @@ -0,0 +1,18 @@ +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 From 3cd3c883414effc2309d167a02562e8b0fb050ce Mon Sep 17 00:00:00 2001 From: Juuso Roinevirta <70798584+roinevirta@users.noreply.github.com> Date: Sat, 30 Mar 2024 12:49:55 +0200 Subject: [PATCH 0996/2004] DumpEX v1 (#9616) --- projects/DumpEX/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/DumpEX/index.js diff --git a/projects/DumpEX/index.js b/projects/DumpEX/index.js new file mode 100644 index 00000000000..309164b2e35 --- /dev/null +++ b/projects/DumpEX/index.js @@ -0,0 +1,28 @@ +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 From 6d67f6eb8e330a697fd9fe50d866a8c37c09b0c2 Mon Sep 17 00:00:00 2001 From: tec05 <73139131+tec05@users.noreply.github.com> Date: Sat, 30 Mar 2024 03:50:21 -0700 Subject: [PATCH 0997/2004] Add Mode for Archly TVL (#9621) * Add Avalanche, Cronos, Mantle, Metis, and Neon for Archly TVL * Adding Archly TVL tracking for Blast, Filecoin, and Fraxtal * Add TVL for Archly on Mode --- projects/archly-finance-v2/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js index a2a9bee8f57..014775227e7 100644 --- a/projects/archly-finance-v2/index.js +++ b/projects/archly-finance-v2/index.js @@ -24,6 +24,7 @@ const config = { mantle: { lp: '0x31bFb9003229BCC89EeF55895A374Fd0ed36772c' }, metis: { lp: '0xA152A0Ee0Bc15A937D5365DEB8507D063467A68d' }, neon_evm: { lp: '0x9a08ab9b8b9A90bF9fe836D28E85808Db29Dc1aD' }, + mode: { lp: '0xC6FA6454E76cF425a020fdb1EF61FeB0e551912C' }, } module.exports = { From 046a0ad4dd789149e0e1729e552ee752f612ec0c Mon Sep 17 00:00:00 2001 From: Chloe - Jay <165418479+jaypegger@users.noreply.github.com> Date: Sat, 30 Mar 2024 13:52:32 +0300 Subject: [PATCH 0998/2004] added Jaypeggers sdk adapter (#9619) --- projects/jaypeggers/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/jaypeggers/index.js diff --git a/projects/jaypeggers/index.js b/projects/jaypeggers/index.js new file mode 100644 index 00000000000..64b372ef40c --- /dev/null +++ b/projects/jaypeggers/index.js @@ -0,0 +1,15 @@ +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], + }), + }, +}; From 1a55fa2fd757e29c72f8e26a59bd4e924fc6e214 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 30 Mar 2024 12:02:51 +0100 Subject: [PATCH 0999/2004] Update KOI token mapping and staking function (#9623) * Update KOI (prev mute) * Add KOI token mapping and update staking function --------- Co-authored-by: mattt21 --- projects/helper/tokenMapping.js | 5 ++++- projects/mute/index.js | 24 ++++++------------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index bef7e92c45e..160a7a9ecc5 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -89,9 +89,12 @@ const fixBalancesTokens = { bevm: { '0xb5136feba197f5ff4b765e5b50c74db717796dcd': { coingeckoId: 'bitcoin', decimals: 18 }, }, + era: { + '0xa995ad25ce5eb76972ab356168f5e1d9257e4d05': { coingeckoId: 'koi', decimals: 18 }, + }, avax: { '0xEbB5d4959B2FbA6318FbDa7d03cd44aE771fc999': { coingeckoId: 'kong', decimals: 18 }, - '0x5ac04b69bde6f67c0bd5d6ba6fd5d816548b066a': { coingeckoId: 'tech', decimals: 18 } + '0x5ac04b69bde6f67c0bd5d6ba6fd5d816548b066a': { coingeckoId: 'tech', decimals: 18 }, }, // Sample Code ozone: { diff --git a/projects/mute/index.js b/projects/mute/index.js index 3b49cd3d2b6..b6166f0e415 100644 --- a/projects/mute/index.js +++ b/projects/mute/index.js @@ -1,29 +1,17 @@ +const { staking } = require('../helper/staking'); const { getUniTVL } = require('../helper/unknownTokens'); -const { sumTokensExport } = require("../helper/unwrapLPs"); -const sdk = require("@defillama/sdk"); const dMUTE_staking_contract = "0x4336e06Be4F62bD757c4248c48D4C0b32615A2Df" const MUTE = "0x0e97C7a0F8B2C9885C8ac9fC6136e829CbC21d42" -async function stakingTVL(timestamp, chain, chainBlocks) { - - let { output: balance } = await sdk.api.erc20.balanceOf({ - target: MUTE, - owner: dMUTE_staking_contract, - block: chainBlocks.era, - chain: "era" - }); - - let staked_MUTE = balance / 10**18 - - return {mute:staked_MUTE}; -} +const KOI = "0xa995ad25ce5eb76972ab356168f5e1d9257e4d05" +const veKOI = "0x98dB4e3Df6502369dAD7AC99f3aEE5D064721C4C" module.exports = { misrepresentedTokens: true, era: { tvl: getUniTVL({ factory: '0x40be1cba6c5b47cdf9da7f963b6f761f4c60627d', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'sMLP' }), - staking: stakingTVL + staking: staking([dMUTE_staking_contract, veKOI], [MUTE, KOI], ) }, - methodology: "Counts liquidity in pools and MUTE token in the dMUTE contract", -}; \ No newline at end of file + methodology: "Counts liquidity in pools and KOI token in the veKOI contract", +}; From 5e1b89ddebba22eeb9d3737f2d6b9a7e38762734 Mon Sep 17 00:00:00 2001 From: Feid <164681783+hoardingcats@users.noreply.github.com> Date: Sat, 30 Mar 2024 12:04:14 +0100 Subject: [PATCH 1000/2004] Added Meow Miner TVL adapter (#9617) * Added Meow Miner TVL adapter * code refactor --------- Co-authored-by: HoardingCats Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/MeowMiner/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/MeowMiner/index.js diff --git a/projects/MeowMiner/index.js b/projects/MeowMiner/index.js new file mode 100644 index 00000000000..1c633e80322 --- /dev/null +++ b/projects/MeowMiner/index.js @@ -0,0 +1,13 @@ +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: 1000235, + avax: { + tvl: () => ({}), + staking: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }) + } +} \ No newline at end of file From 7cf49ddfa63f3e5eeabb54efd5cfec28d3a4a2b2 Mon Sep 17 00:00:00 2001 From: Teamo0 <77360332+Teamo0@users.noreply.github.com> Date: Sat, 30 Mar 2024 11:26:37 +0000 Subject: [PATCH 1001/2004] add aggregator tvl (#9620) --- projects/fyde/index.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/fyde/index.js b/projects/fyde/index.js index b95b3b96e9f..d6ebcb1a800 100644 --- a/projects/fyde/index.js +++ b/projects/fyde/index.js @@ -1,14 +1,24 @@ const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; +const RESTAKING_AGGREGATOR = "0x3f69F62e25441Cf72E362508f4d6711d53B05341"; +const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; 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 }) api.addTokens(tokens, bals) - // return api.sumTokens({ tokens, owner: FYDE_CONTRACT }) + + // add restaking aggregator TVL + const amountStakedETH = await api.call({ + abi: 'erc20:totalSupply', + target: RESTAKING_AGGREGATOR, + params: [], + }); + + api.add(WETH, amountStakedETH) } module.exports = { - methodology: 'Read out balances from internal accounting for each asset in Fyde', + methodology: 'Read out balances from internal accounting for each asset in Fyde. Add ETH staked in LRT Aggregator.', ethereum: { tvl } From cbee814ca673cead7129523c4ee076570336269b Mon Sep 17 00:00:00 2001 From: Yieldfarming24 <165474414+Yieldfarming24@users.noreply.github.com> Date: Sat, 30 Mar 2024 15:17:33 +0100 Subject: [PATCH 1002/2004] add frogswap adapter + degen chain (#9622) * add frogswap adapter * add more projects --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/degenswap/index.js | 3 +++ projects/dyorswap/index.js | 31 +++++++++++++++++-------------- projects/frogswap/index.js | 3 +++ projects/helper/chains.json | 1 + projects/helper/env.js | 2 ++ projects/helper/tokenMapping.js | 3 +++ 6 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 projects/degenswap/index.js create mode 100644 projects/frogswap/index.js diff --git a/projects/degenswap/index.js b/projects/degenswap/index.js new file mode 100644 index 00000000000..de971747fce --- /dev/null +++ b/projects/degenswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('degen', '0xA5E57CaB76caa09F66280F9Eb1529ed1059E87ba') \ No newline at end of file diff --git a/projects/dyorswap/index.js b/projects/dyorswap/index.js index a3caf5ce965..75b870fd96d 100644 --- a/projects/dyorswap/index.js +++ b/projects/dyorswap/index.js @@ -1,16 +1,19 @@ -const { getUniTVL } = require("../helper/unknownTokens"); +const { getUniTVL } = require("../helper/unknownTokens") + +const config = { + mode: '0xE470699f6D0384E3eA68F1144E41d22C6c8fdEEf', + blast: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', + merlin: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', + zeta: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', + degen: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', +} + module.exports = { misrepresentedTokens: true, - mode: { - tvl: getUniTVL({ factory: "0xE470699f6D0384E3eA68F1144E41d22C6c8fdEEf", useDefaultCoreAssets: true, }), - }, - blast: { - tvl: getUniTVL({ factory: "0xA1da7a7eB5A858da410dE8FBC5092c2079B58413", useDefaultCoreAssets: true, }), - }, - merlin: { - tvl: getUniTVL({ factory: "0xA1da7a7eB5A858da410dE8FBC5092c2079B58413", useDefaultCoreAssets: true, }), - }, - zeta: { - tvl: getUniTVL({ factory: "0xA1da7a7eB5A858da410dE8FBC5092c2079B58413", useDefaultCoreAssets: 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/frogswap/index.js b/projects/frogswap/index.js new file mode 100644 index 00000000000..00080b30b09 --- /dev/null +++ b/projects/frogswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('degen', '0xA994635243b55468B9C421559516BdE229E0930B') \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index d3b72133db3..536b913eabc 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -68,6 +68,7 @@ "defichain", "defichain_evm", "defiverse", + "degen", "dexit", "dfk", "doge", diff --git a/projects/helper/env.js b/projects/helper/env.js index 12d28458dec..ada404c4744 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -24,6 +24,8 @@ const DEFAULTS = { KINTO_RPC: "https://rpc.kinto-rpc.com", DEFICHAIN_EVM_RPC: "https://dmc.mydefichain.com/mainnet,https://dmc01.mydefichain.com/mainnet", RSS3_VSL_RPC: "https://rpc.rss3.io", + DEGEN_RPC: "https://rpc.degen.tips", + DEGEN_RPC_MULTICALL: "0xFBF562a98aB8584178efDcFd09755FF9A1e7E3a2", } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 160a7a9ecc5..f81909ff0c8 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -80,6 +80,9 @@ const fixBalancesTokens = { core: { '0x191e94fa59739e188dce837f7f6978d84727ad01': { coingeckoId: 'coredaoorg', decimals: 18 }, }, + degen: { + '0xeb54dacb4c2ccb64f8074eceea33b5ebb38e5387': { coingeckoId: 'degen-base', decimals: 18 }, + }, sapphire: { [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, '0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019': { coingeckoId: 'oasis-network', decimals: 18 }, From 5015e26c413d884f3de674aca600168f83709a2e Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Sun, 31 Mar 2024 01:58:19 +0800 Subject: [PATCH 1003/2004] add new pool (#9624) --- projects/muito-finance/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index 034362e136b..863b9d10c84 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -3,6 +3,7 @@ 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) { @@ -27,6 +28,7 @@ async function tvl(api) { }); await getTvl(api, MUTO_FARM); await getTvl(api, MUTO_MULTI_FARM2); + await getTvl(api, MUTO_MULTI_FARM3); return await getTvl(api, MUTO_MULTI_FARM); } From 02818cbbe4dd2e8c428b73a453f92c356a499905 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sat, 30 Mar 2024 19:08:27 +0000 Subject: [PATCH 1004/2004] weekly price move (final, wait server) (#9625) --- projects/helper/tokenMapping.js | 65 --------------------------------- 1 file changed, 65 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f81909ff0c8..44208c87df1 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,71 +34,6 @@ const ibcMappings = { } const fixBalancesTokens = { - zklink: { - [ADDRESSES.zklink.WETH]: { coingeckoId: "ethereum", decimals: 18 }, - }, - stacks: { - 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wstx-token::wstx': { coingeckoId: "blockstack", decimals: 6 }, - 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.wstx': { coingeckoId: "blockstack", decimals: 6 }, - 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-abtc': { coingeckoId: "bitcoin", decimals: 8 }, - }, - waves: { - 'WAVES': { coingeckoId: 'waves', decimals: 8 }, - 'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7': { coingeckoId: 'waves', decimals: 8 }, - '3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13': { coingeckoId: 'ethereum', decimals: 8 }, - '2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, - '66a1br3BrkoaJgP7yEar9hJcSTvJPoH6PYBLqscXcMGo': { coingeckoId: 'binancecoin', decimals: 8 }, - 'QGDb5VHmjUMfHPAvRJ4g36nmU5qYByYyYzReJN71nad': { coingeckoId: 'chainlink', decimals: 8 }, - '2x8CpnEDNw2nsuyvEptEmEbVrkxh9regRDNrqTWThJTZ': { coingeckoId: 'maker', decimals: 8 }, - '78ePJGDo2H6cZUDYsAMzqxe2iSRNgz4QBnYYg58ZxdgH': { coingeckoId: 'uniswap', decimals: 8 }, - 'AhGJvjtYmRG2pKwXvTh8N6sX1M2wNTpkjxaWKQfzJe7q': { coingeckoId: 'matic-network', decimals: 8 }, - 'EW1uGLVo21Wd9i2Rhq8o4VKDTCQTGCGXE8DqayHGrLg8': { coingeckoId: 'binance-bitcoin', decimals: 8 }, - 'FmsB2B21fVVetWvZm7Q48cC2Bvs2hEZtft49TBn3guV1': { coingeckoId: 'curve-dao-token', decimals: 8 }, - '5Ga8eJdR5PoBWLC2xaq6F6PAGCM5hWVNhuyycgsNn4jR': { coingeckoId: 'crvusd', decimals: 6 }, - 'Fwvk46RZ4iBg4L9GzwjQ7jwVsEScn4aPD32V6wftTLHQ': { coingeckoId: 'tron', decimals: 6 }, - - 'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS': { coingeckoId: 'waves-ducks', decimals: 8 }, - 'GAzAEjApmjMYZKPzri2g2VUXNvTiQGF7KDYZFFsP3AEq': { coingeckoId: 'pete', decimals: 8 }, - '2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21': { coingeckoId: 'power-token', decimals: 8 }, - 'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS': { coingeckoId: 'puzzle-swap', decimals: 8 }, - }, - zora: { - [ADDRESSES.optimism.WETH_1]: { coingeckoId: 'ethereum', decimals: 18 }, - }, - imx: { - [nullAddress]: { coingeckoId: 'immutable-x', decimals: 18 }, - '0x3A0C2Ba54D6CBd3121F01b96dFd20e99D1696C9D': { coingeckoId: 'immutable-x', decimals: 18 }, - '0x52a6c53869ce09a731cd772f245b97a4401d3348': { coingeckoId: 'ethereum', decimals: 18 }, - '0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2': { coingeckoId: 'usd-coin', decimals: 6 }, - }, - merlin: { - '0xB880fd278198bd590252621d4CD071b1842E9Bcd': { coingeckoId: 'bitcoin', decimals: 18 }, - }, - rss3_vsl: { - '0xe27d019909738d98ab7f850c05ee07806c30c71d': { coingeckoId: 'rss3', decimals: 18 }, - }, - core: { - '0x191e94fa59739e188dce837f7f6978d84727ad01': { coingeckoId: 'coredaoorg', decimals: 18 }, - }, - degen: { - '0xeb54dacb4c2ccb64f8074eceea33b5ebb38e5387': { coingeckoId: 'degen-base', decimals: 18 }, - }, - sapphire: { - [nullAddress]: { coingeckoId: 'oasis-network', decimals: 18 }, - '0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019': { coingeckoId: 'oasis-network', decimals: 18 }, - '0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8': { coingeckoId: 'rosy', decimals: 18 }, - '0x9ca066f00e55b90623efe323feb2a649686538b6': { coingeckoId: 'tether', decimals: 6 }, - }, - bevm: { - '0xb5136feba197f5ff4b765e5b50c74db717796dcd': { coingeckoId: 'bitcoin', decimals: 18 }, - }, - era: { - '0xa995ad25ce5eb76972ab356168f5e1d9257e4d05': { coingeckoId: 'koi', decimals: 18 }, - }, - avax: { - '0xEbB5d4959B2FbA6318FbDa7d03cd44aE771fc999': { coingeckoId: 'kong', decimals: 18 }, - '0x5ac04b69bde6f67c0bd5d6ba6fd5d816548b066a': { coingeckoId: 'tech', decimals: 18 }, - }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain From e05a483f895d136f418f45cad24fb714fcb0c1fa Mon Sep 17 00:00:00 2001 From: 0xmDreamy <124707942+0xmDreamy@users.noreply.github.com> Date: Sat, 30 Mar 2024 22:19:30 +0100 Subject: [PATCH 1005/2004] fix(abracadabra): Update cauldrons to migrated cauldrons (#9628) --- projects/abracadabra/index.js | 5 ++--- projects/abracadabra/market.json | 15 +++++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js index 4f7a1084c52..74deecee5a2 100644 --- a/projects/abracadabra/index.js +++ b/projects/abracadabra/index.js @@ -26,9 +26,8 @@ const underlyingTokens = { blast: {}, bsc: {}, ethereum: { - "0x5958A8DB7dfE0CC49382209069b00F54e17929C2": "0x903C9974aAA431A765e60bC07aF45f0A1B3b61fb", - "0x3Ba207c25A278524e1cC7FaAea950753049072A4": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", - "0xd92494CB921E5C0d3A39eA88d0147bbd82E51008": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", + "0x9447c1413DA928aF354A114954BFc9E6114c5646": "0x903C9974aAA431A765e60bC07aF45f0A1B3b61fb", + "0x4985cc58C9004772c225aEC9C36Cc9A56EcC8c20": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", }, fantom: {}, kava: {}, diff --git a/projects/abracadabra/market.json b/projects/abracadabra/market.json index 8fa6cb75053..8d045db7780 100644 --- a/projects/abracadabra/market.json +++ b/projects/abracadabra/market.json @@ -30,10 +30,10 @@ }, "ethereum": { "0x53375adD9D2dFE19398eD65BAaEFfe622760A9A6": "0x5faF6a2D186448Dfa667c51CB3D695c7A6E52d8E", - "0x4EAeD76C3A388f4a841E9c765560BBe7B3E4B3A0": "0x5958A8DB7dfE0CC49382209069b00F54e17929C2", + "0x46f54d434063e5F1a2b2CC6d9AAa657b1B9ff82c": "0x9447c1413DA928aF354A114954BFc9E6114c5646", "0x98a84eff6e008c5ed0289655ccdca899bcb6b99f": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", "0x9617b633EF905860D919b88E1d9d9a6191795341": "0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9", - "0x257101F20cB7243E2c7129773eD5dBBcef8B34E0": "0x3Ba207c25A278524e1cC7FaAea950753049072A4", + "0x289424aDD4A1A503870EB475FD8bF1D586b134ED": "0x4985cc58C9004772c225aEC9C36Cc9A56EcC8c20", "0x207763511da879a900973A5E092382117C3c1588": "0xD533a949740bb3306d119CC777fa900bA034cd52", "0x1062eB452f8C7A94276437ec1F4aAca9b1495B72": "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", "0x003d5a75d284824af736df51933be522de9eed0f": "0xCa76543Cf381ebBB277bE79574059e32108e3E65", @@ -44,14 +44,14 @@ "0x0bca8ebcb26502b013493bf8fe53aa2b1ed401c1": "0xdCD90C7f6324cfa40d7169ef80b12031770B4325", "0x390Db10e65b5ab920C19149C919D970ad9d18A41": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x7Ce7D9ED62B9A6c5aCe1c6Ec9aeb115FA3064757": "0xdA816459F1AB5631232FE5e97a05BBBb94970c95", - "0xebfde87310dc22404d918058faa4d56dc4e93f0a": "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7", + "0xce450a23378859fB5157F4C4cCCAf48faA30865B": "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7", "0x6Ff9061bB8f97d948942cEF376d98b51fA38B91f": "0xa9fE4601811213c340e850ea305481afF02f5b28", "0xFFbF4892822e0d552CFF317F65e1eE7b5D3d9aE6": "0xE14d13d8B3b85aF791b2AADD661cDBd5E6097Db1", "0xbc36FdE44A7FD8f545d459452EF9539d7A14dd63": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", "0x8227965A7f42956549aFaEc319F4E444aa438Df5": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", - "0x551a7CfF4de931F32893c928bBc3D25bF1Fc5147": "0x7Da96a3891Add058AdA2E826306D812C638D87a7", + "0x40d95C4b34127CF43438a963e7C066156C5b87a3": "0x7Da96a3891Add058AdA2E826306D812C638D87a7", "0xbb02A884621FB8F5BFd263A67F58B65df5b090f3": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", - "0x920d9bd936da4eafb5e25c6bdc9f6cb528953f9f": "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", + "0xed510639E1b07c9145CD570F8Dd0CA885F760E09": "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", "0x6371EfE5CD6e3d2d7C477935b7669401143b7985": "0xd92494CB921E5C0d3A39eA88d0147bbd82E51008", "0x7b7473a76d6ae86ce19f7352a1e89f6c9dc39020": "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", "0xc6B2b3fE7c3D7a6f823D9106E22e66660709001e": "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", @@ -61,9 +61,8 @@ "0xf179fe36a36B32a4644587B8cdee7A23af98ed37": "0x1635b506a88fBF428465Ad65d00e8d6B6E5846C3", "0x5ec47EE69BEde0b6C2A2fC0D9d094dF16C192498": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", "0x59E9082E068Ddb27FC5eF1690F9a9f22B32e573f": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", - "0x806e16ec797c69afa8590a55723ce4cc1b54050e": "0xd92494CB921E5C0d3A39eA88d0147bbd82E51008", - "0x3410297D89dCDAf4072B805EFc1ef701Bb3dd9BF": "0x26FA3fFFB6EfE8c1E69103aCb4044C26B9A106a9", - "0x6cbAFEE1FaB76cA5B5e144c43B3B50d42b7C8c8f": "0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9", + "0xC6D3b82f9774Db8F92095b5e4352a8bB8B0dC20d": "0x26FA3fFFB6EfE8c1E69103aCb4044C26B9A106a9", + "0x6bcd99D6009ac1666b58CB68fB4A50385945CDA2": "0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9", "0x7d8dF3E4D06B0e19960c19Ee673c0823BEB90815": "0xD533a949740bb3306d119CC777fa900bA034cd52", "0x1062eb452f8c7a94276437ec1f4aaca9b1495b72": "0x38EA452219524Bb87e18dE1C24D3bB59510BD783", "0x692887E8877C6Dd31593cda44c382DB5b289B684": "0xf35b31B941D94B249EaDED041DB1b05b7097fEb6", From 521d65ead13e507e2760a6b925f448ff3a8236b3 Mon Sep 17 00:00:00 2001 From: Fren Pets <165506496+frenpets@users.noreply.github.com> Date: Sun, 31 Mar 2024 00:20:35 +0300 Subject: [PATCH 1006/2004] add frenpets sdk adapter (#9627) --- projects/frenpets/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/frenpets/index.js diff --git a/projects/frenpets/index.js b/projects/frenpets/index.js new file mode 100644 index 00000000000..bed2de01830 --- /dev/null +++ b/projects/frenpets/index.js @@ -0,0 +1,13 @@ +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"), + }, +}; From 5a5668a06c0cba6a73e72c2989f19727357e60d4 Mon Sep 17 00:00:00 2001 From: Hayden Shively <17186559+haydenshively@users.noreply.github.com> Date: Sun, 31 Mar 2024 13:20:18 -0500 Subject: [PATCH 1007/2004] Add Aloe borrowed amounts (#9564) * Add Aloe borrowed amounts * Stop including borrows in TVL --- projects/aloe/index.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/aloe/index.js b/projects/aloe/index.js index 7a7171e76bc..6748e3f8c32 100644 --- a/projects/aloe/index.js +++ b/projects/aloe/index.js @@ -23,15 +23,25 @@ async function getVaults(api) { async function tvl(api) { const vaults = await getVaults(api); - return api.erc4626Sum({ calls: vaults, isOG4626: true }); + 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: true, + doublecounted: false, methodology: - "Sums up deposits and borrows across Aloe's ERC4626 lending vaults to get TVL. Does not include collateral value.", + "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 } + module.exports[chain] = { tvl, borrowed } }) \ No newline at end of file From e33bbe1e359a2ec6792b74f041cc2bbd12745898 Mon Sep 17 00:00:00 2001 From: imfeng Date: Mon, 1 Apr 2024 02:42:22 +0800 Subject: [PATCH 1008/2004] Add SatoshiProtocol Project (#9632) * Add SatoshiProtocol * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 5 ++++- projects/satoshi-protocol/index.js | 12 ++++++++++++ test.js | 3 ++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 projects/satoshi-protocol/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index f612af8172b..0f721c94619 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1666,7 +1666,10 @@ "zklink": { "WETH": "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169" }, - "kinto":{ + "kinto": { "WETH": "0x7526B5318Cbe690FBd3eC8DD7ad122f4F1b1d76F" + }, + "bevm": { + "WBTC": "0xB5136FEba197f5fF4B765E5b50c74db717796dcD" } } diff --git a/projects/satoshi-protocol/index.js b/projects/satoshi-protocol/index.js new file mode 100644 index 00000000000..5dc4709f410 --- /dev/null +++ b/projects/satoshi-protocol/index.js @@ -0,0 +1,12 @@ +const TROVE_MANAGER_BEACON_PROXY_ADDRESS = '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA'; + +async function tvl(api) { + const token = await api.call({ abi: 'address:collateralToken', target: TROVE_MANAGER_BEACON_PROXY_ADDRESS}) + return api.sumTokens({ tokens: [token], owner: [TROVE_MANAGER_BEACON_PROXY_ADDRESS] }) +} + +module.exports = { + bevm: { + tvl, + } +} diff --git a/test.js b/test.js index 037a97aec04..befb4679075 100644 --- a/test.js +++ b/test.js @@ -110,7 +110,8 @@ sdk.api.abi.call = async (...args) => { const chains = Object.keys(module).filter(item => typeof module[item] === 'object' && !Array.isArray(module[item])); checkExportKeys(module, passedFile, chains) const unixTimestamp = Math.round(Date.now() / 1000) - 60; - const { chainBlocks } = await getCurrentBlocks([]); // fetch only ethereum block for local test + // const { chainBlocks } = await getCurrentBlocks([]); // fetch only ethereum block for local test + const chainBlocks = {} const ethBlock = chainBlocks.ethereum; const usdTvls = {}; const tokensBalances = {}; From a5f768c163bb2c10d56b01ecab36f4e428d70d59 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 31 Mar 2024 20:48:08 +0200 Subject: [PATCH 1009/2004] add more core assets --- projects/helper/coreAssets.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 0f721c94619..78c01379ca8 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1288,6 +1288,7 @@ }, "core": { "WCORE": "0x40375c92d9faf44d2f9db9bd9ba41a3317a2404f", + "WCORE_1": "0x191e94fa59739e188dce837f7f6978d84727ad01", "USDT": "0x900101d06a7426441ae63e9ab3b9b0f63be145f1", "USDC": "0xa4151b2b3e269645181dccf2d426ce75fcbdeca9" }, @@ -1404,6 +1405,9 @@ }, "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", @@ -1653,6 +1657,7 @@ }, "merlin": { "WBTC": "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA", + "WBTC_1": "0xB880fd278198bd590252621d4CD071b1842E9Bcd", "VOYA": "0x480e158395cc5b41e5584347c495584ca2caf78d" }, "ftn": { @@ -1671,5 +1676,21 @@ }, "bevm": { "WBTC": "0xB5136FEba197f5fF4B765E5b50c74db717796dcD" + }, + "degen": { + "WDEGEN": "0xeb54dacb4c2ccb64f8074eceea33b5ebb38e5387" + }, + "imx": { + "WIMX": "0x3A0C2Ba54D6CBd3121F01b96dFd20e99D1696C9D", + "ETH": "0x52a6c53869ce09a731cd772f245b97a4401d3348", + "USDC": "0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2" + }, + "sapphire": { + "WOAS": "0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019", + "ROSY": "0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8", + "USDT": "0x9ca066f00e55b90623efe323feb2a649686538b6" + }, + "rss3_vsl": { + "WRSS": "0xe27d019909738d98ab7f850c05ee07806c30c71d" } } From f46ddef802fc14bdd46082157774579e4fb8c901 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 1 Apr 2024 03:54:21 +0900 Subject: [PATCH 1010/2004] mint.club-v2 - add degen chain (#9630) --- projects/mint-club-v2/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js index be8d63e0223..c3f7252f2e0 100644 --- a/projects/mint-club-v2/index.js +++ b/projects/mint-club-v2/index.js @@ -8,13 +8,14 @@ module.exports = { const V2_BOND_CONTRACTS = { avax: "0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1", blast: "0x621c335b4BD8f2165E120DC70d3AfcAfc6628681", + degen: "0x3bc6B601196752497a68B2625DB4f2205C3b150b", } const ownTokens = { bsc: ['0x1f3Af095CDa17d63cad238358837321e95FC5915'] } -const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast'] +const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast', 'degen'] chains.forEach(chain => { const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' From b53a2fd5e7716e7c76aafa767b2329cb725b2161 Mon Sep 17 00:00:00 2001 From: Sergio <165494709+heroblazedeployer@users.noreply.github.com> Date: Sun, 31 Mar 2024 21:54:38 +0300 Subject: [PATCH 1011/2004] add sdk staking adapter for Hero Blaze (#9631) --- projects/heroblaze/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/heroblaze/index.js diff --git a/projects/heroblaze/index.js b/projects/heroblaze/index.js new file mode 100644 index 00000000000..9907b57864a --- /dev/null +++ b/projects/heroblaze/index.js @@ -0,0 +1,20 @@ +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" + ), + }, +}; From c28758fb2fdb1f452d807cb6d5fefa909ba513f2 Mon Sep 17 00:00:00 2001 From: hxzaifa13 <121883195+hxzaifa13@users.noreply.github.com> Date: Sun, 31 Mar 2024 15:23:35 -0400 Subject: [PATCH 1012/2004] add blackwing project (#9629) Co-authored-by: Huzaifa Nasir --- projects/blackwing/index.js | 91 +++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 projects/blackwing/index.js diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js new file mode 100644 index 00000000000..9814ed5ea00 --- /dev/null +++ b/projects/blackwing/index.js @@ -0,0 +1,91 @@ +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 = "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe"; +const ARBITRUM_EZETH = "0x2416092f143378750bb29b79eD961ab195CcEea5"; + +const ETHEREUM_MAINNET_RSWETH = '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0'; +const ETHEREUM_MAINNET_RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7"; +const ETHEREUM_MAINNET_WEETH = "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee"; +const ETHEREUM_MAINNET_EZETH = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; + + + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ tokensAndOwners: [ + [ + ADDRESSES.arbitrum.USDC_CIRCLE, + BLACKWING_VAULT_ARBITRUM + ], + [ + ADDRESSES.arbitrum.USDC, + BLACKWING_VAULT_ARBITRUM + ], + [ + ADDRESSES.arbitrum.WETH, + BLACKWING_VAULT_ARBITRUM + ], + [ + ARBITRUM_EZETH, + BLACKWING_VAULT_ARBITRUM + ], + [ + ARBITRUM_WEETH, + BLACKWING_VAULT_ARBITRUM + ], + ]}), + }, + ethereum: { + tvl: sumTokensExport({ tokensAndOwners: [ + [ + ADDRESSES.ethereum.USDC, + BLACKWING_VAULT_ETH, + ], + [ + ADDRESSES.ethereum.WETH, + BLACKWING_VAULT_ETH, + ], + [ + ETHEREUM_MAINNET_RSWETH, + BLACKWING_VAULT_ETH + ], + [ + ETHEREUM_MAINNET_RSETH, + BLACKWING_VAULT_ETH + ], + [ + ETHEREUM_MAINNET_EZETH, + BLACKWING_VAULT_ETH + ], + [ + ADDRESSES.ethereum.EETH, + BLACKWING_VAULT_ETH, + ], + [ + ETHEREUM_MAINNET_WEETH, + BLACKWING_VAULT_ETH, + ], + [ + ADDRESSES.ethereum.sUSDe, + BLACKWING_VAULT_ETH, + ] + ]}) + }, + bsc: { + tvl: sumTokensExport({tokensAndOwners: [ + [ + ADDRESSES.bsc.USDT, + BLACKWING_VAULT_BSC, + ], + [ + ADDRESSES.bsc.WBNB, + BLACKWING_VAULT_BSC + ] + ]}) + } +} From b4d32287a5a2069d29357cb9727bb33bbfe78a0b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 31 Mar 2024 21:26:10 +0200 Subject: [PATCH 1013/2004] minor fix --- projects/blackwing/index.js | 76 ++++----------------------------- projects/fyde/index.js | 3 +- projects/helper/coreAssets.json | 1 - 3 files changed, 10 insertions(+), 70 deletions(-) diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index 9814ed5ea00..6813f3adc29 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -13,79 +13,19 @@ const ETHEREUM_MAINNET_RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7"; const ETHEREUM_MAINNET_WEETH = "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee"; const ETHEREUM_MAINNET_EZETH = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; - - module.exports = { arbitrum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [ - ADDRESSES.arbitrum.USDC_CIRCLE, - BLACKWING_VAULT_ARBITRUM - ], - [ - ADDRESSES.arbitrum.USDC, - BLACKWING_VAULT_ARBITRUM - ], - [ - ADDRESSES.arbitrum.WETH, - BLACKWING_VAULT_ARBITRUM - ], - [ - ARBITRUM_EZETH, - BLACKWING_VAULT_ARBITRUM - ], - [ - ARBITRUM_WEETH, - BLACKWING_VAULT_ARBITRUM - ], - ]}), + tvl: sumTokensExport({ tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, ARBITRUM_EZETH, ARBITRUM_WEETH,], owner: BLACKWING_VAULT_ARBITRUM, fetchCoValentTokens: true, }), }, ethereum: { - tvl: sumTokensExport({ tokensAndOwners: [ - [ - ADDRESSES.ethereum.USDC, - BLACKWING_VAULT_ETH, - ], - [ - ADDRESSES.ethereum.WETH, - BLACKWING_VAULT_ETH, - ], - [ - ETHEREUM_MAINNET_RSWETH, - BLACKWING_VAULT_ETH - ], - [ - ETHEREUM_MAINNET_RSETH, - BLACKWING_VAULT_ETH - ], - [ - ETHEREUM_MAINNET_EZETH, - BLACKWING_VAULT_ETH - ], - [ - ADDRESSES.ethereum.EETH, - BLACKWING_VAULT_ETH, - ], - [ - ETHEREUM_MAINNET_WEETH, - BLACKWING_VAULT_ETH, - ], - [ - ADDRESSES.ethereum.sUSDe, - BLACKWING_VAULT_ETH, - ] - ]}) + 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, + ], owner: BLACKWING_VAULT_ETH, fetchCoValentTokens: true, + }) }, bsc: { - tvl: sumTokensExport({tokensAndOwners: [ - [ - ADDRESSES.bsc.USDT, - BLACKWING_VAULT_BSC, - ], - [ - ADDRESSES.bsc.WBNB, - BLACKWING_VAULT_BSC - ] - ]}) + tvl: sumTokensExport({ + tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.WBNB,], owner: BLACKWING_VAULT_BSC, fetchCoValentTokens: true, + }) } } diff --git a/projects/fyde/index.js b/projects/fyde/index.js index d6ebcb1a800..2ed9adbc38a 100644 --- a/projects/fyde/index.js +++ b/projects/fyde/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; const RESTAKING_AGGREGATOR = "0x3f69F62e25441Cf72E362508f4d6711d53B05341"; -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const WETH = ADDRESSES.ethereum.WETH; async function tvl(api) { const tokens = await api.fetchList({ lengthAbi: 'getAssetsListLength', itemAbi: 'assetsList', target: FYDE_CONTRACT }) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 78c01379ca8..c8c626d5432 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1687,7 +1687,6 @@ }, "sapphire": { "WOAS": "0x1ffd8a218fdc5b38210d64cbb45f40dc55a4e019", - "ROSY": "0x6665a6Cae3F52959f0f653E3D04270D54e6f13d8", "USDT": "0x9ca066f00e55b90623efe323feb2a649686538b6" }, "rss3_vsl": { From 513c8ad7d86810fff2533ed3fed22e12db5b1036 Mon Sep 17 00:00:00 2001 From: Hippocampus Date: Sun, 31 Mar 2024 22:30:12 +0200 Subject: [PATCH 1014/2004] Thorchain-lending V1 (#9554) * Thorchain-lending V1 * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/thorchain-lending/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/thorchain-lending/index.js diff --git a/projects/thorchain-lending/index.js b/projects/thorchain-lending/index.js new file mode 100644 index 00000000000..ea614d0c152 --- /dev/null +++ b/projects/thorchain-lending/index.js @@ -0,0 +1,18 @@ +const { getCache, } = require('../helper/http') + +async function tvl(api) { + const pools = await getCache('https://midgard.ninerealms.com/v2/pools') + pools.map(({ totalCollateral = 0 }) => { + api.addCGToken('thorchain', totalCollateral / 1e6) + }) + return api.getBalances() +} + +module.exports = { + hallmarks: [ + [1626656400, "Protocol paused"], + [1631754000, "Protocol resumed"], + ], + timetravel: false, + thorchain: { tvl, }, +} \ No newline at end of file From d389f69ede5f8cd5f42007a2b278508976fab492 Mon Sep 17 00:00:00 2001 From: signal Date: Mon, 1 Apr 2024 10:34:35 +0800 Subject: [PATCH 1015/2004] update ETH calculation (#9634) * Add irisnet, carbon and chihuahua volume to stafi * Update code style * fix volume calculate * fix carbon * fix chaintvl * fix chaintvl * fix chaintvl * fix chaintvl * Update ETH calculation * Update index.js --- projects/stafi/index.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/projects/stafi/index.js b/projects/stafi/index.js index ffc88b3b76f..8aba8f04f06 100644 --- a/projects/stafi/index.js +++ b/projects/stafi/index.js @@ -7,14 +7,11 @@ const { fetchURL } = require('../helper/utils'); const wethAddress = ADDRESSES.ethereum.WETH -async function ethereum(timestamp, block) { - const supply = await sdk.api.erc20.totalSupply({ - target: '0x9559Aaa82d9649C7A7b220E7c461d2E74c9a3593', - block - }) - +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]: supply.output + [wethAddress]: (totalSupply * rate)/1e18 } } From f616833a5a58ef2449d963e5737649e4961e39b2 Mon Sep 17 00:00:00 2001 From: Degendex-Fi <165623405+Degendex-Fi@users.noreply.github.com> Date: Mon, 1 Apr 2024 17:16:24 +0700 Subject: [PATCH 1016/2004] Degendex-Fi (#9635) --- projects/degendex-fi/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/degendex-fi/index.js diff --git a/projects/degendex-fi/index.js b/projects/degendex-fi/index.js new file mode 100644 index 00000000000..eb7456cdf82 --- /dev/null +++ b/projects/degendex-fi/index.js @@ -0,0 +1,6 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport( + "degen", + "0x45c1f8AF23Ea55e51927EE9A4d456fa7BCc5F0Fe" +); From 30a00099a095c883fb05f7dd14f41470ebd27e16 Mon Sep 17 00:00:00 2001 From: Denis Kostylev Date: Mon, 1 Apr 2024 18:17:39 +0800 Subject: [PATCH 1017/2004] Add contracts to envelop project (#9637) * add tvls for all chains * add missing hallmarks * add protocol contract to blast * reduce hallmarks list * add blast contract * fix wrong network * Fixed wrong network * sync branch * add contracts to envelop project --- projects/envelop/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/envelop/index.js b/projects/envelop/index.js index 8e559f40628..3d665030d28 100644 --- a/projects/envelop/index.js +++ b/projects/envelop/index.js @@ -62,7 +62,8 @@ const config = { "0x4640024F4e00De23211ca505f3021d460c01a2a8", // Protocol // "0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8", // Farming "0xFcE14427Eb7e5df0c5313249b19B56b81633Df8A", // Protocol - "0x018Ab23bae3eD9Ec598B1239f37B998fEDB75af3", // Protocol + "0x018Ab23bae3eD9Ec598B1239f37B998fEDB75af3", // Protocol, + "0xc2571eBbc8F2af4f832bB8a2D3A4b0932Ce24773", ], farming: ['0xD5E1cDfCf6A9fdc68997a90E8B5ee962e536a0D8'], NIFTSY: '0x432cdbC749FD96AA35e1dC27765b23fDCc8F5cf1', @@ -79,6 +80,7 @@ const config = { protocolContracts: [ // '0x5bECBAD9784e1b370AE34a154084F3e7a52f6cEe', // '0x85DC0Ed956c15cB40580712693033e36385204A3', + '0x6664c8118284b3F5ECB47c2105cAa544Ab0Cf75B', ], tokens: [ ADDRESSES.null, From d79e6212336778a7d0156826a749cfec747b06c6 Mon Sep 17 00:00:00 2001 From: NGUYEN Quang Chuc <42959065+quangchuc@users.noreply.github.com> Date: Mon, 1 Apr 2024 12:21:01 +0200 Subject: [PATCH 1018/2004] fix: correct RMM V3 tvl to include RealTokens (#9559) --- projects/realtoken-rmm-v3/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/realtoken-rmm-v3/index.js b/projects/realtoken-rmm-v3/index.js index eda380666e8..2aed86eb2ee 100644 --- a/projects/realtoken-rmm-v3/index.js +++ b/projects/realtoken-rmm-v3/index.js @@ -1,6 +1,13 @@ -const { aaveExports, methodology } = require("../helper/aave"); +const { aaveExports } = require("../helper/aave"); +const methodologies = require("../helper/methodologies"); module.exports = { - methodology, - xdai: aaveExports('xdai', '0x11B45acC19656c6C52f93d8034912083AC7Dd756', undefined, ["0x11B45acC19656c6C52f93d8034912083AC7Dd756"],), + methodology: methodologies.lendingMarket, + xdai: aaveExports( + "xdai", + "0xC6c4b123e731819AC5f7F9E0fe3A118e9b1227Cd", + undefined, + ["0x11B45acC19656c6C52f93d8034912083AC7Dd756"], + { oracle: "0xb4AE809Ad7CEB7e5B579dEdD0De7c213aD5AB516" } + ), }; From 07f1a39a52ca25a4615795a989e32c3df4893f01 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Mon, 1 Apr 2024 18:55:23 +0800 Subject: [PATCH 1019/2004] update subgraph url (#9636) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js * update subgraph url * fix bug * revert --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/Chocoinu/{index.js => index.ts} | 0 projects/solv-protocol-funds/index.js | 16 +++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) rename projects/Chocoinu/{index.js => index.ts} (100%) diff --git a/projects/Chocoinu/index.js b/projects/Chocoinu/index.ts similarity index 100% rename from projects/Chocoinu/index.js rename to projects/Chocoinu/index.ts diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index 5d081436582..df5f9b93a31 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -8,10 +8,10 @@ const { getAmounts } = require("./iziswap") // The Graph const graphUrlList = { ethereum: 'https://api.studio.thegraph.com/query/40045/solv-payable-factory-prod/version/latest', - bsc: 'https://api.thegraph.com/subgraphs/name/slov-payable/solv-v3-earn-factory', + 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: 'http://api.0xgraph.xyz/subgraphs/name/solv-payable-factory-mentle-0xgraph', - merlin: 'http://solv-subgraph-server-alb-694489734.us-west-1.elb.amazonaws.com:8000/subgraphs/name/solv-payable-factory-merlin/graphql', + 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-dev/solv-protocol-rwa-slot/main/slot.json'; @@ -36,14 +36,17 @@ async function borrowed(api) { let address = (await getConfig('solv-protocol/funds', addressUrl)); const depositAddress = filterDepositAddress(network, address); - + const graphData = await getGraphData(api.timestamp, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; - var pools = poolLists.filter((value) => { - return depositAddress.length == 0 || depositAddress.indexOf(value.vault) == -1; - }); + let pools = []; + for (const pool of poolLists) { + if (depositAddress.length == 0 && depositAddress.indexOf(pool.vault) == -1) { + pools.push(pool); + } + } const poolConcretes = await concrete(pools, api); const nav = await api.multiCall({ @@ -94,7 +97,6 @@ async function borrowed(api) { 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(); From dd20b257b657ffe6c811463c1ef32dc704394b38 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 1 Apr 2024 12:29:06 +0100 Subject: [PATCH 1020/2004] prisma hallmark (#9638) --- projects/prisma/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/prisma/index.js b/projects/prisma/index.js index 0c7b4b4908a..a2ca1c11690 100644 --- a/projects/prisma/index.js +++ b/projects/prisma/index.js @@ -5,7 +5,8 @@ const config = { } module.exports.hallmarks = [ - [1698883200,"PRISMA token launch"] + [1698883200,"PRISMA token launch"], + [1711669800,"Prisma Exploit"] ], Object.keys(config).forEach(chain => { const { factory, fromBlock, } = config[chain] From 5bdf23e2f1d4902725a76890b4bbae28637d1e52 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:06:36 +0200 Subject: [PATCH 1021/2004] fix astroport --- projects/terraswap/factoryTvl.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/terraswap/factoryTvl.js b/projects/terraswap/factoryTvl.js index b6e5a3121f6..553e5ea64ab 100644 --- a/projects/terraswap/factoryTvl.js +++ b/projects/terraswap/factoryTvl.js @@ -19,8 +19,9 @@ function getAssetInfo(asset) { async function getAllPairs(factory, chain) { 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": 30 ${allPairs.length ? `,"start_after":${JSON.stringify(allPairs[allPairs.length - 1].asset_infos)}` : ""} }}` + 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) } while (currentPairs.length > 0) From 2d35d03b9238c618ff205ef0b08bf77038fb991e Mon Sep 17 00:00:00 2001 From: yuval-weiss <43820038+yuval-weiss@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:07:21 +0200 Subject: [PATCH 1022/2004] add nstSTRK to core assets (#9640) --- projects/helper/coreAssets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index c8c626d5432..9d25b93c889 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1254,7 +1254,8 @@ "WSTETH": "0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2", "LUSD": "0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac", "RETH": "0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610", - "UNO": "0x0719b5092403233201aa822ce928bd4b551d0cdb071a724edd7dc5e5f57b7f34" + "UNO": "0x0719b5092403233201aa822ce928bd4b551d0cdb071a724edd7dc5e5f57b7f34", + "NSTSTRK": "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2" }, "ton": { "TON": "0x0000000000000000000000000000000000000000", From b4207b360d989655025d2df92dd969dc5ba91410 Mon Sep 17 00:00:00 2001 From: Pierre764 <87363698+Pierre764@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:10:48 +0800 Subject: [PATCH 1023/2004] Adding New Staking Contract Support to Decuabte Adapter (#9639) * Update and rename index.js to Add New Staking Contract Support to Decubate Adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/decubate/index.js | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/projects/decubate/index.js b/projects/decubate/index.js index b18c12bf431..66419bee029 100644 --- a/projects/decubate/index.js +++ b/projects/decubate/index.js @@ -1,27 +1,14 @@ -const sdk = require("@defillama/sdk"); +const { staking } = require('../helper/staking') -const DCBToken = "0xEAc9873291dDAcA754EA5642114151f3035c67A2"; -const stakingPool = "0xD1748192aE1dB982be2FB8C3e6d893C75330884a"; - -async function staking (timestamp, block, chainBlocks) { - let balances = {}; - - let {output: balance} = await sdk.api.erc20.balanceOf({ - target: DCBToken, - owner: stakingPool, - block: chainBlocks.bsc, - chain: "bsc" - }); - - sdk.util.sumSingleBalance(balances, `bsc:${DCBToken}`, balance) - - return balances; -} +const DCBToken = "0xEAc9873291dDAcA754EA5642114151f3035c67A2" +const stakingPools = [ + "0xD1748192aE1dB982be2FB8C3e6d893C75330884a", // Legacy staking pool contract + "0xe740758a8cd372c836857defe8011e4e80e48723" // New staking pools contract +] module.exports = { - bsc: { - tvl: async () => ({}), - staking - }, - -} + bsc: { + tvl: async () => ({}), + staking: staking(stakingPools, DCBToken,) + }, +} \ No newline at end of file From 99c8020d6a2145e2ac9e605468aee4a2b4aa9f98 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 Apr 2024 20:28:11 +0200 Subject: [PATCH 1024/2004] Add FrogSwap Farm configuration --- projects/frogswap-farm/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/frogswap-farm/index.js diff --git a/projects/frogswap-farm/index.js b/projects/frogswap-farm/index.js new file mode 100644 index 00000000000..db4e97932e0 --- /dev/null +++ b/projects/frogswap-farm/index.js @@ -0,0 +1,10 @@ +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 From a63d4367ae3e1863adcf3e6b5d9b3859133c2bd3 Mon Sep 17 00:00:00 2001 From: Dozer <71271486+dev-dozer@users.noreply.github.com> Date: Mon, 1 Apr 2024 21:29:26 +0300 Subject: [PATCH 1025/2004] added blast chain (#9644) --- projects/interport-finance/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index 975e2ea14d7..60e791a3b7e 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -3,19 +3,21 @@ const { staking } = require('../helper/staking'); const usdtVault = '0xEc8DDCb498b44C35EFaD7e5e43E0Caf6D16A66E8'; const usdcVault = '0x5b45B414c6CD2a3341bE70Ba22BE786b0124003F'; +const usdbVault = '0x5b45B414c6CD2a3341bE70Ba22BE786b0124003F'; const defaultVaults = [usdtVault, usdcVault]; const config = { era: { vaults: ['0xc724832c5ed81599aE3E4EBC0eC4f87A285B5838'] }, base: { vaults: [usdcVault] }, op_bnb: { vaults: [usdtVault] }, fantom: { vaults: ['0xd0Adc0cdE959616666c4691985df91C60ca3C0F7', '0xb6AB8EeFAE1a2c22Ca6338E143cb7dE544800c6e'] }, + blast: { vaults: [usdbVault] }, } 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'].forEach(chain => { +['ethereum', 'avax', 'bsc', 'fantom', 'arbitrum', 'polygon', 'polygon_zkevm', 'base', 'era', 'optimism', 'linea', 'eon', 'op_bnb', 'scroll', 'manta', 'inevm', 'blast'].forEach(chain => { module.exports[chain] = { tvl: async (api) => { const vaults = config[chain]?.vaults || defaultVaults From 1e59c5c3f71dd1a5a288c0d56ff4955a82c4c230 Mon Sep 17 00:00:00 2001 From: aster <39130640+aster2709@users.noreply.github.com> Date: Tue, 2 Apr 2024 00:00:58 +0530 Subject: [PATCH 1026/2004] feat(nftperp): nftperp v2 tvl (#9643) --- projects/nftperp/index.js | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/projects/nftperp/index.js b/projects/nftperp/index.js index cccf4948fbe..78cac076faf 100644 --- a/projects/nftperp/index.js +++ b/projects/nftperp/index.js @@ -1,18 +1,25 @@ -const ADDRESSES = require('../helper/coreAssets.json'); -const { sumTokensExport } = require('../helper/sumTokens'); +const ADDRESSES = require("../helper/coreAssets.json") +const { sumTokensExport } = require("../helper/sumTokens") module.exports = { - arbitrum: { - tvl: sumTokensExport({ - tokensAndOwners: [ - // DEX - [ADDRESSES.arbitrum.WETH, '0x6fc05B7DFe545cd488E9D47d56CFaCA88F69A2e1'], - // Insurance fund - [ADDRESSES.arbitrum.WETH, '0x035E4480437002A30b61Df6788DFb6199c2C5210'], - ] - }) - }, - hallmarks: [ - [1688695200, "v1 shutdown"], - ], -}; + 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"], + ], + }), + }, +} From 4bf07c3ff260d2d191a6e1fc48083964f62f4283 Mon Sep 17 00:00:00 2001 From: Hippocampus Date: Mon, 1 Apr 2024 20:31:56 +0200 Subject: [PATCH 1027/2004] Fix THORChain lending adapter (#9642) --- projects/thorchain-lending/index.js | 38 +++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/projects/thorchain-lending/index.js b/projects/thorchain-lending/index.js index ea614d0c152..e96eab88130 100644 --- a/projects/thorchain-lending/index.js +++ b/projects/thorchain-lending/index.js @@ -1,11 +1,31 @@ const { getCache, } = require('../helper/http') +const sdk = require('@defillama/sdk') -async function tvl(api) { - const pools = await getCache('https://midgard.ninerealms.com/v2/pools') - pools.map(({ totalCollateral = 0 }) => { - api.addCGToken('thorchain', totalCollateral / 1e6) +const chainMapping = { + ETH: 'ethereum', + BTC: 'bitcoin', +} + +function getDChain(chain) { + return chainMapping[chain] +} + +async function tvl(_, _1, _2, { api }) { + const lendingModule = await getCache('https://thornode.ninerealms.com/thorchain/balance/module/lending') + + const aChain = api.chain + + const balances = {} + + lendingModule.coins.map(({ denom, amount = 0 }) => { + let [, asset] = denom.split('.') + let chain = chainMapping[asset.toUpperCase()] + const dChain = getDChain(asset.toUpperCase()) + if (dChain !== aChain) return; + sdk.util.sumSingleBalance(balances, chain, amount / 1e8) }) - return api.getBalances() + + return balances } module.exports = { @@ -14,5 +34,9 @@ module.exports = { [1631754000, "Protocol resumed"], ], timetravel: false, - thorchain: { tvl, }, -} \ No newline at end of file + thorchain: { tvl }, +} + +Object.keys(chainMapping).map(getDChain).forEach(chain => { + module.exports[chain] = {tvl} +}) From 64231f23d931305e2faa724a6689fb16b8dddbbb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 Apr 2024 20:32:17 +0200 Subject: [PATCH 1028/2004] Revert "Fix THORChain lending adapter (#9642)" (#9645) This reverts commit 4bf07c3ff260d2d191a6e1fc48083964f62f4283. --- projects/thorchain-lending/index.js | 38 ++++++----------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/projects/thorchain-lending/index.js b/projects/thorchain-lending/index.js index e96eab88130..ea614d0c152 100644 --- a/projects/thorchain-lending/index.js +++ b/projects/thorchain-lending/index.js @@ -1,31 +1,11 @@ const { getCache, } = require('../helper/http') -const sdk = require('@defillama/sdk') -const chainMapping = { - ETH: 'ethereum', - BTC: 'bitcoin', -} - -function getDChain(chain) { - return chainMapping[chain] -} - -async function tvl(_, _1, _2, { api }) { - const lendingModule = await getCache('https://thornode.ninerealms.com/thorchain/balance/module/lending') - - const aChain = api.chain - - const balances = {} - - lendingModule.coins.map(({ denom, amount = 0 }) => { - let [, asset] = denom.split('.') - let chain = chainMapping[asset.toUpperCase()] - const dChain = getDChain(asset.toUpperCase()) - if (dChain !== aChain) return; - sdk.util.sumSingleBalance(balances, chain, amount / 1e8) +async function tvl(api) { + const pools = await getCache('https://midgard.ninerealms.com/v2/pools') + pools.map(({ totalCollateral = 0 }) => { + api.addCGToken('thorchain', totalCollateral / 1e6) }) - - return balances + return api.getBalances() } module.exports = { @@ -34,9 +14,5 @@ module.exports = { [1631754000, "Protocol resumed"], ], timetravel: false, - thorchain: { tvl }, -} - -Object.keys(chainMapping).map(getDChain).forEach(chain => { - module.exports[chain] = {tvl} -}) + thorchain: { tvl, }, +} \ No newline at end of file From ee4ba0d81b5b0663ffbd8e9590eb12fd67c04e10 Mon Sep 17 00:00:00 2001 From: lemonpac <144460286+lemonpac@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:20:12 +0200 Subject: [PATCH 1029/2004] Upgrades of IntentX & Integration of Core Markets (#9368) * Obtain IntentX net deposits as TVL * Obtain IntentX net deposits as TVL * migration: IntentX to 0.8.2 * feat: Core markets integration * fix: BigNumber in total * fix: Core-Markets adapter --------- Co-authored-by: genimoncio --- projects/core-markets/index.js | 43 +++++++++++++++++++++++++++ projects/defiplaza.js | 2 +- projects/intentx/index.js | 54 ++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 projects/core-markets/index.js create mode 100644 projects/intentx/index.js diff --git a/projects/core-markets/index.js b/projects/core-markets/index.js new file mode 100644 index 00000000000..6ff8fb6c62e --- /dev/null +++ b/projects/core-markets/index.js @@ -0,0 +1,43 @@ +const { request, gql } = require("graphql-request"); + +const graphUrl = "https://api.studio.thegraph.com/query/62472/core-analytics-082/version/latest"; + +const BETA_START = 236678; + +const query = gql` + 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(toTimestamp) { + const { dailyHistories } = await request(graphUrl, query, { + from: BETA_START.toString(), + to: toTimestamp.timestamp.toString(), + }); + + const total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); + + return { + "blast:0x4300000000000000000000000000000000000003": total, + }; +} + +module.exports = { + timetravel: false, + start: BETA_START, + blast: { + tvl: async (timestamp) => { + return getTVL(timestamp); + }, + }, +}; diff --git a/projects/defiplaza.js b/projects/defiplaza.js index 930c5ba11a4..d915d241e95 100644 --- a/projects/defiplaza.js +++ b/projects/defiplaza.js @@ -41,4 +41,4 @@ module.exports = { }, }, timetravel: false, -}; +}; \ No newline at end of file diff --git a/projects/intentx/index.js b/projects/intentx/index.js new file mode 100644 index 00000000000..3f03b4896b4 --- /dev/null +++ b/projects/intentx/index.js @@ -0,0 +1,54 @@ +const { request, gql } = require("graphql-request"); + +const graphUrl = + "https://api.studio.thegraph.com/query/62472/intentx-analytics_082/version/latest"; + +const BETA_START = 1700006400; // 2023-11-15T00:00:00+00:00 + +const query = gql` + query stats($from: String!, $to: String!) { + dailyHistories( + where: { + timestamp_gte: $from + timestamp_lte: $to + accountSource: "0x8Ab178C07184ffD44F0ADfF4eA2ce6cFc33F3b86" + } + ) { + timestamp + platformFee + accountSource + tradeVolume + deposit + withdraw + } + } +`; + + +async function getTVL(toTimestamp) { + const { dailyHistories } = await request(graphUrl, query, { + from: BETA_START.toString(), + to: toTimestamp.toString(), + }); + + const total = dailyHistories.reduce( + (acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), + 0 + ); + + return { + "base:0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": total, + }; +} + +module.exports = { + timetravel: false, + start: BETA_START, + base: { + tvl: async (timestamp) => { + return getTVL(timestamp); + }, + }, + hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], + +}; From e8dff088d4144893a200e2891ca45115ad880755 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 1 Apr 2024 14:17:13 -0700 Subject: [PATCH 1030/2004] Update GLIF Project adapter (#9550) * Update GLIF Project adapter * Update copy * Update hallmark * Add missing comma * Fix formatting Handle undefined height * Include handling height = 0 --- projects/glif/index.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/projects/glif/index.js b/projects/glif/index.js index d303e1fdd6e..fa3a77302a9 100644 --- a/projects/glif/index.js +++ b/projects/glif/index.js @@ -1,29 +1,33 @@ const { nullAddress } = require("../helper/tokenMapping"); const { get } = require("../helper/http"); -const INFINITY_POOL_CONTRACT = "0x43dAe5624445e7679D16a63211c5ff368681500c"; // pool address -const totalAssetsABI = "function totalAssets() view returns (uint256)"; -const totalBorrowedABI = "function totalBorrowed() view returns (uint256)"; +const INDEXER_API = "https://events.glif.link/pool/0/tvl"; module.exports = { methodology: - "The GLIF Pools protocol is a liquid staking protocol for Filecoin that requires borrowers to collateralize FIL in order to borrow for their storage providing operation. This TVL calculation adds the total amount of FIL staked into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL.", + "The GLIF Pools protocol is a liquid leasing protocol for Filecoin that requires borrowers to collateralize FIL in order to borrow for their storage providing operation. This TVL calculation adds the total amount of FIL deposited into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL.", filecoin: { - tvl: async (api) => { - const [totalAssets, totalLockedByMiners] = await Promise.all([ - api.call({ abi: totalAssetsABI, target: INFINITY_POOL_CONTRACT }), - // this call is too costly to perform on chain in this environment, - // we wrapped the locked miners collateral 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 - get("https://events.glif.link/metrics"), - ]); - - const totalAssetsBN = +totalAssets - const totalLockedByMinersBN = +totalLockedByMiners.totalMinerCollaterals - // then we add the totalLockedByMiners to the totalAssets, to account for the FIL locked by miners as borrow collateral + tvl: async (_, height, _1, { api }) => { + let url = INDEXER_API; + if (!!height && height >= 0) { + url += `?height=${height}`; + } + // 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, totalAssetsBN+totalLockedByMinersBN); + api.add(nullAddress, tvl); }, }, + timetravel: true, + start: 1677628800, // 2023-03-01 + hallmarks: [ + // timestamp, event + [1680206490, "Early deposits open"], // 2023-03-30 + [1685035830, "Protocol deployed"], // 2023-05-25 + [1691781060, "Exit ramp deployed"], // 2023-08-11 + [1711641600, "GLIF Points released"], // 2024-03-28 + ], }; From 5818a1989dfcd762513207a2342ee4860b83f01a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:23:45 +0200 Subject: [PATCH 1031/2004] fix intentx --- projects/intentx.js | 5 ++-- projects/intentx/index.js | 54 --------------------------------------- 2 files changed, 2 insertions(+), 57 deletions(-) delete mode 100644 projects/intentx/index.js diff --git a/projects/intentx.js b/projects/intentx.js index d31389bd6e0..38387fd0d5b 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,4 +1,3 @@ -const ADDRESSES = require('./helper/coreAssets.json') const { request, gql } = require("graphql-request"); const graphUrl = @@ -38,7 +37,7 @@ async function getTVL(toTimestamp) { ); return { - ["base:" + ADDRESSES.base.USDbC]: total, + "base:0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": total, }; } @@ -52,4 +51,4 @@ module.exports = { }, hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], -}; \ No newline at end of file +}; diff --git a/projects/intentx/index.js b/projects/intentx/index.js deleted file mode 100644 index 3f03b4896b4..00000000000 --- a/projects/intentx/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { request, gql } = require("graphql-request"); - -const graphUrl = - "https://api.studio.thegraph.com/query/62472/intentx-analytics_082/version/latest"; - -const BETA_START = 1700006400; // 2023-11-15T00:00:00+00:00 - -const query = gql` - query stats($from: String!, $to: String!) { - dailyHistories( - where: { - timestamp_gte: $from - timestamp_lte: $to - accountSource: "0x8Ab178C07184ffD44F0ADfF4eA2ce6cFc33F3b86" - } - ) { - timestamp - platformFee - accountSource - tradeVolume - deposit - withdraw - } - } -`; - - -async function getTVL(toTimestamp) { - const { dailyHistories } = await request(graphUrl, query, { - from: BETA_START.toString(), - to: toTimestamp.toString(), - }); - - const total = dailyHistories.reduce( - (acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), - 0 - ); - - return { - "base:0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": total, - }; -} - -module.exports = { - timetravel: false, - start: BETA_START, - base: { - tvl: async (timestamp) => { - return getTVL(timestamp); - }, - }, - hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], - -}; From 7c64e75da89fd383356c3e6fe66fe83be3fbf29a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 2 Apr 2024 01:26:02 +0100 Subject: [PATCH 1032/2004] export as tvl --- projects/MeowMiner/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/MeowMiner/index.js b/projects/MeowMiner/index.js index 1c633e80322..483be2acf95 100644 --- a/projects/MeowMiner/index.js +++ b/projects/MeowMiner/index.js @@ -7,7 +7,6 @@ module.exports = { methodology: 'counts the number of MEOW tokens in the Meow Miner contract.', start: 1000235, avax: { - tvl: () => ({}), - staking: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }) + tvl: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }) } } \ No newline at end of file From 701a8f261d5d5c79c52392bd35db5b9c1a671c78 Mon Sep 17 00:00:00 2001 From: mattt21 Date: Tue, 2 Apr 2024 00:32:50 -0500 Subject: [PATCH 1033/2004] dep dmute/mute (#9647) --- projects/mute/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/projects/mute/index.js b/projects/mute/index.js index b6166f0e415..110a1a2b27d 100644 --- a/projects/mute/index.js +++ b/projects/mute/index.js @@ -1,9 +1,6 @@ const { staking } = require('../helper/staking'); const { getUniTVL } = require('../helper/unknownTokens'); -const dMUTE_staking_contract = "0x4336e06Be4F62bD757c4248c48D4C0b32615A2Df" -const MUTE = "0x0e97C7a0F8B2C9885C8ac9fC6136e829CbC21d42" - const KOI = "0xa995ad25ce5eb76972ab356168f5e1d9257e4d05" const veKOI = "0x98dB4e3Df6502369dAD7AC99f3aEE5D064721C4C" @@ -11,7 +8,7 @@ module.exports = { misrepresentedTokens: true, era: { tvl: getUniTVL({ factory: '0x40be1cba6c5b47cdf9da7f963b6f761f4c60627d', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'sMLP' }), - staking: staking([dMUTE_staking_contract, veKOI], [MUTE, KOI], ) + staking: staking([veKOI], [KOI], ) }, methodology: "Counts liquidity in pools and KOI token in the veKOI contract", }; From 1962ed7ab0363fb2cb7fe4129b04b37fc3d58825 Mon Sep 17 00:00:00 2001 From: Nova <127639799+BuzzSeagull@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:34:01 +0800 Subject: [PATCH 1034/2004] add: c14 (#9648) --- projects/c14/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/c14/index.js diff --git a/projects/c14/index.js b/projects/c14/index.js new file mode 100644 index 00000000000..d3c9a50f930 --- /dev/null +++ b/projects/c14/index.js @@ -0,0 +1,7 @@ +const { aaveExports } = require('../helper/aave'); +const methodologies = require('../helper/methodologies'); + +module.exports = { + methodology: methodologies.lendingMarket, + scroll: aaveExports('astrzk', "0x12922D7d8762090Cb27E7e1e824EC9c373664704", undefined, ['0x7B47bfB3F6C4ff74bb39395676759d4aFbD9f071'], { v3: true }), +} \ No newline at end of file From bd8439c03bcdda86ce0979d57dc872ca05315093 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 Apr 2024 07:37:41 +0200 Subject: [PATCH 1035/2004] fix c14 --- projects/c14/index.js | 2 +- projects/helper/aave.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/c14/index.js b/projects/c14/index.js index d3c9a50f930..cc348169e6d 100644 --- a/projects/c14/index.js +++ b/projects/c14/index.js @@ -3,5 +3,5 @@ const methodologies = require('../helper/methodologies'); module.exports = { methodology: methodologies.lendingMarket, - scroll: aaveExports('astrzk', "0x12922D7d8762090Cb27E7e1e824EC9c373664704", undefined, ['0x7B47bfB3F6C4ff74bb39395676759d4aFbD9f071'], { v3: true }), + astrzk: aaveExports('astrzk', "0x12922D7d8762090Cb27E7e1e824EC9c373664704", undefined, ['0x7B47bfB3F6C4ff74bb39395676759d4aFbD9f071'], { v3: true }), } \ No newline at end of file diff --git a/projects/helper/aave.js b/projects/helper/aave.js index f41d7fca3e8..e4d1879a8f3 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -104,8 +104,10 @@ async function getBorrowed(balances, block, chain, v2ReserveTokens, dataHelper, }) } -function aaveChainTvl(chain, addressesProviderRegistry, transformAddressRaw, dataHelperAddresses, borrowed, v3 = false, { abis = {}, oracle, blacklistedTokens = [], hasV2LPs = false, } = {}) { - return async (timestamp, ethBlock, { [chain]: block }) => { +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) { From 20a4892e91e99d104315548d0f5c156c42cfb666 Mon Sep 17 00:00:00 2001 From: tec05 <73139131+tec05@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:38:14 -0700 Subject: [PATCH 1036/2004] Add TVL for Archly on Zora (#9649) * Add Avalanche, Cronos, Mantle, Metis, and Neon for Archly TVL * Adding Archly TVL tracking for Blast, Filecoin, and Fraxtal * Add TVL for Archly on Mode * Add TVL for Archly on Zora --- projects/archly-finance-v2/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js index 014775227e7..0b7b1cb5b86 100644 --- a/projects/archly-finance-v2/index.js +++ b/projects/archly-finance-v2/index.js @@ -25,6 +25,7 @@ const config = { metis: { lp: '0xA152A0Ee0Bc15A937D5365DEB8507D063467A68d' }, neon_evm: { lp: '0x9a08ab9b8b9A90bF9fe836D28E85808Db29Dc1aD' }, mode: { lp: '0xC6FA6454E76cF425a020fdb1EF61FeB0e551912C' }, + zora: { lp: '0x577B2E4C7Ddd23d2fA9D56b4456505e420851046' }, } module.exports = { From 82c23a5fd777d15f67f2a71bf6542451b4a6ef0c Mon Sep 17 00:00:00 2001 From: Nghia Pham <57862573+ngfam@users.noreply.github.com> Date: Tue, 2 Apr 2024 12:52:07 +0700 Subject: [PATCH 1037/2004] [PENDLE] Added mantle TVL & whitelisted pool filtering in tvl accounting (#9650) * [PENDLE] Added mantle TVL & whitelisted pool filtering in tvl accounting * add cache --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pendle/v2.js | 66 +++++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/projects/pendle/v2.js b/projects/pendle/v2.js index e08f456273b..c14c8069ae8 100644 --- a/projects/pendle/v2.js +++ b/projects/pendle/v2.js @@ -3,6 +3,8 @@ 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 config = { ethereum: { factory: "0x27b1dacd74688af24a64bd3c9c1b143118740784", @@ -14,7 +16,7 @@ const config = { factory: "0xf5a7de2d276dbda3eef1b62a9e718eff4d29ddc8", factoryV3: "0x2FCb47B58350cD377f94d3821e7373Df60bD9Ced", fromBlock: 62979673, - fromBlockV3: 154873897 + fromBlockV3: 154873897 }, bsc: { factory: "0x2bEa6BfD8fbFF45aA2a893EB3B6d85D10EFcC70E", @@ -33,6 +35,10 @@ const config = { fromBlock: 108061448, fromBlockV3: 112783590, }, + mantle: { + factoryV3: "0xD228EC1f7D4313fe321fab511A872475D07F5bA6", + fromBlockV3: 61484384, + }, }; module.exports = {}; @@ -41,29 +47,33 @@ Object.keys(config).forEach((chain) => { const { factory, factoryV3, fromBlock, pts, fromBlockV3 } = config[chain]; module.exports[chain] = { tvl: async (api) => { - const logs = await getLogs({ - api, - target: factory, - topics: [ - "0x166ae5f55615b65bbd9a2496e98d4e4d78ca15bd6127c0fe2dc27b76f6c03143", - ], - eventAbi: - "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor)", - onlyArgs: true, - fromBlock, - }); + 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, + }) + : []; - const logsV3 = await getLogs({ - api, - target: factoryV3, - topic: [ - "0xae811fae25e2770b6bd1dcb1475657e8c3a976f91d1ebf081271db08eef920af", - ], - eventAbi: - "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor, uint256 lnFeeRateRoot)", - onlyArgs: true, - fromBlock: fromBlockV3, - }); + const logsV3 = factoryV3 + ? await getLogs({ + api, + target: factoryV3, + topic: [ + "0xae811fae25e2770b6bd1dcb1475657e8c3a976f91d1ebf081271db08eef920af", + ], + eventAbi: + "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor, uint256 lnFeeRateRoot)", + onlyArgs: true, + fromBlock: fromBlockV3, + }) + : []; const pt = logs.map((i) => i.PT).concat(logsV3.map((i) => i.PT)); if (pts) pt.push(...pts); @@ -78,6 +88,7 @@ Object.keys(config).forEach((chain) => { ), ]; + sy = await filterWhitelistedSY(api, sy); const [data, supply, decimals] = await Promise.all([ api.multiCall({ abi: "function assetInfo() view returns (uint8 assetType , address uAsset , uint8 decimals )", @@ -103,7 +114,7 @@ Object.keys(config).forEach((chain) => { }); let balances = api.getBalances(); - for(let bridgingToken of bridgedAssets){ + for (let bridgingToken of bridgedAssets) { const bridged = `${chain}:${bridgingToken}`; if (bridged in balances) { balances[bridgingToken] = balances[bridged]; @@ -115,6 +126,13 @@ Object.keys(config).forEach((chain) => { }; }); +// 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 From 22eed5d9f8b6f10bdd8899799a699197c4eb1e60 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 Apr 2024 08:01:25 +0200 Subject: [PATCH 1038/2004] Add hallmarks to Jet Protocol --- projects/jetprotocol.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/jetprotocol.js b/projects/jetprotocol.js index cc04fc43e14..4e31993ea1f 100644 --- a/projects/jetprotocol.js +++ b/projects/jetprotocol.js @@ -47,4 +47,7 @@ module.exports = { }, 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: [ + [Math.floor(new Date('2023-12-12')/1e3), 'Jet Protocol Holdings, LLC is shutting down'], // https://forum.jetprotocol.io/t/community-update-jet-protocol-holdings-llc-is-shutting-down/1560/21 + ], }; From 43b6f14fcd10e1c97c50fcb932dad6c5e856426e Mon Sep 17 00:00:00 2001 From: Hippocampus Date: Tue, 2 Apr 2024 08:42:44 +0200 Subject: [PATCH 1039/2004] Count all THORChain lending inside THORChain blockchain (#9651) --- projects/thorchain-lending/index.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/projects/thorchain-lending/index.js b/projects/thorchain-lending/index.js index ea614d0c152..9d88b8ce10e 100644 --- a/projects/thorchain-lending/index.js +++ b/projects/thorchain-lending/index.js @@ -1,11 +1,18 @@ const { getCache, } = require('../helper/http') +const sdk = require("@defillama/sdk"); -async function tvl(api) { +async function tvl(_, _1, _2) { const pools = await getCache('https://midgard.ninerealms.com/v2/pools') - pools.map(({ totalCollateral = 0 }) => { - api.addCGToken('thorchain', totalCollateral / 1e6) + + const balances = {} + + pools.map(({ totalCollateral, assetPrice }) => { + if (totalCollateral > 0) { + sdk.util.sumSingleBalance(balances, 'thorchain', (Number(totalCollateral) / 1e8)* Number(assetPrice)) + } }) - return api.getBalances() + + return balances } module.exports = { From 32aef30cd1e4feb98c7ca8378d4cf661ba01b853 Mon Sep 17 00:00:00 2001 From: Chaitanya Joshi Date: Tue, 2 Apr 2024 17:00:41 +0530 Subject: [PATCH 1040/2004] add Ithaca adapter (#9657) --- projects/ithaca/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/ithaca/index.js diff --git a/projects/ithaca/index.js b/projects/ithaca/index.js new file mode 100644 index 00000000000..be4bb5035d2 --- /dev/null +++ b/projects/ithaca/index.js @@ -0,0 +1,18 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const ITHACA_FUNDLOCK_CONTRACT = '0x4a20d341315b8ead4e5ebecc65d95080a47a7316'; +const WETH_CONTRACT = '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1'; +const USDC_CONTRACT = '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'; + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: 'counts the number of WETH and USDC in Ithaca Fundlock contract', + start: 176036233, + arbitrum: { + tvl: sumTokensExport({ + owner: ITHACA_FUNDLOCK_CONTRACT, + tokens: [ WETH_CONTRACT, USDC_CONTRACT ], + }), + } +}; \ No newline at end of file From 56711ce08ceb00b38d2e27c35571960d6cf1f178 Mon Sep 17 00:00:00 2001 From: 0xVolcan <162298458+0xVolcan@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:32:12 +0300 Subject: [PATCH 1041/2004] fix: update Lava data provider address (#9659) * fix: update data provider address * feat: add new hallmark * Update index.js * Update index.js --------- Co-authored-by: vidimitrov Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lava/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/projects/lava/index.js b/projects/lava/index.js index 9c4e048426b..bca24971472 100644 --- a/projects/lava/index.js +++ b/projects/lava/index.js @@ -1,7 +1,7 @@ const methodologies = require("../helper/methodologies"); const DATA_PROVIDER_ADDRESS = { - arbitrum: "0x8CfA3a5105e87e6e5568b80F64d05eD5fc53F0a9", + arbitrum: "0x8Cb093763cD2EB1e418eaEFfFC4f20c1665304a2", base: "0x22d6Ab83EEe06B7EE815420a7F2e737D64E534ef", }; const getAllReservesTokensABI = @@ -95,6 +95,3 @@ module.exports = { [Math.floor(new Date('2024-03-28')/1e3), 'Protocol was exploited'], ], }; - -module.exports.arbitrum.borrowed = () => ({}) - From 88d92009103f0a42dae32dc34c8550a0d702bd9b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:33:23 +0200 Subject: [PATCH 1042/2004] minor change --- projects/core-markets/index.js | 3 ++- projects/intentx.js | 3 ++- projects/ithaca/index.js | 5 +++-- projects/lava/index.js | 1 + projects/nostra-staked-strk/index.js | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/projects/core-markets/index.js b/projects/core-markets/index.js index 6ff8fb6c62e..4a6cdc2d637 100644 --- a/projects/core-markets/index.js +++ b/projects/core-markets/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { request, gql } = require("graphql-request"); const graphUrl = "https://api.studio.thegraph.com/query/62472/core-analytics-082/version/latest"; @@ -28,7 +29,7 @@ async function getTVL(toTimestamp) { const total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); return { - "blast:0x4300000000000000000000000000000000000003": total, + ["blast:" + ADDRESSES.blast.USDB]: total, }; } diff --git a/projects/intentx.js b/projects/intentx.js index 38387fd0d5b..cab797cb9e2 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('helper/coreAssets.json') const { request, gql } = require("graphql-request"); const graphUrl = @@ -37,7 +38,7 @@ async function getTVL(toTimestamp) { ); return { - "base:0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": total, + ["base:" + ADDRESSES.base.USDbC]: total, }; } diff --git a/projects/ithaca/index.js b/projects/ithaca/index.js index be4bb5035d2..4f6229cbf4b 100644 --- a/projects/ithaca/index.js +++ b/projects/ithaca/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const ITHACA_FUNDLOCK_CONTRACT = '0x4a20d341315b8ead4e5ebecc65d95080a47a7316'; -const WETH_CONTRACT = '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1'; -const USDC_CONTRACT = '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'; +const WETH_CONTRACT = ADDRESSES.arbitrum.WETH; +const USDC_CONTRACT = ADDRESSES.arbitrum.USDC_CIRCLE; module.exports = { timetravel: true, diff --git a/projects/lava/index.js b/projects/lava/index.js index bca24971472..f893c070561 100644 --- a/projects/lava/index.js +++ b/projects/lava/index.js @@ -93,5 +93,6 @@ module.exports = { base: getMetrics(), hallmarks: [ [Math.floor(new Date('2024-03-28')/1e3), 'Protocol was exploited'], + [Math.floor(new Date("2024-04-01") / 1e3), "Protocol was relaunched"], ], }; diff --git a/projects/nostra-staked-strk/index.js b/projects/nostra-staked-strk/index.js index 1a67e82ee75..bc704f61c0d 100644 --- a/projects/nostra-staked-strk/index.js +++ b/projects/nostra-staked-strk/index.js @@ -3,7 +3,7 @@ const { call } = require("../helper/chain/starknet"); const { stakedStrkAbi } = require("./abi"); const STAKED_STRK = - "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2"; + ADDRESSES.starknet.NSTSTRK; const STRK = ADDRESSES.starknet.STRK; From ac47277ea2f14633e92b9c49bfa98cf6474a0d0e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:06:53 +0200 Subject: [PATCH 1043/2004] bugfix --- projects/intentx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/intentx.js b/projects/intentx.js index cab797cb9e2..79114c73f2c 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('helper/coreAssets.json') +const ADDRESSES = require('./helper/coreAssets.json') const { request, gql } = require("graphql-request"); const graphUrl = From 21535d51cf75591b3122638fa9876d437060eed9 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 2 Apr 2024 13:18:25 +0100 Subject: [PATCH 1044/2004] remove white --- projects/treasury/hegic.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/treasury/hegic.js b/projects/treasury/hegic.js index 212b5fc1a5a..92729ba1cf7 100644 --- a/projects/treasury/hegic.js +++ b/projects/treasury/hegic.js @@ -5,6 +5,7 @@ const treasuryARB = "0xf15968a096fc8f47650001585d23bee819b5affb"; const treasuryETH = "0xd884aca1897ac45515cee6d5fd48f341b4023ace" const treasuryETH2 = "0x117f55bf3c2e3bcdc7f308504480ee53f754a7ca" const hegic = "0x584bC13c7D411c00c01A62e8019472dE68768430" +const WHITE = "0x5f0e628b693018f639d10e4a4f59bd4d8b2b6b44" module.exports = treasuryExports({ arbitrum: { @@ -21,6 +22,6 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDC ], owners: [treasuryETH, treasuryETH2], - ownTokens: [hegic], + ownTokens: [hegic, WHITE], }, }) \ No newline at end of file From a23518c5b68777fea9dd509a24c5a10db7505ea6 Mon Sep 17 00:00:00 2001 From: yoson <96263193+y0s0n@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:36:31 +0300 Subject: [PATCH 1045/2004] Zest Protocol PR (#9658) * Add Zest Protocol pool vault target * Fix import path --- projects/zest/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/zest/index.js diff --git a/projects/zest/index.js b/projects/zest/index.js new file mode 100644 index 00000000000..b9311b43187 --- /dev/null +++ b/projects/zest/index.js @@ -0,0 +1,15 @@ +const { sumTokens } = require('../helper/chain/stacks') + +async function tvl() { + return sumTokens({ + owners: [ + 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-vault', // STX and SIP10 tokens + ], + }) +} + +module.exports = { + stacks: { + tvl, + }, +}; From ba7b8d3c312990e8342984e154af749c15f8317c Mon Sep 17 00:00:00 2001 From: Joel Mun Date: Tue, 2 Apr 2024 20:38:09 +0800 Subject: [PATCH 1046/2004] feat: add ZEND staking to zkLend (#9660) --- projects/helper/coreAssets.json | 3 ++- projects/zklend/index.js | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 9d25b93c889..0a745fec252 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1255,7 +1255,8 @@ "LUSD": "0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac", "RETH": "0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610", "UNO": "0x0719b5092403233201aa822ce928bd4b551d0cdb071a724edd7dc5e5f57b7f34", - "NSTSTRK": "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2" + "NSTSTRK": "0x04619e9ce4109590219c5263787050726be63382148538f3f936c22aa87d2fc2", + "ZEND": "0x00585c32b625999e6e5e78645ff8df7a9001cf5cf3eb6b80ccdd16cb64bd3a34" }, "ton": { "TON": "0x0000000000000000000000000000000000000000", diff --git a/projects/zklend/index.js b/projects/zklend/index.js index ae98bd9c9bd..61e5138e09b 100644 --- a/projects/zklend/index.js +++ b/projects/zklend/index.js @@ -18,6 +18,16 @@ async function tvl(api) { return sumTokens({ api, owner: market, tokens: assets }) } +async function staking(api) { + 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) @@ -28,6 +38,7 @@ module.exports = { methodology: 'Value of user supplied asset on zkLend is considered as TVL', starknet: { tvl, - borrowed + borrowed, + staking, }, } From 1a1f3564bb08c539178716679c268190870fceab Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 2 Apr 2024 16:18:25 +0200 Subject: [PATCH 1047/2004] workaround for merlinswap --- projects/helper/iziswap.js | 42 ++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/projects/helper/iziswap.js b/projects/helper/iziswap.js index de64489a87f..0d58283654b 100644 --- a/projects/helper/iziswap.js +++ b/projects/helper/iziswap.js @@ -1,27 +1,25 @@ const { sumTokens2 } = require("./unwrapLPs") +const { getCache, setCache, } = require('../helper/cache') const ADDRESSES = require('../helper/coreAssets.json') -function iziswapExport({ poolHelpers, blacklistedTokens = []}) { +function iziswapExport({ poolHelpers, blacklistedTokens = [] }) { return async (api) => { - const toa = [] - const chunkSize = 10 - const allPools = [] - const allPoolMetas = [] - - for(const manager of poolHelpers) { - let i = 1 + const isMerlin = api.chain === 'merlin' + const toa = [] + const chunkSize = isMerlin ? 3 : 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, - }) + 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 @@ -30,21 +28,17 @@ function iziswapExport({ poolHelpers, blacklistedTokens = []}) { 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, - }) - + const pools = await api.multiCall({ target: manager, abi: abi.pool, calls: poolCalls, }) + allPools.push(...pools) - allPoolMetas.push(...poolMetaData) + 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, }) } - - allPools.forEach((output, i) => toa.push([allPoolMetas[i].tokenX, output], [allPoolMetas[i].tokenY, output],)) - return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, permitFailure: true}) + return sumTokens2({ tokensAndOwners: toa, api, blacklistedTokens, permitFailure: !isMerlin, sumChunkSize: isMerlin ? 1 : 100,}) } } From aeb42f1518a68b6bb5d57284785df652495181d4 Mon Sep 17 00:00:00 2001 From: Ewan Sheldon Date: Tue, 2 Apr 2024 15:33:52 +0100 Subject: [PATCH 1048/2004] add gmx to tvl tokens (#9661) --- projects/standard-smart-vaults/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/standard-smart-vaults/index.js b/projects/standard-smart-vaults/index.js index 062e42d626d..b4386cde029 100644 --- a/projects/standard-smart-vaults/index.js +++ b/projects/standard-smart-vaults/index.js @@ -9,6 +9,7 @@ const tokens = [ ADDRESSES.arbitrum.WBTC, ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.LINK, + ADDRESSES.arbitrum.GMX, '0xfEb4DfC8C4Cf7Ed305bb08065D08eC6ee6728429' ] From a934bbe22f47bfe2fd5c733c189b6f60b95bb230 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 2 Apr 2024 22:17:07 +0100 Subject: [PATCH 1049/2004] add more chains to llamalend --- projects/llamalend-curve/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/llamalend-curve/index.js b/projects/llamalend-curve/index.js index eca60f0a275..f9790d294b9 100644 --- a/projects/llamalend-curve/index.js +++ b/projects/llamalend-curve/index.js @@ -1,16 +1,22 @@ +const chainContracts = { + ethereum: "0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0", + arbitrum: "0xcaec110c784c9df37240a8ce096d352a75922dea" +} + const uniq = (arr) => Array.from(new Set(arr)) -module.exports={ - ethereum:{ +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: "0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0" }) + 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: "0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0" }) + 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)=>{ @@ -19,4 +25,4 @@ module.exports={ return api.getBalances() } } -} \ No newline at end of file +}), {}) \ No newline at end of file From e6fce303de13e4eb0bc13aa61578fb5ca44f89d5 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 2 Apr 2024 22:33:36 +0100 Subject: [PATCH 1050/2004] add sideshift-ai treasury --- projects/treasury/sideshift-ai.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/treasury/sideshift-ai.js diff --git a/projects/treasury/sideshift-ai.js b/projects/treasury/sideshift-ai.js new file mode 100644 index 00000000000..4fb7c838ee1 --- /dev/null +++ b/projects/treasury/sideshift-ai.js @@ -0,0 +1,11 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + ethereum: { + tokens: [ + nullAddress, + ], + owners: ['0x8f456e525ed0115e22937c5c8afac061cc697f21'], + ownTokens: [], + }, +}) \ No newline at end of file From df30beb4fc07cc8a514257c098feed1da4477383 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 2 Apr 2024 22:37:06 +0100 Subject: [PATCH 1051/2004] curve arbitrum --- projects/curve/abi.json | 3 ++- projects/curve/contracts.json | 3 ++- projects/curve/index.js | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/curve/abi.json b/projects/curve/abi.json index eca2ca186e8..4925ec11820 100644 --- a/projects/curve/abi.json +++ b/projects/curve/abi.json @@ -17,6 +17,7 @@ "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[])" + "CurveStableswapFactoryNG": "function get_coins(address _pool) view returns (address[])", + "CurveL2TricryptoFactory": "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 index e6f2e917dbb..2418ed6a379 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -61,7 +61,8 @@ "metapoolBases": { "2CRV": "0xbf7e49483881c76487b0989cd7d9a8239b20ca41" }, - "CurveStableswapFactoryNG": "0x9AF14D26075f142eb3F292D5065EB3faa646167b" + "CurveStableswapFactoryNG": "0x9AF14D26075f142eb3F292D5065EB3faa646167b", + "CurveL2TricryptoFactory": "0xbc0797015fcfc47d9c1856639cae50d0e69fbee8" }, "aurora": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", diff --git a/projects/curve/index.js b/projects/curve/index.js index f2e4e63c6b1..9ca4de4f05e 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -100,6 +100,9 @@ async function getPools(block, chain) { if (contracts[chain].CurveStableswapFactoryNG) { registriesMapping.CurveStableswapFactoryNG = contracts[chain].CurveStableswapFactoryNG } + if (contracts[chain].CurveL2TricryptoFactory) { + registriesMapping.CurveL2TricryptoFactory = contracts[chain].CurveL2TricryptoFactory + } const poolList = {} await Promise.all(Object.entries(registriesMapping).map(async ([registry, addr]) => { poolList[registry] = await getPool({ chain, block, registry: addr }) @@ -156,7 +159,7 @@ async function unwrapPools({ poolList, registry, chain, block }) { 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'].includes(registry)) + if (!['cryptoFactory', 'triCryptoFactory', 'CurveL2TricryptoFactory'].includes(registry)) nCoins = (await sdk.api.abi.multiCall({ ...callParams, abi: abi.get_n_coins[registry] })).output let { wrapped = '', metapoolBases = {}, blacklist = [] } = contracts[chain] From a9808f127a4306239e723ae1743036b8adac0042 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 2 Apr 2024 23:22:45 +0100 Subject: [PATCH 1052/2004] include puff in methslab swap --- projects/methlab-xyz/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/methlab-xyz/index.js b/projects/methlab-xyz/index.js index 44dce3eac3b..4867d111643 100644 --- a/projects/methlab-xyz/index.js +++ b/projects/methlab-xyz/index.js @@ -47,6 +47,6 @@ const abi = { module.exports = mergeExports([ module.exports, uniV3Export({ - mantle: { factory: "0x8f140Fc3e9211b8DC2fC1D7eE3292F6817C5dD5D", fromBlock: 59915640, blacklistedTokens: ['0x26a6b0dcdcfb981362afa56d581e4a7dba3be140'] }, + mantle: { factory: "0x8f140Fc3e9211b8DC2fC1D7eE3292F6817C5dD5D", fromBlock: 59915640 }, }) ]) \ No newline at end of file From 9e8f13a9726442b7b56bb1d50b3177139256d147 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 3 Apr 2024 00:50:00 +0100 Subject: [PATCH 1053/2004] sushi blast --- projects/sushiswap/api.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index f0a132bd82c..b4a5c27bc4b 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -96,6 +96,7 @@ module.exports = { zeta: { tvl: getUniTVL({ factory: '0x33d91116e0370970444B0281AB117e161fEbFcdD', useDefaultCoreAssets: true, }), }, + blast: { tvl: getUniTVL({ factory: '0x42Fa929fc636e657AC568C0b5Cf38E203b67aC2b' })}, } module.exports.polygon.tvl = getChainTVL('polygon') From 7ddb1135314f2a9b357db2edeeadb47613434112 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 3 Apr 2024 01:29:29 +0100 Subject: [PATCH 1054/2004] add core --- projects/sushiswap/api.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index b4a5c27bc4b..7dc40179f77 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -97,6 +97,7 @@ module.exports = { tvl: getUniTVL({ factory: '0x33d91116e0370970444B0281AB117e161fEbFcdD', useDefaultCoreAssets: true, }), }, blast: { tvl: getUniTVL({ factory: '0x42Fa929fc636e657AC568C0b5Cf38E203b67aC2b' })}, + core: { tvl: getUniTVL({ factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', useDefaultCoreAssets: true })}, } module.exports.polygon.tvl = getChainTVL('polygon') From 147628e95c6032d821f8e48bbed1b2900ea3617c Mon Sep 17 00:00:00 2001 From: Kacper Bak Date: Tue, 2 Apr 2024 22:59:17 -0700 Subject: [PATCH 1055/2004] added cSTONE, mETH, and USDe to Zircuit Staking (#9662) --- projects/zircuit/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js index ceb3f54f9c9..cd9416c316e 100644 --- a/projects/zircuit/index.js +++ b/projects/zircuit/index.js @@ -14,7 +14,10 @@ const TOKEN_CONTRACTS = [ '0x32bd822d615A3658A68b6fDD30c2fcb2C996D678', // mswETH ADDRESSES.ethereum.WSTETH, // wstETH '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', // weETH - '0xf951E335afb289353dc249e82926178EaC7DEd78' // swETH + '0xf951E335afb289353dc249e82926178EaC7DEd78', // swETH + '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3', // USDe + '0x4d831e22F062b5327dFdB15f0b6a5dF20E2E3dD0', // cSTONE + '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa' // mETH ]; module.exports = { From ffa817deb0ea3ef94c859d1057664adf816eafcc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 Apr 2024 08:08:57 +0200 Subject: [PATCH 1056/2004] Add AVAX factory to config and fix balances for Ethereum token --- projects/aura-finance/index.js | 1 + projects/helper/tokenMapping.js | 3 +++ projects/starshares/index.js | 5 ++++- test.js | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/projects/aura-finance/index.js b/projects/aura-finance/index.js index 35a31a7a561..d4ecb17a438 100644 --- a/projects/aura-finance/index.js +++ b/projects/aura-finance/index.js @@ -67,6 +67,7 @@ const config = { 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' }, } module.exports = { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 44208c87df1..e88b3129e91 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,6 +34,9 @@ const ibcMappings = { } const fixBalancesTokens = { + ethereum: { + '0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0': { coingeckoId: 'stakestone-ether', decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/starshares/index.js b/projects/starshares/index.js index 0bf32f223ee..b6bfc6da42b 100644 --- a/projects/starshares/index.js +++ b/projects/starshares/index.js @@ -3,7 +3,10 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const contract = "0xC605C2cf66ee98eA925B1bb4FeA584b71C00cC4C" async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owners: [contract, '0x563395A2a04a7aE0421d34d62ae67623cAF67D03', '0xa481b139a1a654ca19d2074f174f17d7534e8cec', '0x69B7F08B2952e2EE3CA4222190BCF07831f1096f'], 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 = { diff --git a/test.js b/test.js index befb4679075..b0b355d9354 100644 --- a/test.js +++ b/test.js @@ -47,7 +47,7 @@ async function getTvl( api.storedKey = storedKey if (!isFetchFunction) { let tvlBalances = await tvlFunction(api, ethBlock, chainBlocks, api); - if (!tvlBalances && Object.keys(api.getBalances()).length) tvlBalances = api.getBalances() + if (tvlBalances === undefined) tvlBalances = api.getBalances() const tvlResults = await computeTVL(tvlBalances, "now"); await diplayUnknownTable({ tvlResults, storedKey, tvlBalances, }) usdTvls[storedKey] = tvlResults.usdTvl; From 1f1b07c2f14bda1ec9d619d1bda828cb5a1a0c6d Mon Sep 17 00:00:00 2001 From: Cohiba Nan <132758148+Cohiban@users.noreply.github.com> Date: Wed, 3 Apr 2024 15:22:40 +0800 Subject: [PATCH 1057/2004] Add AINN Layer2 adapter (#9665) --- projects/ainn-layer2/index.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/ainn-layer2/index.js diff --git a/projects/ainn-layer2/index.js b/projects/ainn-layer2/index.js new file mode 100644 index 00000000000..1f72aa54f0a --- /dev/null +++ b/projects/ainn-layer2/index.js @@ -0,0 +1,35 @@ +const sdk = require('@defillama/sdk'); +const { sumTokensExport } = require('../helper/sumTokens'); + +const BTCOwners = [ + "bc1q6dtp7ayaj5k2zv0z5ayhkdsvmtvdqgyaa9zs53", + "3H8cmLndtkBs7kiHByhHAddTzy8taUwYPt", + "bc1pepsapf26n8y2f4uftlmhy60ksghx6rqlxdcj4uacfqrkcg6pmncs52rzuu", + "bc1qcmmkxfp2rawrp6yx55rez9jcqdnxtam8jhu2v2d9kz46upf948wq2usauv", + "bc1qu4ru2sph5jatscx5xuf0ttka36yvuql7hl5h4c", + "1JA46eiDpfx589wawn5RvtEXgwc518QfhZ", + "bc1qaajdlp5yrj5f77wq2ndtfqnmsamvvxhpy95662zkzykn9qhvdgys580hcs", + "368vZZKUWDFZRLWMFNRJzHo1HnibNeAJir", + "33hE9Wq65kjbiLsGD1NYwwNatP6hbsZv5H", + "32GU8Jux7SbsEbaAaLUnEQmc6JemLF6BUb", + "3CP5WJ2JSLCew7SETWUe5FxpBGrekMBiwk", + "39Fvw2Ho1fEkyDsos5sNTN5iMJZKzTL526", + "3Kptt4TZZRcjuGH8ikoQ8mV1TVxq45dnuS", + "3G4sMXWAAVTvTXTksr8u9zuu7W8RKsicEz" +]; + + +module.exports = { + methodology: "Staking tokens via AINN Layer2 Dataset counts as TVL.", + bitcoin: { + tvl: sdk.util.sumChainTvls([ + sumTokensExport({ owners: BTCOwners }), + ]), + }, + zklink: { + tvl: sumTokensExport({ + owners: ["0xc698c23d7cDE4203EafD8F45d8bab8fA86D413d1"], + tokens: ["0xEbc45Ef3B6D7E31573DAa9BE81825624725939f9"] //wbtc + }), + }, +}; \ No newline at end of file From 1e0d33cabec4f1e7caf667f0a58a01ef8956b6c6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 Apr 2024 12:42:52 +0200 Subject: [PATCH 1058/2004] track svm & haqq (#9669) * track svm & haqq * minor fix --- package-lock.json | 6 ++--- projects/helper/chains.json | 4 ++- projects/helper/env.js | 5 ++-- projects/helper/formatAddressChecksum.js | 17 ------------ projects/helper/getChainList.js | 9 +++++-- projects/helper/tokenMapping.js | 11 ++++++++ projects/savmswap/index.js | 3 +++ projects/sushiswap-v3/index.js | 19 ++++++++++++- test.js | 34 +++++++++++++++++++++++- 9 files changed, 81 insertions(+), 27 deletions(-) delete mode 100644 projects/helper/formatAddressChecksum.js create mode 100644 projects/savmswap/index.js diff --git a/package-lock.json b/package-lock.json index cff6555ac7b..17de532b106 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.49", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.49.tgz", - "integrity": "sha512-CggIAtMd5lwOpIPoGPkTMqS2KYVIectlt1cOHUc/O/tcBOQ9XSy2OfF4JI8tIMuAJQSvYlPnEtxpFkUwuFt27A==", + "version": "5.0.50", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.50.tgz", + "integrity": "sha512-baFlhaQAohM63XP9PZgSve80iO0/2IaCLqReKLPBLft1zTtQGiEy7U0rPXKdoIsUqmQ+EGbCxR+HeMXwR2Xupg==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 536b913eabc..36034c8f6fb 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -132,6 +132,7 @@ "injective", "interlay", "iotex", + "islm", "jbc", "juno", "kadena", @@ -257,6 +258,7 @@ "step", "stride", "sui", + "svm", "sx", "syscoin", "telos", @@ -297,4 +299,4 @@ "zksync", "zora", "zyx" -] +] \ No newline at end of file diff --git a/projects/helper/env.js b/projects/helper/env.js index ada404c4744..52e3edfeeff 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,7 +12,8 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", - NAKA_RPC: 'https://node.nakachain.xyz', + + /* NAKA_RPC: 'https://node.nakachain.xyz', ETHF_RPC: 'https://rpc.dischain.xyz/', CORE_RPC: "https://rpc.coredao.org,https://rpc.ankr.com/core,https://1rpc.io/core,https://rpc-core.icecreamswap.com", BITGERT_RPC: "https://flux-rpc2.brisescan.com,https://mainnet-rpc.brisescan.com,https://chainrpc.com,https://serverrpc.com,https://flux-rpc.brisescan.com", @@ -24,7 +25,7 @@ const DEFAULTS = { KINTO_RPC: "https://rpc.kinto-rpc.com", DEFICHAIN_EVM_RPC: "https://dmc.mydefichain.com/mainnet,https://dmc01.mydefichain.com/mainnet", RSS3_VSL_RPC: "https://rpc.rss3.io", - DEGEN_RPC: "https://rpc.degen.tips", + DEGEN_RPC: "https://rpc.degen.tips", */ DEGEN_RPC_MULTICALL: "0xFBF562a98aB8584178efDcFd09755FF9A1e7E3a2", } diff --git a/projects/helper/formatAddressChecksum.js b/projects/helper/formatAddressChecksum.js deleted file mode 100644 index bb7700b05cc..00000000000 --- a/projects/helper/formatAddressChecksum.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @dev This function will format an address string according to the avilability of EIP-1191 on the network. - * This EIP determines the way the address checksum is being calculated. - * For example, on RSK (which implemented EIP-1191) any js/ts call to the blockchain for getting/connecting to a contract - * will have to be done with a low case address, while on a non EIP-1191 netwrok it has to remain mix-case. - * For more information please read: https://developers.rsk.co/rsk/architecture/account-based/ - */ -function formatAddressChecksum(address, netwrokName) { - // Add here more EIP-1191 networks as needed - return ["rsk"].includes(netwrokName?.toLowerCase()) - ? address.toLowerCase() - : address; -} - -module.exports = { - formatAddressChecksum, -}; diff --git a/projects/helper/getChainList.js b/projects/helper/getChainList.js index badd8772e42..3c40a4f9689 100644 --- a/projects/helper/getChainList.js +++ b/projects/helper/getChainList.js @@ -1,6 +1,6 @@ const fs = require('fs') const path = require('path') - +/* const projectsFolder = path.join(__dirname, '..') const files = fs.readdirSync(projectsFolder, { withFileTypes: true }) @@ -92,4 +92,9 @@ function checkFileExistsSync(filepath) { flag = false; } return flag; -} \ No newline at end of file +} + */ + +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/tokenMapping.js b/projects/helper/tokenMapping.js index e88b3129e91..2c49645bd71 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -37,6 +37,17 @@ const fixBalancesTokens = { ethereum: { '0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0': { coingeckoId: 'stakestone-ether', decimals: 18 }, }, + islm: { + '0xeC8CC083787c6e5218D86f9FF5f28d4cC377Ac54': { coingeckoId: 'islamic-coin', decimals: 18 }, + '0xc5e00d3b04563950941f7137b5afa3a534f0d6d6': { coingeckoId: 'dai', decimals: 18 }, + '0xeceeefcee421d8062ef8d6b4d814efe4dc898265': { coingeckoId: 'ethereum', decimals: 18 }, + '0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, + '0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75': { coingeckoId: 'tether', decimals: 6 }, + '0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd': { coingeckoId: 'axlusdc', decimals: 6 }, + }, + svm: { + '0x5db252ead05C54B08A83414adCAbF46Eaa9E0337': { coingeckoId: 'bitcoin', decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/savmswap/index.js b/projects/savmswap/index.js new file mode 100644 index 00000000000..af5911e947c --- /dev/null +++ b/projects/savmswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('svm', '0x1842c9bD09bCba88b58776c7995A9A9bD220A925') \ No newline at end of file diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index e8a091c1579..3c4a95b4eb8 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -1,5 +1,6 @@ const { uniV3Export } = require("../helper/uniswapV3"); -const { cachedGraphQuery } = require('../helper/cache') +const { cachedGraphQuery, getConfig, } = require('../helper/cache'); +const { sumTokens2 } = require("../helper/unwrapLPs"); const factory = "0xc35dadb65012ec5796536bd9864ed8773abc74c4" module.exports = uniV3Export({ @@ -72,6 +73,7 @@ module.exports = uniV3Export({ metis: { factory: '0x145d82bCa93cCa2AE057D1c6f26245d1b9522E6F', fromBlock: 9077930, }, bittorrent: { factory: '0xBBDe1d67297329148Fe1ED5e6B00114842728e65', fromBlock: 29265724, }, zeta: { factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', fromBlock: 1551069, }, + islm: { factory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', fromBlock: 6541826, }, }); const config = { @@ -96,3 +98,18 @@ Object.keys(config).forEach(chain => { } } }) + +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 }) + } + } +}) \ No newline at end of file diff --git a/test.js b/test.js index b0b355d9354..994074ac0a0 100644 --- a/test.js +++ b/test.js @@ -1,6 +1,7 @@ #!/usr/bin/env node const handleError = require('./utils/handleError') +const INTERNAL_CACHE_FILE = 'tvl-adapter-repo/sdkInternalCache.json' process.on('unhandledRejection', handleError) process.on('uncaughtException', handleError) @@ -107,6 +108,7 @@ sdk.api.abi.call = async (...args) => { } catch (e) { console.log(e) } + await initCache() const chains = Object.keys(module).filter(item => typeof module[item] === 'object' && !Array.isArray(module[item])); checkExportKeys(module, passedFile, chains) const unixTimestamp = Math.round(Date.now() / 1000) - 60; @@ -213,6 +215,7 @@ sdk.api.abi.call = async (...args) => { }); console.log("\ntotal".padEnd(25, " "), humanizeNumber(usdTvls.tvl), "\n"); + await preExit() process.exit(0); })(); @@ -414,4 +417,33 @@ setTimeout(() => { console.log("Timeout reached, exiting..."); if (!process.env.NO_EXIT_ON_LONG_RUN_RPC) process.exit(1); -}, 10 * 60 * 1000) // 10 minutes \ No newline at end of file +}, 10 * 60 * 1000) // 10 minutes + + + +async function initCache() { + let currentCache = await sdk.cache.readCache(INTERNAL_CACHE_FILE) + if (process.env.NO_EXIT_ON_LONG_RUN_RPC) + sdk.log('cache size:', JSON.stringify(currentCache).length, 'chains:', Object.keys(currentCache).length) + const ONE_WEEK = 60 * 60 * 24 * 31 + if (!currentCache || !currentCache.startTime || (Date.now() / 1000 - currentCache.startTime > ONE_WEEK)) { + currentCache = { + startTime: Math.round(Date.now() / 1000), + } + await sdk.cache.writeCache(INTERNAL_CACHE_FILE, currentCache) + } + sdk.sdkCache.startCache(currentCache) +} + +async function saveSdkInternalCache() { + await sdk.cache.writeCache(INTERNAL_CACHE_FILE, sdk.sdkCache.retriveCache(), { skipR2CacheWrite: true }) +} + +async function preExit() { + try { + await saveSdkInternalCache() // save sdk cache to r2 + } catch (e) { + if (process.env.NO_EXIT_ON_LONG_RUN_RPC) + sdk.error(e) + } +} \ No newline at end of file From 16458536c459dc6bd7835fb8f63f10ac507124d6 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 3 Apr 2024 12:50:57 +0100 Subject: [PATCH 1059/2004] Revert "remove white" This reverts commit 21535d51cf75591b3122638fa9876d437060eed9. --- projects/treasury/hegic.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/treasury/hegic.js b/projects/treasury/hegic.js index 92729ba1cf7..212b5fc1a5a 100644 --- a/projects/treasury/hegic.js +++ b/projects/treasury/hegic.js @@ -5,7 +5,6 @@ const treasuryARB = "0xf15968a096fc8f47650001585d23bee819b5affb"; const treasuryETH = "0xd884aca1897ac45515cee6d5fd48f341b4023ace" const treasuryETH2 = "0x117f55bf3c2e3bcdc7f308504480ee53f754a7ca" const hegic = "0x584bC13c7D411c00c01A62e8019472dE68768430" -const WHITE = "0x5f0e628b693018f639d10e4a4f59bd4d8b2b6b44" module.exports = treasuryExports({ arbitrum: { @@ -22,6 +21,6 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.USDC ], owners: [treasuryETH, treasuryETH2], - ownTokens: [hegic, WHITE], + ownTokens: [hegic], }, }) \ No newline at end of file From 26876f2b3c06b9a51ec00ec09824de686c8089d7 Mon Sep 17 00:00:00 2001 From: eddiewong88 <142790303+eddiewong88@users.noreply.github.com> Date: Wed, 3 Apr 2024 21:38:48 +0700 Subject: [PATCH 1060/2004] Add protocol address brrr (#9671) * feat: add project brrr * feat: update address --- projects/brrr/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/brrr/index.js b/projects/brrr/index.js index cb9d4ee4a44..d76a6add8ee 100644 --- a/projects/brrr/index.js +++ b/projects/brrr/index.js @@ -1,7 +1,7 @@ const { sumTokensExport } = require('../helper/unwrapLPs') const ADDRESSES = require('../helper/coreAssets.json') -const NFT_CONTRACT = "0x47efb5793b3aa8e15808c6fa794e6d7c93394047"; +const NFT_CONTRACT = "0x58ebebd033dC43aa9ab41ff739C7052eB0A72cd7"; module.exports = { blast: { From 157c9663b8928061c6b258c3e7bd3fe19bca94ec Mon Sep 17 00:00:00 2001 From: codinghistorian <75122733+codinghistorian@users.noreply.github.com> Date: Wed, 3 Apr 2024 18:41:47 +0400 Subject: [PATCH 1061/2004] add fathom-CDP (#9672) * add fathom-CDP -adding fathom-cdp protocol's TVL * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fathom-CDP/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/fathom-CDP/index.js diff --git a/projects/fathom-CDP/index.js b/projects/fathom-CDP/index.js new file mode 100644 index 00000000000..d738ba16a47 --- /dev/null +++ b/projects/fathom-CDP/index.js @@ -0,0 +1,9 @@ +const WXDCHolders = [ + '0x9B4aCeFE2dB986Ca080Dc01d137e6566dBE0aA3a', // CDP Vault CollateralPoolId "0x5844430000000000000000000000000000000000000000000000000000000000" +]; +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + xdc: { tvl: sumTokensExport({ owners: WXDCHolders, tokens: [ADDRESSES.xdc.WXDC]}) }, +} From 5ecf518c590c740e110e651a3e00d55b474ccccf Mon Sep 17 00:00:00 2001 From: codinghistorian <75122733+codinghistorian@users.noreply.github.com> Date: Wed, 3 Apr 2024 18:48:50 +0400 Subject: [PATCH 1062/2004] add fathom-vault (#9673) * add fathom-vault -asset balance in Vault contracts and appended strategies are counted as TVL. Any asset that gets invested, from investment strategies, to external services are not counted as TVL. * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fathom-vault/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/fathom-vault/index.js diff --git a/projects/fathom-vault/index.js b/projects/fathom-vault/index.js new file mode 100644 index 00000000000..3c9b194a700 --- /dev/null +++ b/projects/fathom-vault/index.js @@ -0,0 +1,14 @@ +const FathomVaultFactoryAddress = "0x0c6e3fd64D5f33eac0DCCDd887A8c7512bCDB7D6"; +const FXD = '0x49d3f7543335cf38Fa10889CCFF10207e22110B5'; + +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, }, +} From de78a842477f21314388756b06d5f2937d023370 Mon Sep 17 00:00:00 2001 From: henry <95596207+tuanh2000@users.noreply.github.com> Date: Wed, 3 Apr 2024 21:52:26 +0700 Subject: [PATCH 1063/2004] Ash perp tvl (#9670) * add ashswap * add ash-perp --------- Co-authored-by: dado0612 Co-authored-by: dado0612 <104922118+dado0612@users.noreply.github.com> Co-authored-by: Royce --- projects/ash-perp/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/ash-perp/index.js diff --git a/projects/ash-perp/index.js b/projects/ash-perp/index.js new file mode 100644 index 00000000000..4fda2795d2f --- /dev/null +++ b/projects/ash-perp/index.js @@ -0,0 +1,26 @@ +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 From 62784e73048200f637ec888d6ab416e1f2e158bf Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 3 Apr 2024 18:24:17 +0100 Subject: [PATCH 1064/2004] astaria v2 --- projects/astaria-v2/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/astaria-v2/index.js diff --git a/projects/astaria-v2/index.js b/projects/astaria-v2/index.js new file mode 100644 index 00000000000..1e83bbd6875 --- /dev/null +++ b/projects/astaria-v2/index.js @@ -0,0 +1,8 @@ +const { treasuryExports } = require("../helper/treasury"); +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = treasuryExports({ + base: { + owners: ["0x0000000000A6F0986c92cf1EC4d2e77aFBE1466D"], + }, +}) \ No newline at end of file From d1f4ba5afc7183315d62bf6934f5fc3af2189446 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 3 Apr 2024 18:59:03 +0100 Subject: [PATCH 1065/2004] add moe liquidity book adapter --- projects/merchant-moe-lb/index.js | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/merchant-moe-lb/index.js diff --git a/projects/merchant-moe-lb/index.js b/projects/merchant-moe-lb/index.js new file mode 100644 index 00000000000..f86f584aba1 --- /dev/null +++ b/projects/merchant-moe-lb/index.js @@ -0,0 +1,34 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const factories = { + mantle: '0xa6630671775c4EA2743840F9A5016dCf2A104054', +} +async function tvl(api) { + const pools = await api.fetchList({ + target: factories[api.chain], + itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', + lengthAbi: 'uint256: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, }) +} + +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 From fc15ad157c5524f38af2f044383b034765920e06 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 3 Apr 2024 19:57:17 +0100 Subject: [PATCH 1066/2004] add etherfi liquid --- projects/etherfi-liquid/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/etherfi-liquid/index.js diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js new file mode 100644 index 00000000000..d64fbdcad6c --- /dev/null +++ b/projects/etherfi-liquid/index.js @@ -0,0 +1,13 @@ +async function tvl(api) { + const bal = await api.call({ + abi: "uint256:totalAssets", + target: '0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221', + }); + api.add("0x35fa164735182de50811e8e2e824cfb9b6118ac2", bal); +} + +module.exports = { + ethereum: { + tvl, + }, +}; From ed7cde0c2ca8c8b80ace249be4e45a3690183b1b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 3 Apr 2024 19:57:40 +0100 Subject: [PATCH 1067/2004] doublecounted --- projects/etherfi-liquid/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js index d64fbdcad6c..2c0f897708d 100644 --- a/projects/etherfi-liquid/index.js +++ b/projects/etherfi-liquid/index.js @@ -7,6 +7,7 @@ async function tvl(api) { } module.exports = { + doublecounted: true, ethereum: { tvl, }, From 319d37d5ce2c051ce6a144d245167bcc747f1a9b Mon Sep 17 00:00:00 2001 From: Kacper Bak Date: Wed, 3 Apr 2024 12:04:20 -0700 Subject: [PATCH 1068/2004] added puffETH to Zircuit Staking (#9676) --- projects/zircuit/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js index cd9416c316e..9748f438658 100644 --- a/projects/zircuit/index.js +++ b/projects/zircuit/index.js @@ -17,7 +17,8 @@ const TOKEN_CONTRACTS = [ '0xf951E335afb289353dc249e82926178EaC7DEd78', // swETH '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3', // USDe '0x4d831e22F062b5327dFdB15f0b6a5dF20E2E3dD0', // cSTONE - '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa' // mETH + '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa', // mETH + '0xD9A442856C234a39a81a089C06451EBAa4306a72' // pufETH ]; module.exports = { From 1f0b8d25c58148b2a82d3eb177f92fbf4352d310 Mon Sep 17 00:00:00 2001 From: Cohiba Nan <132758148+Cohiban@users.noreply.github.com> Date: Thu, 4 Apr 2024 03:04:53 +0800 Subject: [PATCH 1069/2004] The Btc asset address was added (#9675) --- projects/ainn-layer2/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/ainn-layer2/index.js b/projects/ainn-layer2/index.js index 1f72aa54f0a..bf28a426dc7 100644 --- a/projects/ainn-layer2/index.js +++ b/projects/ainn-layer2/index.js @@ -15,7 +15,8 @@ const BTCOwners = [ "3CP5WJ2JSLCew7SETWUe5FxpBGrekMBiwk", "39Fvw2Ho1fEkyDsos5sNTN5iMJZKzTL526", "3Kptt4TZZRcjuGH8ikoQ8mV1TVxq45dnuS", - "3G4sMXWAAVTvTXTksr8u9zuu7W8RKsicEz" + "3G4sMXWAAVTvTXTksr8u9zuu7W8RKsicEz", + "335DRGzLLG2tu4H4PnFBHYAwcj5pvV8zei" ]; @@ -32,4 +33,4 @@ module.exports = { tokens: ["0xEbc45Ef3B6D7E31573DAa9BE81825624725939f9"] //wbtc }), }, -}; \ No newline at end of file +}; From ae987960548d3e574de12ee69421e69224b1b4ba Mon Sep 17 00:00:00 2001 From: "Web3.World" <165679484+web3world@users.noreply.github.com> Date: Wed, 3 Apr 2024 23:05:13 +0400 Subject: [PATCH 1070/2004] add web3world tvl (#9668) --- projects/helper/chains.json | 1 + projects/web3world/index.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 projects/web3world/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 36034c8f6fb..59733c05433 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -280,6 +280,7 @@ "umee", "vechain", "velas", + "venom", "vision", "vite", "vive", diff --git a/projects/web3world/index.js b/projects/web3world/index.js new file mode 100644 index 00000000000..d8032383da7 --- /dev/null +++ b/projects/web3world/index.js @@ -0,0 +1,22 @@ +const { post } = require('../helper/http') +const BigNumber = require('bignumber.js') + +async function fetch() { + const tvl = (await post("https://api.web3.world/v2/pools", { + limit: 1000, + offset: 0, + ordering: "tvldescending", + whiteListUri: "https://static.web3.world/assets/manifest.json", + }) + ).pools.map(p => p.tvl).reduce( + (a, c) => new BigNumber(a).plus(c)); + + return tvl; +} + +module.exports = { + venom: { + fetch + }, + fetch +}; From bcad8266283a86707fff455bff17cabc3bbf3c72 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 3 Apr 2024 21:41:39 +0200 Subject: [PATCH 1071/2004] Add dtx vault address and minor fix (#9677) * chore: add dtx vault address * minor fix --------- Co-authored-by: dtx-devs --- projects/dtx/index.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/projects/dtx/index.js b/projects/dtx/index.js index 53e4b9f4199..7964aff6a35 100644 --- a/projects/dtx/index.js +++ b/projects/dtx/index.js @@ -1,16 +1,24 @@ const { sumERC4626VaultsExport } = require("../helper/erc4626") +const sdk = require('@defillama/sdk') +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +const vaultTvl = sumERC4626VaultsExport({ + vaults: [ + "0x56e0f6DF03883611C9762e78d4091E39aD9c420E", + "0x3D4621fa5ff784dfB2fcDFd5B293224167F239db", + "0xe97D34E531E1b299047A94Fc6854289830362d8f", + "0xBa95FCe6c2683C29bD963dd201CA8ee8f3605801", + "0x037A168876d3027b1384FD1752fEAa52407726dB", + "0x3031F6c8958Cf093377c11b3871BD23AEA5e5865", + ], + isOG4626: true, +}) + +const otherTvl = sumTokensExport({ tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], owners: ['0x9AdF2b330697C6816176491E1fd5503BB746d1d8', '0x0E5b7DDbF37d92B21512Ae5A6CE66aEfA7A7828F']}) module.exports = { blast: { - tvl: sumERC4626VaultsExport({ - vaults: [ - "0x56e0f6DF03883611C9762e78d4091E39aD9c420E", - "0x3D4621fa5ff784dfB2fcDFd5B293224167F239db", - "0xe97D34E531E1b299047A94Fc6854289830362d8f", - "0xBa95FCe6c2683C29bD963dd201CA8ee8f3605801", - "0x037A168876d3027b1384FD1752fEAa52407726dB", - ], - isOG4626: true, - }), + tvl: sdk.util.sumChainTvls([vaultTvl, otherTvl]), }, } From dcbce744f0b9f3debcb24d8ecfd6d8a95cb2bc2c Mon Sep 17 00:00:00 2001 From: synd01star <159481468+synd01star@users.noreply.github.com> Date: Wed, 3 Apr 2024 23:58:28 +0300 Subject: [PATCH 1072/2004] Add DegenFund (#9678) * Add DegenFund * code refactor --------- Co-authored-by: tca01 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/degenfund/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/degenfund/index.js diff --git a/projects/degenfund/index.js b/projects/degenfund/index.js new file mode 100644 index 00000000000..60254944649 --- /dev/null +++ b/projects/degenfund/index.js @@ -0,0 +1,15 @@ +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 From 33b70770ecfd835c283bd4b5c6f7777ddb33ac30 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:37:40 +0200 Subject: [PATCH 1073/2004] code refactor --- package-lock.json | 6 +- package.json | 1 + projects/arbis.js | 51 +-- projects/growthdefi/abis/clqdr.json | 3 - projects/growthdefi/index.js | 598 ++-------------------------- projects/hakka.js | 11 +- projects/helper/cache/getLogs.js | 6 +- projects/helper/env.js | 15 - projects/lachainBridge.js | 18 +- projects/moneyonchain.js | 15 +- projects/reserve/index.js | 75 ++-- projects/shiftdollar/index.js | 4 +- projects/sienna-lend/index.js | 6 +- projects/skeleton/index.js | 38 +- projects/solarbeam/index.js | 168 +------- projects/superbots/index.js | 11 +- projects/tracerdao/index.js | 35 +- projects/tzwrap/index.js | 13 +- projects/tzwrap/tokens.js | 131 ------ projects/vacusfinance/index.js | 9 +- 20 files changed, 122 insertions(+), 1092 deletions(-) delete mode 100644 projects/growthdefi/abis/clqdr.json delete mode 100644 projects/tzwrap/tokens.js diff --git a/package-lock.json b/package-lock.json index 17de532b106..ab79f3b205b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.50", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.50.tgz", - "integrity": "sha512-baFlhaQAohM63XP9PZgSve80iO0/2IaCLqReKLPBLft1zTtQGiEy7U0rPXKdoIsUqmQ+EGbCxR+HeMXwR2Xupg==", + "version": "5.0.51", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.51.tgz", + "integrity": "sha512-9xph+m9PykFw23K49AUagVLj+iu9mHMUeoZwBmdpVT0GBQNpLadMjCWc9NEgivrguOqMC76MhxZBsZMOTlzXHw==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/package.json b/package.json index cc900e75344..8ca12aa6db0 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "treasury": "cd utils;npm i; cd ..; node utils/testInteractive treasury", "entities": "cd utils;npm i; cd ..; node utils/testInteractive entities", "useTokenLabels": "node utils/scripts/useTokenLabels.js", + "biggest-files": "find ./projects -name '*.js' -not -path './projects/helper/*' -not -path './projects/curve/*' -not -path './projects/sigmao/*' -exec du -sh {} \\; | sort -rh | head -n 100", "postinstall": "echo 'run \"npm update @defillama/sdk\" if you want lastest sdk changes' " }, "author": "", diff --git a/projects/arbis.js b/projects/arbis.js index 5fa40183cfe..8c1c1b645b7 100644 --- a/projects/arbis.js +++ b/projects/arbis.js @@ -1,14 +1,6 @@ const { staking } = require('./helper/staking') -const sdk = require('@defillama/sdk') -const { unwrapLPsAuto } = require('./helper/unwrapLPs') -const { getChainTransform } = require('./helper/portedTokens') -const chain = 'arbitrum' - - -async function tvl(_, _b, { [chain]: block}) { - const balances = {} - const transformAddress = await getChainTransform(chain) +async function tvl(api) { const vaults1 = [ '0x47a156668F1Ecc659Efbbf4910508Ace1b46a49b', '0xdc2d66044e894d0726570bdc03d2123ab8f2cd51', @@ -26,41 +18,12 @@ async function tvl(_, _b, { [chain]: block}) { '0xb970E280F9ddAA3349ab9F3ecf778970cDE46655', ] - const { output: tokens } = await sdk.api.abi.multiCall({ - abi: abi.stakedToken, - calls: vaults.map(i => ({ target: i})), - chain, block, - }) - - const { output: deposits } = await sdk.api.abi.multiCall({ - abi: abi.totalSupply, - calls: vaults.map(i => ({ target: i})), - chain, block, - }) - - const { output: tokens1 } = await sdk.api.abi.multiCall({ - abi: abi.depositToken, - calls: vaults1.map(i => ({ target: i})), - chain, block, - }) - - const { output: deposits1 } = await sdk.api.abi.multiCall({ - abi: abi.totalDeposits, - calls: vaults1.map(i => ({ target: i})), - chain, block, - }) - - tokens.forEach((data, i) => { - sdk.util.sumSingleBalance(balances, transformAddress(data.output), deposits[i].output) - }) - - tokens1.forEach((data, i) => { - sdk.util.sumSingleBalance(balances, transformAddress(data.output), deposits1[i].output) - }) - - await unwrapLPsAuto({ balances, block, chain, }) - - return balances + 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 = { diff --git a/projects/growthdefi/abis/clqdr.json b/projects/growthdefi/abis/clqdr.json deleted file mode 100644 index 3ea13f77ea0..00000000000 --- a/projects/growthdefi/abis/clqdr.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "totalReserve": "uint256:totalReserve" -} \ No newline at end of file diff --git a/projects/growthdefi/index.js b/projects/growthdefi/index.js index 1d1bb56c540..2f226e0b8a0 100644 --- a/projects/growthdefi/index.js +++ b/projects/growthdefi/index.js @@ -1,584 +1,52 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const clqdr = require("./abis/clqdr.json"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); +const abi = require("./abi.json") -const GRO_BSC = "0x336ed56d8615271b38ecee6f4786b55d0ee91b96"; -const LINSPIRIT = "0xc5713B6a0F26bf0fdC1c52B90cd184D950be515C"; - -const morChains = { +const config = { bsc: { + autoGem: "0xE02CE329281664A5d2BC0006342DC84f6c384663", + DAI: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", pools: [ "0x13e7a6691fe00de975cf27868386f4ae9aed3cdc", "0xc2e8c3c427e0a5baaf512a013516aecb65bd75cb", ], - - ignoreAddresses: [], - }, - avax: { - pools: [], - - ignoreAddresses: [], + singlePSM: ADDRESSES.bsc.BUSD, }, fantom: { + DAI: ADDRESSES.fantom.DAI, pools: [ "0x30463d33735677b4e70f956e3dd61c6e94d70dfe", "0xaebd31E9FFcB222feE947f22369257cEcf1F96CA", ], - ignoreAddresses: [], - }, -}; - -const morChainsNonStk = { - bsc: { - pools: [], - mcds: [], - ignoreAddresses: [], }, avax: { - pools: [], - mcds: [], - ignoreAddresses: [], - }, - fantom: { - pools: [ - "0x814c66594a22404e101fecfecac1012d8d75c156", - "0x3f569724cce63f7f24c5f921d5ddcfe125add96b", - ], - mcds: [ - "0xe5fb3D583660e57b1f616f89Ae98dfb6e3c37f99", - "0x726d946BBF3d0E6f9e5078D4F5e1f0014c37288F", - ], - ignoreAddresses: [], - }, -}; - -const transformFrom = async (chain) => { - if (chain === "bsc") { - return addr => 'bsc:'+addr - } else if (chain === "avax") { - return addr => 'avax:'+addr - } else { - return addr => 'fantom:'+addr + DAI: ADDRESSES.avax.DAI, + singlePSM: ADDRESSES.avax.USDC_e, + autoGem: "0x65764167EC4B38D611F961515B51a40628614018", } -}; - -//*** MOR tvl portion as product of GrowthDefi Protocol ***// -const fetchMorChainTvl = async ( - timestamp, - ethBlock, - chainBlocks, - chain, - chainCustomProcessor -) => { - const chainConfig = morChains[chain]; - - const balances = {}; - - const stakeLpTokens = ( - await sdk.api.abi.multiCall({ - abi: abi.state, - calls: chainConfig.pools.map((pool) => ({ - target: pool, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output.map((stkLp) => stkLp.output._reserveToken); - - const stakeLpTokens_bal = ( - await sdk.api.abi.multiCall({ - abi: abi.totalReserve, - calls: chainConfig.pools.map((pool) => ({ - target: pool, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output.map((stkLp_bal) => stkLp_bal.output); - - const stkSymbol = ( - await sdk.api.abi.multiCall({ - abi: abi.symbol, - calls: stakeLpTokens.map((lp) => ({ - target: lp, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output; - - const lpPositions = []; - - await Promise.all( - stkSymbol.map(async (symbol, idx) => { - if (symbol.output.includes("LP")) { - lpPositions.push({ - token: stakeLpTokens[idx], - balance: stakeLpTokens_bal[idx], - }); - } else { - const processedTokens = await chainCustomProcessor( - stakeLpTokens[idx], - stakeLpTokens_bal[idx], - symbol.output, - chainBlocks - ); - - processedTokens.map(({ tokenAddress, tokenBalance }) => { - sdk.util.sumSingleBalance( - balances, - `${chain}:${tokenAddress}`, - tokenBalance - ); - }); - } - }) - ); - - const transformAddress = await transformFrom(chain); - - await unwrapUniswapLPs( - balances, - lpPositions, - chainBlocks[chain], - chain, - transformAddress - ); - - return balances; -}; - -//*** MOR tvl portion as product of GrowthDefi Protocol - for the non strategy contracts ***// -const fetchMorNonStkChainTvl = async ( - timestamp, - ethBlock, - chainBlocks, - chain, - chainCustomProcessor -) => { - const chainConfig = morChainsNonStk[chain]; - - const balances = {}; - - const stakeLpTokens = chainConfig.pools; - - const stakeLpTokens_bal = ( - await sdk.api.abi.multiCall({ - abi: "erc20:balanceOf", - calls: chainConfig.pools.map((pool, idx) => ({ - target: pool, - params: chainConfig.mcds[idx], - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output.map((stkLp_bal) => stkLp_bal.output); - - const stkSymbol = ( - await sdk.api.abi.multiCall({ - abi: abi.symbol, - calls: stakeLpTokens.map((lp) => ({ - target: lp, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output; - - const lpPositions = []; - - await Promise.all( - stkSymbol.map(async (symbol, idx) => { - if (symbol.output.includes("LP")) { - lpPositions.push({ - token: stakeLpTokens[idx], - balance: stakeLpTokens_bal[idx], - }); - } else { - const processedTokens = await chainCustomProcessor( - stakeLpTokens[idx], - stakeLpTokens_bal[idx], - symbol.output, - chainBlocks - ); - - processedTokens.map(({ tokenAddress, tokenBalance }) => { - sdk.util.sumSingleBalance( - balances, - `${chain}:${tokenAddress}`, - tokenBalance - ); - }); - } - }) - ); - - const transformAddress = await transformFrom(chain); - - await unwrapUniswapLPs( - balances, - lpPositions, - chainBlocks[chain], - chain, - transformAddress - ); - - return balances; -}; - -//*** LQDR staked portion as product of GrowthDefi Protocol ***// -const fetchCLQDRStaking = async ( - timestamp, - ethBlock, - chainBlocks, - chain, - chainCustomProcessor -) => { - const balances = {}; - - const stakeLpTokens = ["0x814c66594a22404e101fecfecac1012d8d75c156"]; - - const stakeLpTokens_bal = ( - await sdk.api.abi.multiCall({ - abi: clqdr.totalReserve, - calls: stakeLpTokens.map((pool, idx) => ({ - target: pool, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output.map((stkLp_bal) => stkLp_bal.output); - - const stkSymbol = ( - await sdk.api.abi.multiCall({ - abi: abi.symbol, - calls: stakeLpTokens.map((lp) => ({ - target: lp, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output; - - await Promise.all( - stkSymbol.map(async (symbol, idx) => { - const processedTokens = await chainCustomProcessor( - "0x10b620b2dbAC4Faa7D7FFD71Da486f5D44cd86f9", - stakeLpTokens_bal[idx], - "LQDR", - chainBlocks - ); - - processedTokens.map(({ tokenAddress, tokenBalance }) => { - sdk.util.sumSingleBalance( - balances, - `${chain}:${tokenAddress}`, - tokenBalance - ); - }); - }) - ); - - return balances; -}; - -const psmConfig = { - avax: ["0x88cc23286f1356eb0163ad5bdbfa639416e4168d"], - bsc: [], - fantom: ["0xa561fa603bf0b43cb0d0911eeccc8b6777d3401b"], -}; - -const stableConfig = { - avax: [ADDRESSES.avax.USDC_e], - bsc: [ADDRESSES.bsc.BUSD], - fantom: [], -}; - -const autoGem = { - avax: "0x65764167EC4B38D611F961515B51a40628614018", - bsc: "0xE02CE329281664A5d2BC0006342DC84f6c384663", - fantom: "", -}; - -const DAI = { - avax: ADDRESSES.avax.DAI, - bsc: "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", - fantom: ADDRESSES.fantom.DAI, -}; - -//*** PSM staked portion as product of GrowthDefi Protocol ***// -const fetchPSMMultiple = async ( - timestamp, - ethBlock, - chainBlocks, - chain, - chainCustomProcessor -) => { - const balances = {}; - - const stakeLpTokens = psmConfig[chain]; - - const stakeLpTokens_bal = ( - await sdk.api.abi.multiCall({ - abi: "erc20:totalSupply", - calls: stakeLpTokens.map((pool, idx) => ({ - target: pool, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output.map((stkLp_bal) => stkLp_bal.output); - - const stkSymbol = ( - await sdk.api.abi.multiCall({ - abi: abi.symbol, - calls: stakeLpTokens.map((lp) => ({ - target: lp, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output; - - await Promise.all( - stkSymbol.map(async (symbol, idx) => { - const processedTokens = await chainCustomProcessor( - DAI[chain], - stakeLpTokens_bal[idx], - "DAI", - chainBlocks - ); - - processedTokens.map(({ tokenAddress, tokenBalance }) => { - sdk.util.sumSingleBalance( - balances, - `${chain}:${tokenAddress}`, - tokenBalance - ); - }); - }) - ); - - return balances; -}; - -//*** PSM staked portion as product of GrowthDefi Protocol ***// -const fetchPSMSingle = async ( - timestamp, - ethBlock, - chainBlocks, - chain, - chainCustomProcessor -) => { - const balances = {}; - - const stakeLpTokens = stableConfig[chain]; - - const stakeLpTokens_bal = ( - await sdk.api.abi.multiCall({ - abi: "erc20:balanceOf", - calls: stakeLpTokens.map((pool, idx) => ({ - target: pool, - params: autoGem[chain], - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output.map((stkLp_bal) => stkLp_bal.output); - - const stkSymbol = ( - await sdk.api.abi.multiCall({ - abi: abi.symbol, - calls: stakeLpTokens.map((lp) => ({ - target: lp, - })), - chain: chain, - block: chainBlocks[chain], - }) - ).output; - - await Promise.all( - stkSymbol.map(async (symbol, idx) => { - const processedTokens = await chainCustomProcessor( - DAI[chain], - stakeLpTokens_bal[idx], - "DAI", - chainBlocks - ); - - processedTokens.map(({ tokenAddress, tokenBalance }) => { - sdk.util.sumSingleBalance( - balances, - `${chain}:${tokenAddress}`, - tokenBalance - ); - }); - }) - ); - - return balances; -}; - -/** - * BSC-specific tokens processing logic - * - * @param {*} address - * @param {*} balance - * @param {*} symbol - * @param {*} chainBlocks - * @returns - */ -const bscTokensProcessor = async (address, balance, symbol, chainBlocks) => { - let tokenAddress = address; - let tokenBalance = balance; - - // Replace govGRO token with GRO (as it's pegged 1:1) - if (symbol === "govGRO") { - tokenAddress = GRO_BSC; - } - - return [{ tokenAddress, tokenBalance }]; -}; - -/** - * Avax-specific tokens processing logic - * - * @param {*} address - * @param {*} balance - * @param {*} symbol - * @param {*} chainBlocks - * @returns - */ -const avaxTokensProcessor = async (address, balance, symbol, chainBlocks) => { - let tokenAddress = address; - let tokenBalance = balance; - - return [{ tokenAddress, tokenBalance }]; -}; - -const ftmTokensProcessor = async (address, balance, symbol, chainBlocks) => { - let tokenAddress = address; - let tokenBalance = balance; - - // Replace govGRO token with GRO (as it's pegged 1:1) - if (symbol === "slinSpirit") { - tokenAddress = LINSPIRIT; +} + +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) } - - return [{ tokenAddress, tokenBalance }]; -}; - -const morBscTvl = (timestamp, ethBlock, chainBlocks) => { - return fetchMorChainTvl( - timestamp, - ethBlock, - chainBlocks, - "bsc", - bscTokensProcessor - ); -}; - -const morAvaxTvl = (timestamp, ethBlock, chainBlocks) => { - return fetchMorChainTvl( - timestamp, - ethBlock, - chainBlocks, - "avax", - avaxTokensProcessor - ); }; -const morFTMTvl = (timestamp, ethBlock, chainBlocks) => { - return fetchMorChainTvl( - timestamp, - ethBlock, - chainBlocks, - "fantom", - ftmTokensProcessor - ); -}; - -const morFTMNonStkTvl = (timestamp, ethBlock, chainBlocks) => { - return fetchMorNonStkChainTvl( - timestamp, - ethBlock, - chainBlocks, - "fantom", - ftmTokensProcessor - ); -}; - -const clqdrStakeTvl = (timestamp, ethBlock, chainBlocks) => { - return fetchCLQDRStaking( - timestamp, - ethBlock, - chainBlocks, - "fantom", - ftmTokensProcessor - ); -}; - -const psmTVLMultipleFTM = (timestamp, ethBlock, chainBlocks) => { - return fetchPSMMultiple( - timestamp, - ethBlock, - chainBlocks, - "fantom", - ftmTokensProcessor - ); -}; - -const psmTVLMultipleAVAX = (timestamp, ethBlock, chainBlocks) => { - return fetchPSMMultiple( - timestamp, - ethBlock, - chainBlocks, - "avax", - ftmTokensProcessor - ); -}; - -const psmTVLSingleAVAX = (timestamp, ethBlock, chainBlocks) => { - return fetchPSMSingle( - timestamp, - ethBlock, - chainBlocks, - "avax", - ftmTokensProcessor - ); -}; - -const psmTVLSingleBSC = (timestamp, ethBlock, chainBlocks) => { - return fetchPSMSingle( - timestamp, - ethBlock, - chainBlocks, - "bsc", - ftmTokensProcessor - ); -}; -module.exports = { - misrepresentedTokens: true, - bsc: { - tvl: sdk.util.sumChainTvls([morBscTvl, psmTVLSingleBSC]), - }, - avax: { - tvl: sdk.util.sumChainTvls([ - morAvaxTvl, - psmTVLMultipleAVAX, - psmTVLSingleAVAX, - ]), - }, - fantom: { - tvl: sdk.util.sumChainTvls([ - morFTMTvl, - morFTMNonStkTvl, - clqdrStakeTvl, - psmTVLMultipleFTM, - ]), - }, - methodology: - "We count liquidity on MOR through MasterChef and Staking Contracts", -}; +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file diff --git a/projects/hakka.js b/projects/hakka.js index 62d6a4117f4..a38048ed25f 100644 --- a/projects/hakka.js +++ b/projects/hakka.js @@ -16,7 +16,7 @@ const intelligenceETH = ['0x0F2fd95c221770d108aCD5363D25b06Bdc43140B'] const intelligenceBSC = ['0xD8B3fF98025Cf203Ba6D7Bb2d25DBeEF9539E6FB', '0x517Ef6281a9b3dc4Ef6B0318Bc5EDFDCf677d29D', '0x0A3e364eE37bac9E6aFF9E864E65B4603D5BC5D4'] const BSC_BHS_ADDRESS = '0x75192D6f3d51554CC2eE7B40C3aAc5f97934ce7E' -async function ethereum(_, block) { +async function ethereum(api) { const toa = [ [nullAddress, thirdFloorAddress], // thirdFloor // guild bank @@ -26,16 +26,15 @@ async function ethereum(_, block) { [ADDRESSES.ethereum.USDC, hakkaGuildBank], ] - return sumTokens2({ tokensAndOwners: toa, block, }) + return sumTokens2({ tokensAndOwners: toa, api, }) } -async function bsc(_, _b, { bsc: block }) { - const chain = 'bsc' +async function bsc(api) { const toa = [ [ADDRESSES.bsc.BUSD, BSC_BHS_ADDRESS], // thirdFloor [ADDRESSES.bsc.USDT, BSC_BHS_ADDRESS], // thirdFloor ] - return sumTokens2({ tokensAndOwners: toa, block, chain }) + return sumTokens2({ tokensAndOwners: toa, api }) } module.exports = { @@ -51,6 +50,6 @@ module.exports = { }, bsc: { tvl: bsc, - staking: sumTokensExport({ owners: intelligenceBSC, tokens: [HAKKA_ADDRESSES[56]], chain: 'bsc' }), + staking: sumTokensExport({ owners: intelligenceBSC, tokens: [HAKKA_ADDRESSES[56]], }), } } diff --git a/projects/helper/cache/getLogs.js b/projects/helper/cache/getLogs.js index 79614754976..ac550173a79 100644 --- a/projects/helper/cache/getLogs.js +++ b/projects/helper/cache/getLogs.js @@ -7,7 +7,7 @@ const cacheFolder = 'logs' async function getLogs({ target, topic, keys = [], fromBlock, toBlock, topics, - api, eventAbi, onlyArgs = false, extraKey, skipCache = false, onlyUseExistingCache = false, customCacheFunction, skipCacheRead = false}) { + api, eventAbi, onlyArgs = false, extraKey, skipCache = false, onlyUseExistingCache = false, customCacheFunction, skipCacheRead = false }) { if (!api) throw new Error('Missing sdk api object!') if (!target) throw new Error('Missing target!') if (!fromBlock) throw new Error('Missing fromBlock!') @@ -100,7 +100,7 @@ async function getLogs({ target, if (skipCache || skipCacheRead) return defaultRes - let cache = await getCache(cacheFolder, key) + let cache = await getCache(cacheFolder, key, { checkIfRecent: true }) // set initial structure if it is missing / reset if from block is moved to something older if (!cache.logs || fromBlock < cache.fromBlock) { return defaultRes @@ -110,7 +110,7 @@ async function getLogs({ target, } } -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}) { +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 }) { const res = await getLogs({ target: target ?? factory, topic, keys, fromBlock, toBlock, topics, api, eventAbi, onlyArgs, extraKey, skipCache, onlyUseExistingCache, customCacheFunction, skipCacheRead }) return res.map(transform) } diff --git a/projects/helper/env.js b/projects/helper/env.js index 52e3edfeeff..334d3c95012 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,21 +12,6 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", - - /* NAKA_RPC: 'https://node.nakachain.xyz', - ETHF_RPC: 'https://rpc.dischain.xyz/', - CORE_RPC: "https://rpc.coredao.org,https://rpc.ankr.com/core,https://1rpc.io/core,https://rpc-core.icecreamswap.com", - BITGERT_RPC: "https://flux-rpc2.brisescan.com,https://mainnet-rpc.brisescan.com,https://chainrpc.com,https://serverrpc.com,https://flux-rpc.brisescan.com", - BITCHAIN_RPC: "https://rpc.bitchain.biz/", - OZONE_RPC: "https://node1.ozonechain.io", - ZETA_RPC: "https://zetachain-evm.blockpi.network/v1/rpc/public,https://zetachain-mainnet-archive.allthatnode.com:8545", - DEFIVERSE_RPC: "https://rpc.defi-verse.org/", - ZKLINK_RPC: "https://rpc.zklink.io", - KINTO_RPC: "https://rpc.kinto-rpc.com", - DEFICHAIN_EVM_RPC: "https://dmc.mydefichain.com/mainnet,https://dmc01.mydefichain.com/mainnet", - RSS3_VSL_RPC: "https://rpc.rss3.io", - DEGEN_RPC: "https://rpc.degen.tips", */ - DEGEN_RPC_MULTICALL: "0xFBF562a98aB8584178efDcFd09755FF9A1e7E3a2", } const ENV_KEYS = [ diff --git a/projects/lachainBridge.js b/projects/lachainBridge.js index 950a84c1a5d..bbfe3461eec 100644 --- a/projects/lachainBridge.js +++ b/projects/lachainBridge.js @@ -1,7 +1,4 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { sumTokens } = require('./helper/unwrapLPs') -const { getChainTransform } = require('./helper/portedTokens') const config = { polygon: { @@ -30,20 +27,13 @@ const config = { }, } -module.exports = {}; - -const nullAddress = ADDRESSES.null - 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 (_, _block, { [chain]: block}) => { - const balances = {} - const transform = await getChainTransform(chain) - const {output: balance} = await sdk.api.eth.getBalance({ target: nativeBridge[0], block, chain }) - sdk.util.sumSingleBalance(balances, transform(nullAddress), balance) - const toa = tokenBridge.map(o => tokens.map(t => [t,o])).flat() - return sumTokens(balances, toa, block, chain, transform) + tvl: async (api) => { + return api.sumTokens({ owners, tokens }) } } }) diff --git a/projects/moneyonchain.js b/projects/moneyonchain.js index 3040d12c4da..ec4fe9dcb21 100644 --- a/projects/moneyonchain.js +++ b/projects/moneyonchain.js @@ -9,24 +9,15 @@ // Various API endpoints: https://api.moneyonchain.com/api/report/ // stats from https://moneyonchain.com/stats/ -const sdk = require('@defillama/sdk') +const ADDRESSES = require('./helper/coreAssets.json') -async function tvl(_, _b, { rsk: block }) { +async function tvl(api) { const docCollateral = '0xf773b590af754d597770937fa8ea7abdf2668370' - const { output } = await sdk.api.eth.getBalances({ - targets: [docCollateral], - chain: 'rsk', block, - }); - let total = 0 - output.forEach(i => total += i.balance/1e18) - return { - 'rootstock': total - } + return api.sumTokens({ owner: docCollateral, tokens: [ADDRESSES.null]}) } module.exports = { methodology: `TVL accounts for Total rBTC in the system`, - timetravel: false, rsk: { tvl, } diff --git a/projects/reserve/index.js b/projects/reserve/index.js index 80ed41cfe71..04f20a8752c 100644 --- a/projects/reserve/index.js +++ b/projects/reserve/index.js @@ -41,16 +41,16 @@ async function tvl(api) { // Common logic for calculating TVL (only mainnet has vault) const ownerTokens = config.vault ? [ + [ [ - [ - ADDRESSES.ethereum.USDC, //usdc - "0x8e870d67f660d95d5be530380d0ec0bd388289e1", //pax - ADDRESSES.ethereum.TUSD, //tusd - ADDRESSES.ethereum.BUSD, //busd - ], - config.vault, + ADDRESSES.ethereum.USDC, //usdc + "0x8e870d67f660d95d5be530380d0ec0bd388289e1", //pax + ADDRESSES.ethereum.TUSD, //tusd + ADDRESSES.ethereum.BUSD, //busd ], - ] + config.vault, + ], + ] : []; const blacklistedTokens = [config.rsr]; const fluxListWithOwner = []; @@ -85,26 +85,14 @@ async function tvl(api) { const allManagers = basketRes.flatMap(([tokens], i) => tokens.map(() => backingManagers[i]) ); - const allNames = await api.multiCall({ - abi: "string:name", - calls: allTokens, - }); - - const aTokenWrappers = allTokens.filter((_, i) => - allNames[i].startsWith("Static Aave") && (_.toLowerCase() !== '0x093cB4f405924a0C468b43209d5E466F1dd0aC7d'.toLowerCase() || chain !== 'ethereum') - ); - - const cUsdcV3Wrappers = allTokens.filter((_, i) => - allNames[i].startsWith("Wrapped cUSDCv3") - ); + const allNames = await api.multiCall({ abi: "string:name", calls: allTokens, }); - const morphoWrappers = allTokens.filter((_, i) => - allNames[i].startsWith("Tokenised Morpho") - ); - const stargateLpWrappers = allTokens.filter((_, i) => - allNames[i].startsWith("Wrapped Stargate") - ); + 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 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]) // Starts with Compound, ends with Vault ); @@ -125,39 +113,24 @@ async function tvl(api) { convexTokensAndOwners.push([token, allManagers[i]]); }); - let cTokens = await api.multiCall({ - abi: "address:underlying", - calls: cTokenWrappers, - }); - - let aTokens = await api.multiCall({ - abi: api.chain === "base" ? "address:aToken" : "address:ATOKEN", - calls: aTokenWrappers, - }); - - let morphoUnderlyingTokens = await api.multiCall({ - abi: "address:asset", - calls: morphoWrappers, - }); - - let morphoUnderlyingBalances = await api.multiCall({ - abi: "uint256:totalAssets", - calls: morphoWrappers, - }); + 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( - ...aTokenWrappers, + ...aTokenWrappersV2, + ...aTokenWrappersV3, ...stargateLpWrappers, ...cTokenWrappers, ...cUsdcV3Wrappers, ...morphoWrappers ); - if (chain === "ethereum") { - blacklistedTokens.push('0x093cB4f405924a0C468b43209d5E466F1dd0aC7d'); - ownerTokens.push([['0x98c23e9d8f34fefb1b7bd6a91b7ff122f4e16f5c'], '0x093cB4f405924a0C468b43209d5E466F1dd0aC7d']); - } + cTokens.forEach((v, i) => ownerTokens.push([[v], cTokenWrappers[i]])); - aTokens.forEach((v, i) => ownerTokens.push([[v], aTokenWrappers[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]) ); diff --git a/projects/shiftdollar/index.js b/projects/shiftdollar/index.js index 2d46a70db19..149bf76342f 100644 --- a/projects/shiftdollar/index.js +++ b/projects/shiftdollar/index.js @@ -16,6 +16,6 @@ const lps = [ const chain = 'cronos' module.exports = tombTvl(SHIFT, SFSHARE, rewardPool, boardroom, lps, chain, undefined, false, lps[0]) -module.exports[chain].tvl = async (_, _b, { [chain]: block}) => { - return sumTokens2({ chain, block, owner: factory, tokens: [USDC ]}) +module.exports[chain].tvl = async (api) => { + return sumTokens2({ api, owner: factory, tokens: [USDC ]}) } diff --git a/projects/sienna-lend/index.js b/projects/sienna-lend/index.js index 939d92585ff..a791a7f3efc 100644 --- a/projects/sienna-lend/index.js +++ b/projects/sienna-lend/index.js @@ -1,5 +1,6 @@ const { queryContract, } = require('../helper/chain/secret') -const { PromisePool } = require('@supercharge/promise-pool') +const { PromisePool } = require('@supercharge/promise-pool'); +const { sleep } = require('../helper/utils'); const LEND_OVERSEER_CONTRACT = "secret1pf88n9hm64mn58aw48jxfs2fsvzr07svnrrdlv"; @@ -30,7 +31,7 @@ async function getLendMarkets() { const data = [] - const { errors } = await PromisePool.withConcurrency(5) + const { errors } = await PromisePool.withConcurrency(3) .for(markets) .process(async (addr) => { @@ -40,6 +41,7 @@ async function getLendMarkets() { // 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) diff --git a/projects/skeleton/index.js b/projects/skeleton/index.js index 5ed7340038f..32427a5cafa 100644 --- a/projects/skeleton/index.js +++ b/projects/skeleton/index.js @@ -1,43 +1,17 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); -const { getParamCalls } = require('../helper/utils') const masterChefContract = "0x4fff737de45da4886f711b2d683fb6A6cf62C60C"; -const USDC = ADDRESSES.fantom.USDC; -const chain = 'fantom' -const ftmTvl = async (_, _b, { fantom: block }) => { - const balances = {}; +const ftmTvl = async (api) => { + const poolData = await api.fetchList({ lengthAbi: abi.poolLength, itemAbi: abi.poolInfo, target: masterChefContract}) - const poolLength = ( - await sdk.api.abi.call({ - abi: abi.poolLength, - target: masterChefContract, - chain, block, - }) - ).output; - - const calls = getParamCalls(poolLength) - const { output: poolData } = await sdk.api.abi.multiCall({ - target: masterChefContract, - abi: abi.poolInfo, - calls, chain, block, - }) - const stratCalls = poolData.map(i => ({ target: i.output.strat })) - const { output: stratResponse } = await sdk.api.abi.multiCall({ - abi: abi.wantLockedTotal, - calls: stratCalls, - chain, block, - }) - stratResponse.forEach(({ output },i) => { - sdk.util.sumSingleBalance(balances, 'fantom:'+poolData[i].output.want, output) - }) - return balances + 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 = { - misrepresentedTokens: true, fantom: { tvl: ftmTvl, }, diff --git a/projects/solarbeam/index.js b/projects/solarbeam/index.js index 54c0b6b2f6c..fd8bb980a4c 100644 --- a/projects/solarbeam/index.js +++ b/projects/solarbeam/index.js @@ -1,166 +1,16 @@ +const { getLogs2 } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') const { getUniTVL } = require('../helper/unknownTokens') const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const wMOVR = "0x98878B06940aE243284CA214f92Bb71a2b032B8A" // their own barely used version - -const stableSwapPools = { - '3pool': { - name: '3pool', - address: '0x9785478135BaFe3dCafe4BBa4C8311674D4E826E', - assets: ['USDC', 'BUSD', 'USDT'], - lpToken: '3pool' - }, - 'frax-3pool': { - name: 'FRAX', - address: '0x4BB7177319BD1746c3082DDd41c7663E2dbF0f31', - assets: ['FRAX', '3pool'], - lpToken: 'frax-3pool', - basePool: '3pool', - basePoolIndex: 1 - }, - stksm: { - name: 'stKSM', - address: '0x77D4b212770A7cA26ee70b1E0f27fC36da191c53', - assets: ['xcKSM', 'stKSM'], - lpToken: 'stksm' - }, - 'kbtc-btc': { - name: ' BTC-kBTC', - address: '0xC5d0c8e241b59F989e37B5C35925C58F8c7F66A8', - assets: ['xcKBTC', 'WBTC'], - lpToken: 'kbtc-btc' - }, - 'mim-3pool': { - name: 'MIM', - address: '0x2a9Fe2514Ed1DaC1C1f5a6d7710C9F6599A27e98', - assets: ['MIM', '3pool'], - lpToken: 'mim-3pool', - basePool: '3pool', - basePoolIndex: 1 - }, - 'mai-3pool': { - name: 'MAI', - address: '0x358B4060849E9069482983DEc5E0db671c3337Ff', - assets: ['MAI', '3pool'], - lpToken: 'mai-3pool', - basePool: '3pool', - basePoolIndex: 1 - } -} - -const stableSwapTokens = { - USDC: { - address: ADDRESSES.moonriver.USDC, - decimals: 6, - symbol: 'USDC', - gecko: 'usd-coin' - }, - USDT: { - address: ADDRESSES.moonriver.USDT, - decimals: 6, - symbol: 'USDT', - gecko: 'tether' - }, - BUSD: { - address: '0x5D9ab5522c64E1F6ef5e3627ECCc093f56167818', - decimals: 18, - symbol: 'BUSD', - gecko: 'binance-usd' - }, - FRAX: { - symbol: 'FRAX', - name: 'FRAX', - address: '0x1A93B23281CC1CDE4C4741353F3064709A16197d', - decimals: 18, - gecko: 'frax' - }, - MIM: { - symbol: 'MIM', - name: 'Magic Internet Money', - address: '0x0caE51e1032e8461f4806e26332c030E34De3aDb', - decimals: 18, - gecko: 'magic-internet-money' - }, - MAI: { - symbol: 'MAI', - name: 'Mai Stablecoin', - address: '0xFb2019DfD635a03cfFF624D210AEe6AF2B00fC2C', - decimals: 18, - gecko: 'mimatic' - }, - xcKSM: { - symbol: 'xcKSM', - name: 'xcKSM', - address: '0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080', - decimals: 12, - gecko: 'kusama' - }, - stKSM: { - symbol: 'stKSM', - name: 'stKSM', - address: '0xFfc7780C34B450d917d557E728f033033CB4fA8C', - decimals: 12, - gecko: 'kusama' - }, - xcKBTC: { - symbol: 'xcKBTC', - name: 'Kintsugi Wrapped BTC', - address: '0xFFFfFfFfF6E528AD57184579beeE00c5d5e646F0', - decimals: 8, - gecko: 'bitcoin' - }, - WBTC: { - symbol: 'WBTC', - name: 'Wrapped BTC', - address: ADDRESSES.oasis.USDT, - decimals: 8, - gecko: 'bitcoin' - } -} - -async function stableDexTVL(timestamp, _block, chainBlocks) { - const block = chainBlocks.moonriver - let balances = {}; - let calls = []; - - for (const pool of Object.values(stableSwapPools)) { - for (const token of pool.assets) - if (stableSwapTokens[token]) { - calls.push({ - target: stableSwapTokens[token].address, - params: pool.address, - }); - } - } - - // Pool Balances - let balanceOfResults = await sdk.api.abi.multiCall({ - block, - calls: calls, - abi: "erc20:balanceOf", - chain: 'moonriver' - }); - - // Compute Balances - balanceOfResults.output.forEach((balanceOf) => { - let address = balanceOf.input.target; - let amount = balanceOf.output; - amount = BigNumber(amount).toFixed(); - balances[address] = BigNumber(balances[address] || 0) - .plus(amount) - .toFixed(); - }); - - - const finalBalances = {} - for (const tokenAddress in balances) { - const asset = Object.values(stableSwapTokens).find(r => r.address.toLowerCase() == tokenAddress.toLowerCase()); - sdk.util.sumSingleBalance(finalBalances, asset.gecko, (balances[tokenAddress]) / (10 ** asset.decimals)) - } - - return finalBalances; +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({ diff --git a/projects/superbots/index.js b/projects/superbots/index.js index a5dcb72c1ad..09210ed463a 100644 --- a/projects/superbots/index.js +++ b/projects/superbots/index.js @@ -1,6 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') -const { pool2 } = require('../helper/pool2') const { staking } = require('../helper/staking') const vault_tokens = [ @@ -33,17 +32,15 @@ const config = { } } -async function tvl(_, _b, { bsc: block }) { - return sumTokens2({ owners: vaults, tokens: vault_tokens, chain: 'bsc', block }) +async function tvl(api) { + return sumTokens2({ owners: vaults, tokens: vault_tokens, api }) } module.exports = { - timetravel: false, - misrepresentedTokens: true, bsc: { tvl, - staking: staking(config.bsc.stakingPool, config.bsc.ubxt, 'bsc'), - pool2: staking(config.bsc.stakingPool, config.bsc.ubxtLP, 'bsc'), + 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,), diff --git a/projects/tracerdao/index.js b/projects/tracerdao/index.js index ad13ea73a6e..31bc3327161 100644 --- a/projects/tracerdao/index.js +++ b/projects/tracerdao/index.js @@ -1,10 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') const USDC = ADDRESSES.arbitrum.USDC; -const chain = 'arbitrum' // Both v1 and v2 factories const factoryPoolContractsConfig = [ @@ -18,36 +15,16 @@ const factoryPoolContractsConfig = [ }, ] -async function tvl(_, _b, { arbitrum: block }) { - let factories = [] - if (!block) factories = factoryPoolContractsConfig.map(i => i.contract) - else { - factoryPoolContractsConfig.filter(i => block > i.fromBlock).forEach(i => factories.push(i.contract)) +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) } - const { output: numPools } = await sdk.api.abi.multiCall({ - calls: factories.map(i => ({ target: i })), - abi: abi.numPools, - chain, block, - }) - - const calls = [] - numPools.forEach(i => { - for (let j = 0; j < +i.output; j++) - calls.push({ target: i.input.target, params: j }) - }) - - const { output: pools } = await sdk.api.abi.multiCall({ - abi: abi.pools, - calls, - chain, block, - }) - - const owners = pools.map(i => i.output) - return sumTokens2({ owners, chain, block, tokens: [USDC] }) + return api.sumTokens({ owners, tokens: [USDC] }) } module.exports = { - misrepresentedTokens: true, arbitrum: { tvl, }, diff --git a/projects/tzwrap/index.js b/projects/tzwrap/index.js index 877466b75cd..b91c95a7995 100644 --- a/projects/tzwrap/index.js +++ b/projects/tzwrap/index.js @@ -1,14 +1,7 @@ -const { sumTokens } = require('../helper/unwrapLPs') -const tokens= require('./tokens') - -async function tvl(_, block) { - const wrapContract = '0x5Dc76fD132354be5567ad617fD1fE8fB79421D82' - const toa = tokens.map(t => [t.ethereumContractAddress, wrapContract]) - return sumTokens({}, toa, block) -} +const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { ethereum: { - tvl + tvl: sumTokensExport({ owner: '0x5Dc76fD132354be5567ad617fD1fE8fB79421D82', fetchCoValentTokens: true, }) } -}; +} \ No newline at end of file diff --git a/projects/tzwrap/tokens.js b/projects/tzwrap/tokens.js deleted file mode 100644 index 4a9de541973..00000000000 --- a/projects/tzwrap/tokens.js +++ /dev/null @@ -1,131 +0,0 @@ -const ADDRESSES = require('../helper/coreAssets.json') -// info taken from https://indexer.app.tzwrap.com/v1/configuration - -module.exports = [ - { - "ethereumSymbol": "LEO", - "ethereumName": "Bitfinex LEO Token", - "ethereumContractAddress": "0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "BUSD", - "ethereumName": "Binance USD", - "ethereumContractAddress": ADDRESSES.ethereum.BUSD, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "LINK", - "ethereumName": "ChainLink Token", - "ethereumContractAddress": ADDRESSES.ethereum.LINK, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "DAI", - "ethereumName": "Dai Stablecoin", - "ethereumContractAddress": ADDRESSES.ethereum.DAI, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "SUSHI", - "ethereumName": "SushiToken", - "ethereumContractAddress": ADDRESSES.ethereum.SUSHI, - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "HT", - "ethereumName": "Huobi Token", - "ethereumContractAddress": "0x6f259637dcd74c767781e37bc6133cd6a68aa161", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "OKB", - "ethereumName": "OKB", - "ethereumContractAddress": "0x75231f58b43240c9718dd58b4967c5114342a86c", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "AAVE", - "ethereumName": "Aave Token", - "ethereumContractAddress": ADDRESSES.ethereum.AAVE, - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "PAX", - "ethereumName": "Paxos Standard", - "ethereumContractAddress": "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "MKR", - "ethereumName": "Maker", - "ethereumContractAddress": ADDRESSES.ethereum.MKR, - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "HUSD", - "ethereumName": "HUSD", - "ethereumContractAddress": "0xdf574c24545e5ffecb9a659c229253d4111d87e1", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "UNI", - "ethereumName": "Uniswap", - "ethereumContractAddress": ADDRESSES.ethereum.UNI, - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "WBTC", - "ethereumName": "Wrapped BTC", - "ethereumContractAddress": ADDRESSES.ethereum.WBTC, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "FTT", - "ethereumName": "FTX Token", - "ethereumContractAddress": "0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "MATIC", - "ethereumName": "Matic Token", - "ethereumContractAddress": ADDRESSES.ethereum.MATIC, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "CRO", - "ethereumName": "Crypto.com Coin", - "ethereumContractAddress": "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "USDC", - "ethereumName": "USD Coin", - "ethereumContractAddress": ADDRESSES.ethereum.USDC, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "CEL", - "ethereumName": "Celsius Network", - "ethereumContractAddress": "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "COMP", - "ethereumName": "Compound", - "ethereumContractAddress": "0xc00e94cb662c3520282e6f5717214004a7f26888", - "tezosWrappingContract": ADDRESSES.tezos.AAVE - }, - { - "ethereumSymbol": "WETH", - "ethereumName": "Wrapped Ether", - "ethereumContractAddress": ADDRESSES.ethereum.WETH, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - }, - { - "ethereumSymbol": "USDT", - "ethereumName": "Tether USD", - "ethereumContractAddress": ADDRESSES.ethereum.USDT, - "tezosWrappingContract": ADDRESSES.tezos.WETH_e - } -] \ No newline at end of file diff --git a/projects/vacusfinance/index.js b/projects/vacusfinance/index.js index eec2b7b6b11..d182b138ffa 100644 --- a/projects/vacusfinance/index.js +++ b/projects/vacusfinance/index.js @@ -70,12 +70,12 @@ async function gettotalTvl(block) { } } -async function tvl(_, _b, { [chain]: block }) { - return (await gettotalTvl(block)).tvl +async function tvl(api) { + return (await gettotalTvl(api.block)).tvl } -async function pool2(_, _b, { [chain]: block }) { - return (await gettotalTvl(block)).pool2 +async function pool2(api) { + return (await gettotalTvl(api.block)).pool2 } /* async function staking(_, _b, { [chain]: block }) { @@ -88,6 +88,7 @@ module.exports = { hallmarks: [ [1665187200, "Rug Pull"] ], + deadFrom: 1665187200, misrepresentedTokens: true, avax: { tvl, From d7238b7b8d9866d1a326bf4fd03a879065ee06df Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:55:55 +0200 Subject: [PATCH 1074/2004] code refactor --- projects/alpaca-finance-v2/moneyMarket.js | 5 ++--- projects/autobark/index.js | 4 ++-- projects/based-finance/index.js | 4 ++-- projects/bitgert/index.js | 7 +++---- projects/blast/index.js | 4 ++-- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/projects/alpaca-finance-v2/moneyMarket.js b/projects/alpaca-finance-v2/moneyMarket.js index d469aacc7e8..86ea760f3a8 100644 --- a/projects/alpaca-finance-v2/moneyMarket.js +++ b/projects/alpaca-finance-v2/moneyMarket.js @@ -1,4 +1,3 @@ -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { getConfig } = require("../helper/cache"); const { sumTokens2 } = require('../helper/unwrapLPs') @@ -7,12 +6,12 @@ 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(ts, _, _1, {api}) { +async function lendingTvl(api) { const { moneyMarketDiamond, markets } = await getMoneyMarketData(); return sumTokens2({ api, owner: moneyMarketDiamond, tokens: markets.map(i => i.token)}) } -async function borrowTvl(ts, _, _1, {api}) { +async function borrowTvl(api) { const { moneyMarketDiamond, markets } = await getMoneyMarketData(); const tokens = markets.map(i => i.token) diff --git a/projects/autobark/index.js b/projects/autobark/index.js index 76c3acd3db4..8a013d2486b 100644 --- a/projects/autobark/index.js +++ b/projects/autobark/index.js @@ -6,13 +6,13 @@ const tokenAPI = "address:want" module.exports = { [chain]: { - tvl: async (_, _b, { [chain]: block }) => { + 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({ vaults, chain, block, tokenAPI, useDefaultCoreAssets: true, }) + return yieldHelper({ ...api, vaults, tokenAPI, useDefaultCoreAssets: true, }) } } } \ No newline at end of file diff --git a/projects/based-finance/index.js b/projects/based-finance/index.js index 565b4f73fc7..03e8e23cf98 100644 --- a/projects/based-finance/index.js +++ b/projects/based-finance/index.js @@ -22,8 +22,8 @@ const treasuryTokens = [ wftmAddress, ]; -async function treasury(_, _b, { fantom: block }) { - return sumTokens2({ owner: treasuryAddress, tokens: treasuryTokens, block, chain, }) +async function treasury(api) { + return sumTokens2({ owner: treasuryAddress, tokens: treasuryTokens, api }) } module.exports = { diff --git a/projects/bitgert/index.js b/projects/bitgert/index.js index 30d2be79aa9..c91da9ff217 100644 --- a/projects/bitgert/index.js +++ b/projects/bitgert/index.js @@ -4,12 +4,11 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { bsc: { tvl: () => ({}), - staking: staking('0xd578bf8cc81a89619681c5969d99ea18a609c0c3', '0x8FFf93E810a2eDaaFc326eDEE51071DA9d398E83', 'bsc'), + staking: staking('0xd578bf8cc81a89619681c5969d99ea18a609c0c3', '0x8FFf93E810a2eDaaFc326eDEE51071DA9d398E83'), }, bitgert: { - staking: async (_, _b, { bitgert: block }) => sumTokens2({ - chain: 'bitgert', - block, + staking: async (api) => sumTokens2({ + api, owner: '0x8Ed91b2f3d9f6a5Ee426B4705F981090a7403795', tokens: [nullAddress], }) diff --git a/projects/blast/index.js b/projects/blast/index.js index d56380747ee..51cfcd86268 100644 --- a/projects/blast/index.js +++ b/projects/blast/index.js @@ -4,7 +4,7 @@ const { nullAddress } = require("../helper/treasury"); const farm = "0x5f6ae08b8aeb7078cf2f96afb089d7c9f51da47d"; -async function tvl(_, _a, _b, {api}){ +async function tvl(api) { const dsr = await api.call({ target: "0x373238337bfe1146fb49989fc222523f83081ddb", abi: "function pieOf(address) external view returns (int256)", @@ -23,5 +23,5 @@ async function tvl(_, _a, _b, {api}){ } module.exports = { - ethereum: {tvl} + ethereum: { tvl } } From 3b303e9531e50f3f08192f55c7a246caf825e5f7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 Apr 2024 16:03:17 +0200 Subject: [PATCH 1075/2004] Add linea factory address to config --- projects/3a-dao/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/3a-dao/index.js b/projects/3a-dao/index.js index d229ba553b8..c17b741cd69 100644 --- a/projects/3a-dao/index.js +++ b/projects/3a-dao/index.js @@ -2,6 +2,7 @@ const { getLogs } = require('../helper/cache/getLogs') const config = { polygon: { factory: '0x4760847023fa0833221ae76E01Db1E483A5D20e0', fromBlock: 49852705 }, + linea: { factory: '0x65c6FD9B3a2A892096881e28f07c732ed128893E', fromBlock: 3045954 }, } Object.keys(config).forEach(chain => { @@ -16,7 +17,7 @@ Object.keys(config).forEach(chain => { fromBlock, }) const vaults = logs.map(log => log.vault) - const tokens = await api.multiCall({ abi: 'address[]:collaterals', calls: vaults}) + const tokens = await api.multiCall({ abi: 'address[]:collaterals', calls: vaults }) const ownerTokens = tokens.map((token, i) => [token, vaults[i]]) return api.sumTokens({ ownerTokens }) } From e9da45e57775905c441a3b45856faf7f237507b5 Mon Sep 17 00:00:00 2001 From: Byron Kim Barra <88365848+byyyyyyyyy@users.noreply.github.com> Date: Thu, 4 Apr 2024 22:07:01 +0800 Subject: [PATCH 1076/2004] Feat: Arbitrum TVL for Wise Lending (#9682) * added wise lending project with tvl field * finalized tvl field * added arbitrum tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/wise-lending/index.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/projects/wise-lending/index.js b/projects/wise-lending/index.js index 2e86ad01d82..6759c75ed0f 100644 --- a/projects/wise-lending/index.js +++ b/projects/wise-lending/index.js @@ -1,7 +1,5 @@ -const lendingContract = '0x37e49bf3749513A02FA535F0CbC383796E8107E4' -const feeManager = '0x0bc24e61daad6293a1b3b53a7d01086bff0ea6e5' - async function tvl(api) { + const { lending: lendingContract, feeManager } = config[api.chain] const pools = await api.fetchList({ lengthAbi: 'uint256:getPoolTokenAddressesLength', itemAbi: 'function getPoolTokenAdressesByIndex(uint256) view returns (address)', target: feeManager }) const isATokens = await api.multiCall({ abi: 'function isAaveToken(address) view returns (bool)', calls: pools, target: feeManager }) const aTokens = pools.filter((_, i) => isATokens[i]) @@ -14,7 +12,13 @@ module.exports = { hallmarks: [ [1705017600,"Project Exploited"] ], - ethereum: { - tvl - } } + +const config = { + ethereum: { lending: '0x37e49bf3749513A02FA535F0CbC383796E8107E4', feeManager: '0x0bc24e61daad6293a1b3b53a7d01086bff0ea6e5' }, + arbitrum: { lending: '0x9034a49587bd2c1af27598e0f04f30db66c87ebf', feeManager: '0x90a022796798f9dbA1Da0f8645234B284d4E8EC6' }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) From a42edc9d5e6e3ab59430bb36cc15581701ea7603 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 Apr 2024 16:11:01 +0200 Subject: [PATCH 1077/2004] Update start value and add staking function for AVAX TVL calculation --- projects/MeowMiner/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/MeowMiner/index.js b/projects/MeowMiner/index.js index 483be2acf95..4b188db8248 100644 --- a/projects/MeowMiner/index.js +++ b/projects/MeowMiner/index.js @@ -5,8 +5,9 @@ const LP_MEOW_WAVAX = "0xbbf8e4b9AD041edE1F5270CAf5b7B41F0e55f719" module.exports = { methodology: 'counts the number of MEOW tokens in the Meow Miner contract.', - start: 1000235, + start: 1710293916, avax: { - tvl: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }) + tvl: () => ({}), + staking: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }), } } \ No newline at end of file From d424acc666013e337ad347e5faa335f7231435da Mon Sep 17 00:00:00 2001 From: codinghistorian <75122733+codinghistorian@users.noreply.github.com> Date: Thu, 4 Apr 2024 18:35:39 +0400 Subject: [PATCH 1078/2004] adding fathom-lending (#9683) * adding fathom-lending * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fathom-lending/index.js | 10 ++++++++++ projects/helper/aave.js | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 projects/fathom-lending/index.js diff --git a/projects/fathom-lending/index.js b/projects/fathom-lending/index.js new file mode 100644 index 00000000000..92bf5e6ae12 --- /dev/null +++ b/projects/fathom-lending/index.js @@ -0,0 +1,10 @@ +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/helper/aave.js b/projects/helper/aave.js index e4d1879a8f3..e2f2aeca05b 100644 --- a/projects/helper/aave.js +++ b/projects/helper/aave.js @@ -127,10 +127,10 @@ function aaveChainTvl(_chain, addressesProviderRegistry, transformAddressRaw, da return balances } } -function aaveExports(chain, addressesProviderRegistry, transform = undefined, dataHelpers = undefined, { oracle, abis, v3 = false, blacklistedTokens = [], hasV2LPs = false, } = {}) { +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, }) + tvl: aaveChainTvl(_chain, addressesProviderRegistry, transform, dataHelpers, false, v3, { oracle, abis, blacklistedTokens, hasV2LPs, }), + borrowed: aaveChainTvl(_chain, addressesProviderRegistry, transform, dataHelpers, true, v3, { oracle, abis, hasV2LPs, blacklistedTokens, }) } } From 2465e8eab45d65f329f0ed3a74f7fb2195aabd24 Mon Sep 17 00:00:00 2001 From: Knight <74679047+Knight-101@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:21:13 +0530 Subject: [PATCH 1079/2004] Kriya vaults TVL (#9687) * added kriya vaults tvl * fetch error fix * token wise tvl * tvl func fix * decimals adjusted --- projects/kriya-dex-earn/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/kriya-dex-earn/index.js diff --git a/projects/kriya-dex-earn/index.js b/projects/kriya-dex-earn/index.js new file mode 100644 index 00000000000..f96382b5490 --- /dev/null +++ b/projects/kriya-dex-earn/index.js @@ -0,0 +1,26 @@ +const { fetchURL } = require("../helper/utils"); +const sui = require("../helper/chain/sui"); + +const vaultUrl = + "https://88ob93rfva.execute-api.ap-southeast-1.amazonaws.com/release/vaults"; + +async function vaultTVL(api) { + const vaults = (await fetchURL(vaultUrl))?.data; + for (const vault of vaults) { + const tokenX = Number(vault?.coinA); + const tokenY = Number(vault?.coinB); + + api.add(vault?.pool?.tokenXType, tokenX); + api.add(vault?.pool?.tokenYType, tokenY); + } +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: + "Collets all the TVL from the KriyaDEX vaults. The TVL is denominated in USD.", + sui: { + tvl: vaultTVL, + }, +}; From 1d35c127ef5fd83e2d2ef679c6fcdac39e2f4aa9 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 4 Apr 2024 17:26:22 +0100 Subject: [PATCH 1080/2004] ronin bridge --- projects/ronin-bridge/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/ronin-bridge/index.js diff --git a/projects/ronin-bridge/index.js b/projects/ronin-bridge/index.js new file mode 100644 index 00000000000..a8c25f4c776 --- /dev/null +++ b/projects/ronin-bridge/index.js @@ -0,0 +1,13 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: (api) => + sumTokens2({ + api, + owners: ["0x64192819Ac13Ef72bF6b5AE239AC672B43a9AF08"], + fetchCoValentTokens: true, + blacklistedTokens: [], + }), + }, +}; From 68b6e852a6835fa62a520170370179256d5836aa Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 4 Apr 2024 17:34:43 +0100 Subject: [PATCH 1081/2004] pulsechain --- projects/pulsechain-bridge/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/pulsechain-bridge/index.js diff --git a/projects/pulsechain-bridge/index.js b/projects/pulsechain-bridge/index.js new file mode 100644 index 00000000000..1fd92d38eb7 --- /dev/null +++ b/projects/pulsechain-bridge/index.js @@ -0,0 +1,13 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: (api) => + sumTokens2({ + api, + owners: ["0x1715a3E4A142d8b698131108995174F37aEBA10D"], // where does the WETH deposit go + fetchCoValentTokens: true, + blacklistedTokens: [], + }), + }, +}; From 49997fb054f5b2ed047f53648c8169583237aa8b Mon Sep 17 00:00:00 2001 From: kexley <87971154+kexleyBeefy@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:46:24 +0100 Subject: [PATCH 1082/2004] Add Fraxtal to Beefy (#9690) --- projects/beefy/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 135617808e6..0354c206802 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -40,6 +40,7 @@ const chains = { heco: 128, polygon: 137, fantom: 250, + fraxtal: 252, zksync: 324, metis: 1088, polygon_zkevm: 1101, From 295dfefaea1ab1f6df9a2e9fae4a0fd0e8b68fb9 Mon Sep 17 00:00:00 2001 From: Zenon Finance <145183635+Zenonfi@users.noreply.github.com> Date: Fri, 5 Apr 2024 01:31:57 +0545 Subject: [PATCH 1083/2004] Add Zenonswap (#9691) --- projects/Zenonswap/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/Zenonswap/index.js diff --git a/projects/Zenonswap/index.js b/projects/Zenonswap/index.js new file mode 100644 index 00000000000..9e2291bc8a6 --- /dev/null +++ b/projects/Zenonswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('degen', '0x97B162AD1443737B0500A5E726344D608eB9e255') \ No newline at end of file From 537c8594f9e468c3f5d842bc63c567f6866b11d4 Mon Sep 17 00:00:00 2001 From: slzbro <123861131+slzbro@users.noreply.github.com> Date: Fri, 5 Apr 2024 04:51:29 +0900 Subject: [PATCH 1084/2004] feat: add solidlizard-lending (#9692) * feat: add solidlizard-lending * Update index.js * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solidlizard-lending/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/solidlizard-lending/index.js diff --git a/projects/solidlizard-lending/index.js b/projects/solidlizard-lending/index.js new file mode 100644 index 00000000000..dc5fd35a4c8 --- /dev/null +++ b/projects/solidlizard-lending/index.js @@ -0,0 +1,13 @@ +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"), + }, +}; From 1835145dce3824246d3f66dbba78202dfacb6d87 Mon Sep 17 00:00:00 2001 From: iskra-fin <166047294+iskra-fin@users.noreply.github.com> Date: Thu, 4 Apr 2024 22:52:45 +0300 Subject: [PATCH 1085/2004] add IskraFi sdk adapter (#9689) --- projects/iskra/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/iskra/index.js diff --git a/projects/iskra/index.js b/projects/iskra/index.js new file mode 100644 index 00000000000..072b4ce1ed9 --- /dev/null +++ b/projects/iskra/index.js @@ -0,0 +1,11 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + klaytn: { + tvl: () => ({}), + staking: staking( + "0xb30d86d84f5b2df67ef962be0c6cf4c39901d416", + "0x17d2628d30f8e9e966c9ba831c9b9b01ea8ea75c" + ), + }, +}; From 3c5635617e6c6637ed1971700fcb41675dfca686 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 4 Apr 2024 23:57:25 +0200 Subject: [PATCH 1086/2004] refactor wavevs adapters --- projects/helper/chain/wavesAdapter.js | 34 ----------------------- projects/pluto/index.js | 11 ++++++-- projects/puzzle-lend/index.js | 20 ++++++++++++-- projects/puzzle.js | 39 ++++++++++++++++++++------- projects/swop/index.js | 29 ++++++++++---------- projects/treasury/pluto.js | 9 +++++++ 6 files changed, 79 insertions(+), 63 deletions(-) delete mode 100644 projects/helper/chain/wavesAdapter.js create mode 100644 projects/treasury/pluto.js diff --git a/projects/helper/chain/wavesAdapter.js b/projects/helper/chain/wavesAdapter.js deleted file mode 100644 index ae1d2efbed1..00000000000 --- a/projects/helper/chain/wavesAdapter.js +++ /dev/null @@ -1,34 +0,0 @@ -const { getApiTvl } = require('../historicalApi') -const { fetchURL } = require('../utils') - -const MINUTE = 60 * 1000 -const host = 'https://tvl.waves.tech/api/v1/history' - -function wavesAdapter(uri, calcTvl) { - const endpoint = host + uri - return async (time) => { - return getApiTvl(time, async () => { - const data = (await fetchURL(`${endpoint}?limit=1000&since=${time * 1e3 - 10 * MINUTE}`)).data - const last = data[data.length - 1] - return calcTvl(last) - }, async () => { - const data = (await fetchURL(`${endpoint}?limit=1000&since=${time * 1e3 - 6 * 60 * MINUTE}`)).data - return data.map(item => ({ - date: item.createdAt / 1e3, - totalLiquidityUSD: calcTvl(item) - })) - }) - } -} - -function wavesExport(uri, calcTvl = item => item.totalLocked) { - return { - misrepresentedTokens: true, - timetravel: false, - waves: { tvl: wavesAdapter(uri, calcTvl) } - } -} - -module.exports = { - wavesAdapter, wavesExport, -} \ No newline at end of file diff --git a/projects/pluto/index.js b/projects/pluto/index.js index c35c72c81d1..44407b6cd15 100644 --- a/projects/pluto/index.js +++ b/projects/pluto/index.js @@ -1,2 +1,9 @@ -const { wavesExport } = require('../helper/chain/wavesAdapter') -module.exports = wavesExport("/pluto", item => item.totalLocked) \ No newline at end of file +const { sumTokens, } = require('../helper/chain/waves') + +// https://wavesexplorer.com/addresses/3P3a1jssxc2CGdyC7SGbTJc9ZvTjZ5jBMLZ +module.exports = { + timetravel: false, + waves: { + tvl: () => ({}), + } +} \ No newline at end of file diff --git a/projects/puzzle-lend/index.js b/projects/puzzle-lend/index.js index 3afd009b4b1..11ece22dcc3 100644 --- a/projects/puzzle-lend/index.js +++ b/projects/puzzle-lend/index.js @@ -1,3 +1,19 @@ -const { wavesExport } = require('../helper/chain/wavesAdapter') +const { sumTokens, dataSearch } = require('../helper/chain/waves') +const markets = ['3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH', '3P8Df2b7ywHtLBHBe8PBVQYd3A5MdEEJAou', '3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X', '3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH', '3PAd9Aqg3cQSzu26MFYWQYcjSXPVCJtuf5V'] -module.exports = wavesExport('/puzzlelend') \ No newline at end of file +module.exports = { + timetravel: false, + waves: { + tvl: api => sumTokens({ api, owners: markets, includeWaves: true, }), + 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) + } + } +} \ No newline at end of file diff --git a/projects/puzzle.js b/projects/puzzle.js index b36cd4df5cb..7f01ad3629d 100644 --- a/projects/puzzle.js +++ b/projects/puzzle.js @@ -1,16 +1,35 @@ -const { toUSDTBalances } = require("./helper/balances"); -const { get } = require("./helper/http"); - -async function tvl() { - const pools = await get('https://puzzle-js-back.herokuapp.com/api/v1/pools') - const tvl = pools.reduce((acc, { statistics: { liquidity } = {} }) => acc + +(liquidity || 0), 0) - - return toUSDTBalances(tvl) -} +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/swop/index.js b/projects/swop/index.js index c2d4edacf1b..a70e7ddf328 100644 --- a/projects/swop/index.js +++ b/projects/swop/index.js @@ -1,20 +1,19 @@ -// const { sumTokens, call } = require('../helper/chain/waves'); -// const { getConfig } = require("../helper/cache"); -const { get } = require("../helper/http"); -const { toUSDTBalances } = require("../helper/balances"); +const { sumTokens, call } = require('../helper/chain/waves'); +const { getConfig } = require("../helper/cache"); +// const { get } = require("../helper/http"); +// const { toUSDTBalances } = require("../helper/balances"); const swopfiBackendEndpoint = "https://backend.swop.fi"; -const getSwopFiTVL = async (_, _1, _2, { api }) => { - const poolsStats = await get(`${swopfiBackendEndpoint}/pools`); - return toUSDTBalances(poolsStats.overall.liquidity); - /* const { pools } = await getConfig('swop', `${swopfiBackendEndpoint}/pools`) - const owners = pools.map(i => i.id) - console.log(owners.length) +const getSwopFiTVL = async (api) => { + // const poolsStats = await get(`${swopfiBackendEndpoint}/pools`); + // return toUSDTBalances(poolsStats.overall.liquidity); + const { pools } = await getConfig('swop', `${swopfiBackendEndpoint}/pools`) + // const owners = pools.map(i => i.id) for (const pool of pools) { await sumTokens({ owners: [pool.id], api, includeWaves: true, blacklistedTokens: ['Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT'] }) - } */ + } } @@ -24,10 +23,10 @@ module.exports = { waves: { tvl: getSwopFiTVL, staking: async () => { - const stakingStats = await get(`${swopfiBackendEndpoint}/staking`); - return toUSDTBalances(stakingStats.swop.totalSwopUsdt); - /* const res = await call({target:'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS', key: 'total_GSwop_amount'}) - return { swop: res / 1e8 } */ + // const stakingStats = await get(`${swopfiBackendEndpoint}/staking`); + // return toUSDTBalances(stakingStats.swop.totalSwopUsdt); + const res = await call({ target: '3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS', key: 'total_GSwop_amount' }) + return { swop: res / 1e8 } } } }; diff --git a/projects/treasury/pluto.js b/projects/treasury/pluto.js new file mode 100644 index 00000000000..1200f29cd98 --- /dev/null +++ b/projects/treasury/pluto.js @@ -0,0 +1,9 @@ +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 From eae54ee010d4b0cb076095d916987a6522d68455 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 4 Apr 2024 23:05:07 +0100 Subject: [PATCH 1087/2004] degen --- projects/degen-bridge/index.js | 13 +++++++++++++ projects/pulsechain-bridge/index.js | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 projects/degen-bridge/index.js diff --git a/projects/degen-bridge/index.js b/projects/degen-bridge/index.js new file mode 100644 index 00000000000..923997a49d1 --- /dev/null +++ b/projects/degen-bridge/index.js @@ -0,0 +1,13 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + base: { + tvl: (api) => + sumTokens2({ + api, + owners: ["0xEfEf4558802bF373Ce3307189C79a9cAb0a4Cb9C"], + fetchCoValentTokens: true, + blacklistedTokens: [], + }), + }, +}; diff --git a/projects/pulsechain-bridge/index.js b/projects/pulsechain-bridge/index.js index 1fd92d38eb7..ceec7e8087f 100644 --- a/projects/pulsechain-bridge/index.js +++ b/projects/pulsechain-bridge/index.js @@ -5,7 +5,7 @@ module.exports = { tvl: (api) => sumTokens2({ api, - owners: ["0x1715a3E4A142d8b698131108995174F37aEBA10D"], // where does the WETH deposit go + owners: ["0x1715a3E4A142d8b698131108995174F37aEBA10D"], fetchCoValentTokens: true, blacklistedTokens: [], }), From 663b851e713d2956c95dc6e0089d0033dc434357 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 4 Apr 2024 23:27:50 +0100 Subject: [PATCH 1088/2004] sumTokensExport --- projects/degen-bridge/index.js | 13 +++++-------- projects/pulsechain-bridge/index.js | 11 ++++------- projects/ronin-bridge/index.js | 11 ++++------- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/projects/degen-bridge/index.js b/projects/degen-bridge/index.js index 923997a49d1..5c0557fc492 100644 --- a/projects/degen-bridge/index.js +++ b/projects/degen-bridge/index.js @@ -1,13 +1,10 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokens2, sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { base: { - tvl: (api) => - sumTokens2({ - api, - owners: ["0xEfEf4558802bF373Ce3307189C79a9cAb0a4Cb9C"], - fetchCoValentTokens: true, - blacklistedTokens: [], - }), + tvl: sumTokensExport({ + owner: "0xEfEf4558802bF373Ce3307189C79a9cAb0a4Cb9C", + fetchCoValentTokens: true, + }), }, }; diff --git a/projects/pulsechain-bridge/index.js b/projects/pulsechain-bridge/index.js index ceec7e8087f..111ed73ba88 100644 --- a/projects/pulsechain-bridge/index.js +++ b/projects/pulsechain-bridge/index.js @@ -2,12 +2,9 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: ["0x1715a3E4A142d8b698131108995174F37aEBA10D"], - fetchCoValentTokens: true, - blacklistedTokens: [], - }), + tvl: sumTokensExport({ + owner: "0x1715a3E4A142d8b698131108995174F37aEBA10D", + fetchCoValentTokens: true, + }), }, }; diff --git a/projects/ronin-bridge/index.js b/projects/ronin-bridge/index.js index a8c25f4c776..908550dbe72 100644 --- a/projects/ronin-bridge/index.js +++ b/projects/ronin-bridge/index.js @@ -2,12 +2,9 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); module.exports = { ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: ["0x64192819Ac13Ef72bF6b5AE239AC672B43a9AF08"], - fetchCoValentTokens: true, - blacklistedTokens: [], - }), + tvl: sumTokensExport({ + owner: "0x64192819Ac13Ef72bF6b5AE239AC672B43a9AF08", + fetchCoValentTokens: true, + }), }, }; From 5c059d6b298025e528d66af2814e3fa782f5a43a Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Thu, 4 Apr 2024 23:30:14 +0100 Subject: [PATCH 1089/2004] patch --- projects/degen-bridge/index.js | 2 +- projects/pulsechain-bridge/index.js | 2 +- projects/ronin-bridge/index.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/degen-bridge/index.js b/projects/degen-bridge/index.js index 5c0557fc492..35b0f02d534 100644 --- a/projects/degen-bridge/index.js +++ b/projects/degen-bridge/index.js @@ -1,4 +1,4 @@ -const { sumTokens2, sumTokensExport } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { base: { diff --git a/projects/pulsechain-bridge/index.js b/projects/pulsechain-bridge/index.js index 111ed73ba88..89e1079f68a 100644 --- a/projects/pulsechain-bridge/index.js +++ b/projects/pulsechain-bridge/index.js @@ -1,4 +1,4 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { diff --git a/projects/ronin-bridge/index.js b/projects/ronin-bridge/index.js index 908550dbe72..af62f09e919 100644 --- a/projects/ronin-bridge/index.js +++ b/projects/ronin-bridge/index.js @@ -1,4 +1,4 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { ethereum: { From 0074e4119e515cd9ec5ccff5618ba587e78e94bb Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 5 Apr 2024 00:57:49 +0100 Subject: [PATCH 1090/2004] add puff --- projects/puff-penthouse/index.js | 13 +++++++++++++ projects/treasury/puff.js | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 projects/puff-penthouse/index.js create mode 100644 projects/treasury/puff.js diff --git a/projects/puff-penthouse/index.js b/projects/puff-penthouse/index.js new file mode 100644 index 00000000000..ceae2c0c6d7 --- /dev/null +++ b/projects/puff-penthouse/index.js @@ -0,0 +1,13 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const { staking } = require('../helper/staking') + +module.exports = { + mantle: { + staking: staking("0xBeCd6b3D8B06479c83533f0d7E6DF1b0e413AeEa", "0x26a6b0dcdCfb981362aFA56D581e4A7dBA3Be140"), + tvl: sumTokensExport({ + tokensAndOwners: [ + ["0xcDA86A272531e8640cD7F1a92c01839911B90bb0", "0x0CC41C11878254aF8E65ca61C03DD03735F2DC6d"] + ] + }), + }, +}; diff --git a/projects/treasury/puff.js b/projects/treasury/puff.js new file mode 100644 index 00000000000..9db4899e315 --- /dev/null +++ b/projects/treasury/puff.js @@ -0,0 +1,14 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + mantle: { + tokens: [ + nullAddress, + "0xcda86a272531e8640cd7f1a92c01839911b90bb0", + ], + owners: ["0x940e79c49d73ce46884f57087e0c78b608da57c6"], + ownTokens: ["0x26a6b0dcdcfb981362afa56d581e4a7dba3be140"], + uniV3nftsAndOwners: [["0xE9baC8f0100C3229AbddE01D692c6e5791d3b544", "0x940e79c49d73ce46884f57087e0c78b608da57c6"]], + }, +}) \ No newline at end of file From 23f3a133674dbd91437f48fc4a1c6d47aeacd303 Mon Sep 17 00:00:00 2001 From: Feid <164681783+hoardingcats@users.noreply.github.com> Date: Fri, 5 Apr 2024 05:21:09 +0200 Subject: [PATCH 1091/2004] Update Meow Miner TVL (#9693) Co-authored-by: HoardingCats --- projects/MeowMiner/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/MeowMiner/index.js b/projects/MeowMiner/index.js index 4b188db8248..5ef8c54a5a3 100644 --- a/projects/MeowMiner/index.js +++ b/projects/MeowMiner/index.js @@ -7,7 +7,6 @@ module.exports = { methodology: 'counts the number of MEOW tokens in the Meow Miner contract.', start: 1710293916, avax: { - tvl: () => ({}), - staking: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }), + tvl: sumTokensExport({ owner: MEOW_MINER_CONTRACT, tokens: [MEOW_TOKEN_CONTRACT], lps: [LP_MEOW_WAVAX], useDefaultCoreAssets: true, }), } } \ No newline at end of file From 959461a3740ebd0f1fb79ff8528abdde8f2ae92c Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Thu, 4 Apr 2024 20:22:49 -0700 Subject: [PATCH 1092/2004] Update config.js (#9696) --- projects/visor/config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index b7e82fbae5d..e6f5f87f2c5 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -74,6 +74,7 @@ const HYPE_REGISTRY = { ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 163300], // Lynex ], base: [ + ["0x829432679F69DBd8b2575f006EC0129894a39D86", 12465470], // Uniswap ["0x339685503dD534D27ce4a064314c2E5c7144aa92", 7783229], // Pancakeswap ["0x6d5c54F535b073B9C2206Baf721Af2856E5cD683", 3785552], // Sushiswap ["0x1E86A593E55215957C4755f1BE19a229AF3286f6", 2798768], // SynthSwap @@ -105,7 +106,11 @@ const HYPE_REGISTRY = { imx: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 3951377], // Quickswap ], + scroll: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 4651930], // Uniswap + ], blast: [ + ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 1727054], // Uniswap ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster ], }; From b1588128a977fd14eccfd6162671c1a24b052e9f Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Fri, 5 Apr 2024 11:23:35 +0800 Subject: [PATCH 1093/2004] add extra strategies to the calculation of TVL (#9698) --- projects/airpuff/index.js | 93 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 5 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 7a668daf46a..75421aa7ce0 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -14,6 +14,11 @@ const contractAbis = { }, // 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)", }; module.exports = { @@ -23,9 +28,13 @@ module.exports = { tvl: async (api) => { const lendingMain = { eth: "0xdeF3AA48bad043e53207d359dcDFdE46F50b6C02", //ETH + sUSD: "0x7c2a7009ffE52a69a8C877b47B07D5dB59C0e3b3", // Not lending pool, staking pool }; await api.sumTokens({ - tokensAndOwners: [[ADDRESSES.ethereum.WETH, lendingMain.eth]], + tokensAndOwners: [ + [ADDRESSES.ethereum.WETH, lendingMain.eth], + [ADDRESSES.ethereum.sUSDe, lendingMain.sUSD], + ], }); const eETH = { @@ -97,6 +106,23 @@ module.exports = { oracle: "0x1bEB65b15689cCAeb5dA191c9fd5F94513923Cab", }; + const svETH = { + vault: "0xaF33b6372354149c33893B6fA6959Be0607D53dE", + reStakingToken: "0x6733F0283711F225A447e759D859a70b0c0Fd2bC", + oracle: "svETH", + }; + + const svETH1x = { + vault: "0x060Feab7904378e2A487974e7Ba98251aD65247F", + reStakingToken: "0x6733F0283711F225A447e759D859a70b0c0Fd2bC", + oracle: "svETH", + }; + + const svETHPrice = await api.call({ + abi: contractAbis.getVectorSharePrice, + target: svETH.vault, + }); + const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x]; for (const strategy of strategies) { @@ -106,15 +132,72 @@ module.exports = { params: [strategy.vault], }); - const lrETHPriceInETH = await api.call({ - target: strategy.oracle, - abi: contractAbis.readOraclePrice, + let lrETHPriceInETH; + + if (strategy.oracle == "svETH") { + lrETHPriceInETH = svETHPrice; + } else { + lrETHPriceInETH = await api.call({ + target: strategy.oracle, + abi: contractAbis.readOraclePrice, + }); + lrETHPriceInETH = lrETHPriceInETH.value; + } + + const balInETH = (bal * lrETHPriceInETH) / 1e18; + + api.add(ADDRESSES.ethereum.WETH, balInETH); + } + //strategy with no oracle, but can calculate price using erc4626 totalSupply and totalAssets + const LiquidETH = { + vault: "0xE543eBa28a3793d5ae747A2164A306DB1767cDAe", + reStakingToken: "0xeA1A6307D9b18F8d1cbf1c3Dd6aad8416C06a221", + }; + + const erc4626Strategies = [LiquidETH]; + + for (const erc4626strategy of erc4626Strategies) { + const bal = await api.call({ + abi: contractAbis.balanceOf, + target: erc4626strategy.reStakingToken, + params: [erc4626strategy.vault], }); - const balInETH = (bal * lrETHPriceInETH.value) / 1e18; + const totalAssets = await api.call({ + abi: contractAbis.getTotalAssets, + target: erc4626strategy.reStakingToken, + }); + + const totalSupply = await api.call({ + abi: contractAbis.getTotalSupply, + target: erc4626strategy.reStakingToken, + }); + + const price = totalAssets / totalSupply; + + const balInETH = bal * price; api.add(ADDRESSES.ethereum.WETH, balInETH); } + + const mswETH = { + valut: "0x7c505E03460aEF7FE88e218CC5fcEeCCcA4C4394", + reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", + }; + + const mswETHPrice = await api.call({ + abi: contractAbis.getMswEthPrice, + target: mswETH.reStakingToken, + }); + + const mswETHBal = await api.call({ + abi: contractAbis.getMswBalance, + target: mswETH.valut, + }); + + const mswETHBalInETH = (mswETHBal * mswETHPrice) / 1e18; + + api.add(ADDRESSES.ethereum.WETH, mswETHBalInETH); }, }, From 3a4cdfda46f97152964fea1cf23d4189a5762b9a Mon Sep 17 00:00:00 2001 From: Phil <53819853+philllau@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:36:52 +0800 Subject: [PATCH 1094/2004] add merlin chain tvl for butter network. (#9699) --- projects/butternetwork/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/butternetwork/index.js b/projects/butternetwork/index.js index 7091f623e53..020b29e4a7e 100644 --- a/projects/butternetwork/index.js +++ b/projects/butternetwork/index.js @@ -51,6 +51,15 @@ const config = { // ETH: ADDRESSES.map.ETH, MAP: ADDRESSES.map.WMAPO } + }, + merlin: { + mosContract: "0xfeB2b97e4Efce787c08086dC16Ab69E063911380", + tokens: { + WBTC: ADDRESSES.merlin.WBTC, + WBTC_1: ADDRESSES.merlin.WBTC_1, + SolvBTC: "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", + iUSD: "0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D" + } } } From 0b2bfc7175bb252e938fc8437202aa460b931d25 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Fri, 5 Apr 2024 08:37:45 +0100 Subject: [PATCH 1095/2004] Bridges (#9694) * ronin bridge * pulsechain * degen * sumTokensExport * patch --- projects/degen-bridge/index.js | 10 ++++++++++ projects/pulsechain-bridge/index.js | 10 ++++++++++ projects/ronin-bridge/index.js | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 projects/degen-bridge/index.js create mode 100644 projects/pulsechain-bridge/index.js create mode 100644 projects/ronin-bridge/index.js diff --git a/projects/degen-bridge/index.js b/projects/degen-bridge/index.js new file mode 100644 index 00000000000..35b0f02d534 --- /dev/null +++ b/projects/degen-bridge/index.js @@ -0,0 +1,10 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + base: { + tvl: sumTokensExport({ + owner: "0xEfEf4558802bF373Ce3307189C79a9cAb0a4Cb9C", + fetchCoValentTokens: true, + }), + }, +}; diff --git a/projects/pulsechain-bridge/index.js b/projects/pulsechain-bridge/index.js new file mode 100644 index 00000000000..89e1079f68a --- /dev/null +++ b/projects/pulsechain-bridge/index.js @@ -0,0 +1,10 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owner: "0x1715a3E4A142d8b698131108995174F37aEBA10D", + fetchCoValentTokens: true, + }), + }, +}; diff --git a/projects/ronin-bridge/index.js b/projects/ronin-bridge/index.js new file mode 100644 index 00000000000..af62f09e919 --- /dev/null +++ b/projects/ronin-bridge/index.js @@ -0,0 +1,10 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owner: "0x64192819Ac13Ef72bF6b5AE239AC672B43a9AF08", + fetchCoValentTokens: true, + }), + }, +}; From b6fdb16c9b93fbed8931825e2346558035d1b5c6 Mon Sep 17 00:00:00 2001 From: d0-d1 <166015639+d0-d1@users.noreply.github.com> Date: Fri, 5 Apr 2024 12:11:00 +0400 Subject: [PATCH 1096/2004] add venombridge tvl (#9686) * add venombridge tvl * refactor venom --------- Co-authored-by: d0-d1 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/venombridge/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/venombridge/index.js diff --git a/projects/venombridge/index.js b/projects/venombridge/index.js new file mode 100644 index 00000000000..cb94ba79253 --- /dev/null +++ b/projects/venombridge/index.js @@ -0,0 +1,21 @@ +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 From 2ef981ee94fa57d5a374453f20be596a31731a2e Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 5 Apr 2024 17:11:17 +0900 Subject: [PATCH 1097/2004] mint-club-v2 - add zora support (#9700) --- projects/mint-club-v2/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js index c3f7252f2e0..275ad16d168 100644 --- a/projects/mint-club-v2/index.js +++ b/projects/mint-club-v2/index.js @@ -9,13 +9,14 @@ const V2_BOND_CONTRACTS = { avax: "0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1", blast: "0x621c335b4BD8f2165E120DC70d3AfcAfc6628681", degen: "0x3bc6B601196752497a68B2625DB4f2205C3b150b", + zora: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27" } const ownTokens = { bsc: ['0x1f3Af095CDa17d63cad238358837321e95FC5915'] } -const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast', 'degen'] +const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast', 'degen', 'zora'] chains.forEach(chain => { const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' From 684870c6a9e5d4f7728cc81a1660f0dfbf1dc57f Mon Sep 17 00:00:00 2001 From: Tendows123 <132245464+Tendows123@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:16:41 +0800 Subject: [PATCH 1098/2004] Add project fufuture. Fufuture project is the world's first decentralized currency standard Perpetual options Transaction agreement. (#9697) * Add fufuture project.The world's first decentralized currency standard Perpetual options Transaction agreement * feat:Add fufuture project.The world's first decentralized currency standard Perpetual options Transaction agreement. * code refactor --------- Co-authored-by: test Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fufuture/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/fufuture/index.js diff --git a/projects/fufuture/index.js b/projects/fufuture/index.js new file mode 100644 index 00000000000..100ab42684c --- /dev/null +++ b/projects/fufuture/index.js @@ -0,0 +1,32 @@ +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 From 075899d9cad1632f82e6f8bae429774cefd79054 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 5 Apr 2024 11:46:52 +0100 Subject: [PATCH 1099/2004] bitmark update tokens + cex helper (#9702) --- projects/bitmark/index.js | 6 +++++- projects/helper/cex.js | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/projects/bitmark/index.js b/projects/bitmark/index.js index f46a34ad25c..d6d4c6129d7 100644 --- a/projects/bitmark/index.js +++ b/projects/bitmark/index.js @@ -1,7 +1,8 @@ const { cexExports } = require('../helper/cex') // https://support.bitmart.com/hc/en-us/articles/18473693031451-Enhancing-Transparency-and-Trust-at-BitMart -const owners = ['0x328130164d0f2b9d7a52edc73b3632e713ff0ec6', +const owners = [ +'0x328130164d0f2b9d7a52edc73b3632e713ff0ec6', '0xeacb50a28630a4c44a884158ee85cbc10d2b3f10', '0x3ab28ecedea6cdb6feed398e93ae8c7b316b1182', '0x7563758243a262e96880f178aee7817dcf47ab0f', @@ -16,6 +17,9 @@ const config = { solana: { owners: ['CgANddXc7FKSsdLSdFv67X8faZqQaRTeLMXkAVANkZD4'] }, + bitcoin: { + owners: ['37RJkdkzPXCMYSTq74berJYj9FmNn7wFP5'] + }, } module.exports = cexExports(config) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 353d6fe0ce0..ba0354cb661 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -96,7 +96,16 @@ const defaultTokens = { '0x64d0f55Cd8C7133a9D7102b13987235F486F2224', // BORG '0x925206b8a707096Ed26ae47C84747fE0bb734F59', //WBT ADDRESSES.ethereum.FDUSD, // FDUSD, - ADDRESSES.ethereum.SDAI //sdai + ADDRESSES.ethereum.SDAI, //sdai + '0x12970e6868f88f6557b76120662c1b3e50a646bf', //LADYS + '0x1e2f15302b90edde696593607b6bd444b64e8f02', //SHIRYO-INU + '0x14fee680690900ba0cccfc76ad70fd1b95d10e16', //$PALL + '0x9ce84f6a69986a83d92c324df10bc8e64771030f', //chex + '0x68a47fe1cf42eba4a030a10cd4d6a1031ca3ca0a', //tet + '0x329c6e459ffa7475718838145e5e85802db2a303', //emaid + '0x3a856d4effa670c54585a5d523e96513e148e95d', //trias + '0x1495bc9e44af1f8bcb62278d2bec4540cf0c05ea', //deia + '0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6', //wtk ], tron: [ nullAddress, @@ -152,7 +161,13 @@ const defaultTokens = { '0x965f527d9159dce6288a2219db51fc6eef120dd1', //BSW '0xa2120b9e674d3fc3875f415a7df52e382f141225', //ata '0x44ec807ce2f4a6f2737a92e985f318d035883e47', //HFT - ADDRESSES.ethereum.FDUSD, //FDUSD + // ADDRESSES.ethereum.FDUSD, //FDUSD + '0xeac9873291ddaca754ea5642114151f3035c67a2', //dcb + '0xaaa9214f675316182eaa21c85f0ca99160cc3aaa', //qanx + '0x2d060ef4d6bf7f9e5edde373ab735513c0e4f944', //aitech + '0x47c454ca6be2f6def6f32b638c80f91c9c3c5949', //gfall + '0xfe1d7f7a8f0bda6e415593a2e4f82c64b446d404', //blp + '0xe9d78bf51ae04c7e1263a76ed89a65537b9ca903', // GMEX ], eos: [ ["eosio.token", "EOS", "eos"], From fce850a59e8e0d9299b6f76b5d97f831b28e3150 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 5 Apr 2024 11:49:58 +0100 Subject: [PATCH 1100/2004] Bitmart cex fix (#9703) * bitmark update tokens + cex helper * remove comments --- projects/helper/cex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index ba0354cb661..fe764c60aed 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -161,7 +161,7 @@ const defaultTokens = { '0x965f527d9159dce6288a2219db51fc6eef120dd1', //BSW '0xa2120b9e674d3fc3875f415a7df52e382f141225', //ata '0x44ec807ce2f4a6f2737a92e985f318d035883e47', //HFT - // ADDRESSES.ethereum.FDUSD, //FDUSD + ADDRESSES.ethereum.FDUSD, //FDUSD '0xeac9873291ddaca754ea5642114151f3035c67a2', //dcb '0xaaa9214f675316182eaa21c85f0ca99160cc3aaa', //qanx '0x2d060ef4d6bf7f9e5edde373ab735513c0e4f944', //aitech From 21c57dd4471da22c55818bb76b2238258c29cb89 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:17:01 +0200 Subject: [PATCH 1101/2004] track https://eesee.io --- projects/intentx.js | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/projects/intentx.js b/projects/intentx.js index 79114c73f2c..4223ffe28e6 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,9 +1,6 @@ const ADDRESSES = require('./helper/coreAssets.json') const { request, gql } = require("graphql-request"); -const graphUrl = - "https://api.studio.thegraph.com/query/62472/intentx-analytics_082/version/latest"; - const BETA_START = 1700006400; // 2023-11-15T00:00:00+00:00 const query = gql` @@ -25,31 +22,32 @@ const query = gql` } `; +const config = { + blast: { token: ADDRESSES.blast.USDB, graphUrl: "https://api.studio.thegraph.com/query/62472/intentx-analytics_082_blast/version/latest", }, + base: { token: ADDRESSES.base.USDbC, graphUrl: "https://api.studio.thegraph.com/query/62472/intentx-analytics_082/version/latest", }, +} -async function getTVL(toTimestamp) { +async function getTVL(api) { + const { token, graphUrl } = config[api.chain]; const { dailyHistories } = await request(graphUrl, query, { from: BETA_START.toString(), - to: toTimestamp.toString(), + to: api.timestamp.toString(), }); - const total = dailyHistories.reduce( - (acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), - 0 - ); - - return { - ["base:" + ADDRESSES.base.USDbC]: total, - }; + const total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); + api.add(token, total) } module.exports = { timetravel: false, start: BETA_START, - base: { - tvl: async ({ timestamp }) => { - return getTVL(timestamp); - }, - }, - hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], +}; + +module.exports = { + timetravel: false, + start: BETA_START, + blast: { tvl: getTVL }, + base: { tvl: getTVL }, + hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], }; From f90cfa7ac6a62025edb0b11bb685644f2a5449a3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:45:47 +0200 Subject: [PATCH 1102/2004] track https://eesee.io --- projects/core-markets/index.js | 19 ++++++------------- projects/eesee/index.js | 8 ++++++++ projects/intentx.js | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 projects/eesee/index.js diff --git a/projects/core-markets/index.js b/projects/core-markets/index.js index 4a6cdc2d637..19a2e5d3879 100644 --- a/projects/core-markets/index.js +++ b/projects/core-markets/index.js @@ -1,11 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { request, gql } = require("graphql-request"); +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 = gql` +const query = ` query stats($from: String!, $to: String!) { dailyHistories( where: { timestamp_gte: $from, timestamp_lte: $to, accountSource: "0xd6ee1fd75d11989e57B57AA6Fd75f558fBf02a5e" } @@ -20,25 +20,18 @@ const query = gql` } `; -async function getTVL(toTimestamp) { +async function getTVL(api) { const { dailyHistories } = await request(graphUrl, query, { from: BETA_START.toString(), - to: toTimestamp.timestamp.toString(), + to: api.timestamp.toString(), }); const total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); - - return { - ["blast:" + ADDRESSES.blast.USDB]: total, - }; + api.add(ADDRESSES.blast.USDB, total) } module.exports = { timetravel: false, start: BETA_START, - blast: { - tvl: async (timestamp) => { - return getTVL(timestamp); - }, - }, + blast: { tvl: getTVL }, }; diff --git a/projects/eesee/index.js b/projects/eesee/index.js new file mode 100644 index 00000000000..1f078372e30 --- /dev/null +++ b/projects/eesee/index.js @@ -0,0 +1,8 @@ +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/intentx.js b/projects/intentx.js index 4223ffe28e6..c5da05a9d19 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -47,7 +47,7 @@ module.exports = { module.exports = { timetravel: false, start: BETA_START, - blast: { tvl: getTVL }, + // blast: { tvl: getTVL }, base: { tvl: getTVL }, hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], }; From 05a0013bf3737d5fa51e7f6f3545a38686040351 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:53:22 +0200 Subject: [PATCH 1103/2004] track https://bevmswap.xyz --- projects/bevmswap-xyz/index.js | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 projects/bevmswap-xyz/index.js diff --git a/projects/bevmswap-xyz/index.js b/projects/bevmswap-xyz/index.js new file mode 100644 index 00000000000..97b04ed9d8b --- /dev/null +++ b/projects/bevmswap-xyz/index.js @@ -0,0 +1,2 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); +module.exports = uniTvlExport('bevm', '0xAdEFa8CFD0655e319559c482c1443Cc6fa804C1F') \ No newline at end of file From f914c527fe81b77a10a47b45c8a2d2ab1bc123b7 Mon Sep 17 00:00:00 2001 From: luminfinance <164426850+luminfinance@users.noreply.github.com> Date: Fri, 5 Apr 2024 14:13:38 +0200 Subject: [PATCH 1104/2004] add lumin finance tvl and staking adapter (#9704) * add lumin finance tvl and staking adapter * code refactor --------- Co-authored-by: stephan Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lumin-finance/index.js | 40 +++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 projects/lumin-finance/index.js diff --git a/projects/lumin-finance/index.js b/projects/lumin-finance/index.js new file mode 100644 index 00000000000..6da50ae091f --- /dev/null +++ b/projects/lumin-finance/index.js @@ -0,0 +1,40 @@ +const { nullAddress } = require("../helper/tokenMapping"); +const { staking } = require('../helper/staking') + +const LUMIN_V1_CONTRACT_ASSET_MANAGER = "0x61c6b185fafd2727ddeac6247e6770f5eadd823a" +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])) +} + +module.exports = { + methodology: 'Gets v1 total deposits, and v2 staking statistics on-chain.', + start: 194344665, + arbitrum: { + staking: staking('0x1F5FAB72ED3Be2F1cf8F4E20BC9096C94a04D5c5', '0x1FC01117E196800f416A577350CB1938d10501C2'), + tvl, borrowed, + } +} \ No newline at end of file From c6e4e3dd829e4ee9b905839b2ac2ce39aad2f729 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 Apr 2024 14:41:40 +0200 Subject: [PATCH 1105/2004] venus: track opbnb --- projects/venus.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/venus.js b/projects/venus.js index 687adb0e367..d60ffe1c2de 100644 --- a/projects/venus.js +++ b/projects/venus.js @@ -10,4 +10,5 @@ module.exports = fullCoumpoundExports("0xfd36e2c2a6789db23113685031d7f1632915838 return replace[addr.toLowerCase()] || `bsc:${addr}` }) -module.exports.ethereum = compoundExports2({ comptroller: '0x67aA3eCc5831a65A5Ba7be76BED3B5dc7DB60796'}) \ No newline at end of file +module.exports.ethereum = compoundExports2({ comptroller: '0x67aA3eCc5831a65A5Ba7be76BED3B5dc7DB60796'}) +module.exports.op_bnb = compoundExports2({ comptroller: '0xd6e3e2a1d8d95cae355d15b3b9f8e5c2511874dd'}) \ No newline at end of file From 4424ad5e1a66bb6cb8bdef988999219251a58a25 Mon Sep 17 00:00:00 2001 From: robert-zklink <165130159+robert-zklink@users.noreply.github.com> Date: Fri, 5 Apr 2024 21:19:49 +0800 Subject: [PATCH 1106/2004] Feat add tokens (#9706) * Add base and optimism for zklink nova * Added tokens * code refactor --------- Co-authored-by: Evan Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/token.js | 2 + projects/zkLink/index.js | 209 ++++++++++++++++++++------------------- 2 files changed, 112 insertions(+), 99 deletions(-) diff --git a/projects/helper/token.js b/projects/helper/token.js index df402bf8a8c..af51880dcc5 100644 --- a/projects/helper/token.js +++ b/projects/helper/token.js @@ -15,6 +15,8 @@ async function covalentGetTokens(address, api, { 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]) throw new Error('Chain Not supported: ' + chain) const tokens = await ankrGetTokens(address, { onlyWhitelisted }) diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 89891186647..84f9f10327a 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -1,115 +1,126 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs"); const ADDRESSES = require("../helper/coreAssets.json"); -const ETH_DEFAULT_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; -const ERA_ETH_BALANCE_OF_ABI = - "function balanceOf(uint256) view returns (uint256)"; const ERA_ETH_ADDRESS = "0x000000000000000000000000000000000000800A"; -async function getEraEthBalance(api, addr) { - return await api.call({ - abi: ERA_ETH_BALANCE_OF_ABI, - target: ERA_ETH_ADDRESS, - params: [addr], - }); -} -module.exports = { + +const config = { ethereum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x5fD9F73286b7E8683Bab45019C94553b93e015Cf", - "0xAd16eDCF7DEB7e90096A259c81269d811544B6B6", - ], - fetchCoValentTokens: true, - }), + owners: [ + "0x5fD9F73286b7E8683Bab45019C94553b93e015Cf", + "0xAd16eDCF7DEB7e90096A259c81269d811544B6B6", + ], + tokens: [ + "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", // mmETH + "0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10", // mwBETH + "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", // mswETH + "0x49446A0874197839D15395B908328a74ccc96Bc0", // mstETH + "0xC6572019548dfeBA782bA5a2093C836626C7789A", // nETH + "0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812", // wUSDM + ] }, arbitrum: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A", - "0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585", - ], - fetchCoValentTokens: true, - }), + owners: [ + "0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A", + "0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585", + ], + tokens: [ + "0x4186BFC76E2E237523CBC30FD220FE055156b41F", // rsETH + "0x3082CC23568eA640225c2467653dB90e9250AaA0", // RDNT + "0x3abb0E23618a042ef55a624b903E9873F8756881", // ZKT + ], }, linea: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05", - "0x62cE247f34dc316f93D3830e4Bf10959FCe630f8", - ], - fetchCoValentTokens: true, - }), + owners: [ + "0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05", + "0x62cE247f34dc316f93D3830e4Bf10959FCe630f8", + ], + tokens: [ + "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", // WBTC + "0x2416092f143378750bb29b79eD961ab195CcEea5", // ezETH + "0xB5beDd42000b71FddE22D3eE8a79Bd49A568fC8F", // wstETH + "0x531e4901EB141a71e111Cc23Fc4fBD4B7dB788d5", // ZKT + ADDRESSES.linea.USDT, // USDT + ADDRESSES.linea.DAI, // DAI + ADDRESSES.linea.USDC, // USDC + ], }, - era: { - tvl: async (api) => { - const balances = {}; - balances[`era:${ERA_ETH_ADDRESS}`] = await getEraEthBalance( - api, - "0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A" - ); - - return sumTokens2({ - api, - owners: ["0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08"], - balances: balances, - tokens: [ - ADDRESSES.era.WBTC, //btc - ADDRESSES.era.USDC , //usdc - ADDRESSES.era.USDT, //usdt - ], - blacklistedTokens: [ERA_ETH_ADDRESS], - }); - }, + owners: ["0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08", '0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A'], + tokens: [ + ADDRESSES.null, + ADDRESSES.era.WBTC, //btc + ADDRESSES.era.USDC, //usdc + ADDRESSES.era.USDT, //usdt + ], }, - mantle: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", - "0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2", - ], - tokens: [ADDRESSES.mantle.WMNT, //mnt - ADDRESSES.mantle.USDT, //usdt - ADDRESSES.mantle.WETH ,//weth - ADDRESSES.mantle.USDC , //usdc - ], - }), + owners: [ + "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", + "0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2", + ], + tokens: [ + ADDRESSES.mantle.WMNT, //mnt + ADDRESSES.mantle.USDT, //usdt + ADDRESSES.mantle.WETH,//weth + ADDRESSES.mantle.USDC, //usdc + "0xCAbAE6f6Ea1ecaB08Ad02fE02ce9A44F09aebfA2", // WBTC + "0xcDA86A272531e8640cD7F1a92c01839911B90bb0", // meth + "0x779f4E5fB773E17Bc8E809F4ef1aBb140861159a", // KTC + "0x531e4901EB141a71e111Cc23Fc4fBD4B7dB788d5", // zkt + ], }, manta: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", - "0x44a65dc12865A1e5249b45b4868f32b0E37168FF", - ], - tokens: [ - ...Object.values(ADDRESSES.manta), - ETH_DEFAULT_ADDRESS, - "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", //MANTA - "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", //STONE - "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07", //WUSDM - ], - fetchCoValentTokens: false, - }), + owners: [ + "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657", + "0x44a65dc12865A1e5249b45b4868f32b0E37168FF", + ], + tokens: [ + ...Object.values(ADDRESSES.manta), + ADDRESSES.null, + "0x95CeF13441Be50d20cA4558CC0a27B601aC544E5", //MANTA + "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", //STONE + "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07", //WUSDM + "0x34c7Ad65E4163306f8745996688b476914201cE0", //uniETH + "0x9Af5CC797695717A20eCF3E258D6303316277A55", //ZKT + ], }, blast: { - tvl: (api) => - sumTokens2({ - api, - owners: [ - "0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD", - "0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b", - ], - tokens: [ETH_DEFAULT_ADDRESS], - }), + owners: [ + "0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD", + "0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b", + ], + tokens: [ + ADDRESSES.null, + "0x2416092f143378750bb29b79eD961ab195CcEea5", // ezeth + "0x8cDe337D4D39f692f867c9FFA696f555EdaB4BeD", // zkt + "0x038f1C6ED5FccF690A920a27b39366eeeF27eFCe", // rich + "0x5FE8534a6F96cb01261Bd96e98c17C2c1Cab3204", // BAJA + "0xf782E172A14Ee1c85cD980C15375bA0E87957028", // CACA + ], }, -}; + base: { + owners: [ + "0xE473ce141b1416Fe526eb63Cf7433b7B8d7264Dd", + "0x80d12A78EfE7604F00ed07aB2f16F643301674D5", + ], + tokens: [ + "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", // wstETH + "0x60F6659f92Db201670c39CC51D3630eD32cEdBb5", // ZKT + ], + }, + optimism: { + owners: [ + "0x46C8D02E93d5a03899dFa7Cf8A40A07589A3fA1b", + "0x5Bd51296423A9079b931414C1De65e7057326EaA", + ], + tokens: [ + "0x7d685a13eaFd76c12Dc6a9E9340778381Eef6bd7", // ZKT + ], + }, +} + +Object.keys(config).forEach(chain => { + const fetchCoValentTokens = !['manta'].includes(chain) + module.exports[chain] = { + tvl: sumTokensExport({ ...config[chain], fetchCoValentTokens, }) + } +}) From 18c11690a0e7598a00216b763173055fd4aad5ea Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:36:37 +0200 Subject: [PATCH 1107/2004] track synthetix v3 --- projects/synthetix-v3/index.js | 8 ++++++++ projects/uniswap/index.js | 1 + 2 files changed, 9 insertions(+) create mode 100644 projects/synthetix-v3/index.js diff --git a/projects/synthetix-v3/index.js b/projects/synthetix-v3/index.js new file mode 100644 index 00000000000..f756e24a038 --- /dev/null +++ b/projects/synthetix-v3/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + base: { + tvl: sumTokensExport({ owner: '0x32C222A9A159782aFD7529c87FA34b96CA72C696', tokens: [ADDRESSES.base.USDC] }) + } +} diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index ae3914036ff..b166851121f 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -80,6 +80,7 @@ module.exports = { boba: { factory: "0xFFCd7Aed9C627E82A765c3247d562239507f6f1B", fromBlock: 969351, }, rsk: { factory: "0xAf37Ec98A00fD63689cF3060Bf3b6784e00CaD82", fromBlock: 5829207, }, scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, + blast: { factory: "0x792edade80af5fc680d96a2ed80a44247d2cf6fd", fromBlock: 400903, }, }), filecoin: { tvl: filecoinTvl }, } From 1a041d626cd2005819d717cedd6737c5300311cb Mon Sep 17 00:00:00 2001 From: Jatin Jain Date: Fri, 5 Apr 2024 22:07:57 +0530 Subject: [PATCH 1108/2004] add: base tracker for ezETH (#9710) --- projects/renzo/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/renzo/index.js b/projects/renzo/index.js index d561aa91d80..e547551f9d7 100644 --- a/projects/renzo/index.js +++ b/projects/renzo/index.js @@ -14,7 +14,7 @@ async function ethTvl(api) { api.add(L1_EZ_ETH_ADDRESS, totalTvl - lockBoxBalance) } -const chains = ["mode", "blast", "bsc", "linea", "arbitrum"] +const chains = ["mode", "blast", "bsc", "linea", "arbitrum", "base"] module.exports = { doublecounted: true, From 6732cb67e43fe69f09553f381c6e15cadd25d8d4 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Sat, 6 Apr 2024 05:00:15 +0800 Subject: [PATCH 1109/2004] Update fx-Protocol TVL (#9708) --- projects/fx-Protocol/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/fx-Protocol/index.js b/projects/fx-Protocol/index.js index be192099b7f..ecc29f25f6e 100644 --- a/projects/fx-Protocol/index.js +++ b/projects/fx-Protocol/index.js @@ -5,6 +5,7 @@ const treasuries = [ "0xED803540037B0ae069c93420F89Cd653B6e3Df1f", "0xcfEEfF214b256063110d3236ea12Db49d2dF2359", "0x781BA968d5cc0b40EB592D5c8a9a3A4000063885", + "0x38965311507D4E54973F81475a149c09376e241e" ] module.exports = { From a2ae6f135c6e12f7c245d9538747eea0dcce0bfc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 5 Apr 2024 23:19:16 +0200 Subject: [PATCH 1110/2004] Add Superform TVL calculation (#9711) * chore: add superform tvl * refactor to use multicall --------- Co-authored-by: sujithsomraaj --- projects/superform/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/superform/index.js diff --git a/projects/superform/index.js b/projects/superform/index.js new file mode 100644 index 00000000000..3d9fd185f8c --- /dev/null +++ b/projects/superform/index.js @@ -0,0 +1,21 @@ +const superform_chains = ["ethereum", "polygon", "bsc", "avax", "arbitrum", "optimism", "base"]; +const factory_contract = "0xD85ec15A9F814D6173bF1a89273bFB3964aAdaEC"; + +async function tvl(api) { + const forms = await api.fetchList({ lengthAbi: 'getSuperformCount', itemAbi: "function superforms(uint256) external view returns(uint256)", target: factory_contract }) + const getSuperformRes = await api.multiCall({ abi: "function getSuperform(uint256) external view returns(address, uint32, uint64)", calls: forms, target: factory_contract }) + const super4626 = getSuperformRes.map(v => v[0]) + const vaults = await api.multiCall({ abi: 'address:vault', calls: super4626 }) + const assets = await api.multiCall({ abi: 'address:asset', calls: super4626 }) + const vBals = await api.multiCall({ abi: "erc20:balanceOf", calls: vaults.map((v, i) => ({ target: v, params: super4626[i] })) }) + const bals = await api.multiCall({ abi: "function previewRedeemFrom(uint256) external view returns(uint256)", calls: super4626.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", +}; + +superform_chains.forEach(chain => module.exports[chain] = { tvl }) \ No newline at end of file From 57ba1b809e7e08f266e72dcf5ec299ddb1d825d6 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Sat, 6 Apr 2024 05:20:38 +0800 Subject: [PATCH 1111/2004] add new pools on mode (#9705) * add new pools on mode * code refactor * fix: msw1x pool calculation --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/airpuff/index.js | 79 ++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 75421aa7ce0..9644138b544 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -2,16 +2,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const contractAbis = { - readOraclePrice: { - inputs: [], - name: "read", - outputs: [ - { internalType: "int224", name: "value", type: "int224" }, - { internalType: "uint32", name: "timestamp", type: "uint32" }, - ], - stateMutability: "view", - type: "function", - }, // + 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)", @@ -19,11 +10,46 @@ const contractAbis = { 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)", }; module.exports = { misrepresentedTokens: true, + mode: { + tvl: async (api) => { + const lendingMode = { + eth: "0x89C133c5e8eD4Cd7CD87A1A00c1e70c13A29b90B", + }; + await api.sumTokens({ + tokensAndOwners: [[ADDRESSES.mode.WETH, lendingMode.eth]], + }); + + const ezETH = { + vault: "0x497eB27Ca1ed7566653edf811b03d6418a03FC9d", + reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5", + oracle: "0x2BAF3A2B667A5027a83101d218A9e8B73577F117", //Renzo + oracleToken: "0x59e710215d45f584f44c0fee83da6d43d762d857", + }; + + const balOfezETH = await api.call({ + abi: contractAbis.balanceOf, + target: ezETH.reStakingToken, + params: [ezETH.vault], + }); + + const priceOfezETH = await api.call({ + target: ezETH.oracle, + abi: contractAbis.getUnderlyingPrice, + params: [ezETH.oracleToken], + }); + + const ezETHBalInETH = (balOfezETH * priceOfezETH) / 1e18; + + api.add(ADDRESSES.mode.WETH, ezETHBalInETH); + }, + }, + ethereum: { tvl: async (api) => { const lendingMain = { @@ -181,7 +207,12 @@ module.exports = { } const mswETH = { - valut: "0x7c505E03460aEF7FE88e218CC5fcEeCCcA4C4394", + vault: "0x7c505E03460aEF7FE88e218CC5fcEeCCcA4C4394", + reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", + }; + + const mswETH1x = { + vault: "0x1100195fbdA2f22AA6f394E6C65f168779Fe572c", reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", }; @@ -189,15 +220,29 @@ module.exports = { abi: contractAbis.getMswEthPrice, target: mswETH.reStakingToken, }); + // mswETH1x + + for (const msw of [mswETH, mswETH1x]) { + if (msw.vault == "0x1100195fbdA2f22AA6f394E6C65f168779Fe572c") { + const bal = await api.call({ + abi: contractAbis.balanceOf, + target: msw.reStakingToken, + params: [msw.vault], + }); + const balInETH = (bal * mswETHPrice) / 1e18; + api.add(ADDRESSES.ethereum.WETH, balInETH); + continue; + } - const mswETHBal = await api.call({ - abi: contractAbis.getMswBalance, - target: mswETH.valut, - }); + const mswETHBal = await api.call({ + abi: contractAbis.getMswBalance, + target: msw.vault, + }); - const mswETHBalInETH = (mswETHBal * mswETHPrice) / 1e18; + const mswETHBalInETH = (mswETHBal * mswETHPrice) / 1e18; - api.add(ADDRESSES.ethereum.WETH, mswETHBalInETH); + api.add(ADDRESSES.ethereum.WETH, mswETHBalInETH); + } }, }, From 3fcdd0663838d42b2ea136fdcd936f0922573a2a Mon Sep 17 00:00:00 2001 From: robert-zklink <165130159+robert-zklink@users.noreply.github.com> Date: Sat, 6 Apr 2024 15:44:09 +0800 Subject: [PATCH 1112/2004] Feat add tokens (#9713) * Add base and optimism for zklink nova * Added tokens * code refactor --------- Co-authored-by: Evan Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> From 5ea290e502e067433d6554964a2c2f280bc790ac Mon Sep 17 00:00:00 2001 From: Whitey <35579192+solwhitey@users.noreply.github.com> Date: Sat, 6 Apr 2024 11:04:11 +0200 Subject: [PATCH 1113/2004] update Rain TVL (#9712) * Updated the IDL and added another way to get the collateralized amounts and currency. * Hello! I Updated the IDL and added another way to get the collateralized amounts and currency * fixed Marketplace type missing * Added missing fields * fix missing bs58 * last fix hopefully --- projects/rain/idl.js | 219 ++++++++++++++++++++++++++++++++++++++--- projects/rain/index.js | 25 +++-- 2 files changed, 225 insertions(+), 19 deletions(-) diff --git a/projects/rain/idl.js b/projects/rain/idl.js index 30c233a19ed..820189db6a6 100644 --- a/projects/rain/idl.js +++ b/projects/rain/idl.js @@ -5,54 +5,140 @@ module.exports = { "instructions": [], "accounts": [ { - "name": "assetManager", + "name": "loan", "type": { "kind": "struct", "fields": [ { - "name": "currencyIn", + "name": "kind", + "type": { + "defined": "LoanKind" + } + }, + { + "name": "status", + "type": { + "defined": "LoanStatus" + } + }, + { + "name": "borrower", "type": "publicKey" }, { - "name": "currencyOut", + "name": "lender", "type": "publicKey" }, { - "name": "pythInFeed", + "name": "pool", "type": "publicKey" }, { - "name": "pythOutFeed", + "name": "mint", "type": "publicKey" }, { - "name": "totalAmountTokenized", + "name": "currency", + "type": "publicKey" + }, + { + "name": "isCustom", + "type": "bool" + }, + { + "name": "isFrozen", + "type": "bool" + }, + { + "name": "price", "type": "u64" }, { - "name": "currentAmountTokenized", + "name": "interest", "type": "u64" }, + { + "name": "amount", + "type": "u64" + }, + { + "name": "duration", + "type": "u64" + }, + { + "name": "collection", + "type": "u32" + }, + { + "name": "liquidation", + "type": "u16" + }, + { + "name": "marketplace", + "type": { + "defined": "Marketplace" + } + }, + { + "name": "sale", + "type": { + "defined": "Sale" + } + }, { "name": "createdAt", "type": "u64" }, { - "name": "updatedAt", + "name": "expiredAt", + "type": "u64" + }, + { + "name": "repaidAt", + "type": "u64" + }, + { + "name": "soldAt", + "type": "u64" + }, + { + "name": "liquidatedAt", + "type": "u64" + }, + { + "name": "listing", + "type": { + "defined": "Listing" + } + }, + { + "name": "isCompressedLoan", + "type": "bool" + }, + { + "name": "isDefi", + "type": "bool" + }, + { + "name": "collateralAmount", "type": "u64" }, + { + "name": "collateralDecimals", + "type": "u8" + }, { "name": "padding", "type": { "array": [ "u64", - 31 + 5 ] } }, { - "name": "totalAmountLiquidated", - "type": "u64" + "name": "padding1", + "type": "u32" } ] } @@ -213,6 +299,40 @@ module.exports = { }, ], "types": [ + { + "name": "LoanKind", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Loan" + }, + { + "name": "Mortgage" + } + ] + } + }, + { + "name": "LoanStatus", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Ongoing" + }, + { + "name": "Repaid" + }, + { + "name": "Liquidated" + }, + { + "name": "Sold" + } + ] + } + }, { "name": "Curve", "type": { @@ -350,7 +470,80 @@ module.exports = { ] } }, + { + "name": "Marketplace", + "type": { + "kind": "enum", + "variants": [ + { + "name": "None" + }, + { + "name": "Auctionhouse" + }, + { + "name": "Solanart" + }, + { + "name": "Hyperspace" + }, + { + "name": "Yaww" + }, + { + "name": "Hadeswap" + }, + { + "name": "Rain" + }, + { + "name": "TensorswapOrder" + }, + { + "name": "TensorswapListing" + }, + { + "name": "MagicEden" + } + ] + } + }, + { + "name": "Sale", + "type": { + "kind": "struct", + "fields": [ + { + "name": "isForSale", + "type": "bool" + }, + { + "name": "salePrice", + "type": "u64" + }, + { + "name": "currency", + "type": "publicKey" + } + ] + } + }, + { + "name": "Listing", + "type": { + "kind": "struct", + "fields": [ + { + "name": "isListed", + "type": "bool" + }, + { + "name": "price", + "type": "u64" + } + ] + } + } ], "errors": [] -} - \ No newline at end of file +} \ No newline at end of file diff --git a/projects/rain/index.js b/projects/rain/index.js index 37c2b32cc72..441577a32c7 100644 --- a/projects/rain/index.js +++ b/projects/rain/index.js @@ -1,17 +1,30 @@ const { Program } = require("@project-serum/anchor"); +const bs58 = require('bs58'); const { getProvider } = require("../helper/solana"); const idl = require('./idl') async function tvl(api) { const provider = getProvider() - const rainProgram = new Program(idl, 'RainEraPU5yDoJmTrHdYynK9739GkEfDsE4ffqce2BR', provider) - const tokenizerProgram = new Program(idl, 'RtokEFPPbXqDrzAHJHt16fwN6hZmepfPpSvW7y47g5r', provider) + const program = new Program(idl, 'RainEraPU5yDoJmTrHdYynK9739GkEfDsE4ffqce2BR', provider) - const pools = await rainProgram.account.pool.all() - const assetManagers = await tokenizerProgram.account.assetManager.all() + const pools = await program.account.pool.all() + const loans = await program.account.loan.all([ + { + memcmp: { + offset: 294 + 8, + bytes: bs58.encode(Buffer.from([1])), // tokens loans only + }, + }, + { + memcmp: { + offset: 8 + 1, + bytes: bs58.encode(Buffer.from([0])), // active loans only + }, + }, + ]) - for (const assetManager of assetManagers) { - api.add(assetManager.account.currencyIn.toString(), assetManager.account.currentAmountTokenized) + for (const loan of loans) { + api.add(loan.account.mint.toString(), loan.account.collateralAmount) } for (const pool of pools) From 8e272d72865fb7cf22318fbef8b152a89e674ee6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:00:40 +0200 Subject: [PATCH 1114/2004] bugfix --- projects/rosswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/rosswap/index.js b/projects/rosswap/index.js index 23e92d82f9c..2b8e8f81032 100644 --- a/projects/rosswap/index.js +++ b/projects/rosswap/index.js @@ -12,7 +12,7 @@ async function tvl(api) { 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, permitFailure: true }) + const res = await api.multiCall({ abi: getReservesABI, calls: pairs, }) const data = [] res.forEach((r, i) => { if (!r) return; From f2c7a2b4d8b1e764cef3b0ecd510f27c2433e85e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:05:05 +0200 Subject: [PATCH 1115/2004] update fsc rpc --- projects/helper/env.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/env.js b/projects/helper/env.js index 334d3c95012..cabe6ed7e19 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,6 +12,7 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", + FSC_RPC: "https://fsc-dataseed1.fonscan.io,https://fsc-dataseed2.fonscan.io,https://fonscan.io/api/eth-rpc", } const ENV_KEYS = [ From ae0f7433051875f32d6155c2490c701e9c09cac6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:45:29 +0200 Subject: [PATCH 1116/2004] add fsc multicall --- projects/helper/env.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/env.js b/projects/helper/env.js index cabe6ed7e19..2bde5bfc54a 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -13,6 +13,7 @@ const DEFAULTS = { ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", FSC_RPC: "https://fsc-dataseed1.fonscan.io,https://fsc-dataseed2.fonscan.io,https://fonscan.io/api/eth-rpc", + FSC_RPC_MULTICALL: "0x18fA376d92511Dd04090566AB6144847c03557d8", } const ENV_KEYS = [ From bf7c17ddfdf2e8ebe60de8790c97a2f582c07850 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:52:11 +0200 Subject: [PATCH 1117/2004] lumin: update staking --- projects/lumin-finance/index.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/projects/lumin-finance/index.js b/projects/lumin-finance/index.js index 6da50ae091f..9dd59d8aaba 100644 --- a/projects/lumin-finance/index.js +++ b/projects/lumin-finance/index.js @@ -1,5 +1,4 @@ const { nullAddress } = require("../helper/tokenMapping"); -const { staking } = require('../helper/staking') const LUMIN_V1_CONTRACT_ASSET_MANAGER = "0x61c6b185fafd2727ddeac6247e6770f5eadd823a" const LUMIN_V2_CONTRACT = "0x1F00009c0310A4804925695F44355dE5110EC074" @@ -29,12 +28,22 @@ async function borrowed(api) { 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) { + 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.', start: 194344665, arbitrum: { - staking: staking('0x1F5FAB72ED3Be2F1cf8F4E20BC9096C94a04D5c5', '0x1FC01117E196800f416A577350CB1938d10501C2'), + staking, tvl, borrowed, } } \ No newline at end of file From bea308d42ceb5d220f6498f39e65edc1769eec8d Mon Sep 17 00:00:00 2001 From: hxzaifa13 <121883195+hxzaifa13@users.noreply.github.com> Date: Sat, 6 Apr 2024 10:53:59 -0500 Subject: [PATCH 1118/2004] Add PENDLE token for Blackwing project (#9717) * add blackwing project * add pendle token * nit --------- Co-authored-by: Huzaifa Nasir --- projects/blackwing/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index 6813f3adc29..29a0b527570 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -12,6 +12,8 @@ const ETHEREUM_MAINNET_RSWETH = '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0'; const ETHEREUM_MAINNET_RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7"; const ETHEREUM_MAINNET_WEETH = "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee"; const ETHEREUM_MAINNET_EZETH = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; +const ETHEREUM_MAINNET_PENDLE = "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa"; + module.exports = { arbitrum: { @@ -19,7 +21,7 @@ module.exports = { }, 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, + 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 ], owner: BLACKWING_VAULT_ETH, fetchCoValentTokens: true, }) }, From 4aa5ed41c60bc04784bc307d0c066d4fd28411c9 Mon Sep 17 00:00:00 2001 From: Joshua <166188424+oxbio@users.noreply.github.com> Date: Sat, 6 Apr 2024 18:55:07 +0300 Subject: [PATCH 1119/2004] add oxb sdk adapter (#9716) --- projects/oxb/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/oxb/index.js diff --git a/projects/oxb/index.js b/projects/oxb/index.js new file mode 100644 index 00000000000..018733a8d5a --- /dev/null +++ b/projects/oxb/index.js @@ -0,0 +1,11 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + bsc: { + tvl: () => ({}), + staking: staking( + "0x2281f53a583b00cb80814ccdffe1544a5274dad2", + "0x7536c00711E41df6aEBCCa650791107645b6bc52" + ), + }, +}; From d5440ce850e223b2b51d47d6966998fc9c5bad9c Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sun, 7 Apr 2024 21:15:36 +0100 Subject: [PATCH 1120/2004] binance-april-wallets (#9732) * git push origin binance-april-wallets * final --- projects/binance/config.js | 1111 ++++++++++++++++++++---------------- 1 file changed, 614 insertions(+), 497 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index 1ad5a6fdc72..9a2facb7740 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -4,502 +4,605 @@ const { getUniqueAddresses } = require('../helper/utils') // taken from https://www.binance.com/en/blog/community/our-commitment-to-transparency-2895840147147652626 const assetList = [ - ['1INCH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['1INCH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['1INCH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['1INCH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['1INCH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['1INCH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['1INCH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['APT', 'APT', '0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00'], - ['APT', 'APT', '0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f'], - ['APT', 'APT', '0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70'], - ['APT', 'APT', '0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a'], - ['APT', 'APT', '0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e'], - ['ARB', 'ARB', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['ARB', 'ARB', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['ARB', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['ARB', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ARB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BNB', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], - ['BNB', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BNB', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['BNB', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['BNB', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BNB', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['BNB', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['BNB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['BNB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['BNB', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['BNB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['BNB', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['BNB', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['BNB', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['BNB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BNB', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], - ['BNB', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['BNB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['BNB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['BNB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BNB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BNB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['BTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['BTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BTC', 'BTC', '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw'], - ['BTC', 'BTC', '1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7'], - ['BTC', 'BTC', '3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2'], // THIS WALLET WAS PROVIDE BY BINANCE TEAM, AFTER THE SNAPSHOT OF MARCH - ['BTC', 'BTC', '32bhzEniykYRFADVaRM5PYswsjC23cxtes'], - ['BTC', 'BTC', '34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J'], - ['BTC', 'BTC', '34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP'], - ['BTC', 'BTC', '34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo'], - ['BTC', 'BTC', '36zSLdRv1jyewjaC12fqK5fptn7PqewunL'], - ['BTC', 'BTC', '38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn'], - ['BTC', 'BTC', '38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE'], - ['BTC', 'BTC', '395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ'], - ['BTC', 'BTC', '39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v'], - ['BTC', 'BTC', '3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry'], - ['BTC', 'BTC', '3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN'], - ['BTC', 'BTC', '3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B'], - ['BTC', 'BTC', '3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA'], - ['BTC', 'BTC', '3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ'], - ['BTC', 'BTC', '3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ'], - ['BTC', 'BTC', '3JqPhvKkAPcFB3oLELBT7z2tQdjpnxuDi9'], - ['BTC', 'BTC', '3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a'], - ['BTC', 'BTC', '3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH'], - ['BTC', 'BTC', '3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY'], - ['BTC', 'BTC', '3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6'], - ['BTC', 'BTC', '3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj'], - ['BTC', 'BTC', '3NPL82eaehTFh4r3StpHqVQBTnZJFaGsyy'], - ['BTC', 'BTC', '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa'], - ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], - ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], - ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], - ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['BTC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BTC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['BTC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BUSD', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], - ['BUSD', 'BNB', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BUSD', 'BNB', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['BUSD', 'BNB', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BUSD', 'BNB', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['BUSD', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['BUSD', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['BUSD', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['BUSD', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['BUSD', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['BUSD', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['BUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['BUSD', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['BUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BUSD', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['BUSD', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['BUSD', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['BUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['BUSD', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['BUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['BUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BUSD', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], - ['BUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['BUSD', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['BUSD', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['BUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['BUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['CHR', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['CHR', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['CHR', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['CHR', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CHR', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CHR', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CHR', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['CHR', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['CHR', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CHR', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CHZ', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], - ['CHZ', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['CHZ', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['CHZ', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - // ['CHZ', 'CHZ2', '0x87917d879ba83ce3ada6e02d49a10c1ec1988062'], - // ['CHZ', 'CHZ2', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CHZ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CHZ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CRV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CRV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CRV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CRV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CVP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['CVP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['CVP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['CVP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['CVP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CVP', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['CVP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['CVP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['DOGE', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['DOGE', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], - ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - /* - ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], - ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], - ['DOGE', 'DOGE', 'D7JLeAgZK2TyFRFtjKwHMxhFjWvJ9gS5kj'], - ['DOGE', 'DOGE', 'D7QZnXec5bkMyokPFPh6v4WAw5VF5TocAy'], - ['DOGE', 'DOGE', 'D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw'], - ['DOGE', 'DOGE', 'D7dm1b8DEqaCxcgaPuBXz9FqjAQ7UTK6sz'], - ['DOGE', 'DOGE', 'DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr'], - ['DOGE', 'DOGE', 'DCxFJEWsYJFnC3HP7YfZdsd3X43ttQA79Z'], - ['DOGE', 'DOGE', 'DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn'], - ['DOGE', 'DOGE', 'DD6K5pfaPd93ri5x67PzVVUS8Cui3rRoBe'], - ['DOGE', 'DOGE', 'DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX'], - ['DOGE', 'DOGE', 'DEvUEF9VrXbKf5rdaQCUzeh4MvZxd3Zx5T'], - ['DOGE', 'DOGE', 'DFyohYD3bMXCEg1TdMfdy1J7dYfK4shhPf'], - ['DOGE', 'DOGE', 'DGYUcgNQAAMzXynRHJJVAKkgXWhSddJNi2'], - ['DOGE', 'DOGE', 'DGiYKUGbzRtppwdoinym7ZJXWuBqBuHxUk'], - ['DOGE', 'DOGE', 'DGmd2jn1D7oLXpdpcGkLaGLDMbnRt4qkH3'], - ['DOGE', 'DOGE', 'DHiKVUMdaAm43NMh2wMSfn7xtmUmfKSSNE'], - ['DOGE', 'DOGE', 'DJRaDXkewtLgwL9EZyTkWQEsxuyBUaveKU'], - ['DOGE', 'DOGE', 'DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC'], - ['DOGE', 'DOGE', 'DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC'], - ['DOGE', 'DOGE', 'DN9NrgYzgh6AtNmTUFThqRxhbyoNWhG6iD'], - ['DOGE', 'DOGE', 'DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW'], - ['DOGE', 'DOGE', 'DPKKpanH1hMVzdWb2oi126znjruvvGRQzj'], - ['DOGE', 'DOGE', 'DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx'], - ['DOGE', 'DOGE', 'DQkwksfYrAWAR9tRcqygA5pihmnURozxzo'], - ['DOGE', 'DOGE', 'DQnhnNxW89AkFHDsT6aWHim4DvtzwF9sGo'], - ['DOGE', 'DOGE', 'DRuYd74gqPuQD9HKEBDxRr9gSogQmdj9DH'], - ['DOGE', 'DOGE', 'DRweGdMgohChLBn2TamjCNicKYEncRgj5a'], - ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], - ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], - */ - ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['DOT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['DOT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['DOT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['DOT', 'DOT', '16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD'], - ['DOT', 'DOT', '1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF'], - ['DOT', 'DOT', '1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7'], - ['DOT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['DOT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['DOT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - // ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], - ['ENJ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['ENJ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['ENJ', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], - ['ENJ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['ETH', 'ARB', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['ETH', 'ARB', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['ETH', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['ETH', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'BASE', '0x3304e22ddaa22bcdc5fca2269b418046ae7b566a'], - ['ETH', 'BASE', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['ETH', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['ETH', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['ETH', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['ETH', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['ETH', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['ETH', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['ETH', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['ETH', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['ETH', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['ETH', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['ETH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['ETH', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['ETH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['ETH', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['ETH', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['ETH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['ETH', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], - ['ETH', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], - ['ETH', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['ETH', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['ETH', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], - ['ETH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['ETH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['ETH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['ETH', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['ETH', 'ERA', '0x7aed074ca56f5050d5a2e512ecc5bf7103937d76'], - ['ETH', 'ERA', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['ETH', 'ERA', '0xa84fd90d8640fa63d194601e0b2d1c9094297083'], - ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['FDUSD', 'BEP20', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['FDUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['FDUSD', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['FDUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['FDUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['GRT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['GRT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['GRT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['GRT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['GRT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['GRT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['HFT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['HFT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['HFT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['HFT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['HFT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['HFT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['HFT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['LINK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LINK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['LINK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['LINK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['LINK', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['LINK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['LINK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['LTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['LTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['LTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['LTC', 'LTC', 'LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm'], - ['LTC', 'LTC', 'LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN'], - ['LTC', 'LTC', 'LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq'], - ['LTC', 'LTC', 'M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua'], - ['LTC', 'LTC', 'MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k'], - ['LTC', 'LTC', 'MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z'], - ['LTC', 'LTC', 'MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ'], - ['LTC', 'LTC', 'MEhAHYijouCinmGKL6n1bRTXYznH1X24rD'], - ['LTC', 'LTC', 'MG9aFQgTH5C4UPcur8S2bh5duKYMfaJFUS'], - ['LTC', 'LTC', 'MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F'], - ['LTC', 'LTC', 'MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3'], - ['LTC', 'LTC', 'MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N'], - ['LTC', 'LTC', 'MLkNzCps6cXou2DELVfxDuRC4uZGwr397o'], - ['LTC', 'LTC', 'MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS'], - ['LTC', 'LTC', 'MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf'], - ['LTC', 'LTC', 'MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67'], - ['LTC', 'LTC', 'MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy'], - ['MASK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['MASK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['MASK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['MASK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['MASK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['MASK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['MASK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['MASK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['MATIC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['MATIC', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['MATIC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['MATIC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['MATIC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['MATIC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['MATIC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['MATIC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['MATIC', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['MATIC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['MATIC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['MATIC', 'MATIC', '0x082489a616ab4d46d1947ee3f912e080815b08da'], - ['MATIC', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['MATIC', 'MATIC', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['MATIC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['MATIC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['OP', 'OP', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['OP', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['OP', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['SHIB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['SHIB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['SHIB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['SHIB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['SHIB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['SHIB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['SHIB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['SHIB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['SHIB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SHIB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['SHIB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['SHIB', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], - ['SHIB', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['SHIB', 'ETH', '0x835678a611B28684005a5e2233695fB6cbbB0007'], - ['SHIB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['SHIB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SOL', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['SOL', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['SOL', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['SOL', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SOL', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], - ['SOL', 'SOL', '3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u'], - ['SOL', 'SOL', '3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E'], - ['SOL', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], - ['SOL', 'SOL', '6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U'], - ['SOL', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], - ['SSV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['SSV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['TUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['TUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['TUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['TUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['TUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['TUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['TUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['TUSD', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], - ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['UNI', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['UNI', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['UNI', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['UNI', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'ALGO', 'MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI'], - ['USDC', 'ALGO', 'QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U'], - ['USDC', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['USDC', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], - ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['USDC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['USDC', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['USDC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['USDC', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['USDC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['USDC', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['USDC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['USDC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDC', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - // ['USDC', 'RON', '0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3'], - ['USDC', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], - ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], - ['USDC', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], - ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], - ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], - ['USDT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], - ['USDT', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], - ['USDT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['USDT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['USDT', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], - ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['USDT', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['USDT', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], - ['USDT', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], - ['USDT', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], - ['USDT', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], - ['USDT', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], - ['USDT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['USDT', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], - ['USDT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['USDT', 'BEP20', '0xBE0eB53F46cd790Cd13851d5EFf43D12404d33E8'], - ['USDT', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], - ['USDT', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['USDT', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], - ['USDT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['USDT', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['USDT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['USDT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['USDT', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], - ['USDT', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], - ['USDT', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['USDT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['USDT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'MATIC', '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'], - ['USDT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], - ['USDT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['USDT', 'OP', '0xF977814e90dA44bFA03b6295A0616a897441aceC'], - ['USDT', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - ['USDT', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], - ['USDT', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], - ['USDT', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], - ['USDT', 'TRX', 'TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr'], - ['USDT', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['USDT', 'TRX', 'TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo'], - ['USDT', 'TRX', 'TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe'], - ['USDT', 'TRX', 'TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9'], - ['USDT', 'TRX', 'TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY'], - ['USDT', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['USDT', 'TRX', 'TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm'], - ['USDT', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], - ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], - ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], - ['WRX', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['WRX', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['WRX', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['WRX', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['WRX', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['WRX', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['WRX', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['WRX', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['WRX', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['WRX', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], - ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['XRP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['XRP', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['XRP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['XRP', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['XRP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['XRP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], - ['XRP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['XRP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['XRP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['XRP', 'XRP', 'rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A'], - ['XRP', 'XRP', 'rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr'], - ['XRP', 'XRP', 'rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ'], - ['XRP', 'XRP', 'rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK'], - ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], - ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], - ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], - // THE WALLETS UNDER WHERE PROVIDED BY BINANCE TEAM ON THE 08/03/2024 - ['FDUSD', 'ETH', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], - ['USDT', 'ETH', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], - ['ETH', 'ETH', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], - ['BNB', 'BEP20', '0xa7C0D36c4698981FAb42a7d8c783674c6Fe2592d'], - ['BTC', 'BTC', 'bc1q7t9fxfaakmtk8pj7tdxjvwsng6y9x76czuaf5h'], - ['SOL', 'SOL', 'HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664'], - ['USDT', 'TRX', 'TRGCqsUXeynKTgynp2j9g3sg7Nux2KtB3u'], - ['XRP', 'XRP', 'rP3mUZyCDzZkTSd1VHoBbFt8HGm8fyq8qV'], - + ['1INCH', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['1INCH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['1INCH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['1INCH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['1INCH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['1INCH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['1INCH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['1INCH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['APT', 'APT', '0x5bd7de5c56d5691f32ea86c973c73fec7b1445e59736c97158020018c080bb00'], + ['APT', 'APT', '0x80174e0fe8cb2d32b038c6c888dd95c3e1560736f0d4a6e8bed6ae43b5c91f6f'], + ['APT', 'APT', '0xae1a6f3d3daccaf77b55044cea133379934bba04a11b9d0bbd643eae5e6e9c70'], + ['APT', 'APT', '0xd91c64b777e51395c6ea9dec562ed79a4afa0cd6dad5a87b187c37198a1f855a'], + ['APT', 'APT', '0xed8c46bec9dbc2b23c60568f822b95b87ea395f7e3fdb5e3adc0a30c55c0a60e'], + ['ARB', 'ARB', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ARB', 'ARB', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['ARB', 'ARB', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['ARB', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['ARB', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ARB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['BNB', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BNB', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['BNB', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['BNB', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BNB', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['BNB', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['BNB', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['BNB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['BNB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['BNB', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['BNB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['BNB', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['BNB', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BNB', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['BNB', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['BNB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BNB', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['BNB', 'BEP20', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['BNB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['BNB', 'BEP20', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['BNB', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['BNB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['BNB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BNB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BNB', 'OPBNB', '0x001ceb373c83ae75b9f5cf78fc2aba3e185d09e2'], + ['BNB', 'OPBNB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BTC', 'BEP2', 'bnb17jky4rwhu9rzgrx7exrfc3pcd5z290ga8qfm0j'], + ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['BTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BTC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['BTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BTC', 'BTC', '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw'], + ['BTC', 'BTC', '1Pzaqw98PeRfyHypfqyEgg5yycJRsENrE7'], + ['BTC', 'BTC', '32bhzEniykYRFADVaRM5PYswsjC23cxtes'], + ['BTC', 'BTC', '34GUzCVLbdkMQ2UdVTaA4nxPwoovVS7y2J'], + ['BTC', 'BTC', '34HpHYiyQwg69gFmCq2BGHjF1DZnZnBeBP'], + ['BTC', 'BTC', '34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo'], + ['BTC', 'BTC', '36zSLdRv1jyewjaC12fqK5fptn7PqewunL'], + ['BTC', 'BTC', '38DN2uFMZPiHLHJigfv4kWC9JWJrNnhLcn'], + ['BTC', 'BTC', '38Xnrq8MZiKmYmwobbYdZQ5nnCbX1qvQfE'], + ['BTC', 'BTC', '395vnFScKQ1ay695C6v7gf89UzoFpx3WuJ'], + ['BTC', 'BTC', '39884E3j6KZj82FK4vcCrkUvWYL5MQaS3v'], + ['BTC', 'BTC', '3AQ8bAh88TQU7JV1H3ovXrwsuV6s3zYZuN'], + ['BTC', 'BTC', '3AeUiDpPPUrUBS377584sFCpx8KLfpX9Ry'], + ['BTC', 'BTC', '3CySuFKbBS29M7rE5iJakZRNqb3msMeFoN'], + ['BTC', 'BTC', '3E97AjYaCq9QYnfFMtBCYiCEsN956Rvpj2'], + ['BTC', 'BTC', '3FHNBLobJnbCTFTVakh5TXmEneyf5PT61B'], + ['BTC', 'BTC', '3HdGoUTbcztBnS7UzY4vSPYhwr424CiWAA'], + ['BTC', 'BTC', '3JFJPpH8Chwo7CDbyYQ4XcfgcjEP1FGRMJ'], + ['BTC', 'BTC', '3JJmF63ifcamPLiAmLgG96RA599yNtY3EQ'], + ['BTC', 'BTC', '3JqPhvKkAPcFB3oLELBT7z2tQdjpnxuDi9'], + ['BTC', 'BTC', '3Jy7A2rThtU9xm4o8gR3a9pvQuxXnRNuNF'], + ['BTC', 'BTC', '3LQUu4v9z6KNch71j7kbj8GPeAGUo1FW6a'], + ['BTC', 'BTC', '3LcgLHzTvjLKBixBvkKGiadtiw2GBSKKqH'], + ['BTC', 'BTC', '3LtrsjtyLsHoG8WQMe2RFw3de4pLTQZNcY'], + ['BTC', 'BTC', '3M219KR5vEneNb47ewrPfWyb5jQ2DjxRP6'], + ['BTC', 'BTC', '3Me9QACjioepv2L2oKTC9QQ87NH6vFe1Zj'], + ['BTC', 'BTC', '3NPL82eaehTFh4r3StpHqVQBTnZJFaGsyy'], + ['BTC', 'BTC', '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa'], + ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], + ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], + ['BTC', 'BTC', 'bc1q32lyrhp9zpww22phqjwwmelta0c8a5q990ghs6 '], + ['BTC', 'BTC', 'bc1q78ufzeu8w8fwvxuphrdlg446xhyptf28fkatu5 '], + ['BTC', 'BTC', 'bc1q7t9fxfaakmtk8pj7tdxjvwsng6y9x76czuaf5h'], + ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], + ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['BTC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BTC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['BTC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BUSD', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['BUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['BUSD', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['BUSD', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['BUSD', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['BUSD', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['BUSD', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['BUSD', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['BUSD', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['BUSD', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['BUSD', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['BUSD', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['BUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['BUSD', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['BUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['BUSD', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['BUSD', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['BUSD', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['BUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['BUSD', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['BUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['BUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['BUSD', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['BUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['BUSD', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['BUSD', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['BUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['BUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['CHR', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CHR', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['CHR', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CHR', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHR', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CHR', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CHR', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CHR', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['CHR', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CHR', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHZ', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['CHZ', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['CHZ', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['CHZ', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + // ['CHZ', 'CHZ2', '0x87917d879ba83ce3ada6e02d49a10c1ec1988062'], + // ['CHZ', 'CHZ2', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CHZ', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['CHZ', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['CHZ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CHZ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CRV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CRV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CRV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CRV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['CVP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['CVP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CVP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['CVP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['CVP', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['CVP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['CVP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['DOGE', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['DOGE', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['DOGE', 'BEP20', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['DOGE', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + /* + ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], + ['DOGE', 'DOGE', 'D7BrtudMAdwz2U7vSGumVDuxZsZNibJuzw'], + ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], + ['DOGE', 'DOGE', 'D7JLeAgZK2TyFRFtjKwHMxhFjWvJ9gS5kj'], + ['DOGE', 'DOGE', 'D7QZnXec5bkMyokPFPh6v4WAw5VF5TocAy'], + ['DOGE', 'DOGE', 'D7bg2iUG3UiHuTWjRqcjdJiEjHrsFASsjw'], + ['DOGE', 'DOGE', 'D7dm1b8DEqaCxcgaPuBXz9FqjAQ7UTK6sz'], + ['DOGE', 'DOGE', 'DAYthKnkrWUHRENvtBwjemi6kFzk4K9SMr'], + ['DOGE', 'DOGE', 'DB7cLf6DRuHgTasXPgAEtkFVBnehgDjo9v'], + ['DOGE', 'DOGE', 'DCqD9gyq3qumbeEJZKc2Tm2R96JEd9dSDe'], + ['DOGE', 'DOGE', 'DCxFJEWsYJFnC3HP7YfZdsd3X43ttQA79Z'], + ['DOGE', 'DOGE', 'DD1h9ojoyAdAGLXaqgqZP3j86AtxZs6jCn'], + ['DOGE', 'DOGE', 'DD6K5pfaPd93ri5x67PzVVUS8Cui3rRoBe'], + ['DOGE', 'DOGE', 'DE5opaXjFgDhFBqL6tBDxTAQ56zkX6EToX'], + ['DOGE', 'DOGE', 'DEvUEF9VrXbKf5rdaQCUzeh4MvZxd3Zx5T'], + ['DOGE', 'DOGE', 'DFyohYD3bMXCEg1TdMfdy1J7dYfK4shhPf'], + ['DOGE', 'DOGE', 'DGYUcgNQAAMzXynRHJJVAKkgXWhSddJNi2'], + ['DOGE', 'DOGE', 'DGiYKUGbzRtppwdoinym7ZJXWuBqBuHxUk'], + ['DOGE', 'DOGE', 'DGmd2jn1D7oLXpdpcGkLaGLDMbnRt4qkH3'], + ['DOGE', 'DOGE', 'DHiKVUMdaAm43NMh2wMSfn7xtmUmfKSSNE'], + ['DOGE', 'DOGE', 'DJRaDXkewtLgwL9EZyTkWQEsxuyBUaveKU'], + ['DOGE', 'DOGE', 'DJfU2p6woQ9GiBdiXsWZWJnJ9uDdZfSSNC'], + ['DOGE', 'DOGE', 'DLqwvgk27ACJnHPEGxyDfspieHBVYJRZiC'], + ['DOGE', 'DOGE', 'DN9NrgYzgh6AtNmTUFThqRxhbyoNWhG6iD'], + ['DOGE', 'DOGE', 'DPAMdZsSirVBGeDR9sE1LJXkwG6AQSNAMW'], + ['DOGE', 'DOGE', 'DPKKpanH1hMVzdWb2oi126znjruvvGRQzj'], + ['DOGE', 'DOGE', 'DPNqMsW1rotjhCzcbBEXzK3W73DiyzVLYc'], + ['DOGE', 'DOGE', 'DPjAgjrEYTc7RzN3E19sDLrAhRt7DrTTmd'], + ['DOGE', 'DOGE', 'DQYqMYmQCfL2eDLmMXV5uvCPkN6Vv4KtSx'], + ['DOGE', 'DOGE', 'DQkwksfYrAWAR9tRcqygA5pihmnURozxzo'], + ['DOGE', 'DOGE', 'DQnhnNxW89AkFHDsT6aWHim4DvtzwF9sGo'], + ['DOGE', 'DOGE', 'DRuYd74gqPuQD9HKEBDxRr9gSogQmdj9DH'], + ['DOGE', 'DOGE', 'DRweGdMgohChLBn2TamjCNicKYEncRgj5a'], + ['DOGE', 'DOGE', 'DTGrjpvJXQU2zSpUDsnk9b4PAQW5Pwtg4K'], + ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], + ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], + */ + ['DOT', 'BEP2', 'bnb17jky4rwhu9rzgrx7exrfc3pcd5z290ga8qfm0j'], + ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['DOT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['DOT', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['DOT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['DOT', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['DOT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['DOT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['DOT', 'DOT', '13VagdYbCRMSBSbmz4UivPpS9SwmTTRiPtMkjoEHRm8vAkqv '], + ['DOT', 'DOT', '16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD'], + ['DOT', 'DOT', '1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF'], + ['DOT', 'DOT', '1P6bgxZi42kYYV545c3RSp7NJLUgASDpMP1ifXJazVR1e2N '], + ['DOT', 'DOT', '1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7'], + ['DOT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['DOT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['DOT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + // ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], + ['ENJ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['ENJ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['ENJ', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['ENJ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['ETH', 'ARB', '0x1b5b4e441f5a22bfd91b7772c780463f66a74b35'], + ['ETH', 'ARB', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'ARB', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['ETH', 'ARB', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['ETH', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['ETH', 'ARB', '0xf92402bb795fd7cd08fb83839689db79099c8c9c'], + ['ETH', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'BASE', '0x3304e22ddaa22bcdc5fca2269b418046ae7b566a'], + ['ETH', 'BASE', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['ETH', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['ETH', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['ETH', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['ETH', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['ETH', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['ETH', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['ETH', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['ETH', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['ETH', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['ETH', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['ETH', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['ETH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['ETH', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['ETH', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['ETH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['ETH', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], + ['ETH', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['ETH', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['ETH', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['ETH', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['ETH', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['ETH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['ETH', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['ETH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['ETH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'MANTA', '0x3cdfb47b0e910d9190ed788726cd72489bf10499'], + ['ETH', 'MANTA', '0x923fc76cb13a14e5a87843d309c9f401ec498e2d'], + ['ETH', 'MANTA', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['ETH', 'OP', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['ETH', 'OP', '0xf977814e90da44bfa03b6295a0616a897441acec'], +// ['ETH', 'STK', ' 0x0213c67ed78bc280887234fe5ed5e77272465317978ae86c25a71531d9332a2d'], + ['ETH', 'ERA', '0x7aed074ca56f5050d5a2e512ecc5bf7103937d76'], + ['ETH', 'ERA', '0xa84fd90d8640fa63d194601e0b2d1c9094297083'], + ['ETH', 'ERA', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['FDUSD', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['FDUSD', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['FDUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['FDUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['FDUSD', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['FDUSD', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['FDUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['FDUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['FDUSD', 'OPBNB', '0x001ceb373c83ae75b9f5cf78fc2aba3e185d09e2'], + ['FDUSD', 'OPBNB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'ARB', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['GRT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['GRT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['GRT', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['GRT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['GRT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['GRT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['GRT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['HFT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['HFT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['HFT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['HFT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['HFT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['HFT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['HFT', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['HFT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['HFT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['LINK', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['LINK', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['LINK', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['LINK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LINK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['LINK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['LINK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['LINK', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['LINK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['LINK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['LTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['LTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['LTC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['LTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['LTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['LTC', 'LTC', 'LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm'], + ['LTC', 'LTC', 'LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN'], + ['LTC', 'LTC', 'LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq'], + ['LTC', 'LTC', 'M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua'], + ['LTC', 'LTC', 'MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k'], + ['LTC', 'LTC', 'MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z'], + ['LTC', 'LTC', 'MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ'], + ['LTC', 'LTC', 'MEhAHYijouCinmGKL6n1bRTXYznH1X24rD'], + ['LTC', 'LTC', 'MG9aFQgTH5C4UPcur8S2bh5duKYMfaJFUS'], + ['LTC', 'LTC', 'MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F'], + ['LTC', 'LTC', 'MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3'], + ['LTC', 'LTC', 'MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N'], + ['LTC', 'LTC', 'MLjHNHuJy8VxxPzkL2MmYNoxG8b6BH4J4R'], + ['LTC', 'LTC', 'MLkNzCps6cXou2DELVfxDuRC4uZGwr397o'], + ['LTC', 'LTC', 'MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS'], + ['LTC', 'LTC', 'MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf'], + ['LTC', 'LTC', 'MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67'], + ['LTC', 'LTC', 'MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy'], + ['MASK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['MASK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['MASK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MASK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['MASK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['MASK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MASK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['MASK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MATIC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['MATIC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['MATIC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['MATIC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['MATIC', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['MATIC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['MATIC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['MATIC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['MATIC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['MATIC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['MATIC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['MATIC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['MATIC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MATIC', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['MATIC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['MATIC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['MATIC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['MATIC', 'MATIC', '0x082489a616ab4d46d1947ee3f912e080815b08da'], + ['MATIC', 'MATIC', '0x290275e3db66394c52272398959845170e4dcb88'], + ['MATIC', 'MATIC', '0x417850c1cd0fb428eb63649e9dc4c78ede9a34e8 '], + ['MATIC', 'MATIC', '0x505e71695e9bc45943c58adec1650577bca68fd9'], + ['MATIC', 'MATIC', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['MATIC', 'MATIC', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['MATIC', 'MATIC', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['MATIC', 'MATIC', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['MATIC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['MATIC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['OP', 'OP', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['OP', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['OP', 'OP', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SHIB', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['SHIB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['SHIB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['SHIB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['SHIB', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['SHIB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['SHIB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['SHIB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['SHIB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['SHIB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SHIB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['SHIB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['SHIB', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], + ['SHIB', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['SHIB', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['SHIB', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], + ['SHIB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['SHIB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SOL', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['SOL', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['SOL', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['SOL', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['SOL', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['SOL', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['SOL', 'SOL', '28nYGHJyUVcVdxZtzKByBXEj127XnrUkrE3VaGuWj1ZU '], + ['SOL', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['SOL', 'SOL', '3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u'], + ['SOL', 'SOL', '3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E'], + ['SOL', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['SOL', 'SOL', '6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U'], + ['SOL', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['SOL', 'SOL', 'BZ3kabSsMzbuJUguYxtmkRtzw7ACqw1DUMH8PcbvXiUr '], + ['SOL', 'SOL', 'HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664'], + ['SSV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['SSV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['SSV', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['SSV', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['TUSD', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['TUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['TUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['TUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['TUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['TUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['TUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['TUSD', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['TUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['TUSD', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['UNI', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['UNI', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['UNI', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['UNI', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['UNI', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['UNI', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['UNI', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['UNI', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'ALGO', 'MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI'], + ['USDC', 'ALGO', 'QYXDGS2XJJT7QNR6EJ2YHNZFONU6ROFM6BKTBNVT63ZXQ5OC6IYSPNDJ4U'], + ['USDC', 'ARB', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['USDC', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], + ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['USDC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['USDC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['USDC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDC', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['USDC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['USDC', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['USDC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['USDC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['USDC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['USDC', 'NEAR', '5c33c6218d47e00ef229f60da78d0897e1ee9665312550b8afd5f9c7bc6957d2'], + ['USDC', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + // ['USDC', 'RON', '0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3'], + ['USDC', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['USDC', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['USDC', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['USDC', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn '], + ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['USDC', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9 '], + // ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], + // ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], + ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], + ['USDT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], + ['USDT', 'AVAX', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDT', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], + ['USDT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['USDT', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], + ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], + ['USDT', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], + ['USDT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['USDT', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], + ['USDT', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], + ['USDT', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], + ['USDT', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], + ['USDT', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], + ['USDT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDT', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], + ['USDT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['USDT', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], + ['USDT', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['USDT', 'BEP20', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['USDT', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDT', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], + ['USDT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['USDT', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['USDT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['USDT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['USDT', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['USDT', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], + ['USDT', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDT', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], + ['USDT', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['USDT', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], + ['USDT', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['USDT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'MATIC', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDT', 'MATIC', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], + ['USDT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'OPBNB', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], + ['USDT', 'OP', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['USDT', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], + ['USDT', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], + ['USDT', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], + ['USDT', 'TRX', 'TAzsQ9Gx8eqFNFSKbeXrbi45CuVPHzA8wr'], + ['USDT', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], + ['USDT', 'TRX', 'TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo'], + ['USDT', 'TRX', 'TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe'], + ['USDT', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn '], + ['USDT', 'TRX', 'TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9'], + ['USDT', 'TRX', 'TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY'], + ['USDT', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], + ['USDT', 'TRX', 'TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm'], + ['USDT', 'TRX', 'TRGCqsUXeynKTgynp2j9g3sg7Nux2KtB3u'], + ['USDT', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9 '], + ['USDT', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], + ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], + ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], + ['WRX', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['WRX', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['WRX', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['WRX', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['WRX', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['WRX', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['WRX', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['WRX', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['WRX', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], + ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['XRP', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['XRP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['XRP', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], + ['XRP', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['XRP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['XRP', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], + ['XRP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], + ['XRP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['XRP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], + ['XRP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['XRP', 'XRP', 'rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A'], + ['XRP', 'XRP', 'rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr'], + ['XRP', 'XRP', 'rDecw8UhrZZUiaWc91e571b3TL41MUioh7 '], + ['XRP', 'XRP', 'rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ'], + ['XRP', 'XRP', 'rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK'], + ['XRP', 'XRP', 'rP3mUZyCDzZkTSd1VHoBbFt8HGm8fyq8qV'], + ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], + ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], + ['XRP', 'XRP', 'rpmxpWis42eYV4oMhyxJNSzrLRdacJVooa '], + ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], ] function getAddresses(chain) { @@ -573,5 +676,19 @@ module.exports = { }, era: { owners: getOwners('ERA') - } + }, + manta: { + owners: getOwners('MANTA') + }, + /* + starknet: { + owners: getOwners('STK') + }, + */ + op_bnb: { + owners: getOwners('OPBNB') + }, + near: { + owners: getOwners('NEAR') + }, } \ No newline at end of file From 9d9d8432ed88f29749baae0dac7c238dc10b0701 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 7 Apr 2024 22:55:15 +0200 Subject: [PATCH 1121/2004] Fix STK address and replace null values in Starknet module --- projects/binance/config.js | 4 +--- projects/helper/chain/starknet.js | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index 9a2facb7740..cecce2474c7 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -281,7 +281,7 @@ const assetList = [ ['ETH', 'OP', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], ['ETH', 'OP', '0xf977814e90da44bfa03b6295a0616a897441acec'], -// ['ETH', 'STK', ' 0x0213c67ed78bc280887234fe5ed5e77272465317978ae86c25a71531d9332a2d'], + ['ETH', 'STK', '0x0213c67ed78bc280887234fe5ed5e77272465317978ae86c25a71531d9332a2d'], ['ETH', 'ERA', '0x7aed074ca56f5050d5a2e512ecc5bf7103937d76'], ['ETH', 'ERA', '0xa84fd90d8640fa63d194601e0b2d1c9094297083'], ['ETH', 'ERA', '0xf977814e90da44bfa03b6295a0616a897441acec'], @@ -680,11 +680,9 @@ module.exports = { manta: { owners: getOwners('MANTA') }, - /* starknet: { owners: getOwners('STK') }, - */ op_bnb: { owners: getOwners('OPBNB') }, diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index 32fd3637706..6f61aac4c85 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -10,6 +10,7 @@ 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)) @@ -103,8 +104,15 @@ const balanceOfABI = { "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]]) + console.log({ owner, owners, tokens, tokensAndOwners, blacklistedTokens, token, ownerTokens }) if (token) tokens = [token] if (owner) owners = [owner] From 2ed4510f40de932650041a69aca1f81514d4853a Mon Sep 17 00:00:00 2001 From: TJ <58812386+TJ-2@users.noreply.github.com> Date: Sun, 7 Apr 2024 22:11:30 +0100 Subject: [PATCH 1122/2004] Meridian Lend: Add Fuse Network (#9731) --- projects/meridian-lend/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/meridian-lend/index.js b/projects/meridian-lend/index.js index f948c824a42..ab48dae7a71 100644 --- a/projects/meridian-lend/index.js +++ b/projects/meridian-lend/index.js @@ -15,5 +15,5 @@ function v2(chain, v2Registry) { module.exports = { telos: v2("telos", "0xb84171C0824B4F3C0B415706C99A4A8ED5779b75"), meter: v2("meter", "0x64Be9ee529E555860DA0705819138F41247e76E6"), - + fuse: v2("fuse", "0xbdD3d2f93cc1c6C951342C42Ef0795323CE83719"), } \ No newline at end of file From 60670b654984175e6c9aeb5a74d3d4d6f2a873b7 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Sun, 7 Apr 2024 14:16:32 -0700 Subject: [PATCH 1123/2004] Update config.js (#9724) added thruster --- projects/visor/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/visor/config.js b/projects/visor/config.js index e6f5f87f2c5..8867d5a6616 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -13,7 +13,6 @@ const config = { }, } - /* List of hypervisor registries by chain One chain can have multiple registries for different underlying DEXes */ const HYPE_REGISTRY = { @@ -111,6 +110,7 @@ const HYPE_REGISTRY = { ], blast: [ ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 1727054], // Uniswap + ["0xF44cECB1CF40ee12303E85Eb8651263c01812EaD", 1815717], // Thruster ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster ], }; From 7f5feb8edff869f531be87ed80075f7d1bbad442 Mon Sep 17 00:00:00 2001 From: arcc0s <97156729+arcc0s@users.noreply.github.com> Date: Sun, 7 Apr 2024 23:17:19 +0200 Subject: [PATCH 1124/2004] hallmarks added to amphor adapters (#9723) --- projects/amphor/index.js | 44 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/projects/amphor/index.js b/projects/amphor/index.js index c5500da73cb..55c26fd4ccb 100644 --- a/projects/amphor/index.js +++ b/projects/amphor/index.js @@ -1,21 +1,29 @@ -const { sumERC4626VaultsExport } = require('../helper/erc4626') +const { sumERC4626VaultsExport } = require('../helper/erc4626'); const config = { - ethereum: { - lvTokens: { - "ampr-LP-USD": "0x3b022EdECD65b63288704a6fa33A8B9185b5096b", - "ampr-LP-ETH": "0x2791EB5807D69Fe10C02eED6B4DC12baC0701744", - "ampr-LP-BTC": "0xC4A324fDF8a2495776B4d6cA46599B5a52f96489", - "amprPTweETH": "0xf97ecda5F9ff31d83f635a6EA70D2D3B9C8f2e00", - "amprPTrsETH": "0x0498b85FB4EC85EF5EFe82513aa9DaF767358A15", - "amprPTezETH": "0x920F17e741029D904936c58a545DFFC72f82C079" - } - } -} + ethereum: { + lvTokens: { + 'ampr-LP-USD': '0x3b022EdECD65b63288704a6fa33A8B9185b5096b', + 'ampr-LP-ETH': '0x2791EB5807D69Fe10C02eED6B4DC12baC0701744', + 'ampr-LP-BTC': '0xC4A324fDF8a2495776B4d6cA46599B5a52f96489', + amprPTweETH: '0xf97ecda5F9ff31d83f635a6EA70D2D3B9C8f2e00', + amprPTrsETH: '0x0498b85FB4EC85EF5EFe82513aa9DaF767358A15', + amprPTezETH: '0x920F17e741029D904936c58a545DFFC72f82C079', + }, + }, +}; -Object.keys(config).forEach(chain => { - const { lvTokens } = config[chain] - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ vaults: Object.values(lvTokens), tokenAbi: 'asset', balanceAbi: 'totalAssets'}) - } -}) +Object.keys(config).forEach((chain) => { + const { lvTokens } = config[chain]; + module.exports[chain] = { + tvl: sumERC4626VaultsExport({ + vaults: Object.values(lvTokens), + tokenAbi: 'asset', + balanceAbi: 'totalAssets', + }), + hallmarks: [ + [1710115200, "Beta test closing"], + [1712361600, "LRT vault release"], + ], + }; +}); From db9cea4e1d3fadae07d04890f483caa70be4ad7d Mon Sep 17 00:00:00 2001 From: DackieSwap <132213730+DackieSwap@users.noreply.github.com> Date: Mon, 8 Apr 2024 06:18:57 +0900 Subject: [PATCH 1125/2004] DackieSwap merge Mode Network chain (#9722) * update staking dackie * update arbitrum * update blast * update blast factory * update inevm factory * update mode factory --------- Co-authored-by: andreapn.eth --- projects/dackieswap-v2/index.js | 7 +++++++ projects/dackieswap/index.js | 1 + 2 files changed, 8 insertions(+) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index 13d96e3f729..dedc33d3220 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -45,5 +45,12 @@ module.exports = { useDefaultCoreAssets: true, fetchBalances: true }) + }, + mode: { + tvl: getUniTVL({ + factory: "0x757cD583004400ee67e5cC3c7A60C6a62E3F6d30", + useDefaultCoreAssets: true, + fetchBalances: true + }) } }; \ No newline at end of file diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index 71aec8d493b..78cca08f65a 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -6,4 +6,5 @@ module.exports = uniV3Export({ arbitrum: { factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", fromBlock: 180722131 }, blast: { factory: "0xd1575B2e0C82fba9Eddc3de9c9AAF923AFA670cC", fromBlock: 286237 }, inevm: { factory: "0xf79A36F6f440392C63AD61252a64d5d3C43F860D", fromBlock: 291933 }, + mode: { factory: "0xc6f3966E5D08Ced98aC30f8B65BeAB5882Be54C7", fromBlock: 6102035 }, }); \ No newline at end of file From 770f6bc89174396726756ab0033c302980e81973 Mon Sep 17 00:00:00 2001 From: getUnrekt <75529443+getunrekt@users.noreply.github.com> Date: Mon, 8 Apr 2024 05:20:51 +0800 Subject: [PATCH 1126/2004] add linea chain for acryptos protocol (#9719) * add base chain to acryptos protocol * add linea chain to acryptos --- projects/acryptos/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/acryptos/index.js b/projects/acryptos/index.js index bcafde6c529..aedc5d0b554 100644 --- a/projects/acryptos/index.js +++ b/projects/acryptos/index.js @@ -66,6 +66,9 @@ module.exports = { base:{ tvl: fetchallchain(8453), }, + linea:{ + tvl: fetchallchain(59144), + }, harmony: { tvl: fetchallchain(1666600000), } From a8af5e1f8da9603fe9ea9a01a783162ccffa8e2a Mon Sep 17 00:00:00 2001 From: alkinemk <71387893+alkinemk@users.noreply.github.com> Date: Mon, 8 Apr 2024 00:22:08 +0300 Subject: [PATCH 1127/2004] feat: mvsp support (#9718) --- projects/sanctum-validator-lsts/index.js | 31 +++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/projects/sanctum-validator-lsts/index.js b/projects/sanctum-validator-lsts/index.js index 6750b16dc16..7b5050761fc 100644 --- a/projects/sanctum-validator-lsts/index.js +++ b/projects/sanctum-validator-lsts/index.js @@ -5,8 +5,8 @@ async function tvl() { // https://github.com/igneous-labs/sanctum-lst-list const connection = getConnection(); - // get sanctum stake pool pools - const poolAccounts = await connection.getParsedProgramAccounts(new PublicKey("SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"), { + // get sanctum single validator stake pools (SVSP) + const singleValidatorStakePoolAccounts = await connection.getParsedProgramAccounts(new PublicKey("SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"), { filters: [ { dataSize: 611, // number of bytes @@ -14,24 +14,33 @@ async function tvl() { ], }) - // decode pool data - const poolAccountsDecoded = poolAccounts.map(poolAccount => decodeAccount("scnStakePool", poolAccount.account)) + // get sanctum multiple validators stake pools (MVSP) + const multipleValidatorStakePoolAccounts = await connection.getParsedProgramAccounts(new PublicKey("SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"), { + filters: [ + { + dataSize: 611, // number of bytes + }, + ], + }) - const poolMints = poolAccountsDecoded.map(value => value.poolMint) + // join SVSP and MVSP and decode pool data + const allValidatorStakePoolAccounts = singleValidatorStakePoolAccounts.push(...multipleValidatorStakePoolAccounts).map(poolAccount => decodeAccount("scnStakePool", poolAccount.account)) - // get all lsts inside infinity + // 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 + // decode state list data and get Infinity LST mints const infinityLstsAccount = decodeAccount("sanctumValidatorLsts", lstStateListAccount); - // filter out non sanctum deployed lsts + // filter out non-sanctum LSTs const sanctumDeployedLstsInfinity = infinityLstsAccount.filter(item => poolMints.find(mint => mint.equals(item.mint))); - - const totalSanctumDeployedLstsStake = poolAccountsDecoded.map(value => value.totalStakeLamports / 1e9).reduce((acc, curr) => acc + curr) + 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 { @@ -42,7 +51,7 @@ async function tvl() { module.exports = { timetravel: false, methodology: - "Uses the SPL Stake Pool SDK to fetch the total supply of deposited SOL into the various Sanctum-powered stake pools", + "Uses GPA to fetch the total supply of deposited SOL into the various Sanctum LSTs", solana: { tvl, }, From 6a71b131c297d1f6a8abdb4cb250bc72a3df3af5 Mon Sep 17 00:00:00 2001 From: bustadefi <165962584+bustadefi@users.noreply.github.com> Date: Mon, 8 Apr 2024 00:22:23 +0300 Subject: [PATCH 1128/2004] add tvl adapter for busta finance (#9725) --- projects/busta/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/busta/index.js diff --git a/projects/busta/index.js b/projects/busta/index.js new file mode 100644 index 00000000000..fcde9af3122 --- /dev/null +++ b/projects/busta/index.js @@ -0,0 +1,6 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport( + "bsc", + "0xCdAfc63DE847bBfb7E6B56B21aad12f8F6D877be" +); From 25e3d96cc1c521b1f761ad8cae2a5070b00f7f3a Mon Sep 17 00:00:00 2001 From: Dave Nilosek Date: Sun, 7 Apr 2024 18:27:30 -0700 Subject: [PATCH 1129/2004] Add new vaults and Update Readability (#9726) * Add all contracts * Cleanup wasabi abi * Simplification of TVL measurement as requested in PR --- projects/juice-finance/index.js | 82 +++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index b7a18220238..4a4205211f1 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -1,39 +1,61 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokens2 } = require('../helper/unwrapLPs') -const LENDING_POOL_USDB = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a" -const LENDING_POOL_WETH = "0x44f33bC796f7d3df55040cd3C631628B560715C2"; -const COLLATERAL_MANAGER = "0x6301795aa55B90427CF74C18C8636E0443F2100b" -const COLLATERAL_MANAGER_V2 = "0x105e285f1a2370D325046fed1424D4e73F6Fa2B0" -const WETH_COLLATERAL_MANAGER = "0x23eBa06981B5c2a6f1a985BdCE41BD64D18e6dFA" -const EZETH_COLLATERAL_MANAGER = "0xc81A630806d1aF3fd7509187E1AfC501Fd46e818" -const MUNCHABLE_WETH_COLLATERAL_MANAGER = "0x4A355D57fc1A5eEB33C0a19539744A2144220027" +const ADDRESSES = require("../helper/coreAssets.json"); +const { sumTokens2 } = require("../helper/unwrapLPs"); -const EZETH = "0x2416092f143378750bb29b79eD961ab195CcEea5" +// Tokens +const EZETH = "0x2416092f143378750bb29b79eD961ab195CcEea5"; -const MUNCHABLE_LOCKDROP_VAULT = "0x01F7dF622DDE3B7d234aadBE282DDA24CEAd9D21" +// Lending pools +const LENDING_POOL_USDB = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a"; +const LENDING_POOL_WETH = "0x44f33bC796f7d3df55040cd3C631628B560715C2"; -const vaults = [ - ["0x12c69BFA3fb3CbA75a1DEFA6e976B87E233fc7df", "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], - ['0x4bed2a922654cacc2be974689619768fabf24855', "0x0CA56aa647E83A8F0a5f7a81a2fdcA393bC68D78"], - [EZETH, '0x741011f52B7499ca951f8b8Ee547DD3Cdd813Fda'], -] +// 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 wethHolders = [LENDING_POOL_WETH, COLLATERAL_MANAGER, COLLATERAL_MANAGER_V2, WETH_COLLATERAL_MANAGER, MUNCHABLE_WETH_COLLATERAL_MANAGER, ].map(a => [ADDRESSES.blast.WETH, a]) +const wethCollateralManagers = [ + COLLATERAL_MANAGER, + COLLATERAL_MANAGER_V2, + WETH_COLLATERAL_MANAGER, + MUNCHABLE_WETH_COLLATERAL_MANAGER, +].map((a) => [ADDRESSES.blast.WETH, a]); async function tvl(api) { - const thrusterv2LPs = [ // [LP, contract] - ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', '0x8034b01555487C26D4e21F4E33b7A30fbc90d181'], - ['0x12c69bfa3fb3cba75a1defa6e976b87e233fc7df', "0x72E4ce9b7cC5d9C017F64ad58e512C253a11d30a"], - ] - 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) - await sumTokens2({ api, resolveLP: true, tokensAndOwners: [[ADDRESSES.blast.USDB, LENDING_POOL_USDB], [EZETH, EZETH_COLLATERAL_MANAGER], ...wethHolders, ...vaults], }) + const tokens = await api.multiCall({ + abi: { + inputs: [], + name: "getTotalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + calls: [LENDING_POOL_USDB, LENDING_POOL_WETH], + }); + + api.add(ADDRESSES.blast.USDB, tokens[0]); + api.add(ADDRESSES.blast.WETH, tokens[1]); + + await sumTokens2({ + api, + resolveLP: true, + tokensAndOwners: [ + [EZETH, EZETH_COLLATERAL_MANAGER], + ...wethCollateralManagers, + ], + }); } module.exports = { - blast: { - tvl - } -} + blast: { + tvl, + }, +}; From 0923f0c91730535b2fdb328c24a250d302badf3d Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Mon, 8 Apr 2024 13:06:57 +0100 Subject: [PATCH 1130/2004] rsk bridge --- projects/rootstock-bridge/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/rootstock-bridge/index.js diff --git a/projects/rootstock-bridge/index.js b/projects/rootstock-bridge/index.js new file mode 100644 index 00000000000..d8b835b61c2 --- /dev/null +++ b/projects/rootstock-bridge/index.js @@ -0,0 +1,22 @@ +const { getBalance } = require("@defillama/sdk/build/eth"); +const { getBlock } = require("@defillama/sdk/build/util/blocks"); + +module.exports = { + rsk: { + tvl: async (api) => { + const block = (await getBlock("rsk", api.timestamp)).block; + const unminted = + ( + await getBalance({ + target: "0x0000000000000000000000000000000001000006", + chain: api.chain, + block, + }) + ).output / 1e18; + + const minted = 21e6 - unminted; + + return { "coingecko:bitcoin": minted }; + }, + }, +}; From 647d65dcd85d29b74ae6e6dcac05114f385d43cd Mon Sep 17 00:00:00 2001 From: skyge <1506186404li@gmail.com> Date: Mon, 8 Apr 2024 20:31:55 +0800 Subject: [PATCH 1131/2004] :sparkles: Add base network. (#9739) --- projects/unitus/index.js | 81 ++++++++-------------------------------- 1 file changed, 16 insertions(+), 65 deletions(-) diff --git a/projects/unitus/index.js b/projects/unitus/index.js index e1f56688c5c..16a937ec8d6 100644 --- a/projects/unitus/index.js +++ b/projects/unitus/index.js @@ -1,7 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); - -const abi = require('../dforce/abi.json'); const { compoundExports2 } = require('../helper/compound') const { generalizedChainExports } = require('../helper/exports') @@ -11,94 +8,48 @@ let allControllers = { arbitrum: ["0x8E7e9eA9023B81457Ae7E6D2a51b003D421E5408"], optimism: ["0xA300A84D8970718Dac32f54F61Bd568142d8BCF4"], polygon: ["0x52eaCd19E38D501D006D2023C813d7E37F025f37"], - conflux: ["0xA377eCF53253275125D0a150aF195186271f6a56"] -}; - -let yieldMarkets = { - ethereum: [ - "0x02285AcaafEB533e03A7306C55EC031297df9224", // dDAI - "0x109917F7C3b6174096f9E1744e41ac073b3E1F72", // dUSDx - "0x16c9cF62d8daC4a38FB50Ae5fa5d51E9170F3179", // dUSDC - "0x868277d475E0e475E38EC5CdA2d9C83B5E1D9fc8" // dUSDT - ], - bsc: [ - "0xce14792a280b20c4f8E1ae76805a6dfBe95729f5", // dBUSD - "0x4E0B5BaFC52D09A8F18eA0b7a6A7dc23A1096f99", // dDAI - "0x6c0F322442D10269Dd557C6e3A56dCC3a1198524", // dUSDC - "0x6199cC917C12E4735B4e9cEfbe29E9F0F75Af9E5" // dUSDT - ] + conflux: ["0xA377eCF53253275125D0a150aF195186271f6a56"], + base: ["0xBae8d153331129EB40E390A7Dd485363135fcE22"], }; 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 + "0x1AdC34Af68e970a93062b67344269fD341979eb0", // iUSX + "0x44c324970e5CbC5D4C3F3B7604CbC6640C2dcFbF", // iEUX ], // Optimism optimism: [ - "0x7e7e1d8757b241aa6791c089314604027544ce43" // iUSX + "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 + "0x7B933e1c1F44bE9Fb111d87501bAADA7C8518aBe", // iUSX + "0x983A727Aa3491AB251780A13acb5e876D3f2B1d8", // iEUX ], // Polygon polygon: [ - "0xc171ebe1a2873f042f1dddd9327d00527ca29882", // iUSX - "0x448bbbdb706cd0a6ab74fa3d1157e7a33dd3a4a8" + "0xc171EBE1A2873F042F1dDdd9327D00527CA29882", // iUSX + "0x15962427A9795005c640A6BF7f99c2BA1531aD6d", // iEUX ], // Arbitrum arbitrum: [ - "0x0385f851060c09a552f1a28ea3f612660256cbaa", // iUSX - "0x5675546eb94c2c256e6d7c3f7dcab59bea3b0b8b", // iEUX - "0xc2125882318d04d266720b598d620f28222f3abd" // iEUX - ], - avax: [ - "0x73c01b355f2147e5ff315680e068354d6344eb0b" // iUSX - ], - kava: [ - "0x9787af345e765a3fbf0f881c49f8a6830d94a514" // iUSX + "0x0385F851060c09A552F1A28Ea3f612660256cBAA", // iUSX + "0x5675546Eb94c2c256e6d7c3F7DcAB59bEa3B0B8B", // iEUX ], conflux: [ "0x6f87b39a2e36F205706921d81a6861B655db6358" // iUSX - ] -}; - -const USXs = { - "ethereum": ADDRESSES.ethereum.USX, - "bsc": "0xb5102cee1528ce2c760893034a4603663495fd72", - "arbitrum": "0x641441c631e2f909700d2f41fd87f0aa6a6b4edb", - "polygon": "0xCf66EB3D546F0415b368d98A95EAF56DeD7aA752", - "avax": "0x853ea32391AaA14c112C645FD20BA389aB25C5e0", - "kava": ADDRESSES.kava.USX, - "conflux": "0x422a86f57b6b6F1e557d406331c25EEeD075E7aA" + ], + base: [ + "0x82AFc965E4E18009DD8d5AF05cfAa99bF0E605df", // iUSX + ], }; - 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, + comptroller, abis: { getAllMarkets: 'address[]:getAlliTokens' }, blacklistedTokens, })).map(i => borrowed ? i.borrowed : i.tvl) return sdk.util.sumChainTvls(res) } From 13e42a27a21bd1b1663516225a66ccbcfeb41e42 Mon Sep 17 00:00:00 2001 From: fextr <34183870+fextr@users.noreply.github.com> Date: Mon, 8 Apr 2024 16:32:31 +0400 Subject: [PATCH 1132/2004] add zunETH & zunETHAps contracts to zunami (#9737) --- projects/zunami/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/zunami/index.js b/projects/zunami/index.js index c961c6bd981..4c2293a0efc 100644 --- a/projects/zunami/index.js +++ b/projects/zunami/index.js @@ -3,10 +3,14 @@ const abi = require("./abi.json"); const zunUSD = "0x8C0D76C9B18779665475F3E212D9Ca1Ed6A1A0e6"; const zunUSDAps = "0x28e487bbF6b64867C29e61DccbCD17aB64082889"; +const zunETH = "0xc2e660C62F72c2ad35AcE6DB78a616215E2F2222"; +const zunETHAps = "0x5Ab3aa11a40eB34f1d2733f08596532871bd28e2"; async function ethTvl(api) { api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunUSD, })) api.add(ADDRESSES.ethereum.DAI, await api.call({ abi: abi.totalHoldings, target: zunUSDAps, })) + api.add(ADDRESSES.ethereum.WETH, await api.call({ abi: abi.totalHoldings, target: zunETH, })) + api.add(ADDRESSES.ethereum.WETH, await api.call({ abi: abi.totalHoldings, target: zunETHAps, })) } module.exports = { From af3020621c8fb05d86eaf6ab34a1da79b628ec8f Mon Sep 17 00:00:00 2001 From: tec05 <73139131+tec05@users.noreply.github.com> Date: Mon, 8 Apr 2024 06:14:08 -0700 Subject: [PATCH 1133/2004] Add TVL for Archly on zkSync Era (#9744) --- projects/archly-finance-v2/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js index 0b7b1cb5b86..c7b2c60db20 100644 --- a/projects/archly-finance-v2/index.js +++ b/projects/archly-finance-v2/index.js @@ -4,6 +4,10 @@ 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 tvl = getUniTVL({ factory: ARCHLY_V2_FACTORY, useDefaultCoreAssets: true, hasStablePools: true, }) const config = { @@ -39,3 +43,9 @@ Object.keys(config).forEach(chain => { 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, }) +} \ No newline at end of file From 721b2811a2a4ba75930e72bd95b8ad390dd5f1ef Mon Sep 17 00:00:00 2001 From: mobydev01 <158276749+mobydev01@users.noreply.github.com> Date: Mon, 8 Apr 2024 22:19:32 +0900 Subject: [PATCH 1134/2004] Update index.js (#9734) Co-authored-by: mobydev01 --- projects/moby/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/moby/index.js diff --git a/projects/moby/index.js b/projects/moby/index.js new file mode 100644 index 00000000000..fb8b241eba1 --- /dev/null +++ b/projects/moby/index.js @@ -0,0 +1,19 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ + owners: [ + "0xd4D23332E6256B751E2Da0B9C0b3a70CFe9180C0", // s vault + "0x9e34F79E39AddB64f4874203066fFDdD6Ab63a41", // m vault + "0x3B22F749f082bC33Af33751cBD53d21215FC71d1", // l vault + ], + tokens: [ + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.WBTC, + ] + }) + } +} \ No newline at end of file From bea7273d6b8161d5b47234bccf2e20a9f84f532a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 Apr 2024 15:37:48 +0200 Subject: [PATCH 1135/2004] Add vaults and staking from fMoney (#9746) * added vaults and staking from fMoney * minor fix --------- Co-authored-by: 0xSuku <84302571+0xSuku@users.noreply.github.com> --- projects/fMoney/index.js | 24 ++++++++++++++++++++++++ projects/helper/unwrapLPs.js | 10 ++++++++-- test.js | 6 ++++-- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 projects/fMoney/index.js diff --git a/projects/fMoney/index.js b/projects/fMoney/index.js new file mode 100644 index 00000000000..62d674259f6 --- /dev/null +++ b/projects/fMoney/index.js @@ -0,0 +1,24 @@ + +const { compoundExports2 } = require('../helper/compound') +const { sumBalancerLps } = require('../helper/unwrapLPs') + +const addresses = { + beetsVault: "0x8166994d9ebBe5829EC86Bd81258149B87faCfd3", + fuBUX: "0xcf211d1022f0B1aEC7CbAdCa1472fc20E6dFe3c6", + fBUX80lzUSDC20: "0x2ddcd6916ee7ccc6300cb0fe2919a341be0ee8bb" +} + +async function staking(api) { + return sumBalancerLps({}, [[addresses.fBUX80lzUSDC20, addresses.beetsVault]], 0, 0, undefined, api) +} + +const config = { + fantom: '0xB911d8064c0AA338241f349eD802Ad4bae6ec034', +} + + +Object.keys(config).forEach(chain => { + module.exports[chain] = compoundExports2({ comptroller: config[chain] }) +}); + +module.exports.fantom.staking = staking \ No newline at end of file diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 336deaeb27b..ecfd468a7c3 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -341,7 +341,13 @@ async function sumTokensAndLPs(balances, tokens, block, chain = "ethereum", tran } const balancerVault = "0xBA12222222228d8Ba445958a75a0704d566BF2C8" -async function sumBalancerLps(balances, tokensAndOwners, block, chain, transformAddress) { +async function sumBalancerLps(balances, tokensAndOwners, block, chain, transformAddress, api) { + if (api) { + balances = api.getBalances() + chain = api.chain + block = api.block + } + let vault = chain === 'fantom' ? '0x20dd72Ed959b6147912C2e529F0a0C651c33c9ce' : balancerVault if (!transformAddress) transformAddress = await getChainTransform(chain) const poolIds = sdk.api.abi.multiCall({ calls: tokensAndOwners.map(t => ({ @@ -370,7 +376,7 @@ async function sumBalancerLps(balances, tokensAndOwners, block, chain, transform }); const balancerPoolsPromise = sdk.api.abi.multiCall({ calls: (await poolIds).output.map(o => ({ - target: balancerVault, + target: vault, params: o.output })), abi: getPoolTokens, diff --git a/test.js b/test.js index 994074ac0a0..071450af080 100644 --- a/test.js +++ b/test.js @@ -208,9 +208,11 @@ sdk.api.abi.call = async (...args) => { console.log("Total:", humanizeNumber(usdTvls[chain]), "\n"); }); console.log(`------ TVL ------`); - Object.entries(usdTvls).forEach(([chain, usdTvl]) => { + const usdVals = Object.entries(usdTvls) + usdVals.sort((a, b) => b[1] - a[1]) + usdVals.forEach(([chain, usdTvl]) => { if (chain !== "tvl") { - console.log(chain.padEnd(25, " "), humanizeNumber(usdTvl)); + console.log(chain.padEnd(25, " "), humanizeNumber(Math.round(usdTvl))); } }); console.log("\ntotal".padEnd(25, " "), humanizeNumber(usdTvls.tvl), "\n"); From 6ef84dd7524ac60d0452a8b2a854647f863313fa Mon Sep 17 00:00:00 2001 From: leaperfinance <162426556+leaperfinance@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:50:16 +0800 Subject: [PATCH 1136/2004] Add Leaper Finance (#9736) --- projects/LeaperFinance/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/LeaperFinance/index.js diff --git a/projects/LeaperFinance/index.js b/projects/LeaperFinance/index.js new file mode 100644 index 00000000000..ecbee5999f0 --- /dev/null +++ b/projects/LeaperFinance/index.js @@ -0,0 +1,27 @@ +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) }, } +]) From 82111f5911745dc6d54b4a083a90dcfe9a336c29 Mon Sep 17 00:00:00 2001 From: vspaxo <110825143+vspaxo@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:23:01 +0530 Subject: [PATCH 1137/2004] Update staking TVL (#9745) * Update staking * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/paxo-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/paxo-finance/index.js b/projects/paxo-finance/index.js index adb4f975b4e..90713655572 100644 --- a/projects/paxo-finance/index.js +++ b/projects/paxo-finance/index.js @@ -1,9 +1,12 @@ const { compoundExports } = require('../helper/compound') const { lendingMarket } = require('../helper/methodologies') +const { staking } = require("../helper/staking"); module.exports = { polygon: compoundExports('0x1eDf64B621F17dc45c82a65E1312E8df988A94D3', 'polygon'), xdc: compoundExports('0x301C76e7b60e9824E32991B8F29e1c4a03B4F65b', 'xdc'), linea: compoundExports('0x301C76e7b60e9824E32991B8F29e1c4a03B4F65b', 'linea'), 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.`, -} \ No newline at end of file +} + +module.exports.polygon.staking = staking( "0xC1704c99278c3e5A91AfB117301eA61B003Aa650" "0xfFA188493C15DfAf2C206c97D8633377847b6a52",) From f1a5081fa1b63bb9c0436c120cd2da7cc3c0aeee Mon Sep 17 00:00:00 2001 From: The Unconstrained Mind <126948085+TheUnconstrainedMind@users.noreply.github.com> Date: Mon, 8 Apr 2024 17:54:11 +0400 Subject: [PATCH 1138/2004] Update Amet Finance (#9733) * updated Amet Finance * update existing chains --- projects/amet-finance/index.js | 39 ++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/projects/amet-finance/index.js b/projects/amet-finance/index.js index 4ac1b07bf00..96729b0e4f9 100644 --- a/projects/amet-finance/index.js +++ b/projects/amet-finance/index.js @@ -1,40 +1,43 @@ const { getLogs } = require("../helper/cache/getLogs"); -const issuerEventABI = "event Create(address indexed issuer, address indexed contractAddress)"; +const issuerEventABI = "event BondIssued(address bondAddress)"; const config = { + base: { + issuer: "0xE67BE43603260b0AD38bBfe89FcC6fDe6741e82A", + fromBlock: 12724500 + }, manta: { - issuer: "0x875B73364432d14EEb99eb0eAC6bAaCbEe6829E2", - fromBlock: 574206 + issuer: null, }, polygon: { - issuer: "0x875B73364432d14EEb99eb0eAC6bAaCbEe6829E2", - fromBlock: 50204821 + issuer: null, }, polygon_zkevm: { - issuer: "0x875B73364432d14EEb99eb0eAC6bAaCbEe6829E2", - fromBlock: 7860004 + issuer: null, } }; +const FixedFlexIssuerABI = { + payoutToken: "function payoutToken() view returns (address)" +}; + + async function tvl(api) { const { issuer, fromBlock } = config[api.chain]; - const logs = await getLogs({ api, target: issuer, fromBlock, eventAbi: issuerEventABI, onlyArgs: true }); - const calls = logs.map(item => item.contractAddress); - const res = await api.multiCall({ abi: ZCB_Issuer_V1.getInfo, calls }); - const ownerTokens = res.map((v, i) => [[v.interestToken], calls[i]]); - return api.sumTokens({ ownerTokens }); + 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 = { - start: 1700036718369, - methodology: "Get the issuer contract logs to understand what bonds were issued and add what is locked in the contract." + 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 }; }); - -const ZCB_Issuer_V1 = { - getInfo: "function getInfo() view returns (address, uint256, uint256 purchased, uint256, uint256, address investmentToken, uint256 investmentTokenAmount, address interestToken, uint256, uint16, uint256)" -}; From b1b46028626ec88c582a47c3bb39d17676e800b2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 Apr 2024 16:25:36 +0200 Subject: [PATCH 1139/2004] Add Arcadia V2 TVL calculation (#9747) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ add Arcadia V2 TVL * 📝 update methodology * 🎨 prettify & cleanup * 📝 update methodology typo * code refactor --------- Co-authored-by: j-vp Co-authored-by: Jasper <104004836+j-vp@users.noreply.github.com> --- projects/arcadia-finance-v2/index.js | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 projects/arcadia-finance-v2/index.js diff --git a/projects/arcadia-finance-v2/index.js b/projects/arcadia-finance-v2/index.js new file mode 100644 index 00000000000..7341b5eb241 --- /dev/null +++ b/projects/arcadia-finance-v2/index.js @@ -0,0 +1,39 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + base: { + factory: "0xDa14Fdd72345c4d2511357214c5B89A919768e59", + pools: { + wethPool: "0x803ea69c7e87D1d6C86adeB40CB636cC0E6B98E2", + usdcPool: "0x3ec4a293Fb906DD2Cd440c20dECB250DeF141dF1", + }, + uniNFT: '0x03a520b32c04bf3beef7beb72e919cf822ed34f1', + }, +} + +async function tvl(api) { + let { factory, pools, uniNFT, } = config[api.chain]; + pools = Object.values(pools); + const uTokens = await api.multiCall({ abi: "address:asset", calls: pools }) + await api.sumTokens({ tokensAndOwners2: [uTokens, pools] }) + const accounts = await api.fetchList({ lengthAbi: 'allAccountsLength', itemAbi: 'allAccounts', target: factory, }); + + const assetData = await api.multiCall({ abi: abi.assetData, calls: accounts, }); + const ownerTokens = accounts.map((account, i) => [assetData[i].assets, account]) + await api.sumTokens({ ownerTokens, blacklistedTokens: [uniNFT] }) + return sumTokens2({ api, owners: accounts, resolveUniV3: 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 }, + start: 1711389600, // Mon Mar 25 2024 18:00:00 GMT+0000 + hallmarks: [ + [Math.floor(new Date("2024-04-03") / 1e3), "Points program announced."], + ], +}; + +const abi = { + "assetData": "function generateAssetData() view returns (address[] assets, uint256[], uint256[])", +} \ No newline at end of file From 8c0c3ba9f667afaf00f5fae882a4a87407921146 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 Apr 2024 16:28:44 +0200 Subject: [PATCH 1140/2004] bugfix --- projects/paxo-finance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/paxo-finance/index.js b/projects/paxo-finance/index.js index 90713655572..f9dd2cd90e1 100644 --- a/projects/paxo-finance/index.js +++ b/projects/paxo-finance/index.js @@ -9,4 +9,4 @@ 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.`, } -module.exports.polygon.staking = staking( "0xC1704c99278c3e5A91AfB117301eA61B003Aa650" "0xfFA188493C15DfAf2C206c97D8633377847b6a52",) +module.exports.polygon.staking = staking("0xC1704c99278c3e5A91AfB117301eA61B003Aa650", "0xfFA188493C15DfAf2C206c97D8633377847b6a52",) From 85e15330ac5e5aabf6d89818c136883add251d2d Mon Sep 17 00:00:00 2001 From: Ayush Jalan <118442627+ayush-tm@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:32:15 +0530 Subject: [PATCH 1141/2004] Updated Index Contract Address on Arbitrum (#9748) --- projects/astra-dao/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/astra-dao/index.js b/projects/astra-dao/index.js index 4eb365bb0b1..165a0b75d05 100644 --- a/projects/astra-dao/index.js +++ b/projects/astra-dao/index.js @@ -6,7 +6,7 @@ const ASTRA_STAKING_CONTRACT_ARBITRUM = '0x6fE79b531b2b1d5378631B3Ab33B0994E2973 async function tvl(api) { const chain = api.chain let gotError = false; - const indexAddr = chain === 'ethereum' ? '0x17b9B197E422820b3e28629a2BB101949EE7D12B' : '0x8e265fF847CC660Cd89786D4308076a9f921428f'; + const indexAddr = chain === 'ethereum' ? '0x17b9B197E422820b3e28629a2BB101949EE7D12B' : '0xFa3e6EC87941d4e29b1738F8F7f5C27B23Eb3f94'; const stableCoin = await api.call({ abi: 'address:baseStableCoin', target: indexAddr }); let i = 0; const tokens = [stableCoin]; @@ -36,5 +36,7 @@ module.exports = { hallmarks: [ [Math.floor(new Date('2023-09-14') / 1e3), 'Security Incident'], [Math.floor(new Date('2024-01-04') / 1e3), 'Arbitrum Launch'], + [Math.floor(new Date('2024-03-29') / 1e3), 'Shutdown Indices and Distributed User Funds'], + [Math.floor(new Date('2024-04-05') / 1e3), 'Launched New Indices'], ], }; From fdd022a42ec1faafe4fddbd58d8024cfec1a66a2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:09:18 +0200 Subject: [PATCH 1142/2004] fix binance --- projects/binance/config.js | 116 +++++++++++++++--------------- projects/helper/chain/starknet.js | 1 - 2 files changed, 58 insertions(+), 59 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index cecce2474c7..28a252d7e75 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -4,7 +4,7 @@ const { getUniqueAddresses } = require('../helper/utils') // taken from https://www.binance.com/en/blog/community/our-commitment-to-transparency-2895840147147652626 const assetList = [ - ['1INCH', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['1INCH', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['1INCH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['1INCH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['1INCH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], @@ -30,7 +30,7 @@ const assetList = [ ['BNB', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['BNB', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], ['BNB', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['BNB', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['BNB', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['BNB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], ['BNB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], ['BNB', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], @@ -44,7 +44,7 @@ const assetList = [ ['BNB', 'BEP20', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], ['BNB', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], ['BNB', 'BEP20', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['BNB', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['BNB', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['BNB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], @@ -57,10 +57,10 @@ const assetList = [ ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['BTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['BTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['BTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['BTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['BTC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['BTC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['BTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['BTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['BTC', 'BTC', '1PJiGp2yDLvUgqeBsuZVCBADArNsk6XEiw'], @@ -93,8 +93,8 @@ const assetList = [ ['BTC', 'BTC', '3NXCvmLGz9SxYi6TnjbBQfQMcwiZ1iQETa'], ['BTC', 'BTC', '3NjHh71XgjikBoTNYdWgXiNeZcLaKNThgb'], ['BTC', 'BTC', '3Qxak1CZhLyZ7GVckKphLURdLBCjMfz9bA'], - ['BTC', 'BTC', 'bc1q32lyrhp9zpww22phqjwwmelta0c8a5q990ghs6 '], - ['BTC', 'BTC', 'bc1q78ufzeu8w8fwvxuphrdlg446xhyptf28fkatu5 '], + ['BTC', 'BTC', 'bc1q32lyrhp9zpww22phqjwwmelta0c8a5q990ghs6'], + ['BTC', 'BTC', 'bc1q78ufzeu8w8fwvxuphrdlg446xhyptf28fkatu5'], ['BTC', 'BTC', 'bc1q7t9fxfaakmtk8pj7tdxjvwsng6y9x76czuaf5h'], ['BTC', 'BTC', 'bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h'], ['BTC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], @@ -107,7 +107,7 @@ const assetList = [ ['BUSD', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['BUSD', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], ['BUSD', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['BUSD', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['BUSD', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['BUSD', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], ['BUSD', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], ['BUSD', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], @@ -124,7 +124,7 @@ const assetList = [ ['BUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['BUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['BUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['BUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['BUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['BUSD', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], ['BUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['BUSD', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], @@ -149,8 +149,8 @@ const assetList = [ // ['CHZ', 'CHZ2', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['CHZ', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], - ['CHZ', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['CHZ', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], + ['CHZ', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['CHZ', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['CHZ', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['CRV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], @@ -167,11 +167,11 @@ const assetList = [ ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['DOGE', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['DOGE', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['DOGE', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['DOGE', 'BEP20', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['DOGE', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['DOGE', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], /* @@ -216,17 +216,17 @@ const assetList = [ ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['DOT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['DOT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['DOT', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['DOT', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['DOT', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['DOT', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['DOT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['DOT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['DOT', 'DOT', '13VagdYbCRMSBSbmz4UivPpS9SwmTTRiPtMkjoEHRm8vAkqv '], + ['DOT', 'DOT', '13VagdYbCRMSBSbmz4UivPpS9SwmTTRiPtMkjoEHRm8vAkqv'], ['DOT', 'DOT', '16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD'], ['DOT', 'DOT', '1743nDTMZisPgBCYSAgkUn1kVG7MePc9rvMEjoRNf4ipVkF'], - ['DOT', 'DOT', '1P6bgxZi42kYYV545c3RSp7NJLUgASDpMP1ifXJazVR1e2N '], + ['DOT', 'DOT', '1P6bgxZi42kYYV545c3RSp7NJLUgASDpMP1ifXJazVR1e2N'], ['DOT', 'DOT', '1qnJN7FViy3HZaxZK9tGAA71zxHSBeUweirKqCaox4t8GT7'], ['DOT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], @@ -265,14 +265,14 @@ const assetList = [ ['ETH', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['ETH', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['ETH', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], - ['ETH', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['ETH', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['ETH', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], ['ETH', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['ETH', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['ETH', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], ['ETH', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], ['ETH', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['ETH', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['ETH', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['ETH', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['ETH', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['ETH', 'MANTA', '0x3cdfb47b0e910d9190ed788726cd72489bf10499'], @@ -285,7 +285,7 @@ const assetList = [ ['ETH', 'ERA', '0x7aed074ca56f5050d5a2e512ecc5bf7103937d76'], ['ETH', 'ERA', '0xa84fd90d8640fa63d194601e0b2d1c9094297083'], ['ETH', 'ERA', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['FDUSD', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['FDUSD', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['FDUSD', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], @@ -293,7 +293,7 @@ const assetList = [ ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['FDUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['FDUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['FDUSD', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['FDUSD', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], @@ -322,10 +322,10 @@ const assetList = [ ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['LINK', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['LINK', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['LINK', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['LINK', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['LINK', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['LINK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['LINK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], @@ -338,10 +338,10 @@ const assetList = [ ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['LTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['LTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['LTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['LTC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['LTC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['LTC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['LTC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['LTC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['LTC', 'LTC', 'LZEjckteAtWrugbsy9zU8VHEZ4iUiXo9Nm'], @@ -374,34 +374,34 @@ const assetList = [ ['MATIC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['MATIC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], - ['MATIC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['MATIC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['MATIC', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], ['MATIC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], ['MATIC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['MATIC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['MATIC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['MATIC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['MATIC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['MATIC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['MATIC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['MATIC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['MATIC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['MATIC', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], - ['MATIC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['MATIC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['MATIC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['MATIC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['MATIC', 'MATIC', '0x082489a616ab4d46d1947ee3f912e080815b08da'], ['MATIC', 'MATIC', '0x290275e3db66394c52272398959845170e4dcb88'], - ['MATIC', 'MATIC', '0x417850c1cd0fb428eb63649e9dc4c78ede9a34e8 '], + ['MATIC', 'MATIC', '0x417850c1cd0fb428eb63649e9dc4c78ede9a34e8'], ['MATIC', 'MATIC', '0x505e71695e9bc45943c58adec1650577bca68fd9'], ['MATIC', 'MATIC', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['MATIC', 'MATIC', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['MATIC', 'MATIC', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], - ['MATIC', 'MATIC', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['MATIC', 'MATIC', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['MATIC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], ['MATIC', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['OP', 'OP', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['OP', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], ['OP', 'OP', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SHIB', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['SHIB', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['SHIB', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], ['SHIB', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], ['SHIB', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], @@ -419,25 +419,25 @@ const assetList = [ ['SHIB', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['SHIB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['SHIB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SOL', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['SOL', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['SOL', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['SOL', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['SOL', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['SOL', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['SOL', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], ['SOL', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['SOL', 'SOL', '28nYGHJyUVcVdxZtzKByBXEj127XnrUkrE3VaGuWj1ZU '], + ['SOL', 'SOL', '28nYGHJyUVcVdxZtzKByBXEj127XnrUkrE3VaGuWj1ZU'], ['SOL', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], ['SOL', 'SOL', '3gd3dqgtJ4jWfBfLYTX67DALFetjc5iS72sCgRhCkW2u'], ['SOL', 'SOL', '3yFwqXBfZY4jBVUafQ1YEXw189y2dN3V5KQq9uzBDy1E'], ['SOL', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], ['SOL', 'SOL', '6QJzieMYfp7yr3EdrePaQoG3Ghxs2wM98xSLRu8Xh56U'], ['SOL', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], - ['SOL', 'SOL', 'BZ3kabSsMzbuJUguYxtmkRtzw7ACqw1DUMH8PcbvXiUr '], + ['SOL', 'SOL', 'BZ3kabSsMzbuJUguYxtmkRtzw7ACqw1DUMH8PcbvXiUr'], ['SOL', 'SOL', 'HXsKP7wrBWaQ8T2Vtjry3Nj3oUgwYcqq9vrHDM12G664'], ['SSV', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['SSV', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['SSV', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], - ['SSV', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['SSV', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], + ['SSV', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], @@ -455,16 +455,16 @@ const assetList = [ ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['UNI', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['UNI', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['UNI', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['UNI', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['UNI', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['UNI', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['UNI', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['UNI', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['UNI', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['UNI', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['UNI', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDC', 'ALGO', 'MTCEM5YJJSYGW2RCXYXGE4SXLSPUUEJKQAWG2GUX6CNN72KQ3XPJCM6NOI'], @@ -475,22 +475,22 @@ const assetList = [ ['USDC', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['USDC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['USDC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], ['USDC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['USDC', 'BEP20', '0x73f5ebe90f27b46ea12e5795d16c4b408b19cc6f'], ['USDC', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], - ['USDC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDC', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['USDC', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], ['USDC', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['USDC', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], ['USDC', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['USDC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['USDC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['USDC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['USDC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], @@ -501,9 +501,9 @@ const assetList = [ ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], ['USDC', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], ['USDC', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], - ['USDC', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn '], + ['USDC', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn'], ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], - ['USDC', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9 '], + ['USDC', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9'], // ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], // ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], @@ -517,7 +517,7 @@ const assetList = [ ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], ['USDT', 'BEP20', '0x01c952174c24e1210d26961d456a77a39e1f0bb0'], - ['USDT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['USDT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['USDT', 'BEP20', '0x161ba15a5f335c9f06bb5bbb0a9ce14076fbb645'], ['USDT', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], ['USDT', 'BEP20', '0x29bdfbf7d27462a2d115748ace2bd71a2646946c'], @@ -529,24 +529,24 @@ const assetList = [ ['USDT', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], ['USDT', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], ['USDT', 'BEP20', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['USDT', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDT', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['USDT', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], ['USDT', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['USDT', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], ['USDT', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['USDT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], - ['USDT', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f '], + ['USDT', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['USDT', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], ['USDT', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['USDT', 'ETH', '0x9696f59e4d72e237be84ffd425dcad154bf96976'], ['USDT', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], ['USDT', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], - ['USDT', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDT', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['USDT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['USDT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDT', 'MATIC', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], - ['USDT', 'MATIC', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['USDT', 'MATIC', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['USDT', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], ['USDT', 'MATIC', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDT', 'OPBNB', '0xf977814e90da44bfa03b6295a0616a897441acec'], @@ -559,13 +559,13 @@ const assetList = [ ['USDT', 'TRX', 'TDqSquXBgUCLYvYC4XZgrprLK589dkhSCf'], ['USDT', 'TRX', 'TJCo98saj6WND61g1uuKwJ9GMWMT9WkJFo'], ['USDT', 'TRX', 'TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe'], - ['USDT', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn '], + ['USDT', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn'], ['USDT', 'TRX', 'TMuA6YqfCeX8EhbfYEg5y7S4DqzSJireY9'], ['USDT', 'TRX', 'TMwf7KT8CCdUKuZfKNPTTjbYkFb3eGRbzY'], ['USDT', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], ['USDT', 'TRX', 'TQrY8tryqsYVCYS3MFbtffiPp2ccyn4STm'], ['USDT', 'TRX', 'TRGCqsUXeynKTgynp2j9g3sg7Nux2KtB3u'], - ['USDT', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9 '], + ['USDT', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9'], ['USDT', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], @@ -581,11 +581,11 @@ const assetList = [ ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - ['XRP', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe '], + ['XRP', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['XRP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['XRP', 'BEP20', '0xbd612a3f30dca67bf60a39fd0d35e39b7ab80774'], - ['XRP', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1 '], + ['XRP', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['XRP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['XRP', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], ['XRP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], @@ -595,13 +595,13 @@ const assetList = [ ['XRP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['XRP', 'XRP', 'rBtttd61FExHC68vsZ8dqmS3DfjFEceA1A'], ['XRP', 'XRP', 'rDAE53VfMvftPB4ogpWGWvzkQxfht6JPxr'], - ['XRP', 'XRP', 'rDecw8UhrZZUiaWc91e571b3TL41MUioh7 '], + ['XRP', 'XRP', 'rDecw8UhrZZUiaWc91e571b3TL41MUioh7'], ['XRP', 'XRP', 'rEy8TFcrAPvhpKrwyrscNYyqBGUkE9hKaJ'], ['XRP', 'XRP', 'rNU4eAowPuixS5ZCWaRL72UUeKgxcKExpK'], ['XRP', 'XRP', 'rP3mUZyCDzZkTSd1VHoBbFt8HGm8fyq8qV'], ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], - ['XRP', 'XRP', 'rpmxpWis42eYV4oMhyxJNSzrLRdacJVooa '], + ['XRP', 'XRP', 'rpmxpWis42eYV4oMhyxJNSzrLRdacJVooa'], ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], ] diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index 6f61aac4c85..7a16da647ef 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -112,7 +112,6 @@ async function sumTokens({ owner, owners = [], tokens = [], tokensAndOwners = [] tokens = tokens.map(replaceNull) tokensAndOwners = tokensAndOwners.map(i => [replaceNull(i[0]), i[1]]) - console.log({ owner, owners, tokens, tokensAndOwners, blacklistedTokens, token, ownerTokens }) if (token) tokens = [token] if (owner) owners = [owner] From 2a8f82392a5fb55e736e8fc1f28672e6e2aa8753 Mon Sep 17 00:00:00 2001 From: dtx-devs <164329664+dtx-devs@users.noreply.github.com> Date: Tue, 9 Apr 2024 15:02:16 +0800 Subject: [PATCH 1143/2004] feat: add ezETH tvl in dtx (#9754) --- projects/dtx/index.js | 15 +++++++++++---- projects/helper/coreAssets.json | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/projects/dtx/index.js b/projects/dtx/index.js index 7964aff6a35..c2fcfa9561e 100644 --- a/projects/dtx/index.js +++ b/projects/dtx/index.js @@ -1,7 +1,7 @@ const { sumERC4626VaultsExport } = require("../helper/erc4626") -const sdk = require('@defillama/sdk') -const { sumTokensExport } = require('../helper/unwrapLPs') -const ADDRESSES = require('../helper/coreAssets.json') +const sdk = require("@defillama/sdk") +const { sumTokensExport } = require("../helper/unwrapLPs") +const ADDRESSES = require("../helper/coreAssets.json") const vaultTvl = sumERC4626VaultsExport({ vaults: [ @@ -11,11 +11,18 @@ const vaultTvl = sumERC4626VaultsExport({ "0xBa95FCe6c2683C29bD963dd201CA8ee8f3605801", "0x037A168876d3027b1384FD1752fEAa52407726dB", "0x3031F6c8958Cf093377c11b3871BD23AEA5e5865", + "0x802B1f8e092AC4469B30C7560266F9a6f8CA450F", ], isOG4626: true, }) -const otherTvl = sumTokensExport({ tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH], owners: ['0x9AdF2b330697C6816176491E1fd5503BB746d1d8', '0x0E5b7DDbF37d92B21512Ae5A6CE66aEfA7A7828F']}) +const otherTvl = sumTokensExport({ + tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH, ADDRESSES.blast.ezETH], + owners: [ + "0x9AdF2b330697C6816176491E1fd5503BB746d1d8", + "0x0E5b7DDbF37d92B21512Ae5A6CE66aEfA7A7828F", + ], +}) module.exports = { blast: { diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 0a745fec252..9519b74c2e5 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -225,7 +225,6 @@ "MOVR": "0xffffffff98e37bf6a393504b5adc5b53b4d0ba11", "BNC": "0xffffffff3646a00f78cadf8883c5a2791bfcddc4", "KSM": "0xffffffffc6deec7fc8b11a2c8dde9a59f8c62efe" - }, "moonbeam": { "WGLMR": "0x5f6c5c2fb289db2228d159c69621215e354218d7", @@ -1632,7 +1631,8 @@ "USDB": "0x4300000000000000000000000000000000000003", "fwWETH": "0x66714db8f3397c767d0a602458b5b4e3c0fe7dd1", "fwUSDB": "0x866f2c06b83df2ed7ca9c2d044940e7cd55a06d6", - "WETH": "0x4300000000000000000000000000000000000004" + "WETH": "0x4300000000000000000000000000000000000004", + "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5" }, "chz": { "WCHZ": "0x721ef6871f1c4efe730dce047d40d1743b886946" From 14da18f28608bce454cb86ea6baa51745c74eca5 Mon Sep 17 00:00:00 2001 From: Shahryar Hasnani <103905505+Shx9@users.noreply.github.com> Date: Tue, 9 Apr 2024 03:04:53 -0400 Subject: [PATCH 1144/2004] Add tracking for the recently added Compound V3 USDC market for Scroll. (#9752) --- projects/compound-v3/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js index 913e750b6ed..f12c4c736aa 100644 --- a/projects/compound-v3/index.js +++ b/projects/compound-v3/index.js @@ -22,5 +22,8 @@ module.exports = compoundV3Exports({ '0x46e6b214b524310239732D51387075E0e70970bf', // ETH Market '0xb125E6687d4313864e53df431d5425969c15Eb2F', // USDC Market ], + }, + scroll: { + markets: ['0xB2f97c1Bd3bf02f5e74d13f02E3e26F93D77CE44'], // USDC Market } }) From 8900894e0bb983d8241616916fda8854524f5146 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:31:13 +0200 Subject: [PATCH 1145/2004] sommelier (#9756) * Sommelier: Add RYBTC launch and remove Steady, Trend, & MOM vault launches * Sommelier: Add Turbo GHO vault * Update start block * Sommelier: Dedupe vaults taking position in ssister vaults from TVL * Add ETH Growth vault * Add turbo steth cellar * Add Turbo SOMM * Add Turbo eETH vault * Add new somm cellar * Sommelier: Add Morpho Maximizer * Add turbo diveth and turbo ethx vaults * Sommelier: Add Turbo eETH V2 * Sommelier: Add Turbo eETH V2 vault * Sommelier: Arbitrum vaults * Fix Arbitrum TVL cals * RYUSD-ARB * Turbo-RSETH * Turbo-ezETH * RYE-Opt * RYE-Opt * code refactor --------- Co-authored-by: Phil Co-authored-by: Phil <30321052+philipjames44@users.noreply.github.com> Co-authored-by: henrio123 --- projects/sommelier/cellar-constants.js | 7 ++++ projects/sommelier/index.js | 39 +++++++------------ projects/sommelier/v0-8-15.js | 52 +++----------------------- projects/sommelier/v0-8-16.js | 51 ++----------------------- projects/sommelier/v2.js | 13 +------ 5 files changed, 33 insertions(+), 129 deletions(-) diff --git a/projects/sommelier/cellar-constants.js b/projects/sommelier/cellar-constants.js index 59505a4f050..d6c1f7ccbd0 100644 --- a/projects/sommelier/cellar-constants.js +++ b/projects/sommelier/cellar-constants.js @@ -82,6 +82,12 @@ 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 = { @@ -90,5 +96,6 @@ module.exports = { cellarsV2, cellarsV2p5, arbitrumCellarsV2p5, + optimismCellarsV2p5, }; diff --git a/projects/sommelier/index.js b/projects/sommelier/index.js index b4ea71d9354..33421b9bf46 100644 --- a/projects/sommelier/index.js +++ b/projects/sommelier/index.js @@ -7,32 +7,25 @@ const { cellarsV2, cellarsV2p5, arbitrumCellarsV2p5, + optimismCellarsV2p5, } = require("./cellar-constants"); async function ethereum_tvl(api) { - const balances = {}; - const { block } = api - const chainBlocks = { - [api.chain]: block - } - - const baseOptions = { balances, chainBlocks }; - + const block = await api.getBlock(); // Sum TVL for all v0.8.15 Cellars await v0815.sumTvl({ - ...baseOptions, + api, cellars: filterActiveCellars(cellarsV0815, block), }); // Sum TVL for all v0.8.16 Cellars await v0816.sumTvl({ - ...baseOptions, + api, cellars: filterActiveCellars(cellarsV0816, block), }); await v2.sumTvl({ - ...baseOptions, api, cellars: filterActiveCellars(cellarsV2, block), ownersToDedupe: cellarsV2.concat(cellarsV2p5), @@ -40,37 +33,32 @@ async function ethereum_tvl(api) { // no change in sumTvl implementation from v2 to v2.5 await v2.sumTvl({ - ...baseOptions, api, cellars: filterActiveCellars(cellarsV2p5, block), ownersToDedupe: cellarsV2.concat(cellarsV2p5), }); - - return balances; } async function arbitrum_tvl(api) { - const balances = {}; - const { block } = api - const chainBlocks = { - [api.chain]: block - } - const baseOptions = { balances, chainBlocks }; - await v2.sumTvl({ - ...baseOptions, api, cellars: arbitrumCellarsV2p5.map((cellar) => cellar.id), ownersToDedupe: arbitrumCellarsV2p5, }); +} - return balances; +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, blockHeight) { +function filterActiveCellars(cellars, block) { return cellars - .filter((cellar) => cellar.startBlock <= blockHeight) + .filter((cellar) => cellar.startBlock <= block) .map((cellar) => cellar.id); } @@ -80,6 +68,7 @@ module.exports = { start: 1656652494, ["ethereum"]: { tvl: ethereum_tvl }, ["arbitrum"]: { tvl: arbitrum_tvl }, + ["optimism"]: { tvl: optimism_tvl }, hallmarks: [ [1658419200, "aave2 Cellar Launch"], [1674671068, "Real Yield USD Cellar Launch"], diff --git a/projects/sommelier/v0-8-15.js b/projects/sommelier/v0-8-15.js index b6ca0fa5d26..e57d4eacbd0 100644 --- a/projects/sommelier/v0-8-15.js +++ b/projects/sommelier/v0-8-15.js @@ -1,8 +1,5 @@ -const sdk = require("@defillama/sdk"); const abiCellarV0815 = require("./cellar-v0-8-15.json"); -const chain = "ethereum"; - // type Options = { // cellars: string[], // list of cellar addresses // balances: Object, // balances object to accumulate protocol TVL @@ -19,59 +16,22 @@ async function sumTvl(options) { // target: string, cellar contract address // options: same as above -async function logCellarTvl(target, options) { - const { balances, chainBlocks } = options; +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 sdk.api.abi.call({ - chain, - abi: abiCellarV0815.totalAssets, - target, - block: chainBlocks[chain], - }) - ).output; - - const totalHoldings = ( - await sdk.api.abi.call({ - chain, - abi: abiCellarV0815.totalHoldings, - target, - block: chainBlocks[chain], - }) - ).output; - - const maxLocked = ( - await sdk.api.abi.call({ - chain, - abi: abiCellarV0815.maxLocked, - target, - block: chainBlocks[chain], - }) - ).output; + 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 sdk.api.abi.call({ - chain, - abi: abiCellarV0815.asset, - target, - block: chainBlocks[chain], - }) - ).output; + const assetAddress = await api.call({ abi: abiCellarV0815.asset, target, }) // Sum up total assets, holdings, and locked yield - sdk.util.sumSingleBalance(balances, `${chain}:${assetAddress}`, totalAssets); - sdk.util.sumSingleBalance( - balances, - `${chain}:${assetAddress}`, - totalHoldings - ); - sdk.util.sumSingleBalance(balances, `${chain}:${assetAddress}`, maxLocked); + api.add(assetAddress, [totalAssets, totalHoldings, maxLocked]) } module.exports = { diff --git a/projects/sommelier/v0-8-16.js b/projects/sommelier/v0-8-16.js index 795cc548cf0..82810aef630 100644 --- a/projects/sommelier/v0-8-16.js +++ b/projects/sommelier/v0-8-16.js @@ -1,59 +1,16 @@ -const sdk = require("@defillama/sdk"); const abiCellarV0816 = require("./cellar-v0-8-16.json"); -const chain = "ethereum"; - // 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 { balances, cellars, chainBlocks } = options; - + const { cellars, api } = options; // TVL is the value of each of the Cellar's positions summed up - - // Get the Cellar's postions (ERC20 addresses) as an array to construct - // a list of balanceOf calls. - let balanceCalls = await Promise.all( - cellars.map((cellar) => getCellarBalanceCalls(cellar, options)) - ); - balanceCalls = balanceCalls.flat(); - - // Call balanceOf for all positions across all Cellars using multicall - const balanceResult = await sdk.api.abi.multiCall({ - calls: balanceCalls, - abi: "erc20:balanceOf", - block: chainBlocks[chain], - }); - - // Log the balances - sdk.util.sumMultiBalanceOf(balances, balanceResult); -} - -// target: string, cellar contract address -// options: same as above -// -// returns a list of balanceOf(address) parameters -// [{ target: erc20 contract address, params: [cellarAddress] }] -async function getCellarBalanceCalls(cellarAddress, options) { - const { chainBlocks } = options; - - // Get a list of the Cellars positions as ERC20 contract addresses - const positions = ( - await sdk.api.abi.call({ - chain, - abi: abiCellarV0816.getPositions, - target: cellarAddress, - block: chainBlocks[chain], - }) - ).output; - - // Construct a list of balanceOf calls - return positions.map((position) => ({ - target: position, - params: [cellarAddress], // Cellar holds the balance - })); + 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 = { diff --git a/projects/sommelier/v2.js b/projects/sommelier/v2.js index f0368fb1c0e..ecf827264b1 100644 --- a/projects/sommelier/v2.js +++ b/projects/sommelier/v2.js @@ -1,6 +1,5 @@ -const sdk = require("@defillama/sdk"); +async function sumTvl({ cellars, api, ownersToDedupe }) { -async function sumTvl({ balances, cellars, api, ownersToDedupe }) { const assets = await api.multiCall({ abi: "address:asset", calls: cellars, @@ -49,15 +48,7 @@ async function sumTvl({ balances, cellars, api, ownersToDedupe }) { return ratio; }); - assets.forEach((a, i) => - sdk.util.sumSingleBalance( - balances, - a, - bals[i] * ratios[i], - api.chain - ) - ); - return balances + assets.forEach((a, i) => api.add(a, bals[i] * ratios[i])); } module.exports = { From 9b18609e7558176993abdee6676e3eedad182e07 Mon Sep 17 00:00:00 2001 From: Christopher Dimitri Sastropranoto Date: Tue, 9 Apr 2024 15:56:40 +0800 Subject: [PATCH 1146/2004] Add copra v2 tvl calc (#9755) * add copra v2 tvl calc * improve copra v2 tvl calc --- projects/copra-finance/index.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/copra-finance/index.js b/projects/copra-finance/index.js index 60e2c24e517..e4609bc5a69 100644 --- a/projects/copra-finance/index.js +++ b/projects/copra-finance/index.js @@ -3,6 +3,7 @@ const { getLogs, } = require("../helper/cache/getLogs"); async function tvl(api) { const { factory, fromBlock } = config[api.chain]; + // V1 const logs = await getLogs({ api, target: factory, @@ -13,11 +14,18 @@ async function tvl(api) { 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 tokens = (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 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(tokens, lenderAmounts) - api.add(tokens, borrowerAmounts) + 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 = { From 12a20d2d465c0338b14eb78342bcd5841a73218b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:41:40 +0200 Subject: [PATCH 1147/2004] Add duo exchange tracking and refactor code (#9758) * add duo exchange tracking * code refactor --------- Co-authored-by: Wukong Particle --- projects/particle-trade-duo/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/particle-trade-duo/index.js diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js new file mode 100644 index 00000000000..6fdd5f89e25 --- /dev/null +++ b/projects/particle-trade-duo/index.js @@ -0,0 +1,25 @@ +const config = { + blast: { + weth90d: '0xc932317385fDc794633f612874BD687eA987B151', + usdb90d: '0x57A6CcB2d5663eF874c29b161dD7907c7673feb0', + }, +} + +module.exports = { + doublecounted: true, +}; + +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) + } + } +}) \ No newline at end of file From db46711d2b26e48a15b337cd66932da408d24892 Mon Sep 17 00:00:00 2001 From: wandbuild <138229969+wandbuild@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:44:36 +0800 Subject: [PATCH 1148/2004] Add wand protocol V2 contract addresses (#9757) --- projects/wand/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/wand/index.js b/projects/wand/index.js index 9a4023001d2..89af4c49213 100644 --- a/projects/wand/index.js +++ b/projects/wand/index.js @@ -8,7 +8,11 @@ module.exports = { '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 + '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 ], tokens: [ ADDRESSES.null, // $ETH From a9773e68edb212570cdceae5dbf1ca8d74f4182e Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:21:18 +0100 Subject: [PATCH 1149/2004] weekly move prices 8-04-24 (#9749) --- projects/helper/tokenMapping.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2c49645bd71..44208c87df1 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,20 +34,6 @@ const ibcMappings = { } const fixBalancesTokens = { - ethereum: { - '0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0': { coingeckoId: 'stakestone-ether', decimals: 18 }, - }, - islm: { - '0xeC8CC083787c6e5218D86f9FF5f28d4cC377Ac54': { coingeckoId: 'islamic-coin', decimals: 18 }, - '0xc5e00d3b04563950941f7137b5afa3a534f0d6d6': { coingeckoId: 'dai', decimals: 18 }, - '0xeceeefcee421d8062ef8d6b4d814efe4dc898265': { coingeckoId: 'ethereum', decimals: 18 }, - '0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, - '0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75': { coingeckoId: 'tether', decimals: 6 }, - '0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd': { coingeckoId: 'axlusdc', decimals: 6 }, - }, - svm: { - '0x5db252ead05C54B08A83414adCAbF46Eaa9E0337': { coingeckoId: 'bitcoin', decimals: 18 }, - }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain From 669e690750acc28c8a4517f3e55a4686b85b1905 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 12:10:35 +0200 Subject: [PATCH 1150/2004] track https://app.bsx.exchange --- projects/bsx-exchange/index.js | 13 +++++++++++++ projects/nocturne_xyz/index.js | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 projects/bsx-exchange/index.js diff --git a/projects/bsx-exchange/index.js b/projects/bsx-exchange/index.js new file mode 100644 index 00000000000..ce2bab3c6be --- /dev/null +++ b/projects/bsx-exchange/index.js @@ -0,0 +1,13 @@ +const config = { + base: '0x26a54955a5fb9472d3edfeac9b8e4c0ab5779ed3', +} + +Object.keys(config).forEach(chain => { + const exchange = config[chain] + module.exports[chain] = { + tvl: async (api) => { + const tokens = await api.call({ abi: 'address[]:getSupportedTokenList', target: exchange }) + return api.sumTokens({ owner: exchange, tokens }) + } + } +}) diff --git a/projects/nocturne_xyz/index.js b/projects/nocturne_xyz/index.js index 9d9e8ea8bcb..ecaf5385612 100644 --- a/projects/nocturne_xyz/index.js +++ b/projects/nocturne_xyz/index.js @@ -16,4 +16,8 @@ Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: sumTokensExport({ owners: Object.values(contracts), fetchCoValentTokens: true, }) } -}) \ No newline at end of file +}) + +module.exports.hallmarks = [ + [Math.floor(new Date('2024-01-22')/1e3), 'Nocturne V1 is being sunset'], +] \ No newline at end of file From c6a7a9930979b847685fc0769ad55c2693530124 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 12:14:22 +0200 Subject: [PATCH 1151/2004] fix broken adapters --- projects/stellaswap-v3/index.js | 1 + projects/zigzag/index.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/stellaswap-v3/index.js b/projects/stellaswap-v3/index.js index 460e043759c..9355363e891 100644 --- a/projects/stellaswap-v3/index.js +++ b/projects/stellaswap-v3/index.js @@ -5,5 +5,6 @@ module.exports = uniV3Export({ factory: "0xabe1655110112d0e45ef91e94f8d757e4ddba59c", fromBlock: 2649801, isAlgebra: true, + permitFailure: true, }, }); diff --git a/projects/zigzag/index.js b/projects/zigzag/index.js index 691d0a386eb..1e5c7905e50 100644 --- a/projects/zigzag/index.js +++ b/projects/zigzag/index.js @@ -19,7 +19,7 @@ async function offers() { module.exports = { timetravel: false, zksync: { - offers, + offers: () => ({}), tvl: async () => ({}) }, arbitrum: { From 5cd6daad320b69916199581f6a4eab80d19ce963 Mon Sep 17 00:00:00 2001 From: Cohiba Nan <132758148+Cohiban@users.noreply.github.com> Date: Tue, 9 Apr 2024 18:20:37 +0800 Subject: [PATCH 1152/2004] Add bitcoin address (#9761) --- projects/ainn-layer2/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/ainn-layer2/index.js b/projects/ainn-layer2/index.js index bf28a426dc7..b699a1f63d8 100644 --- a/projects/ainn-layer2/index.js +++ b/projects/ainn-layer2/index.js @@ -16,7 +16,8 @@ const BTCOwners = [ "39Fvw2Ho1fEkyDsos5sNTN5iMJZKzTL526", "3Kptt4TZZRcjuGH8ikoQ8mV1TVxq45dnuS", "3G4sMXWAAVTvTXTksr8u9zuu7W8RKsicEz", - "335DRGzLLG2tu4H4PnFBHYAwcj5pvV8zei" + "335DRGzLLG2tu4H4PnFBHYAwcj5pvV8zei", + "bc1qqg3cdyadq25zn99sdprr4lgpsxg2za998eygy8" ]; From 182db35ed5d90c58bd7ffa173e7bed34fa229528 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 9 Apr 2024 11:22:40 +0100 Subject: [PATCH 1153/2004] add core assets core-assets (#9765) --- projects/helper/coreAssets.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 9519b74c2e5..e3a7a068196 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -46,7 +46,8 @@ "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2", - "AEVO": "0xB528edBef013aff855ac3c50b381f253aF13b997" + "AEVO": "0xB528edBef013aff855ac3c50b381f253aF13b997", + "STONE": "0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0" }, "fantom": { "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", @@ -1693,5 +1694,16 @@ }, "rss3_vsl": { "WRSS": "0xe27d019909738d98ab7f850c05ee07806c30c71d" + }, + "svm": { + "BTC": "0x5db252ead05C54B08A83414adCAbF46Eaa9E0337" + }, + "islm": { + "ISLM ": "0xeC8CC083787c6e5218D86f9FF5f28d4cC377Ac54", + "DAI": "0xc5e00d3b04563950941f7137b5afa3a534f0d6d6", + "ETH": "0xeceeefcee421d8062ef8d6b4d814efe4dc898265", + "WBTC": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", + "USDT": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", + "AXLUSDC": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd" } } From 119e9c747e2854ed8ce3301305320e5c65fdf533 Mon Sep 17 00:00:00 2001 From: chainupk <121842069+chainupk@users.noreply.github.com> Date: Tue, 9 Apr 2024 18:53:17 +0800 Subject: [PATCH 1154/2004] Upgraded To NodeDAO 2.0 (#9767) * updated nodedao etehreum tvl calculations * included balance in contract and the amount in SWAP pool * minor fix * removed v0 * nodedao 2.0 * remove syntatic errors --------- Co-authored-by: zhenhao goh Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/node-dao/index.js | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/projects/node-dao/index.js b/projects/node-dao/index.js index 6fd01b0b8d4..d815ef4ab96 100644 --- a/projects/node-dao/index.js +++ b/projects/node-dao/index.js @@ -3,23 +3,8 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') module.exports = { ethereum: { tvl: async (api) => { - // nodeDAO liquidStaking neth tvl - const nodeDaoLiquidStaking = '0x8103151E2377e78C04a3d2564e20542680ed3096' - const nethTVL = await api.call({ abi: 'uint256:getTotalEthValue', target: nodeDaoLiquidStaking }) - - // nodeDAO largeStaking tvl - let largeStakingTVL = 0 - const nodeDaoLargeStaking = '0xBBd19e8F766Dcc94D50e47502b79C81cdaD484B8' - const nodeOperatorRegistry = '0x8742178Ac172eC7235E54808d5F327C30A51c492' - const operatorNumbers = await api.call({ abi: 'uint256:getNodeOperatorsCount', target: nodeOperatorRegistry }) - for (let i = 1; i <= operatorNumbers; i++) { - const validatorNumbers = await api.call({ abi: 'function getOperatorValidatorCounts(uint256 _operatorId) external view returns (uint256)', target: nodeDaoLargeStaking, params: [i] }) - largeStakingTVL += parseInt(validatorNumbers) * 32_000_000_000_000_000_000 - } - - // nodeDAO totalEth = nethTVL + largeStakingTVL - const totalEth = parseInt(nethTVL) + largeStakingTVL - + const nodeDaoView = '0xd7C049CD4ba216679ecC04Eb2767cC5E39812121' + const totalEth = await api.call({ abi: 'uint256:getTotalTVL', target: nodeDaoView }) api.add(nullAddress, totalEth) } } From 05e533a4852b0b30b0a0ce143efd77e2b0fe11a5 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 9 Apr 2024 18:53:57 +0800 Subject: [PATCH 1155/2004] add new pool on mode network (#9766) * add new pools on mode * code refactor * fix: msw1x pool calculation * add tvl for new pool on mode --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/airpuff/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 9644138b544..7c41068229d 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -32,12 +32,25 @@ module.exports = { oracleToken: "0x59e710215d45f584f44c0fee83da6d43d762d857", }; + const ezETH1x = { + vault: "0x9c96d0Cc5341654167ee35DB4F288ae523fe8779", + reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5", + 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, @@ -46,7 +59,10 @@ module.exports = { const ezETHBalInETH = (balOfezETH * priceOfezETH) / 1e18; + const ezETH1xBalInETH = (balOfezETH1x * priceOfezETH) / 1e18; + api.add(ADDRESSES.mode.WETH, ezETHBalInETH); + api.add(ADDRESSES.mode.WETH, ezETH1xBalInETH); }, }, From 9f0747de30d5732ab50fb60aace4e8631671c579 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 13:11:55 +0200 Subject: [PATCH 1156/2004] Add 0xzebra project and refactor code (#9770) * add 0xzebra project * code refactor --------- Co-authored-by: Alexandas --- projects/0xzebra/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/0xzebra/index.js diff --git a/projects/0xzebra/index.js b/projects/0xzebra/index.js new file mode 100644 index 00000000000..7bfff220d33 --- /dev/null +++ b/projects/0xzebra/index.js @@ -0,0 +1,8 @@ +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 From 980f313302bf5ef5542dfd5f75e2cf0784788941 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 14:35:18 +0200 Subject: [PATCH 1157/2004] track https://app.karak.network --- package-lock.json | 6 +++--- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 8 +++++++- projects/helper/unwrapLPs.js | 2 ++ projects/karak/index.js | 18 ++++++++++++++++++ 6 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 projects/karak/index.js diff --git a/package-lock.json b/package-lock.json index ab79f3b205b..e106c3d162c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.51", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.51.tgz", - "integrity": "sha512-9xph+m9PykFw23K49AUagVLj+iu9mHMUeoZwBmdpVT0GBQNpLadMjCWc9NEgivrguOqMC76MhxZBsZMOTlzXHw==", + "version": "5.0.52", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.52.tgz", + "integrity": "sha512-BhkY2eFcoAyGgIaMEheb9PIFC94Lfb1K8UXOmWsOod3GOE5nuJcn/mY7HUtHowSD/LZy+xrnCdDMTtCREjqDZQ==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 59733c05433..71aa3f79635 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -136,6 +136,7 @@ "jbc", "juno", "kadena", + "karak", "kardia", "karura", "kava", diff --git a/projects/helper/env.js b/projects/helper/env.js index 2bde5bfc54a..a565b3939ff 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,6 +12,7 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", + KARAK_RPC: "https://rpc.karak.network", FSC_RPC: "https://fsc-dataseed1.fonscan.io,https://fsc-dataseed2.fonscan.io,https://fonscan.io/api/eth-rpc", FSC_RPC_MULTICALL: "0x18fA376d92511Dd04090566AB6144847c03557d8", } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 44208c87df1..9141fd18ce6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -37,7 +37,13 @@ const fixBalancesTokens = { // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain - } + }, + + karak: { + '0xa415021bc5c4c3b5b989116dc35ae95d9c962c8d': { coingeckoId: 'usd-coin', decimals: 6, }, + '0xf948aacec00289fc33d8226391f7e04bb457ad49': { coingeckoId: 'restaked-swell-eth', decimals: 18, }, + '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index ecfd468a7c3..4d3293e3025 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -680,6 +680,7 @@ async function sumTokens2({ tokensAndOwners = [], tokensAndOwners2 = [], ownerTokens = [], + token, tokens = [], owners = [], owner, @@ -717,6 +718,7 @@ async function sumTokens2({ } if (owner) owners.push(owner) + if (token) tokens.push(token) tokens = getUniqueAddresses(tokens, chain) owners = getUniqueAddresses(owners, chain) if (owners.length) { diff --git a/projects/karak/index.js b/projects/karak/index.js new file mode 100644 index 00000000000..5a163ec01a7 --- /dev/null +++ b/projects/karak/index.js @@ -0,0 +1,18 @@ +const { sumTokens2 } = require("../helper/unwrapLPs") + +const config = { + ethereum: { factory: '0x54e44dbb92dba848ace27f44c0cb4268981ef1cc', }, + arbitrum: { factory: '0x399f22ae52a18382a67542b3de9bed52b7b9a4ad', }, + karak: { factory: '0xB308474350D75447cA8731B7Ce87c9ee9DA03B1C', }, +} + +Object.keys(config).forEach(chain => { + const { factory, } = config[chain] + module.exports[chain] = { + tvl: async (api) => { + 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] }) + } + } +}) From 6c661e0bf76ad5f7d0501348f044051b9cdfb052 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 14:40:05 +0200 Subject: [PATCH 1158/2004] fix airdao --- projects/helper/coreAssets.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index e3a7a068196..1fd5d0c193d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1612,10 +1612,7 @@ }, "airdao": { "SAMB": "0x2b2d892c3fe2b4113dd7ac0d2c1882af202fb28f", - "USDC": "0xd8dd0273d31c1cd9dba104daca7c1dfee4f7b805", - "BUSD": "0x7a477aa8ed4884509387dba81ba6f2b7c97597e2", - "AINU": "0x618220b06e8e30a972ffbe66fe56588fe4d5044a", - "BOND": "0x096b5914c95c34df19500daff77470c845ec749d" + "BUSD": "0x7a477aa8ed4884509387dba81ba6f2b7c97597e2" }, "acala": { "DOT": "0x0000000000000000000100000000000000000002", From ef87b4ff90a881bd398235260c28d445a1b5c659 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:01:28 +0200 Subject: [PATCH 1159/2004] Add token addresses and owners for Blast tokens --- projects/hyperlock/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/hyperlock/index.js b/projects/hyperlock/index.js index 8ed15a02ede..5c0497aae55 100644 --- a/projects/hyperlock/index.js +++ b/projects/hyperlock/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const { cachedGraphQuery } = require('../helper/cache') @@ -12,7 +13,6 @@ module.exports = { }, } - const query = `{ pools(where:{type: V2}) { id type } }` @@ -20,8 +20,11 @@ const query = `{ async function tvl(api) { const { pools } = await cachedGraphQuery('hyperlock/v2', 'https://graph.hyperlock.finance/subgraphs/name/hyperlock/points-blast-mainnet', query) - console.log(pools) + const tokens = pools.map(i => i.id) await sumTokens2({ api, owner: v2Deposits, tokens: pools.map(i => i.id), resolveLP: true, }) + await sumTokens2({ api, tokensAndOwners: [ + [ADDRESSES.blast.USDB, '0x390b781BAf1e6Db546cF4e3354b81446947838d2'], + [ADDRESSES.blast.WETH, '0x1856c7e0b559e9d7287473cb4b4786398db4032a'], + ] }) return sumTokens2({ api, owner: v3Deposits, resolveUniV3: true }) - } \ No newline at end of file From 51f3e2002ab9127a8390ae342493e15ccaf7d14e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:07:26 +0200 Subject: [PATCH 1160/2004] pluto: add staking --- projects/pluto/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/pluto/index.js b/projects/pluto/index.js index 44407b6cd15..284e0bef9f3 100644 --- a/projects/pluto/index.js +++ b/projects/pluto/index.js @@ -5,5 +5,6 @@ module.exports = { timetravel: false, waves: { tvl: () => ({}), + staking: api => sumTokens({ api, owners: ['3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q'] }) } } \ No newline at end of file From 8fb8f55e74c9bf71bb77e931814f8fd854becc9d Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 9 Apr 2024 15:42:41 +0100 Subject: [PATCH 1161/2004] consolidate rootstock --- projects/rootstock-bridge/index.js | 22 ---------------------- projects/rsk-bridge/index.js | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 23 deletions(-) delete mode 100644 projects/rootstock-bridge/index.js diff --git a/projects/rootstock-bridge/index.js b/projects/rootstock-bridge/index.js deleted file mode 100644 index d8b835b61c2..00000000000 --- a/projects/rootstock-bridge/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const { getBalance } = require("@defillama/sdk/build/eth"); -const { getBlock } = require("@defillama/sdk/build/util/blocks"); - -module.exports = { - rsk: { - tvl: async (api) => { - const block = (await getBlock("rsk", api.timestamp)).block; - const unminted = - ( - await getBalance({ - target: "0x0000000000000000000000000000000001000006", - chain: api.chain, - block, - }) - ).output / 1e18; - - const minted = 21e6 - unminted; - - return { "coingecko:bitcoin": minted }; - }, - }, -}; diff --git a/projects/rsk-bridge/index.js b/projects/rsk-bridge/index.js index 2fb151a1b0a..516e920d51b 100644 --- a/projects/rsk-bridge/index.js +++ b/projects/rsk-bridge/index.js @@ -1,7 +1,24 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { + bitcoin: { + tvl: async (api) => { + const block = (await getBlock("rsk", api.timestamp)).block; + const unminted = + ( + await getBalance({ + target: "0x0000000000000000000000000000000001000006", + chain: api.chain, + block, + }) + ).output / 1e18; + + const minted = 21e6 - unminted; + + return { "coingecko:bitcoin": minted }; + }, + }, ethereum: { tvl: sumTokensExport({ owner: "0x12eD69359919Fc775bC2674860E8Fe2d2b6a7B5D", From 5e726a096b3541065cd9632e58082c10a65b8b9f Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 9 Apr 2024 15:44:26 +0100 Subject: [PATCH 1162/2004] patch deps --- projects/rsk-bridge/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/rsk-bridge/index.js b/projects/rsk-bridge/index.js index 516e920d51b..f7ca07f7932 100644 --- a/projects/rsk-bridge/index.js +++ b/projects/rsk-bridge/index.js @@ -1,5 +1,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokensExport } = require("../helper/unwrapLPs"); +const { getBalance } = require("@defillama/sdk/build/eth"); +const { getBlock } = require("@defillama/sdk/build/util/blocks"); module.exports = { bitcoin: { From 6b159dee523cef4aa1656a82b06c1a2f2ccf1207 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 9 Apr 2024 15:46:59 +0100 Subject: [PATCH 1163/2004] change chain --- projects/rsk-bridge/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/rsk-bridge/index.js b/projects/rsk-bridge/index.js index f7ca07f7932..9870f9d69ca 100644 --- a/projects/rsk-bridge/index.js +++ b/projects/rsk-bridge/index.js @@ -11,7 +11,7 @@ module.exports = { ( await getBalance({ target: "0x0000000000000000000000000000000001000006", - chain: api.chain, + chain: "rsk", block, }) ).output / 1e18; From 41170212178f047a778ee10beddf729615319e6b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 10 Apr 2024 03:42:20 +0100 Subject: [PATCH 1164/2004] add new farm --- projects/swell-l2-farm/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/swell-l2-farm/index.js diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js new file mode 100644 index 00000000000..5aa1820791a --- /dev/null +++ b/projects/swell-l2-farm/index.js @@ -0,0 +1,26 @@ +const { nullAddress } = require("../helper/tokenMapping"); +const { sumTokensExport } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owners: ["0x38D43a6Cb8DA0E855A42fB6b0733A0498531d774"], + tokens: [ + nullAddress, + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "0x49446A0874197839D15395B908328a74ccc96Bc0", + "0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10", + "0x49446A0874197839D15395B908328a74ccc96Bc0", + "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0", + "0xf951E335afb289353dc249e82926178EaC7DEd78", + "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", + "0x8457CA5040ad67fdebbCC8EdCE889A335Bc0fbFB", + "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", + "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "0x7122985656e38BDC0302Db86685bb972b145bD3C" + ] + }) + } +} From 91979f3007f61ac2c8ba5cca022648b4919e24e2 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:37:38 +0800 Subject: [PATCH 1165/2004] fix: delete duplicated pool info (#9786) --- projects/airpuff/index.js | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 7c41068229d..d5c46736f78 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -1,6 +1,5 @@ //import utils const ADDRESSES = require("../helper/coreAssets.json"); - const contractAbis = { readOraclePrice: "function read() view returns (int224 value, uint32 timestamp)", balanceOf: "function balanceOf(address) external view returns (uint256)", @@ -165,7 +164,7 @@ module.exports = { target: svETH.vault, }); - const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x]; + const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x, svETH1x, svETH]; for (const strategy of strategies) { const bal = await api.call({ @@ -190,37 +189,6 @@ module.exports = { api.add(ADDRESSES.ethereum.WETH, balInETH); } - //strategy with no oracle, but can calculate price using erc4626 totalSupply and totalAssets - const LiquidETH = { - vault: "0xE543eBa28a3793d5ae747A2164A306DB1767cDAe", - reStakingToken: "0xeA1A6307D9b18F8d1cbf1c3Dd6aad8416C06a221", - }; - - const erc4626Strategies = [LiquidETH]; - - for (const erc4626strategy of erc4626Strategies) { - const bal = await api.call({ - abi: contractAbis.balanceOf, - target: erc4626strategy.reStakingToken, - params: [erc4626strategy.vault], - }); - - const totalAssets = await api.call({ - abi: contractAbis.getTotalAssets, - target: erc4626strategy.reStakingToken, - }); - - const totalSupply = await api.call({ - abi: contractAbis.getTotalSupply, - target: erc4626strategy.reStakingToken, - }); - - const price = totalAssets / totalSupply; - - const balInETH = bal * price; - - api.add(ADDRESSES.ethereum.WETH, balInETH); - } const mswETH = { vault: "0x7c505E03460aEF7FE88e218CC5fcEeCCcA4C4394", @@ -261,6 +229,7 @@ module.exports = { } }, }, + //-----------------------------------------------------------------------// arbitrum: { tvl: async (api) => { From 1c8c5d2caf82ba595deb456360e47584587c2eb8 Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:51:21 +0800 Subject: [PATCH 1166/2004] add new pool (#9784) --- projects/muito-finance/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index 863b9d10c84..4f3555644f6 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -20,12 +20,19 @@ async function getTvl(api, farmAddress) { async function tvl(api) { const MUTO_V3_FARM = "0xD7372abc6693702fF09536ec3824780eB264b2eF"; + const MUTO_V3_FARM2 = "0xCd356c40A86c59955e20FcCF7Bb3b9Be15AF238D"; await sumTokens2({ api, uniV3nftsAndOwners: [ ["0x5752F085206AB87d8a5EF6166779658ADD455774", MUTO_V3_FARM], ], }); + await sumTokens2({ + api, + uniV3nftsAndOwners: [ + ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM2], + ], + }); await getTvl(api, MUTO_FARM); await getTvl(api, MUTO_MULTI_FARM2); await getTvl(api, MUTO_MULTI_FARM3); From a88d184ddae933a88cae2c9d4aad38efe22a413e Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Tue, 9 Apr 2024 22:51:33 -0700 Subject: [PATCH 1167/2004] Update config.js (#9783) --- projects/visor/config.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index 8867d5a6616..e0cec17d04e 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -28,6 +28,7 @@ const HYPE_REGISTRY = { ["0x7b9c2f68f16c3618bb45616fb98d83f94fd7062e", 44933860], // Ascent ], polygon_zkevm: [ + ["0xff8Fae227edb4Ab23e61EC6cf0a65F3bCdCf45Bd", 11479842], // Uniswap ["0xD08B593eb3460B7aa5Ce76fFB0A3c5c938fd89b8", 152596], // Quickswap Algebra ["0xf9aDaa55014242c1005dB307C4e41c541f26bAAA", 10725633], // Quickswap UniV3 ], @@ -63,6 +64,7 @@ const HYPE_REGISTRY = { ["0xf874d4957861e193aec9937223062679c14f9aca", 62144066], // Spiritswap ], mantle: [ + ["0x849214C123Ba690D5fBc9301Ef2e66491fCd6FE6", 62288178], // Uniswap ["0x683292172E2175bd08e3927a5e72FC301b161300", 1000], // FusionX ["0xa5E9006C17740Cb9e4898657721c4dFE103d8456", 58580400], // Cleopatra ], @@ -70,6 +72,7 @@ const HYPE_REGISTRY = { ["0x683292172E2175bd08e3927a5e72FC301b161300", 1435083], // PegaSys ], linea: [ + ["0xA8E2fD481342976a3259591FBc08999369a43C5A", 3554431], // Uniswap ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 163300], // Lynex ], base: [ From 19437a5916edcdd6311795b8ea947244eb958578 Mon Sep 17 00:00:00 2001 From: ZebraDAO <153050026+ZebraDAOFinance@users.noreply.github.com> Date: Wed, 10 Apr 2024 05:54:27 +0000 Subject: [PATCH 1168/2004] Update information (#9785) * Listing on DefiLlama * code refactor * Add files via upload --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ZebraDAO/index.js | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/projects/ZebraDAO/index.js b/projects/ZebraDAO/index.js index dbeed965a29..2ec1bed8226 100644 --- a/projects/ZebraDAO/index.js +++ b/projects/ZebraDAO/index.js @@ -1,11 +1,31 @@ const { compoundExports2 } = require("../helper/compound"); const { staking } = require('../helper/staking') +const { mergeExports } = require("../helper/utils") +const { yieldHelper } = require("../helper/yieldHelper") -module.exports = { - base: compoundExports2({ comptroller: '0xBEA1D596Ae022fae90d84ffaF0907E38a25Ed6E7', cether: '0x4B20dBdd4d5a7A762f788796DF5e0487007C6B36', }), -}; +const token = '0xF0ce1d83b5FC9c67F157d8B97fD09E2cF8AF899E' -module.exports.base.staking = staking( +const lend = compoundExports2({ comptroller: '0xBEA1D596Ae022fae90d84ffaF0907E38a25Ed6E7', cether: '0x4B20dBdd4d5a7A762f788796DF5e0487007C6B36', }) + +const stakings = staking( ['0x0b42A3D7290a94DF04cf4193f62856950A5F5f89', '0x5346fa63509Ed9dEeF2795eD62f5cC84a5F2Ab00'], - '0xF0ce1d83b5FC9c67F157d8B97fD09E2cF8AF899E', + 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 From ed8d4e5eb5149754832eb4ad5f7df6062eb88525 Mon Sep 17 00:00:00 2001 From: Rodrigo Gaona <43006704+Gaonuk@users.noreply.github.com> Date: Wed, 10 Apr 2024 01:54:43 -0400 Subject: [PATCH 1169/2004] =?UTF-8?q?=E2=9C=A8=20Update=20Arch=20Adapter:?= =?UTF-8?q?=20Add=20Vault=20(#9782)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/arch-ethereum-web-3/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/arch-ethereum-web-3/index.js b/projects/arch-ethereum-web-3/index.js index 460da42b518..2bfc28e0c3b 100644 --- a/projects/arch-ethereum-web-3/index.js +++ b/projects/arch-ethereum-web-3/index.js @@ -17,6 +17,8 @@ const polygonChambers = [ '0xde2925d582fc8711a0e93271c12615bdd043ed1c', ] +const strategies = ['0x4e39ceae6e771605ddd7d1121f3320f7a2319318'] + const setAbi = 'address[]:getComponents' const chamberAbi = 'address[]:getConstituentsAddresses' @@ -27,7 +29,11 @@ async function tvl(api) { 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] }) + const balances = await sumTokens2({ api, ownerTokens: toa, blacklistedTokens: [...sets, ...chambers, ...strategies] }) + + // Add vaults + await api.erc4626Sum({ calls: strategies, balanceAbi: 'totalAssets', tokenAbi: "asset" }) + return balances } From 349be9b07027cad41e65c92a8e391074702ea9e1 Mon Sep 17 00:00:00 2001 From: anna-pelith <132339610+anna-pelith@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:59:05 +0800 Subject: [PATCH 1170/2004] feat: dyson add blast chain (#9774) * feat: dyson add blast chain * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dyson/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/dyson/index.js b/projects/dyson/index.js index 00b48d0b669..1bb23112fa4 100644 --- a/projects/dyson/index.js +++ b/projects/dyson/index.js @@ -3,6 +3,7 @@ const { getUniTVL } = require('../helper/unknownTokens') const config = { linea: '0xecD30C099c222AbffDaf3E2A3d2455FC8e8c739E', polygon_zkevm: '0x51a0d4b81400581d8722627dafcd0c1ff9357d1d', + blast: '0x51a0d4b81400581d8722627dafcd0c1ff9357d1d', } module.exports = { From 12968486f15317c618262df22e8afb3df7db393d Mon Sep 17 00:00:00 2001 From: particle-deployer <130306380+particle-deployer@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:00:48 -0700 Subject: [PATCH 1171/2004] duo (#9779) Co-authored-by: Wukong Particle --- projects/particle-trade-duo/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index 6fdd5f89e25..3d74dbf6d1c 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -5,10 +5,6 @@ const config = { }, } -module.exports = { - doublecounted: true, -}; - Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: async (api) => { From 75169d6a5ee730310951d1fd9d1c5162e79c573a Mon Sep 17 00:00:00 2001 From: lanotechres <162079480+lanotechres@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:14:50 +0900 Subject: [PATCH 1172/2004] Add Test Auction TVL (#9777) * gomble: add testAuction tvl * Add Test Auction TVL and Pull Request MD * revert change to pull_request_template.md * Update index.js --------- Co-authored-by: agwab Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gomble/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/gomble/index.js b/projects/gomble/index.js index 5f373477246..0e4cf9e66d2 100644 --- a/projects/gomble/index.js +++ b/projects/gomble/index.js @@ -1,9 +1,11 @@ +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 }) - return api.sumTokens({ owner: stakingContractAddress, tokens: vTokens.concat(tokens) }) + await api.sumTokens({ owners: [stakingContractAddress, testAuctionContractAddress], tokens: vTokens.concat(tokens).concat([ADDRESSES.null]) }); } module.exports = { From f95da384376d1089393ca1ba0cda22f9f6f4f832 Mon Sep 17 00:00:00 2001 From: Ewan Sheldon Date: Wed, 10 Apr 2024 08:15:59 +0200 Subject: [PATCH 1173/2004] Add RDNT to The Standard (#9773) * add gmx to tvl tokens * add rdnt to tvl collaterals --- projects/standard-smart-vaults/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/standard-smart-vaults/index.js b/projects/standard-smart-vaults/index.js index b4386cde029..c5e839887dc 100644 --- a/projects/standard-smart-vaults/index.js +++ b/projects/standard-smart-vaults/index.js @@ -10,6 +10,7 @@ const tokens = [ ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.LINK, ADDRESSES.arbitrum.GMX, + '0x3082CC23568eA640225c2467653dB90e9250AaA0', '0xfEb4DfC8C4Cf7Ed305bb08065D08eC6ee6728429' ] From 2dfdf57aa19ec3df3bc3e7b066fb7659ebf157f4 Mon Sep 17 00:00:00 2001 From: RES <165130289+res-pan@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:31:11 -0700 Subject: [PATCH 1174/2004] Add Zero-G Finance (#9780) --- projects/zero-g-fi/index.js | 87 +++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 projects/zero-g-fi/index.js diff --git a/projects/zero-g-fi/index.js b/projects/zero-g-fi/index.js new file mode 100644 index 00000000000..af290106ddb --- /dev/null +++ b/projects/zero-g-fi/index.js @@ -0,0 +1,87 @@ +const { nullAddress } = require("../helper/tokenMapping"); + +const ZGETH_ADDRESS = "0x17fdeB2fbB8089fea8a7BDb847E49ce67cF863df"; +const ORACLE_ADDRESS = "0xAa6Fd6788fCA604AcFD3FE7e160Fbfcf4F0ef95C"; +const LOCKBOX_ADDRESS = "0x742B5Cb1a6a10E568a79D70EF77b542663ED3e1a"; +const ARBITRUM_ZGETH_ADDRESS = "0xA5E5A6724E99EaBd4CA236633AAb882B7658F287"; +const ARBITRUM_ORACLE_ADDRESS = "0xae69f9AC9aC9302E2F97B313CaF1fB45a9bB18A6" +const OPTIMISM_BASE_ZGETH_ADDRESS = "0x4B9D5F4e95f6Fe93B4607BFdB43CB6b32cE47aa0"; +const OPTIMISM_BASE_ORACLE_ADDRESS = "0x052c3De4979154C687eAc3865c6A7cC784328EfE"; + +async function ARBITRUM_TVL(api) { + const totalSupply = await api.call({ + abi: "erc20:totalSupply", + target: ARBITRUM_ZGETH_ADDRESS, + }); + + const lastPrice = await api.call({ + abi: "function lastPrice() external view returns (uint256)", + target: ARBITRUM_ORACLE_ADDRESS, + }); + + api.add(nullAddress, (totalSupply * lastPrice) / 1e18); +} + +async function OPTIMISM_TVL(api) { + const totalSupply = await api.call({ + abi: "erc20:totalSupply", + target: OPTIMISM_BASE_ZGETH_ADDRESS, + }); + + const lastPrice = await api.call({ + abi: "function lastPrice() external view returns (uint256)", + target: OPTIMISM_BASE_ORACLE_ADDRESS, + }); + + api.add(nullAddress, (totalSupply * lastPrice) / 1e18); +} + +async function BASE_TVL(api) { + const totalSupply = await api.call({ + abi: "erc20:totalSupply", + target: OPTIMISM_BASE_ZGETH_ADDRESS, + }); + + const lastPrice = await api.call({ + abi: "function lastPrice() external view returns (uint256)", + target: OPTIMISM_BASE_ORACLE_ADDRESS, + }); + + api.add(nullAddress, (totalSupply * lastPrice) / 1e18); +} + +async function ETHEREUM_TVL(api) { + const totalSupply = await api.call({ + abi: "erc20:totalSupply", + target: ZGETH_ADDRESS, + }); + + const lockBoxBalance = await api.call({ + abi: "erc20:totalSupply", + target: ZGETH_ADDRESS, + params: [LOCKBOX_ADDRESS], + }); + + const lastPrice = await api.call({ + abi: "function zgETHPrice() external view returns (uint256)", + target: ORACLE_ADDRESS, + }); + + api.add(nullAddress, ((totalSupply - lockBoxBalance) * lastPrice) / 1e18); +} + +module.exports = { + doublecounted: true, + ethereum: { + tvl: ETHEREUM_TVL, + }, + optimism: { + tvl: OPTIMISM_TVL, + }, + arbitrum: { + tvl: ARBITRUM_TVL, + }, + base: { + tvl: BASE_TVL, + }, +} From 6ab0af465e7f5ba1ce6f81af143e2d5d15401682 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 08:32:01 +0200 Subject: [PATCH 1175/2004] code refactor --- projects/zero-g-fi/index.js | 90 +++++++++---------------------------- 1 file changed, 20 insertions(+), 70 deletions(-) diff --git a/projects/zero-g-fi/index.js b/projects/zero-g-fi/index.js index af290106ddb..ce657825ee7 100644 --- a/projects/zero-g-fi/index.js +++ b/projects/zero-g-fi/index.js @@ -3,69 +3,11 @@ const { nullAddress } = require("../helper/tokenMapping"); const ZGETH_ADDRESS = "0x17fdeB2fbB8089fea8a7BDb847E49ce67cF863df"; const ORACLE_ADDRESS = "0xAa6Fd6788fCA604AcFD3FE7e160Fbfcf4F0ef95C"; const LOCKBOX_ADDRESS = "0x742B5Cb1a6a10E568a79D70EF77b542663ED3e1a"; -const ARBITRUM_ZGETH_ADDRESS = "0xA5E5A6724E99EaBd4CA236633AAb882B7658F287"; -const ARBITRUM_ORACLE_ADDRESS = "0xae69f9AC9aC9302E2F97B313CaF1fB45a9bB18A6" -const OPTIMISM_BASE_ZGETH_ADDRESS = "0x4B9D5F4e95f6Fe93B4607BFdB43CB6b32cE47aa0"; -const OPTIMISM_BASE_ORACLE_ADDRESS = "0x052c3De4979154C687eAc3865c6A7cC784328EfE"; - -async function ARBITRUM_TVL(api) { - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: ARBITRUM_ZGETH_ADDRESS, - }); - - const lastPrice = await api.call({ - abi: "function lastPrice() external view returns (uint256)", - target: ARBITRUM_ORACLE_ADDRESS, - }); - - api.add(nullAddress, (totalSupply * lastPrice) / 1e18); -} - -async function OPTIMISM_TVL(api) { - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: OPTIMISM_BASE_ZGETH_ADDRESS, - }); - - const lastPrice = await api.call({ - abi: "function lastPrice() external view returns (uint256)", - target: OPTIMISM_BASE_ORACLE_ADDRESS, - }); - - api.add(nullAddress, (totalSupply * lastPrice) / 1e18); -} - -async function BASE_TVL(api) { - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: OPTIMISM_BASE_ZGETH_ADDRESS, - }); - - const lastPrice = await api.call({ - abi: "function lastPrice() external view returns (uint256)", - target: OPTIMISM_BASE_ORACLE_ADDRESS, - }); - - api.add(nullAddress, (totalSupply * lastPrice) / 1e18); -} async function ETHEREUM_TVL(api) { - const totalSupply = await api.call({ - abi: "erc20:totalSupply", - target: ZGETH_ADDRESS, - }); - - const lockBoxBalance = await api.call({ - abi: "erc20:totalSupply", - target: ZGETH_ADDRESS, - params: [LOCKBOX_ADDRESS], - }); - - const lastPrice = await api.call({ - abi: "function zgETHPrice() external view returns (uint256)", - target: ORACLE_ADDRESS, - }); + 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); } @@ -75,13 +17,21 @@ module.exports = { ethereum: { tvl: ETHEREUM_TVL, }, - optimism: { - tvl: OPTIMISM_TVL, - }, - arbitrum: { - tvl: ARBITRUM_TVL, - }, - base: { - tvl: BASE_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) + } + } +}) From 372f16798dc5b3b54496ee1594a2f8ab906c8946 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 10:02:49 +0200 Subject: [PATCH 1176/2004] Add TVL calculation for SNS DAO treasuries --- projects/{treasury/sns.js => sns/index.js} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename projects/{treasury/sns.js => sns/index.js} (92%) diff --git a/projects/treasury/sns.js b/projects/sns/index.js similarity index 92% rename from projects/treasury/sns.js rename to projects/sns/index.js index 57164c6d596..345445aaaa0 100644 --- a/projects/treasury/sns.js +++ b/projects/sns/index.js @@ -33,7 +33,7 @@ async function tvl(api) { } module.exports = { - methodology: `We count the ICP on all SNS treasuries accounts as the collateral`, + methodology: `We count the ICP on all SNS DAO treasuries accounts`, icp: { tvl }, From 3b7043ad70713d4dbc131afd125c3a027a727280 Mon Sep 17 00:00:00 2001 From: F Date: Wed, 10 Apr 2024 10:41:00 +0200 Subject: [PATCH 1177/2004] add additional chains (#9772) * add additional chains * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/team-finance/apiCache.js | 96 ++++++------------------ projects/team-finance/config.js | 119 +++++++++--------------------- projects/team-finance/index.js | 81 +------------------- 3 files changed, 56 insertions(+), 240 deletions(-) diff --git a/projects/team-finance/apiCache.js b/projects/team-finance/apiCache.js index 687a6b9cca0..61e74963d3c 100644 --- a/projects/team-finance/apiCache.js +++ b/projects/team-finance/apiCache.js @@ -1,87 +1,35 @@ -const sdk = require("@defillama/sdk"); -const { ethereumContractData, polygonContractData, avaxContractData, bscContractData, kavaContractData, } = require("./config"); const { getCache, setCache, } = require("../helper/cache") -const { vestingHelper, } = require("../helper/unknownTokens") +const { vestingHelper, } = require("../helper/unknownTokens") +const config = require("./config") const project = 'bulky/team-finance' -function getTvl(args) { - return async (timestamp, ethBlock, chainBlocks) => { - let totalBalances = {} - for (let i = 0; i < args.length; i++) { - - const contractAddress = args[i].contract - const abi = args[i].contractABI - const chain = args[i].chain - const cache = await getCache(project, chain) || { vaults: {} } - if (!cache.vaults) cache.vaults = {} - if (!cache.vaults[contractAddress]) cache.vaults[contractAddress] = { lastTotalId: 0, tokens: [], } - const cCache = cache.vaults[contractAddress] - const block = chainBlocks[chain] - const trackedTokens = args[i].trackedTokens - const totalDepositId = Number( - ( - await sdk.api.abi.call({ - abi: abi.depositId, - target: contractAddress, - chain, block - }) - ).output - ); - - let calls = [] - for (let i = cCache.lastTotalId; i < totalDepositId; i++) - calls.push({ params: i }) - cCache.lastTotalId = totalDepositId - const lpAllTokens = ( - await sdk.api.abi.multiCall({ - target: contractAddress, - abi: abi.getDepositDetails, - chain, block, calls, - }) - ).output - - lpAllTokens.forEach(lp => { - if (!lp.success) return; - const lpToken = lp.output[0].toLowerCase() - cCache.tokens.push(lpToken) - }) - - const balances = await vestingHelper({ - cache, - useDefaultCoreAssets: true, - owner: contractAddress, - tokens: cCache.tokens, - block, chain, - blacklist: args[i].blacklist, - }) - await setCache(project, chain, cache) - - for (const [token, balance] of Object.entries(balances)) - sdk.util.sumSingleBalance(totalBalances, token, balance) - } - return totalBalances +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) } 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`, - ethereum: { - tvl: getTvl(ethereumContractData), - }, - bsc: { - tvl: getTvl(bscContractData), - }, - polygon: { - tvl: getTvl(polygonContractData), - }, - avax: { - tvl: getTvl(avaxContractData), - }, - kava: { - tvl: getTvl(kavaContractData) - } + 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 index 3a5c74ed79b..77a48b03182 100644 --- a/projects/team-finance/config.js +++ b/projects/team-finance/config.js @@ -1,91 +1,38 @@ const abi = require("./lockcontract_v3.abi.json"); const abi_v2 = require("./lockcontract.abi.json"); -const ethereumContractData = [ - { - chain: "ethereum", - contract: "0xe2fe530c047f2d85298b07d9333c05737f1435fb", - contractABI: abi, - factory: "0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f" - }, - { - chain: "ethereum", - contract: "0xdbf72370021babafbceb05ab10f99ad275c6220a", - contractABI: abi_v2, - factory: "0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f" - }, - { - chain: "ethereum", - contract: "0xc77aab3c6d7dab46248f3cc3033c856171878bd5", - contractABI: abi_v2, - factory: "0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f" - }, -] - -const kavaContractData = [ - { - chain: "kava", - contract: "0xa9ec655dac35d989c0c8be075b1106dcd32502d6", - contractABI: abi_v2, - factory: "0x4FD2c40c25Dd40e9Bf0CE8479bA384178b8671b5", - }, -]; - -const polygonContractData = [ - { - chain: "polygon", - contract: "0x3eF7442dF454bA6b7C1deEc8DdF29Cfb2d6e56c7", - contractABI: abi_v2, - factory: "0x5757371414417b8c6caad45baef941abc7d3ab32" - }, - { - chain: "polygon", - contract: "0x586c21a779c24efd2a8af33c9f7df2a2ea9af55c", - contractABI: abi_v2, - factory: "0x5757371414417b8c6caad45baef941abc7d3ab32" - }, -] - -const avaxContractData = [ - { - chain: "avax", - contract: "0x88ada02f6fce2f1a833cd9b4999d62a7ebb70367", - contractABI: abi_v2, - factory: "0x9ad6c38be94206ca50bb0d90783181662f0cfa10" - }, - { - chain: "avax", - contract: "0xe2fe530c047f2d85298b07d9333c05737f1435fb", - contractABI: abi, - factory: "0x9ad6c38be94206ca50bb0d90783181662f0cfa10" - }, -] - - -const bscContractData = [ - { - chain: "bsc", - contract: "0x0c89c0407775dd89b12918b9c0aa42bf96518820", - contractABI: abi_v2, - blacklist: [ - '0x6c7c87d9868b1db5a0f62d867baa90e0adfa7cfd', //TNNS - '0xf2619476bd0ca0eda08744029c66b62a904c2bf8', //JRIT - '0x854b4c305554c5fa72353e31b8480c0e5128a152', //WEL - '0x070a08beef8d36734dd67a491202ff35a6a16d97', // SLP - '0x9b83f4b893cf061d8c14471aa97ef24c352f5abe', // ubec-lp - ] - }, - { - chain: "bsc", - contract: "0x7536592bb74b5d62eb82e8b93b17eed4eed9a85c", - contractABI: abi_v2, - }, -] - module.exports = { - ethereumContractData, - polygonContractData, - avaxContractData, - bscContractData, - kavaContractData + 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 },], + velas: [{ contract: "0x586c21A779C24eFd2a8aF33C9F7Df2a2EA9aF55c", contractABI: abi_v2 },], + fantom: [{ contract: "0x9F726019452d65a120E1F7Ae6b937eE9EbD72440", contractABI: abi_v2 },], + cronos: [{ contract: "0x05b711Df32d73ECaa877d45a637a2eB415e7995f", 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, }, + ], } \ No newline at end of file diff --git a/projects/team-finance/index.js b/projects/team-finance/index.js index be863218091..0a351c24994 100644 --- a/projects/team-finance/index.js +++ b/projects/team-finance/index.js @@ -1,81 +1,2 @@ -const sdk = require("@defillama/sdk"); -const { ethereumContractData, polygonContractData, avaxContractData, bscContractData, kavaContractData } = require("./config"); -const { vestingHelper } = require("../helper/unknownTokens"); - -function getTvl(args) { - return async (timestamp, ethBlock, chainBlocks) => { - let totalBalances = {} - for (let i = 0; i < args.length; i++) { - - const contractAddress = args[i].contract - const abi = args[i].contractABI - const chain = args[i].chain - const block = chainBlocks[chain] - const trackedTokens = args[i].trackedTokens - const totalDepositId = Number( - ( - await sdk.api.abi.call({ - abi: abi.depositId, - target: contractAddress, - chain: chain, - block: block - }) - ).output - ); - - let lockedLPs = []; - const allDepositId = Array.from(Array(totalDepositId).keys()); - const lpAllTokens = ( - await sdk.api.abi.multiCall({ - abi: abi.getDepositDetails, - calls: allDepositId.map((num) => ({ - target: contractAddress, - params: num, - })), - chain: chain, - block: block - }) - ).output - - lpAllTokens.forEach(lp => { - if (!lp.success) return; - const lpToken = lp.output[0].toLowerCase() - lockedLPs.push(lpToken) - }) - - const balances = await vestingHelper({ - useDefaultCoreAssets: true, - owner: contractAddress, - tokens: lockedLPs, - block, chain, - blacklist: args[i].blacklist, - }) - - 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 to return sum TVL per chain`, - ethereum: { - tvl: getTvl(ethereumContractData), - }, - bsc: { - tvl: getTvl(bscContractData), - }, - polygon: { - tvl: getTvl(polygonContractData), - }, - avax: { - tvl: getTvl(avaxContractData), - }, - kava: { - tvl: getTvl(kavaContractData) - } -}; +module.exports = require("./apiCache") From 3d94ea652ed13cbb1dc83ad450fc0d91bb83d9e7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:05:14 +0200 Subject: [PATCH 1178/2004] qiDAO: add PSM --- projects/bridge-mutual/index.js | 51 +++++++-------------------------- projects/helper/tokenMapping.js | 3 ++ projects/qidao/index.js | 24 +++++++++------- 3 files changed, 26 insertions(+), 52 deletions(-) diff --git a/projects/bridge-mutual/index.js b/projects/bridge-mutual/index.js index 86d541ba070..0173d54bec3 100644 --- a/projects/bridge-mutual/index.js +++ b/projects/bridge-mutual/index.js @@ -30,52 +30,21 @@ const config = { }, } -module.exports = { -}; - Object.keys(config).forEach(chain => { const { CapitalPool, staking, PolicyBookRegistry, ShieldMining, usdt, bmi, } = config[chain] module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const balances = {} - // =================== GET USDT BALANCES =================== // - const vusdtBalances = ( - await sdk.api.abi.call({ - target: CapitalPool, - abi: abi["virtualUsdtAccumulatedBalance"], - chain, block - }) - ).output; - sdk.util.sumSingleBalance(balances, `${chain}:${usdt}`, vusdtBalances); - const policyBooks = await getPolicyBookList(chain, block, PolicyBookRegistry) - const { output: tokens } = await sdk.api.abi.multiCall({ - target: ShieldMining, - abi: abi.getShieldTokenAddress, - calls: policyBooks.map(i => ({ params: i })), - chain, block, - }) - const toa = tokens.map(({ input: { target }, output, }) => ([output, target])) - return sumTokens2({ balances, chain, block, tokensAndOwners: toa}) + 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({ chain, owners: staking, tokens: [bmi] }) + staking: sumTokensExport({ owners: staking, tokens: [bmi] }) } }) -// =================== GET LIST OF POLICY BOOKS =================== // -async function getPolicyBookList(chain, block, PolicyBookRegistry) { - const countPolicyBooks = ( - await sdk.api.abi.call({ - target: PolicyBookRegistry, - abi: abi["count"], - chain, block, - }) - ).output; - return ( - await sdk.api.abi.call({ - target: PolicyBookRegistry, - params: [0, countPolicyBooks], - abi: abi["list"], - chain, block, - }) - ).output; +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/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 9141fd18ce6..ac58f59b64f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -44,6 +44,9 @@ const fixBalancesTokens = { '0xf948aacec00289fc33d8226391f7e04bb457ad49': { coingeckoId: 'restaked-swell-eth', decimals: 18, }, '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18, }, }, + linea: { + '0x894134a25a5fac1c2c26f1d8fbf05111a3cb9487': { coingeckoId: 'grai', decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index edbb94c835a..816cf018923 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -1,6 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require("../helper/unwrapLPs"); -const sdk = require("@defillama/sdk"); module.exports = { methodology: @@ -104,13 +103,15 @@ const config = { "0x7333fd58d8d73a8e5fc1a16c8037ada4f580fa2b", "0x8d6cebd76f18e1558d4db88138e2defb3909fad6", "0x654a31ba7d714cfcab19b17d0066171c1a292349" - ] + ], + psm: ["0x83D41737d086033A9c3acE2F1Ad9350d7d91cf02",], }, linea: { vaults: [ "0x8ab01c5ee3422099156ab151eecb83c095626599", "0x7f9dd991e8fd0cbb52cb8eb35dd35c474a9a7a70" - ] + ], + psm: ["0x2f5cedaff534cc816ed6f551eb2b73d6f1daa440"], }, ethereum: { vaults: [ @@ -221,18 +222,19 @@ const config = { } Object.keys(config).forEach(chain => { - const { vaults, toa = [] } = config[chain] + const { vaults, toa = [], psm } = config[chain] module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const tokens = await sdk.api2.abi.multiCall({ - abi: 'address:collateral', - calls: vaults, - chain, block, - }) + 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, chain, block, }) + return sumTokens2({ tokensAndOwners, api }) } } }) From efd09ac91ec9109b7bfc239e7a5711817ead42f9 Mon Sep 17 00:00:00 2001 From: Alex Dupre Date: Wed, 10 Apr 2024 14:48:50 +0200 Subject: [PATCH 1179/2004] Add BlazeSwap DEX. (#9787) --- projects/blazeswap/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/blazeswap/index.js diff --git a/projects/blazeswap/index.js b/projects/blazeswap/index.js new file mode 100644 index 00000000000..8e95455529b --- /dev/null +++ b/projects/blazeswap/index.js @@ -0,0 +1,12 @@ +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, chain: "songbird" }), + }, + flare: { + tvl: getUniTVL({ factory: '0x440602f459D7Dd500a74528003e6A20A46d6e2A6', useDefaultCoreAssets: true, chain: "flare" }), + }, +} \ No newline at end of file From f0ea2d874cd42f929762e98d9095ad51cfbdd94e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:54:45 +0200 Subject: [PATCH 1180/2004] remove redundant param --- projects/FirepotSwap/index.js | 2 +- projects/GoSwap/index.js | 2 +- projects/LizardExchange/index.js | 2 +- projects/blazeswap/index.js | 4 ++-- projects/boss-swap/index.js | 2 +- projects/brewswap/index.js | 4 ++-- projects/bridgekek/index.js | 4 ++-- projects/bscswap/index.js | 2 +- projects/burgerswap/index.js | 2 +- projects/canary/index.js | 4 ++-- projects/capitaldex/index.js | 2 +- projects/chronoswap/index.js | 2 +- projects/cowswap-cash/index.js | 2 +- projects/crodex/index.js | 2 +- projects/cronus/index.js | 2 +- projects/cryptoswap/index.js | 2 +- projects/crystalvale/index.js | 2 +- projects/davos-protocol/index.js | 10 +++++----- projects/defikingdoms/index.js | 4 ++-- projects/defyswap/index.js | 2 +- projects/demodyfi/index.js | 2 +- projects/diffusionfi/index.js | 2 +- projects/eggtartswap/index.js | 2 +- projects/emberswap/index.js | 2 +- projects/esdt-market/index.js | 2 +- projects/evmoswap/index.js | 2 +- projects/fairyswap-v2/index.js | 2 +- projects/fairyswap/index.js | 2 +- projects/flare-loans/index.js | 2 +- projects/flarex/index.js | 4 ++-- projects/freeriver/index.js | 2 +- projects/funbeast/index.js | 2 +- projects/gibxswap/index.js | 2 +- projects/glide-finance/index.js | 2 +- projects/helper/cex.js | 2 +- projects/helper/chain/starknet.js | 2 +- projects/honkswap/index.js | 2 +- projects/hunnyswap/index.js | 2 +- projects/kaco/index.js | 2 +- projects/kryptodex/index.js | 2 +- projects/kswapfinance/index.js | 2 +- projects/ladex-exchange/index.js | 2 +- projects/laserswap/index.js | 2 +- projects/liondex/index.js | 2 +- projects/lootswap/index.js | 2 +- projects/luaswap/index.js | 4 ++-- projects/memedex/index.js | 2 +- projects/mento/index.js | 2 +- projects/milkydex/index.js | 2 +- projects/milkyswap/index.js | 2 +- projects/mimoswap/index.js | 2 +- projects/mindgames/index.js | 2 +- projects/mistswap/index.js | 2 +- projects/mojitoswap/index.js | 2 +- projects/morpheusswap/index.js | 2 +- projects/muesliswap/index.js | 2 +- projects/narwhalswap/index.js | 2 +- projects/nearpad/index.js | 2 +- projects/netswap/index.js | 2 +- projects/neuy/index.js | 2 +- projects/omnidex/index.js | 2 +- projects/oni/index.js | 2 +- projects/oracleswap/index.js | 2 +- projects/orbitalswap/index.js | 2 +- projects/orbitbridge/index.js | 2 +- projects/padswap/index.js | 6 +++--- projects/paintswap/index.js | 2 +- projects/pandoraswap/index.js | 2 +- projects/pankuku/index.js | 2 +- projects/partyswap/index.js | 2 +- projects/peardao/index.js | 2 +- projects/polkaex/index.js | 8 ++++---- projects/polyDEX-cryption-network/index.js | 2 +- projects/polycat-dex/index.js | 2 +- projects/pureswap/index.js | 2 +- projects/quantumx-network/index.js | 2 +- projects/rskswap/index.js | 2 +- projects/safeswap/index.js | 4 ++-- projects/saharaexchange/index.js | 2 +- projects/saitaswap/index.js | 4 ++-- projects/seascape/index.js | 2 +- projects/shibance/index.js | 4 ++-- projects/shinobi/index.js | 2 +- projects/smartdex/index.js | 2 +- projects/smartdexbch/index.js | 2 +- projects/smbswap/index.js | 2 +- projects/smolswap/index.js | 2 +- projects/solarbeam/subgraphs.js | 2 +- projects/solarflare.js | 2 +- projects/sonicswap/index.js | 2 +- projects/stabledoin/index.js | 4 ++-- projects/standard-tech/index.js | 6 +++--- projects/swapp/index.js | 2 +- projects/swappi/index.js | 2 +- projects/tangoswap/index.js | 2 +- projects/tethys/index.js | 2 +- projects/thetaswap/index.js | 2 +- projects/treasury/peardao.js | 2 +- projects/ubeswap/index.js | 2 +- projects/veniceswap/index.js | 2 +- projects/versa/index.js | 2 +- projects/versedex/index.js | 4 ++-- projects/voltswap/index.js | 4 ++-- projects/wannaswap/index.js | 2 +- projects/wingswap/index.js | 2 +- projects/yetiswap/index.js | 2 +- projects/yieldfields/index.js | 2 +- projects/yokaiswap/index.js | 6 +++--- projects/yumiswap/index.js | 2 +- projects/zappy/index.js | 2 +- projects/zenithswap/index.js | 2 +- projects/zircon-gamma/index.js | 4 ++-- projects/zyxswap/index.js | 2 +- 113 files changed, 140 insertions(+), 140 deletions(-) diff --git a/projects/FirepotSwap/index.js b/projects/FirepotSwap/index.js index 6493e28d348..1a845539f4c 100644 --- a/projects/FirepotSwap/index.js +++ b/projects/FirepotSwap/index.js @@ -2,7 +2,7 @@ const { getUniTVL } = require('../helper/unknownTokens') const FACTORY = "0xe63Cf585Dae8273A5e37AfF6da2f823FBf3Eb5BE" // This factory is on AirDAO Mainnet (Chain Id: 16718) -const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, fetchBalances: true, chain: "airdao" }) +const dexTVL = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, fetchBalances: true, }) module.exports = { misrepresentedTokens: true, diff --git a/projects/GoSwap/index.js b/projects/GoSwap/index.js index 5961105e58a..b8310ccf855 100644 --- a/projects/GoSwap/index.js +++ b/projects/GoSwap/index.js @@ -4,6 +4,6 @@ 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', chain: 'gochain', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xe93c2cD333902d8dd65bF9420B68fC7B1be94bB3', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/LizardExchange/index.js b/projects/LizardExchange/index.js index bd660b349c8..fa43be757d9 100644 --- a/projects/LizardExchange/index.js +++ b/projects/LizardExchange/index.js @@ -1,6 +1,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { oasis: { - tvl: getUniTVL({ factory: '0xefA6861931991CCE372c477a015619A21dfEBE8c', chain: 'oasis', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xefA6861931991CCE372c477a015619A21dfEBE8c', useDefaultCoreAssets: true }), } }; \ No newline at end of file diff --git a/projects/blazeswap/index.js b/projects/blazeswap/index.js index 8e95455529b..2683d0e3b31 100644 --- a/projects/blazeswap/index.js +++ b/projects/blazeswap/index.js @@ -4,9 +4,9 @@ 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, chain: "songbird" }), + tvl: getUniTVL({ factory: '0x875b815a1D1b12a6fee3c068a7c43F80e4a50234', useDefaultCoreAssets: true, }), }, flare: { - tvl: getUniTVL({ factory: '0x440602f459D7Dd500a74528003e6A20A46d6e2A6', useDefaultCoreAssets: true, chain: "flare" }), + tvl: getUniTVL({ factory: '0x440602f459D7Dd500a74528003e6A20A46d6e2A6', useDefaultCoreAssets: true, }), }, } \ No newline at end of file diff --git a/projects/boss-swap/index.js b/projects/boss-swap/index.js index 0206832b2e2..fbc358ee83d 100644 --- a/projects/boss-swap/index.js +++ b/projects/boss-swap/index.js @@ -2,6 +2,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ harmony: { - tvl: getUniTVL({ factory: '0x7f107365E6Ef1F8824C724EA6aF7654AFB742963', chain: 'harmony', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x7f107365E6Ef1F8824C724EA6aF7654AFB742963', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/brewswap/index.js b/projects/brewswap/index.js index 4fbde4a1363..3fc47f3f2d7 100644 --- a/projects/brewswap/index.js +++ b/projects/brewswap/index.js @@ -5,9 +5,9 @@ module.exports = { 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', chain: 'polygon', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x563c86d9F17914FF868BCbe3903B3ef829A82F9E', useDefaultCoreAssets: true }), }, bsc: { - tvl: getUniTVL({ factory: '0xFe2bF5fc2D131dB07C5Ef7076856FD7f342738fF', chain: 'bsc', useDefaultCoreAssets: true}) + tvl: getUniTVL({ factory: '0xFe2bF5fc2D131dB07C5Ef7076856FD7f342738fF', useDefaultCoreAssets: true}) } }; // node test.js projects/brewswap/index.js diff --git a/projects/bridgekek/index.js b/projects/bridgekek/index.js index 813e0293ad3..b2227b1ca53 100644 --- a/projects/bridgekek/index.js +++ b/projects/bridgekek/index.js @@ -2,10 +2,10 @@ const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') module.exports = { ethereum: { - tvl: sumTokensExport({ tokens: ['0x67954768E721FAD0f0f21E33e874497C73ED6a82'], owner: '0x53423b7bf445997e76ad94f820f0559e451a98e2', chain: 'ethereum', logCalls: true }), + tvl: sumTokensExport({ tokens: ['0x67954768E721FAD0f0f21E33e874497C73ED6a82'], owner: '0x53423b7bf445997e76ad94f820f0559e451a98e2', logCalls: true }), }, kekchain: { tvl: () => ({}), - // tvl: sumTokensExport({ tokens: [nullAddress ], owner: '0x0c851a31F484A7b462B82E138A2fa591ae8Fadc9', chain: 'kekchain',}), + // tvl: sumTokensExport({ tokens: [nullAddress ], owner: '0x0c851a31F484A7b462B82E138A2fa591ae8Fadc9', }), }, } \ No newline at end of file diff --git a/projects/bscswap/index.js b/projects/bscswap/index.js index 136f26451bb..f8d0681088c 100644 --- a/projects/bscswap/index.js +++ b/projects/bscswap/index.js @@ -8,7 +8,7 @@ module.exports = { misrepresentedTokens: true, bsc: { staking: staking(BSWAPStakingContract, BSWAP, "bsc"), - tvl: getUniTVL({ factory: '0xCe8fd65646F2a2a897755A1188C04aCe94D2B8D0', chain: 'bsc', useDefaultCoreAssets: true }), + 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/burgerswap/index.js b/projects/burgerswap/index.js index f48dd91cfe6..dc184e8db15 100644 --- a/projects/burgerswap/index.js +++ b/projects/burgerswap/index.js @@ -55,7 +55,7 @@ async function bscShackTvl(timestamp, ethBlock, chainBlocks) { return balances; } -const bscDexTvl = getUniTVL({ factory: Factory, chain: 'bsc', useDefaultCoreAssets: true, }) +const bscDexTvl = getUniTVL({ factory: Factory, useDefaultCoreAssets: true, }) module.exports = { misrepresentedTokens: true, diff --git a/projects/canary/index.js b/projects/canary/index.js index 6ced76fb400..677973626a2 100644 --- a/projects/canary/index.js +++ b/projects/canary/index.js @@ -15,10 +15,10 @@ const contracts = { module.exports = { misrepresentedTokens: true, avax:{ - tvl: getUniTVL({ chain: 'avax', useDefaultCoreAssets: true, factory: contracts.avax.factory, }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.avax.factory, }), staking: staking(contracts.avax.stakingContract, contracts.avax.cnr, "avax"), }, scroll:{ - tvl: getUniTVL({ chain: 'scroll', useDefaultCoreAssets: true, factory: contracts.scroll.factory, }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.scroll.factory, }), }, } diff --git a/projects/capitaldex/index.js b/projects/capitaldex/index.js index 570e9c6f28f..073039552e8 100644 --- a/projects/capitaldex/index.js +++ b/projects/capitaldex/index.js @@ -8,6 +8,6 @@ module.exports = { tvl: getUniTVL({ factory: '0x03407772F5EBFB9B10Df007A2DD6FFf4EdE47B53', useDefaultCoreAssets: true }), }, curio: { - // tvl: getUniTVL({ factory: '0xc36f5180b181f1b949e0ff4d65b258e0987f443f', chain: 'curio', useDefaultCoreAssets: true }), + // tvl: getUniTVL({ factory: '0xc36f5180b181f1b949e0ff4d65b258e0987f443f', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/chronoswap/index.js b/projects/chronoswap/index.js index 5acdf915e9a..e8aceb1df23 100644 --- a/projects/chronoswap/index.js +++ b/projects/chronoswap/index.js @@ -6,7 +6,7 @@ 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', chain: 'cronos', useDefaultCoreAssets: true }), + 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") diff --git a/projects/cowswap-cash/index.js b/projects/cowswap-cash/index.js index ee736bc1a69..18f58b21c84 100644 --- a/projects/cowswap-cash/index.js +++ b/projects/cowswap-cash/index.js @@ -7,7 +7,7 @@ module.exports = { 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', chain: 'smartbch', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x72cd8c0B5169Ff1f337E2b8F5b121f8510b52117', useDefaultCoreAssets: true }), staking: stakingPricedLP("0x4856BB1a11AF5514dAA0B0DC8Ca630671eA9bf56", "0xc8E09AEdB3c949a875e1FD571dC4b3E48FB221f0", "smartbch", "0x599061437d8455df1f86d401FCC2211baaBC632D", "bitcoin-cash", false, 18) }, diff --git a/projects/crodex/index.js b/projects/crodex/index.js index 412ee298670..6a79bee00fb 100644 --- a/projects/crodex/index.js +++ b/projects/crodex/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'cronos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xe9c29cB475C0ADe80bE0319B74AD112F1e80058F', useDefaultCoreAssets: true }), }, }; // node test.js projects/crodex/index.js diff --git a/projects/cronus/index.js b/projects/cronus/index.js index a5e01048455..f4cfc1fe138 100644 --- a/projects/cronus/index.js +++ b/projects/cronus/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'evmos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x20570b7bFf86B2f92068622D0805160f318554Be', useDefaultCoreAssets: true }), }, }; // node test.js projects/cronus/index.js diff --git a/projects/cryptoswap/index.js b/projects/cryptoswap/index.js index ceba3f08baf..637e0be72b7 100644 --- a/projects/cryptoswap/index.js +++ b/projects/cryptoswap/index.js @@ -4,7 +4,7 @@ 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', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x4136A450861f5CFE7E860Ce93e678Ad12158695C', useDefaultCoreAssets: true }), }, start: 1651494114, // Mon May 02 2022 12:21:54 }; diff --git a/projects/crystalvale/index.js b/projects/crystalvale/index.js index b1a0e860200..1efa9d72253 100644 --- a/projects/crystalvale/index.js +++ b/projects/crystalvale/index.js @@ -7,7 +7,7 @@ module.exports = { "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', chain: 'dfk', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x794C07912474351b3134E6D6B3B7b3b4A07cbAAa', useDefaultCoreAssets: true }), }, }; diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index fbb5f67b563..05246b69446 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -4,12 +4,12 @@ const { sumTokensExport, } = require('../helper/unknownTokens') module.exports = { methodology: 'The total amount of ankrMATIC in the vault', polygon: { - tvl: sumTokensExport({ chain: 'polygon', owner: '0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', tokens: [ + tvl: sumTokensExport({ owner: '0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', tokens: [ '0x0E9b89007eEE9c958c0EDA24eF70723C2C93dD58', // ankrMATIC ] }), }, ethereum: { - tvl: sumTokensExport({ chain: 'ethereum', owners: ['0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0xb396b31599333739A97951b74652c117BE86eE1D', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d'], tokens: [ + tvl: sumTokensExport({ owners: ['0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0xb396b31599333739A97951b74652c117BE86eE1D', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d'], tokens: [ ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.RETH, '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //stmatic @@ -18,18 +18,18 @@ module.exports = { ] }), }, arbitrum: { - tvl: sumTokensExport({ chain: 'arbitrum', owners: ['0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4' ], tokens: [ + tvl: sumTokensExport({ owners: ['0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4' ], tokens: [ "0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8", //RETH ADDRESSES.arbitrum.WSTETH ] }), }, bsc: { - tvl: sumTokensExport({ chain: 'bsc', owner: '0x4e90156997BB469c6F5975e13FF1451C9500B711', tokens: [ + tvl: sumTokensExport({ owner: '0x4e90156997BB469c6F5975e13FF1451C9500B711', tokens: [ "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827" ] }), }, optimism: { - tvl: sumTokensExport({ chain: 'optimism', owner: '0x9c44E6A927302dA33dd76abe4558f26e31C48019', tokens: [ + tvl: sumTokensExport({ owner: '0x9c44E6A927302dA33dd76abe4558f26e31C48019', tokens: [ "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D" //RETH ] }), }, diff --git a/projects/defikingdoms/index.js b/projects/defikingdoms/index.js index 49bced43b00..1892bd74e4f 100644 --- a/projects/defikingdoms/index.js +++ b/projects/defikingdoms/index.js @@ -5,11 +5,11 @@ const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { harmony: { - tvl: getUniTVL({ factory: '0x9014B937069918bd319f80e8B3BB4A2cf6FAA5F7', chain: 'harmony', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x9014B937069918bd319f80e8B3BB4A2cf6FAA5F7', useDefaultCoreAssets: true }), staking: staking(ADDRESSES.harmony.xJEWEL, ADDRESSES.harmony.JEWEL, "harmony"), }, klaytn: { - tvl: getUniTVL({ factory: '0x36fAE766e51f17F8218C735f58426E293498Db2B', chain: 'klaytn', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x36fAE766e51f17F8218C735f58426E293498Db2B', useDefaultCoreAssets: true }), staking: staking("0xaa8548665bcc12c202d5d0c700093123f2463ea6", "0x30c103f8f5a3a732dfe2dce1cc9446f545527b43", "klaytn"), }, hallmarks:[ diff --git a/projects/defyswap/index.js b/projects/defyswap/index.js index b1457bad445..b1e05037aac 100644 --- a/projects/defyswap/index.js +++ b/projects/defyswap/index.js @@ -18,7 +18,7 @@ module.exports = { tvl: () => ({}), }, fantom: { - tvl: getUniTVL({ factory, chain: 'fantom', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), staking: stakingUnknownPricedLP( masterchef, dfy, diff --git a/projects/demodyfi/index.js b/projects/demodyfi/index.js index 84e7f8613fb..5d4e830a964 100644 --- a/projects/demodyfi/index.js +++ b/projects/demodyfi/index.js @@ -133,7 +133,7 @@ module.exports = { pool2: dmodBscLPPool }, moonbeam: { - tvl: getUniTVL({ factory: '0x61999fAb7fdcEe1B26b82b5c2f825BCC8F8c2458', chain: 'moonbeam', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x61999fAb7fdcEe1B26b82b5c2f825BCC8F8c2458', useDefaultCoreAssets: true }), }, }; // node test.js projects/demodyfi/index.js \ No newline at end of file diff --git a/projects/diffusionfi/index.js b/projects/diffusionfi/index.js index 527a62e8884..7b3674e698c 100644 --- a/projects/diffusionfi/index.js +++ b/projects/diffusionfi/index.js @@ -7,7 +7,7 @@ module.exports = { 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', chain: 'evmos', useDefaultCoreAssets: true }), + 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/eggtartswap/index.js b/projects/eggtartswap/index.js index 7bf4df4eb26..1d09448cdea 100644 --- a/projects/eggtartswap/index.js +++ b/projects/eggtartswap/index.js @@ -2,6 +2,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ harmony: { - tvl: getUniTVL({ factory: '0x65CED3c0Af7CDcC64Fb3eE5F021F9b4E65467812', chain: 'harmony', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x65CED3c0Af7CDcC64Fb3eE5F021F9b4E65467812', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/emberswap/index.js b/projects/emberswap/index.js index 8a81e4d5039..17093a455d7 100644 --- a/projects/emberswap/index.js +++ b/projects/emberswap/index.js @@ -14,7 +14,7 @@ module.exports = { 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, chain: 'smartbch', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), staking: stakingPricedLP(VAULT, EMBER, "smartbch", EMBER_WBCH_PAIR, "bitcoin-cash", 18) } }; diff --git a/projects/esdt-market/index.js b/projects/esdt-market/index.js index e61424d0faa..83c509ce8d6 100644 --- a/projects/esdt-market/index.js +++ b/projects/esdt-market/index.js @@ -3,6 +3,6 @@ const { sumTokensExport } = require('../helper/sumTokens') module.exports = { timetravel: false, elrond: { - tvl: sumTokensExport({ chain: 'elrond', owner: 'erd1qqqqqqqqqqqqqpgqr8z5hkwek0pmytcvla86qjusn4hkufjlrp8s7hhkjk', }) + tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgqr8z5hkwek0pmytcvla86qjusn4hkufjlrp8s7hhkjk', }) } } \ No newline at end of file diff --git a/projects/evmoswap/index.js b/projects/evmoswap/index.js index ccb4b70a36f..9977c6b2411 100644 --- a/projects/evmoswap/index.js +++ b/projects/evmoswap/index.js @@ -11,7 +11,7 @@ const madWETH = ADDRESSES.evmos.WETH const madWBTC = ADDRESSES.evmos.WBTC //////////////////////////// UNI AMM //////////////////////////////////// -const evmoswapTvl = getUniTVL({ factory: '0xF24E36e53628C3086493B9EfA785ab9DD85232EB', chain: 'evmos', useDefaultCoreAssets: true }) +const evmoswapTvl = getUniTVL({ factory: '0xF24E36e53628C3086493B9EfA785ab9DD85232EB', useDefaultCoreAssets: true }) //////////////////////////// STABLE AMM //////////////////////////////////// const poolAddressesEvmos = [ diff --git a/projects/fairyswap-v2/index.js b/projects/fairyswap-v2/index.js index cb51c5296ef..06a919ec214 100644 --- a/projects/fairyswap-v2/index.js +++ b/projects/fairyswap-v2/index.js @@ -3,6 +3,6 @@ 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', chain: 'findora', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0xA2DD9611675927281070dB095599D31a8D4a007A', useDefaultCoreAssets: true, }), }, }; \ No newline at end of file diff --git a/projects/fairyswap/index.js b/projects/fairyswap/index.js index 7a72e6aeed8..46f15417f82 100644 --- a/projects/fairyswap/index.js +++ b/projects/fairyswap/index.js @@ -3,6 +3,6 @@ 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', chain: 'findora', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xA9a6E17a05c71BFe168CA972368F4b98774BF6C3', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/flare-loans/index.js b/projects/flare-loans/index.js index be641a55001..d1badc87dd7 100644 --- a/projects/flare-loans/index.js +++ b/projects/flare-loans/index.js @@ -4,7 +4,7 @@ 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({chain: 'songbird', tokensAndOwners: [ + tvl: sumTokensExport({tokensAndOwners: [ [ADDRESSES.songbird.WSGB, '0xFa21A4ABD1a58CefAB79CFd597aCcc314403eE9f'], [ADDRESSES.songbird.EXFI,'0x4595fc96262057f9b0d4276ff04de8f2f44e612e'] ]}) diff --git a/projects/flarex/index.js b/projects/flarex/index.js index c0864d2da31..354ed6ab72d 100644 --- a/projects/flarex/index.js +++ b/projects/flarex/index.js @@ -1,8 +1,8 @@ const { getUniTVL } = require('../helper/unknownTokens') const sdk = require('@defillama/sdk') -const v1 =getUniTVL({ factory: '0x0eAC91966b12b81db18f59D8e893b9ccef7e2c30', chain: 'songbird', useDefaultCoreAssets: true }) -const v2 =getUniTVL({ factory: '0x7a39408809441814469A8Fb3F5CFea1aA2774fB6', chain: 'songbird', useDefaultCoreAssets: true }) +const v1 =getUniTVL({ factory: '0x0eAC91966b12b81db18f59D8e893b9ccef7e2c30', useDefaultCoreAssets: true }) +const v2 =getUniTVL({ factory: '0x7a39408809441814469A8Fb3F5CFea1aA2774fB6', useDefaultCoreAssets: true }) module.exports={ misrepresentedTokens: true, diff --git a/projects/freeriver/index.js b/projects/freeriver/index.js index 9f2985dc845..566c4561fcb 100644 --- a/projects/freeriver/index.js +++ b/projects/freeriver/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ misrepresentedTokens: true, moonriver: { - tvl: getUniTVL({ factory: '0x52abD262B13bef4E65Ff624880E8A0595a17af48', chain: 'moonriver', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x52abD262B13bef4E65Ff624880E8A0595a17af48', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/funbeast/index.js b/projects/funbeast/index.js index 6840fed9c15..67b32643cda 100644 --- a/projects/funbeast/index.js +++ b/projects/funbeast/index.js @@ -4,6 +4,6 @@ module.exports = { misrepresentedTokens: true, methodology: "Astar Exchange Tvl Calculation", astar: { - tvl: getUniTVL({ factory: '0xb99978440F310658C5E69D5042724327EF6D3CE7', chain: 'astar', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xb99978440F310658C5E69D5042724327EF6D3CE7', useDefaultCoreAssets: true }), } }; diff --git a/projects/gibxswap/index.js b/projects/gibxswap/index.js index bfe036bba8b..66bf7620997 100644 --- a/projects/gibxswap/index.js +++ b/projects/gibxswap/index.js @@ -8,7 +8,7 @@ module.exports = { misrepresentedTokens: true, bsc: { staking: staking(swapMiningStakingContract, X, "bsc"), - tvl: getUniTVL({ factory: '0x97bCD9BB482144291D77ee53bFa99317A82066E8', chain: 'bsc', useDefaultCoreAssets: true }), + 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/glide-finance/index.js b/projects/glide-finance/index.js index 47502c82019..595483b0556 100644 --- a/projects/glide-finance/index.js +++ b/projects/glide-finance/index.js @@ -5,7 +5,7 @@ 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', chain: 'elastos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xaAbe38153b25f0d4b2bDa620f67059B3a45334e5', useDefaultCoreAssets: true }), staking: stakingPricedLP("0x7F5489f77Bb8515DE4e0582B60Eb63A7D9959821", "0xd39eC832FF1CaaFAb2729c76dDeac967ABcA8F27", "elastos", "0xbeeAAb15628329C2C89Bc9F403d34b31fbCb3085", "elastos") } } diff --git a/projects/helper/cex.js b/projects/helper/cex.js index fe764c60aed..12e3cf32ab9 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -259,7 +259,7 @@ function cexExports(config) { exportObj.bsc = exportObj.bsc ?? { tvl: () => ({}) } const bscTvl = exportObj.bsc.tvl exportObj.bsc.tvl = sdk.util.sumChainTvls([ - bscTvl, sumTokensExport({ chain: 'bep2', ...config.bep2 }) + bscTvl, sumTokensExport({ ...config.bep2 }) ]) } return exportObj diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index 7a16da647ef..8c3e770832d 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -155,7 +155,7 @@ const defaultAbis = { } function dexExport({ factory, abis = {}, fetchBalances = false }) { - return () => getUniTVL({ factory, abis: { ...defaultAbis, ...abis }, fetchBalances })(api, undefined, undefined, { api, chain: 'starknet' }) + return () => getUniTVL({ factory, abis: { ...defaultAbis, ...abis }, fetchBalances })(api, undefined, undefined, { api, }) } module.exports = { diff --git a/projects/honkswap/index.js b/projects/honkswap/index.js index b3ecdb1906e..44c5adf8bf8 100644 --- a/projects/honkswap/index.js +++ b/projects/honkswap/index.js @@ -10,6 +10,6 @@ module.exports = { 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, chain: 'smartbch', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), } } diff --git a/projects/hunnyswap/index.js b/projects/hunnyswap/index.js index 134ff285d24..10b2a38b00f 100644 --- a/projects/hunnyswap/index.js +++ b/projects/hunnyswap/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'avax', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x0c6A0061F9D0afB30152b8761a273786e51bec6d', useDefaultCoreAssets: true }), }, }; // node test.js projects/hunnyswap/index.js \ No newline at end of file diff --git a/projects/kaco/index.js b/projects/kaco/index.js index 17ccace50d4..0a3afa4cf0a 100644 --- a/projects/kaco/index.js +++ b/projects/kaco/index.js @@ -34,6 +34,6 @@ module.exports = { KAC["bsc"], 0 ), - tvl: getUniTVL({ factory: '0xcd8620889c1dA22ED228e6C00182177f9dAd16b7', chain: 'shiden', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xcd8620889c1dA22ED228e6C00182177f9dAd16b7', useDefaultCoreAssets: true }), }, }; diff --git a/projects/kryptodex/index.js b/projects/kryptodex/index.js index b07e2162aee..bf27680a861 100644 --- a/projects/kryptodex/index.js +++ b/projects/kryptodex/index.js @@ -4,7 +4,7 @@ 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', chain: 'cronos', useDefaultCoreAssets: true }), + 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/kswapfinance/index.js b/projects/kswapfinance/index.js index 8e954b0ce32..933fcf7033f 100644 --- a/projects/kswapfinance/index.js +++ b/projects/kswapfinance/index.js @@ -3,7 +3,7 @@ const { getUniTVL } = require('../helper/unknownTokens') const factory = "0x60DCD4a2406Be12dbe3Bb2AaDa12cFb762A418c1"; module.exports = { - okexchain: { tvl: getUniTVL({ factory, chain: 'okexchain', useDefaultCoreAssets: true }), }, + okexchain: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), }, methodology: "We count tvl on LiquidityPool(pairs) through factory contract", }; diff --git a/projects/ladex-exchange/index.js b/projects/ladex-exchange/index.js index 04976dce93a..1ad19b40b80 100644 --- a/projects/ladex-exchange/index.js +++ b/projects/ladex-exchange/index.js @@ -3,6 +3,6 @@ const factory_contract = "0xD707d9038C1d976d3a01c770f01CB73a1fd305Cd" module.exports = { lachain: { - tvl: getUniTVL({ factory: factory_contract, chain: 'lachain', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: factory_contract, useDefaultCoreAssets: true }), } }; diff --git a/projects/laserswap/index.js b/projects/laserswap/index.js index 59f842bf11d..714b692e728 100644 --- a/projects/laserswap/index.js +++ b/projects/laserswap/index.js @@ -3,6 +3,6 @@ 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', chain: 'thundercore', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x23c7FA9A9f81B322684F25b8079e22C37e00b46b', useDefaultCoreAssets: true }), }, } diff --git a/projects/liondex/index.js b/projects/liondex/index.js index aac66e14abd..4b35cf5ab85 100644 --- a/projects/liondex/index.js +++ b/projects/liondex/index.js @@ -13,7 +13,7 @@ const USDC = ADDRESSES.arbitrum.USDC; module.exports = { methodology: `Counts fsGLP and USDC deposited to lionDEXVault. Staking counts Lion deposited to stakingPool.`, arbitrum: { - tvl: sumTokensExport({ chain: 'arbitrum', owners: [lionDEXVault], tokens: [ fsGLP, USDC]}), + tvl: sumTokensExport({ owners: [lionDEXVault], tokens: [ fsGLP, USDC]}), staking: staking(lionStaking, LION, 'arbitrum') } } diff --git a/projects/lootswap/index.js b/projects/lootswap/index.js index 812caa650dc..34e6435d888 100644 --- a/projects/lootswap/index.js +++ b/projects/lootswap/index.js @@ -2,7 +2,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ harmony: { - tvl: getUniTVL({ factory: '0x021AeF70c404aa9d70b71C615F17aB3a4038851A', chain: 'harmony', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x021AeF70c404aa9d70b71C615F17aB3a4038851A', useDefaultCoreAssets: true }), }, hallmarks:[ [1655991120, "Horizon bridge Hack $100m"], diff --git a/projects/luaswap/index.js b/projects/luaswap/index.js index abb476d7325..e72aee03f8e 100644 --- a/projects/luaswap/index.js +++ b/projects/luaswap/index.js @@ -5,9 +5,9 @@ module.exports = { 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', chain: 'tomochain', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x28c79368257CD71A122409330ad2bEBA7277a396', useDefaultCoreAssets: true }), }, ethereum: { - tvl: getUniTVL({ factory: '0x0388C1E0f210AbAe597B7DE712B9510C6C36C857', chain: 'ethereum', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x0388C1E0f210AbAe597B7DE712B9510C6C36C857', useDefaultCoreAssets: true }), }, } diff --git a/projects/memedex/index.js b/projects/memedex/index.js index f7acb545173..0316d5933e4 100644 --- a/projects/memedex/index.js +++ b/projects/memedex/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens'); module.exports = { misrepresentedTokens: true, conflux: { - tvl: getUniTVL({ chain: 'conflux', useDefaultCoreAssets: true, factory: '0x62283c20Ac4c7B1E61BB3C27bE2fA0880ee982Ea'}), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x62283c20Ac4c7B1E61BB3C27bE2fA0880ee982Ea'}), } } \ No newline at end of file diff --git a/projects/mento/index.js b/projects/mento/index.js index 202a0d84a79..264d520f018 100644 --- a/projects/mento/index.js +++ b/projects/mento/index.js @@ -19,6 +19,6 @@ module.exports = { }) }, bitcoin: { - tvl: sumTokensExport({ owners: ['38EPdP4SPshc5CiUCzKcLP9v7Vqo5u1HBL', '3KWX93e2zPPQ2eWCsUwPAB6VhAKKPLACou'], chain: 'bitcoin' }) + tvl: sumTokensExport({ owners: ['38EPdP4SPshc5CiUCzKcLP9v7Vqo5u1HBL', '3KWX93e2zPPQ2eWCsUwPAB6VhAKKPLACou'], }) } } diff --git a/projects/milkydex/index.js b/projects/milkydex/index.js index 4ce4a76ca9d..4614ea2898f 100644 --- a/projects/milkydex/index.js +++ b/projects/milkydex/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'milkomeda', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x194Db21D9108f9da7a4E21f367d0eb8f8979144e', useDefaultCoreAssets: true }), }, }; diff --git a/projects/milkyswap/index.js b/projects/milkyswap/index.js index 1569409d3b2..167a7d8f38c 100644 --- a/projects/milkyswap/index.js +++ b/projects/milkyswap/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'milkomeda', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xD6Ab33Ad975b39A8cc981bBc4Aaf61F957A5aD29', useDefaultCoreAssets: true }), }, }; // node test.js projects/milkyswap/index.js diff --git a/projects/mimoswap/index.js b/projects/mimoswap/index.js index 43cae2041b2..a887bfdeee1 100644 --- a/projects/mimoswap/index.js +++ b/projects/mimoswap/index.js @@ -2,6 +2,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, iotex: { - tvl: getUniTVL({ factory: '0xda257cBe968202Dea212bBB65aB49f174Da58b9D', chain: 'iotex', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xda257cBe968202Dea212bBB65aB49f174Da58b9D', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/mindgames/index.js b/projects/mindgames/index.js index 4c7b0e42467..baa654776e6 100644 --- a/projects/mindgames/index.js +++ b/projects/mindgames/index.js @@ -4,7 +4,7 @@ const xCRX = "0x35AfE95662fdf442762a11E4eD5172C81fBceF7e"; const CRX = "0xb21Be1Caf592A5DC1e75e418704d1B6d50B0d083"; const factory = "0x7C7F1c8E2b38d4C06218565BC4C9D8231b0628c0"; -const tvl = getUniTVL({ factory, chain: 'arbitrum', useDefaultCoreAssets: true, fetchBalances: true }) +const tvl = getUniTVL({ factory, useDefaultCoreAssets: true, fetchBalances: true }) module.exports = { misrepresentedTokens: true, diff --git a/projects/mistswap/index.js b/projects/mistswap/index.js index 219d9275c4a..94d3d934cb9 100644 --- a/projects/mistswap/index.js +++ b/projects/mistswap/index.js @@ -10,7 +10,7 @@ module.exports = { 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, chain: 'smartbch', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), staking: staking(xMIST, MIST, 'smartbch', 'mistswap', 18) }, }; diff --git a/projects/mojitoswap/index.js b/projects/mojitoswap/index.js index 9d024d674c3..f233878bb42 100644 --- a/projects/mojitoswap/index.js +++ b/projects/mojitoswap/index.js @@ -10,7 +10,7 @@ module.exports = { methodology: "We count liquidity and staking on the dexes, pulling data from subgraphs", kcc: { - tvl: getUniTVL({ chain: 'kcc', useDefaultCoreAssets: true, factory: '0x79855a03426e15ad120df77efa623af87bd54ef3', }), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x79855a03426e15ad120df77efa623af87bd54ef3', }), staking: stakings([masterchefAddress, masterchefV2Address], mjtAddress, 'kcc'), }, start: 3000000, diff --git a/projects/morpheusswap/index.js b/projects/morpheusswap/index.js index 07b5764cec5..cc5bbd264ad 100644 --- a/projects/morpheusswap/index.js +++ b/projects/morpheusswap/index.js @@ -12,7 +12,7 @@ async function tvl(timestamp, block, chainBlocks, api) { 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', chain: 'fantom', useDefaultCoreAssets: true }) + const dexTvl = getUniTVL({ factory: '0x9C454510848906FDDc846607E4baa27Ca999FBB6', useDefaultCoreAssets: true }) return dexTvl(timestamp, block, chainBlocks, api); } return balances; diff --git a/projects/muesliswap/index.js b/projects/muesliswap/index.js index fd4d9029040..e8dca43c3bb 100644 --- a/projects/muesliswap/index.js +++ b/projects/muesliswap/index.js @@ -104,6 +104,6 @@ module.exports = { staking }, milkomeda: { - tvl: getUniTVL({ factory: '0x57A8C24B2B0707478f91D3233A264eD77149D408', chain: 'milkomeda', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x57A8C24B2B0707478f91D3233A264eD77149D408', useDefaultCoreAssets: true }), } } diff --git a/projects/narwhalswap/index.js b/projects/narwhalswap/index.js index a081b4469bd..5b4d7bf3caf 100644 --- a/projects/narwhalswap/index.js +++ b/projects/narwhalswap/index.js @@ -3,7 +3,7 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, bsc: { - tvl: getUniTVL({ factory: '0xB9fA84912FF2383a617d8b433E926Adf0Dd3FEa1', chain: 'bsc', useDefaultCoreAssets: true }), + 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/nearpad/index.js b/projects/nearpad/index.js index 6b4e53c0486..d4091a13d8f 100644 --- a/projects/nearpad/index.js +++ b/projects/nearpad/index.js @@ -20,7 +20,7 @@ const tokens = [ module.exports = { misrepresentedTokens: true, aurora: { - tvl: getUniTVL({ factory: '0x34484b4E416f5d4B45D4Add0B6eF6Ca08FcED8f1', chain: 'aurora', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x34484b4E416f5d4B45D4Add0B6eF6Ca08FcED8f1', useDefaultCoreAssets: true }), }, }; // node test.js projects/nearpad/index.js diff --git a/projects/netswap/index.js b/projects/netswap/index.js index d2031932d4b..c8c2a5a6af0 100644 --- a/projects/netswap/index.js +++ b/projects/netswap/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'metis', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x70f51d68D16e8f9e418441280342BD43AC9Dff9f', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/neuy/index.js b/projects/neuy/index.js index f07a38544ea..2b7ecab20d9 100644 --- a/projects/neuy/index.js +++ b/projects/neuy/index.js @@ -22,6 +22,6 @@ module.exports = { }, polygon: { tvl: () => ({}), - staking: sumTokensExport({ owners: Object.values(polyLP), tokens: [neuy.polygon], chain: 'polygon'} ), + staking: sumTokensExport({ owners: Object.values(polyLP), tokens: [neuy.polygon], } ), } } \ No newline at end of file diff --git a/projects/omnidex/index.js b/projects/omnidex/index.js index 98452addb81..2eab4e25267 100644 --- a/projects/omnidex/index.js +++ b/projects/omnidex/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ misrepresentedTokens: true, telos:{ - tvl: getUniTVL({ factory: '0x7a2A35706f5d1CeE2faa8A254dd6F6D7d7Becc25', chain: 'telos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x7a2A35706f5d1CeE2faa8A254dd6F6D7d7Becc25', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/oni/index.js b/projects/oni/index.js index d40a99f7300..eda07772f29 100644 --- a/projects/oni/index.js +++ b/projects/oni/index.js @@ -9,7 +9,7 @@ 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, chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: OniFactory, useDefaultCoreAssets: true }), staking: stakingPricedLP( MasterChef, OniToken, diff --git a/projects/oracleswap/index.js b/projects/oracleswap/index.js index 9dbe3cc5dd8..c167441c6c6 100644 --- a/projects/oracleswap/index.js +++ b/projects/oracleswap/index.js @@ -10,7 +10,7 @@ module.exports = { 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', chain: 'songbird', useDefaultCoreAssets: true }), + 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/orbitalswap/index.js b/projects/orbitalswap/index.js index fbad25791ba..415b05f29f3 100644 --- a/projects/orbitalswap/index.js +++ b/projects/orbitalswap/index.js @@ -10,7 +10,7 @@ module.exports = { misrepresentedTokens: true, incentivized: true, bsc: { - tvl: getUniTVL({ factory: '0x1A04Afe9778f95829017741bF46C9524B91433fB', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x1A04Afe9778f95829017741bF46C9524B91433fB', useDefaultCoreAssets: true }), staking: staking(MasterChefContract, ORB, "bsc"), } }; diff --git a/projects/orbitbridge/index.js b/projects/orbitbridge/index.js index 50faf89fadc..b476704226e 100644 --- a/projects/orbitbridge/index.js +++ b/projects/orbitbridge/index.js @@ -84,7 +84,7 @@ module.exports = { meta: { tvl }, wemix: { tvl }, ripple: { - tvl: sumTokensExport({ chain: 'ripple', owner: 'rLcxBUrZESqHnruY4fX7GQthRjDCDSAWia' }) + tvl: sumTokensExport({ owner: 'rLcxBUrZESqHnruY4fX7GQthRjDCDSAWia' }) }, ton: { tvl: tonExport({ owner: "EQAtkbV8ysI75e7faO8Ihu0mFtmsg-osj7gmrTg_mljVRccy", tokens: [ADDRESSES.null], onlyWhitelistedTokens: true }), diff --git a/projects/padswap/index.js b/projects/padswap/index.js index e9081aea9f4..3712039e8fa 100644 --- a/projects/padswap/index.js +++ b/projects/padswap/index.js @@ -22,7 +22,7 @@ module.exports = { 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({ chain: 'bsc', factory: PADSWAP_BSC_FACTORY_ADDRESS, useDefaultCoreAssets: true, blacklistedTokens: ['0xcdb943908de5ee37998a53f23467017d1a307e60'], }), + tvl: getUniTVL({ factory: PADSWAP_BSC_FACTORY_ADDRESS, useDefaultCoreAssets: true, blacklistedTokens: ['0xcdb943908de5ee37998a53f23467017d1a307e60'], }), staking: stakings( [ TOAD_FARM_ADDRESS, @@ -34,9 +34,9 @@ module.exports = { ), }, moonriver: { - tvl: getUniTVL({ chain: 'moonriver', factory: PADSWAP_MOONRIVER_FACTORY_ADDRESS, useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: PADSWAP_MOONRIVER_FACTORY_ADDRESS, useDefaultCoreAssets: true, }), }, moonbeam: { - tvl: getUniTVL({ chain: 'moonbeam', factory: PADSWAP_MOONBEAM_FACTORY_ADDRESS, useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: PADSWAP_MOONBEAM_FACTORY_ADDRESS, useDefaultCoreAssets: true, }), } }; diff --git a/projects/paintswap/index.js b/projects/paintswap/index.js index 318d6cd4697..5425ba987b5 100644 --- a/projects/paintswap/index.js +++ b/projects/paintswap/index.js @@ -8,7 +8,7 @@ const brush = '0x85dec8c4b2680793661bca91a8f129607571863d' module.exports = { misrepresentedTokens: true, fantom:{ - tvl: getUniTVL({ factory, chain: 'fantom', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), staking: staking(masterchef, brush, "fantom"), } } \ No newline at end of file diff --git a/projects/pandoraswap/index.js b/projects/pandoraswap/index.js index a9943f8b1ce..98499c0197f 100644 --- a/projects/pandoraswap/index.js +++ b/projects/pandoraswap/index.js @@ -4,6 +4,6 @@ module.exports = { misrepresentedTokens: true, methodology: "PandoraswapFinance Tvl Calculation", astar: { - tvl: getUniTVL({ factory: '0x8D4f9b98FC21787382647BFCfC9ce75C08B50481', chain: 'astar', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x8D4f9b98FC21787382647BFCfC9ce75C08B50481', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/pankuku/index.js b/projects/pankuku/index.js index 16435feb0f9..b028875efeb 100644 --- a/projects/pankuku/index.js +++ b/projects/pankuku/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x24dF3F586b3d313A98704478f83a4315ae5b19A9', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/partyswap/index.js b/projects/partyswap/index.js index f887a6e5d2c..1960e59b2ae 100644 --- a/projects/partyswap/index.js +++ b/projects/partyswap/index.js @@ -7,7 +7,7 @@ const COREASSETNAME = "avalanche-2"; module.exports={ avax:{ - tvl: getUniTVL({ chain: 'avax', factory: '0x58a08bc28f3e8dab8fb2773d8f243bc740398b09', useDefaultCoreAssets: true, }), + 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/peardao/index.js b/projects/peardao/index.js index dc18cc4df33..76369712c40 100644 --- a/projects/peardao/index.js +++ b/projects/peardao/index.js @@ -24,7 +24,7 @@ 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.', start: 15966251, // Mar-11-2022 01:00:01 PM +UTC bsc: { - tvl: sumTokensExport({ chain: 'bsc', tokens, owner: DOTC_CONTRACT, }), + tvl: sumTokensExport({ tokens, owner: DOTC_CONTRACT, }), staking: stakings([TREASURY_ADDRESS, PEX_STAKING_POOL_CONTRACT], PEX_TOKEN_CONTRACT, "bsc"), pool2: pool2(PEX_BNB_LP_MASTER_CHEF, PEX_BNB_LP_CONTRACT, 'bsc') } diff --git a/projects/polkaex/index.js b/projects/polkaex/index.js index a56e8d8415c..5dbddf8aea3 100644 --- a/projects/polkaex/index.js +++ b/projects/polkaex/index.js @@ -74,10 +74,10 @@ const STAKING_CONTRACTS = { } const tvls = { - astar: getUniTVL({ factory: FACTORIES.astar, chain: 'astar', useDefaultCoreAssets: true, }), - shiden: getUniTVL({ factory: FACTORIES.shiden, chain: 'shiden', useDefaultCoreAssets: true, }), - bsc: getUniTVL({ factory: FACTORIES.bsc, chain: 'bsc', useDefaultCoreAssets: true, }), - ethereum: getUniTVL({ factory: FACTORIES.ethereum, chain: 'ethereum', useDefaultCoreAssets: true, }), + 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, } diff --git a/projects/polyDEX-cryption-network/index.js b/projects/polyDEX-cryption-network/index.js index 5fd7005c13e..13119428f0a 100644 --- a/projects/polyDEX-cryption-network/index.js +++ b/projects/polyDEX-cryption-network/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, polygon:{ - tvl: getUniTVL({ chain: 'polygon', useDefaultCoreAssets: true, factory: '0x5bdd1cd910e3307582f213b33699e676e61dead9', }), + 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 index 2f924d356fc..8b582d2a7ac 100644 --- a/projects/polycat-dex/index.js +++ b/projects/polycat-dex/index.js @@ -9,7 +9,7 @@ module.exports = { misrepresentedTokens: true, methodology: "TVL are from the pools created by the factory and TVL in vaults", polygon: { - tvl: getUniTVL({ factory, chain: 'polygon', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), staking: staking(tankchef, paw, 'polygon'), } } \ No newline at end of file diff --git a/projects/pureswap/index.js b/projects/pureswap/index.js index 47e9183598f..cc7c0c17133 100644 --- a/projects/pureswap/index.js +++ b/projects/pureswap/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x94b4188D143b9dD6bd7083aE38A461FcC6AAd07E', useDefaultCoreAssets: true }), }, }; diff --git a/projects/quantumx-network/index.js b/projects/quantumx-network/index.js index 5a7ca2265da..141486fe6f8 100644 --- a/projects/quantumx-network/index.js +++ b/projects/quantumx-network/index.js @@ -3,6 +3,6 @@ const { sumTokensExport } = require('../helper/sumTokens') module.exports = { timetravel: false, elrond: { - tvl: sumTokensExport({ chain: 'elrond', owner: 'erd1qqqqqqqqqqqqqpgql6dxenaameqn2uyyru3nmmpf7e95zmlxu7zskzpdcw', }) + tvl: sumTokensExport({ owner: 'erd1qqqqqqqqqqqqqpgql6dxenaameqn2uyyru3nmmpf7e95zmlxu7zskzpdcw', }) } } \ No newline at end of file diff --git a/projects/rskswap/index.js b/projects/rskswap/index.js index bb9ab48c847..1e4f8f63dd4 100644 --- a/projects/rskswap/index.js +++ b/projects/rskswap/index.js @@ -2,6 +2,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ rsk: { - tvl: getUniTVL({ factory: '0xfaa7762f551bba9b0eba34d6443d49d0a577c0e1', chain: 'rsk', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xfaa7762f551bba9b0eba34d6443d49d0a577c0e1', useDefaultCoreAssets: true }), } } diff --git a/projects/safeswap/index.js b/projects/safeswap/index.js index 23fd84fed13..ca353a480b4 100644 --- a/projects/safeswap/index.js +++ b/projects/safeswap/index.js @@ -5,9 +5,9 @@ module.exports = { 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', chain: 'polygon', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x5be44d6C5634161CdaDcC2bc35389325aa493e83', useDefaultCoreAssets: true }), }, ethereum: { - tvl: getUniTVL({ factory: '0xB919aD419688F7C274f11F180112514941a910CB', chain: 'ethereum', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xB919aD419688F7C274f11F180112514941a910CB', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/saharaexchange/index.js b/projects/saharaexchange/index.js index f047b0a2e12..8d3acb7c35e 100644 --- a/projects/saharaexchange/index.js +++ b/projects/saharaexchange/index.js @@ -5,6 +5,6 @@ module.exports = { methodology: "Count TVL as liquidity on the dex", misrepresentedTokens: true, oasis: { - tvl: getUniTVL({ factory: '0x9D7B4519C7bED9a1e1307F8f84975DBc7a1D3C75', chain: 'oasis', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x9D7B4519C7bED9a1e1307F8f84975DBc7a1D3C75', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/saitaswap/index.js b/projects/saitaswap/index.js index d1e462c601b..f73a16b59c1 100644 --- a/projects/saitaswap/index.js +++ b/projects/saitaswap/index.js @@ -5,9 +5,9 @@ module.exports = { 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', chain: 'ethereum', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x35113a300ca0D7621374890ABFEAC30E88f214b1', useDefaultCoreAssets: true }), }, bsc: { - tvl: getUniTVL({ factory: '0x19e5ebc005688466d11015e646fa182621c1881e', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x19e5ebc005688466d11015e646fa182621c1881e', useDefaultCoreAssets: true }), }, }; // node test.js projects/saitaswap/index.js \ No newline at end of file diff --git a/projects/seascape/index.js b/projects/seascape/index.js index 8478e025fbe..a7c26a3c26f 100644 --- a/projects/seascape/index.js +++ b/projects/seascape/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports={ misrepresentedTokens: true, moonriver: { - tvl: getUniTVL({ factory: '0xD184B1317125b166f01e8a0d6088ce1de61D00BA', chain: 'moonriver', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xD184B1317125b166f01e8a0d6088ce1de61D00BA', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/shibance/index.js b/projects/shibance/index.js index 507e5d1239d..25f11e2a2d9 100644 --- a/projects/shibance/index.js +++ b/projects/shibance/index.js @@ -4,9 +4,9 @@ module.exports = { misrepresentedTokens: true, methodology: "We count liquidity on the dexes, pulling data from subgraphs", kcc: { - tvl: getUniTVL({ chain: 'kcc', factory: '0x1aDb92364888C9A65e65C287DaE48032681327c8', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0x1aDb92364888C9A65e65C287DaE48032681327c8', useDefaultCoreAssets: true, }), }, bsc:{ - tvl: getUniTVL({ chain: 'bsc', factory: '0x092EE062Baa0440B6df6BBb7Db7e66D8902bFdF7', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0x092EE062Baa0440B6df6BBb7Db7e66D8902bFdF7', useDefaultCoreAssets: true, }), }, } \ No newline at end of file diff --git a/projects/shinobi/index.js b/projects/shinobi/index.js index 4d2ceb5093e..292b3df7925 100644 --- a/projects/shinobi/index.js +++ b/projects/shinobi/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'ubiq', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xba831e62ac14d8500cef0367b14f383d7b1b1b0a', useDefaultCoreAssets: true }), }, }; diff --git a/projects/smartdex/index.js b/projects/smartdex/index.js index 8b148c4b71a..cafe4a4e0c7 100644 --- a/projects/smartdex/index.js +++ b/projects/smartdex/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, polygon: { - tvl: getUniTVL({ chain: 'polygon', factory: '0xBE087BeD88539d28664c9998FE3f180ea7b9749C', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0xBE087BeD88539d28664c9998FE3f180ea7b9749C', useDefaultCoreAssets: true, }), }, }; diff --git a/projects/smartdexbch/index.js b/projects/smartdexbch/index.js index a8822d4b09a..76574805de9 100644 --- a/projects/smartdexbch/index.js +++ b/projects/smartdexbch/index.js @@ -10,7 +10,7 @@ module.exports = { methodology: "Count TVL as liquidity on the dex", misrepresentedTokens: true, smartbch: { - tvl: getUniTVL({ factory: FACTORY, chain: 'smartbch', useDefaultCoreAssets: true }), + 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/smbswap/index.js b/projects/smbswap/index.js index 9aa795b40f7..4b7503b6b36 100644 --- a/projects/smbswap/index.js +++ b/projects/smbswap/index.js @@ -4,7 +4,7 @@ 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', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x2Af5c23798FEc8E433E11cce4A8822d95cD90565', useDefaultCoreAssets: true }), }, start: 1645285089, // Sat Feb 19 2022 15:38:09 }; diff --git a/projects/smolswap/index.js b/projects/smolswap/index.js index f6c9b6435b9..7d525664bd4 100644 --- a/projects/smolswap/index.js +++ b/projects/smolswap/index.js @@ -5,7 +5,7 @@ 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', chain: 'cronos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x7Aa2149fF9EF4A09D4ace72C49C26AaE8C89Fb48', useDefaultCoreAssets: true }), staking: stakingPricedLP( "0x66a5f06d9c8bdc27bb0768eeff71d22b468fb464", "0x2Ad63Da83d6ff5dA9E716DcaE844D4f157405BDd", diff --git a/projects/solarbeam/subgraphs.js b/projects/solarbeam/subgraphs.js index 3dcecd70640..16ec23f2c2f 100644 --- a/projects/solarbeam/subgraphs.js +++ b/projects/solarbeam/subgraphs.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, moonriver: { - tvl: getUniTVL({ chain: 'moonriver', factory: '0x049581aEB6Fe262727f290165C29BDAB065a1B68', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0x049581aEB6Fe262727f290165C29BDAB065a1B68', useDefaultCoreAssets: true, }), }, }; diff --git a/projects/solarflare.js b/projects/solarflare.js index bcddc97bfc9..eb9c710f262 100644 --- a/projects/solarflare.js +++ b/projects/solarflare.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('./helper/unknownTokens') module.exports = { misrepresentedTokens: true, moonbeam: { - tvl: getUniTVL({ factory: '0x19B85ae92947E0725d5265fFB3389e7E4F191FDa', chain: 'moonbeam', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x19B85ae92947E0725d5265fFB3389e7E4F191FDa', useDefaultCoreAssets: true }), } } diff --git a/projects/sonicswap/index.js b/projects/sonicswap/index.js index d30f8e31736..a6658ffb1d3 100644 --- a/projects/sonicswap/index.js +++ b/projects/sonicswap/index.js @@ -6,6 +6,6 @@ module.exports = { misrepresentedTokens: true, methodology: `TVL accounts for the liquidity found in each liquidity pair.`, harmony:{ - tvl: getUniTVL({ chain: 'harmony', useDefaultCoreAssets: true, factory, }) + tvl: getUniTVL({ useDefaultCoreAssets: true, factory, }) }, } \ No newline at end of file diff --git a/projects/stabledoin/index.js b/projects/stabledoin/index.js index 3b72f821e39..cc886e818d5 100644 --- a/projects/stabledoin/index.js +++ b/projects/stabledoin/index.js @@ -10,8 +10,8 @@ module.exports = { ], dogechain: { tvl: sdk.util.sumChainTvls([ - getUniTVL({ chain: 'dogechain', factory, useDefaultCoreAssets: true, }), - getUniTVL({ chain: 'dogechain', factory: '0x8E49Fa5fA4494c3a4358DC00F1c1e4dfA0A3b7eF', useDefaultCoreAssets: true, }), + getUniTVL({ factory, useDefaultCoreAssets: true, }), + getUniTVL({ factory: '0x8E49Fa5fA4494c3a4358DC00F1c1e4dfA0A3b7eF', useDefaultCoreAssets: true, }), ]), } } diff --git a/projects/standard-tech/index.js b/projects/standard-tech/index.js index d2cdbc8cb25..ba0393d10d5 100644 --- a/projects/standard-tech/index.js +++ b/projects/standard-tech/index.js @@ -4,12 +4,12 @@ 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', chain: 'shiden', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x073386AE3292299a5814B00bC1ceB8f2bfC92c51', useDefaultCoreAssets: true }), }, ethereum: { - tvl: getUniTVL({ factory: '0x53AC1d1FA4F9F6c604B8B198cE29A50d28cbA893', chain: 'ethereum', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x53AC1d1FA4F9F6c604B8B198cE29A50d28cbA893', useDefaultCoreAssets: true }), }, metis: { - tvl: getUniTVL({ factory: '0xFA68bAAdBDCf014fA20bD1A4542967AE40Ddca53', chain: 'metis', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xFA68bAAdBDCf014fA20bD1A4542967AE40Ddca53', useDefaultCoreAssets: true }), } } diff --git a/projects/swapp/index.js b/projects/swapp/index.js index 223689f52d1..b052b245703 100644 --- a/projects/swapp/index.js +++ b/projects/swapp/index.js @@ -4,6 +4,6 @@ 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', chain: 'cronos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xEe4fa96b695De795071d40EEad0e8Fd42cdB9951', useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/swappi/index.js b/projects/swappi/index.js index fce449daaeb..445e2f18b60 100644 --- a/projects/swappi/index.js +++ b/projects/swappi/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens'); module.exports = { misrepresentedTokens: true, conflux: { - tvl: getUniTVL({ chain: 'conflux', useDefaultCoreAssets: true, factory: '0xe2a6f7c0ce4d5d300f97aa7e125455f5cd3342f5'}), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0xe2a6f7c0ce4d5d300f97aa7e125455f5cd3342f5'}), } } \ No newline at end of file diff --git a/projects/tangoswap/index.js b/projects/tangoswap/index.js index 1fbb697e882..c9147782515 100644 --- a/projects/tangoswap/index.js +++ b/projects/tangoswap/index.js @@ -9,7 +9,7 @@ module.exports = { methodology: "Count TVL as liquidity on the dex", misrepresentedTokens: true, smartbch: { - tvl: getUniTVL({ factory: FACTORY, chain: 'smartbch', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true }), staking: staking(xTANGO, TANGO, 'smartbch', 'tangoswap', 18) } } diff --git a/projects/tethys/index.js b/projects/tethys/index.js index 4b6450f6820..51991e9c8f6 100644 --- a/projects/tethys/index.js +++ b/projects/tethys/index.js @@ -9,7 +9,7 @@ module.exports = { methodology: `Metis tokens, USDC, USDT, WETH, TETHYS allocated in LP`, misrepresentedTokens: true, metis:{ - tvl: getUniTVL({ factory, chain: 'metis', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), staking: staking(masterchef, tethys), } } diff --git a/projects/thetaswap/index.js b/projects/thetaswap/index.js index f04f3ed4585..8a9783a5bf6 100644 --- a/projects/thetaswap/index.js +++ b/projects/thetaswap/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'theta', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xe8b97478ae8ab1fcfd46cdb2f62869ec63bbf69f', useDefaultCoreAssets: true }), }, } diff --git a/projects/treasury/peardao.js b/projects/treasury/peardao.js index 19c17a34ccb..aa4594b2304 100644 --- a/projects/treasury/peardao.js +++ b/projects/treasury/peardao.js @@ -15,6 +15,6 @@ const tokens = [ module.exports = { bsc: { - tvl: sumTokensExport({ chain: 'bsc', tokens, owner: TREASURY_ADDRESS, }), + tvl: sumTokensExport({ tokens, owner: TREASURY_ADDRESS, }), } }; \ No newline at end of file diff --git a/projects/ubeswap/index.js b/projects/ubeswap/index.js index be42aac70be..0cf36ec0161 100644 --- a/projects/ubeswap/index.js +++ b/projects/ubeswap/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, celo: { - tvl: getUniTVL({ chain: 'celo', factory: '0x62d5b84bE28a183aBB507E125B384122D2C25fAE', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0x62d5b84bE28a183aBB507E125B384122D2C25fAE', useDefaultCoreAssets: true, }), }, }; diff --git a/projects/veniceswap/index.js b/projects/veniceswap/index.js index 7969b1f669b..5a8aefe123c 100644 --- a/projects/veniceswap/index.js +++ b/projects/veniceswap/index.js @@ -3,6 +3,6 @@ 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', chain: 'findora', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x5a75C65a96445eD0a4dDC1C1E35DF24B1DA3fe6a', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/versa/index.js b/projects/versa/index.js index 0825517809a..3ff8ea40150 100644 --- a/projects/versa/index.js +++ b/projects/versa/index.js @@ -1,7 +1,7 @@ const { getUniTVL } = require('../helper/unknownTokens') const FACTORIES = "0x4346A7C8C39Bf91b8a80933c2fdb10d815c401dB" -const tvl = getUniTVL({ factory:FACTORIES, chain: 'astar', useDefaultCoreAssets: true }) +const tvl = getUniTVL({ factory:FACTORIES, useDefaultCoreAssets: true }) module.exports = { methodology: "Versa Tvl Calculation", diff --git a/projects/versedex/index.js b/projects/versedex/index.js index 12b7031ab72..6afe32f3482 100644 --- a/projects/versedex/index.js +++ b/projects/versedex/index.js @@ -14,9 +14,9 @@ module.exports = { methodology: "Factory address (0x16bc2B187D7C7255b647830C05a6283f2B9A3AF8) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", ethereum: { - tvl: getUniTVL({ chain: 'ethereum', useDefaultCoreAssets: true, factory: ETH_FACTORY}), + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: ETH_FACTORY}), }, smartbch: { - tvl: getUniTVL({ chain: 'smartbch', useDefaultCoreAssets: true, factory: SBCH_FACTORY}) + tvl: getUniTVL({ useDefaultCoreAssets: true, factory: SBCH_FACTORY}) }, } diff --git a/projects/voltswap/index.js b/projects/voltswap/index.js index 62baef7007a..9b128510115 100644 --- a/projects/voltswap/index.js +++ b/projects/voltswap/index.js @@ -1,9 +1,9 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { meter:{ - tvl: getUniTVL({ factory: '0x56aD9A9149685b290ffeC883937caE191e193135', chain: 'meter', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x56aD9A9149685b290ffeC883937caE191e193135', useDefaultCoreAssets: true }), }, theta:{ - tvl: getUniTVL({ factory: '0xa2De4F2cC54dDFdFb7D27E81b9b9772bd45bf89d', chain: 'theta', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0xa2De4F2cC54dDFdFb7D27E81b9b9772bd45bf89d', useDefaultCoreAssets: true }), }, } diff --git a/projects/wannaswap/index.js b/projects/wannaswap/index.js index 21b0a9beb99..24b1424d444 100644 --- a/projects/wannaswap/index.js +++ b/projects/wannaswap/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, aurora: { staking: staking("0x5205c30bf2E37494F8cF77D2c19C6BA4d2778B9B", "0x7faA64Faf54750a2E3eE621166635fEAF406Ab22", "aurora"), // single staking - tvl: getUniTVL({ factory: '0x7928D4FeA7b2c90C732c10aFF59cf403f0C38246', chain: 'aurora', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x7928D4FeA7b2c90C732c10aFF59cf403f0C38246', useDefaultCoreAssets: true }), }, }; diff --git a/projects/wingswap/index.js b/projects/wingswap/index.js index f8e573b5a67..b1dc475b06f 100644 --- a/projects/wingswap/index.js +++ b/projects/wingswap/index.js @@ -7,7 +7,7 @@ module.exports = { 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', chain: 'fantom', useDefaultCoreAssets: true }), + 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/yetiswap/index.js b/projects/yetiswap/index.js index b56fa3c622d..da57e3b169d 100644 --- a/projects/yetiswap/index.js +++ b/projects/yetiswap/index.js @@ -3,6 +3,6 @@ const { getUniTVL } = require('../helper/unknownTokens') module.exports = { misrepresentedTokens: true, avax:{ - tvl: getUniTVL({ factory: '0x58C8CD291Fa36130119E6dEb9E520fbb6AcA1c3a', chain: 'avax', useDefaultCoreAssets: true, }), + tvl: getUniTVL({ factory: '0x58C8CD291Fa36130119E6dEb9E520fbb6AcA1c3a', useDefaultCoreAssets: true, }), }, } \ No newline at end of file diff --git a/projects/yieldfields/index.js b/projects/yieldfields/index.js index bd396dc8910..67ee07a603f 100644 --- a/projects/yieldfields/index.js +++ b/projects/yieldfields/index.js @@ -4,7 +4,7 @@ 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', chain: 'bsc', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x0A376eE063184B444ff66a9a22AD91525285FE1C', useDefaultCoreAssets: true }), }, start: 1621263282, // May-17-2021 03:54:42 PM }; diff --git a/projects/yokaiswap/index.js b/projects/yokaiswap/index.js index 30382f3e84a..74b8fe647d4 100644 --- a/projects/yokaiswap/index.js +++ b/projects/yokaiswap/index.js @@ -1,8 +1,8 @@ const { getUniTVL, sumTokensExport } = require('../helper/unknownTokens') // had to be disabled till we get multicall working -const tvl_v0 = getUniTVL({ chain: 'godwoken', factory: '0x5ef0d2d41a5f3d5a083bc776f94282667c27b794', useDefaultCoreAssets: true}) -const tvl_v1 = getUniTVL({ chain: 'godwoken_v1', factory: '0x7ec2d60880d83614dd4013D39CF273107f30624c', useDefaultCoreAssets: true, }) +const tvl_v0 = getUniTVL({ factory: '0x5ef0d2d41a5f3d5a083bc776f94282667c27b794', useDefaultCoreAssets: true}) +const tvl_v1 = getUniTVL({ factory: '0x7ec2d60880d83614dd4013D39CF273107f30624c', useDefaultCoreAssets: true, }) module.exports = { timetravel: false, @@ -14,7 +14,7 @@ module.exports = { }, godwoken_v1: { tvl: tvl_v1, - staking: sumTokensExport({ chain: 'godwoken_v1', owner: '0xbf7b7295f84b4bd2de9d549d047e51c7917dc5e3', tokens: ['0x885fb612947ccF1C7611894Bd828D388b046fc24'], lps: ['0xbf7b7295f84b4bd2de9d549d047e51c7917dc5e3'], useDefaultCoreAssets: true }) + staking: sumTokensExport({ owner: '0xbf7b7295f84b4bd2de9d549d047e51c7917dc5e3', tokens: ['0x885fb612947ccF1C7611894Bd828D388b046fc24'], lps: ['0xbf7b7295f84b4bd2de9d549d047e51c7917dc5e3'], useDefaultCoreAssets: true }) }, hallmarks: [ [Math.floor(new Date('2022-08-26')/1e3), "Add godwoken v1 chain tvl"], diff --git a/projects/yumiswap/index.js b/projects/yumiswap/index.js index f0eba6c809a..fcc8f84aa92 100644 --- a/projects/yumiswap/index.js +++ b/projects/yumiswap/index.js @@ -5,6 +5,6 @@ const FACTORIES = "0xD3CFB8A232Ad5D0A7ABc817ae3BD1F3E7AE4b5E0" module.exports = { methodology: "TVL comes from the DEX liquidity pools", astar: { - tvl: getUniTVL({ factory: FACTORIES, chain: 'astar', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: FACTORIES, useDefaultCoreAssets: true }), } } \ No newline at end of file diff --git a/projects/zappy/index.js b/projects/zappy/index.js index 784aa498b36..b8d37832466 100644 --- a/projects/zappy/index.js +++ b/projects/zappy/index.js @@ -5,6 +5,6 @@ module.exports = { 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', chain: 'telos', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x4be5Bf2233a0fd2c7D1472487310503Ec8E857be', useDefaultCoreAssets: true }), }, }; \ No newline at end of file diff --git a/projects/zenithswap/index.js b/projects/zenithswap/index.js index 99c9cc5c8b9..a41e9aec7e6 100644 --- a/projects/zenithswap/index.js +++ b/projects/zenithswap/index.js @@ -9,7 +9,7 @@ module.exports = { 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', chain: 'arbitrum', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x8F086a081621bbc13B6d02A9e1123212CF07fdf8', useDefaultCoreAssets: true }), staking: staking( MASTER_CHEF, ZSP_TOKEN, 'arbitrum') }, }; \ No newline at end of file diff --git a/projects/zircon-gamma/index.js b/projects/zircon-gamma/index.js index 1bef1ae1bea..03e9a6d1356 100644 --- a/projects/zircon-gamma/index.js +++ b/projects/zircon-gamma/index.js @@ -3,8 +3,8 @@ const { getLogs, getAddress } = require('../helper/cache/getLogs') const { sumTokens2 } = require('../helper/unwrapLPs') const sdk = require('@defillama/sdk') -const movrUniTvl = getUniTVL({ chain: 'moonriver', factory: '0x6B6071Ccc534fcee7B699aAb87929fAF8806d5bd', useDefaultCoreAssets: true, }) -const bscUniTvl = getUniTVL({ chain: 'bsc', factory: '0x18b7f6A60d5BEE3c3a953A3f213eEa25F7eF43E9', useDefaultCoreAssets: true, }) +const movrUniTvl = getUniTVL({ factory: '0x6B6071Ccc534fcee7B699aAb87929fAF8806d5bd', useDefaultCoreAssets: true, }) +const bscUniTvl = getUniTVL({ factory: '0x18b7f6A60d5BEE3c3a953A3f213eEa25F7eF43E9', useDefaultCoreAssets: true, }) async function tvl(api) { const logs = await getLogs({ diff --git a/projects/zyxswap/index.js b/projects/zyxswap/index.js index 6b44481cc93..bdc3ca43e3e 100644 --- a/projects/zyxswap/index.js +++ b/projects/zyxswap/index.js @@ -4,6 +4,6 @@ module.exports={ misrepresentedTokens: true, methodology: "Factory address (0x26e13874ad1cd512b29795dafe3937e1c6f6d507) is used to find the LP pairs. TVL is equal to the liquidity on the AMM.", zyx: { - tvl: getUniTVL({ factory: '0x26e13874ad1cd512b29795dafe3937e1c6f6d507', chain: 'zyx', useDefaultCoreAssets: true }), + tvl: getUniTVL({ factory: '0x26e13874ad1cd512b29795dafe3937e1c6f6d507', useDefaultCoreAssets: true }), } } From f0e49fa04b32c57404a4b504c104b67727a882d1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:07:29 +0200 Subject: [PATCH 1181/2004] track nimora tvl (#9795) * feat: nimbora tvl calculation * fix: reset package files * fix: removed nimbora backend dependencies and fetch tvl from eth chain * fix: removed unused L2 trove abi * code refactor --------- Co-authored-by: ioanSL --- projects/nimbora/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projects/nimbora/index.js diff --git a/projects/nimbora/index.js b/projects/nimbora/index.js new file mode 100644 index 00000000000..dbe041b0bba --- /dev/null +++ b/projects/nimbora/index.js @@ -0,0 +1,28 @@ +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 From 9704cee384bd08ea6d36d3ef795f402354166c87 Mon Sep 17 00:00:00 2001 From: Brdd Mnk Date: Wed, 10 Apr 2024 16:11:46 +0300 Subject: [PATCH 1182/2004] new project Zero1 Labs (#9794) * new LP contract address * code refactor * new CALM contract * new project kaisen * Remove unused import statement * new project zero1-labs * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zero1-labs/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/zero1-labs/index.js diff --git a/projects/zero1-labs/index.js b/projects/zero1-labs/index.js new file mode 100644 index 00000000000..488fb7619e6 --- /dev/null +++ b/projects/zero1-labs/index.js @@ -0,0 +1,13 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + methodology: "TVL comes from the Staking Vaults", + ethereum: { + tvl: () => ({}), + staking: staking([ + "0x7AabE771aCcAa3F54a1B7c05d65c6E55d0Cd0Af6", + "0x88062FE2751f3D5cEC18F6113A532A611632ae79", + "0x8DBA1f564458dd46283ca3a4CDf6CA019963aB42", + ], "0x1495bc9e44Af1F8BCB62278D2bEC4540cF0C05ea"), + }, +} From fbb1c8d813f80366ae34fe9905e85842a54b2d2b Mon Sep 17 00:00:00 2001 From: arieltokyo <166425783+arieltokyo@users.noreply.github.com> Date: Wed, 10 Apr 2024 16:15:02 +0300 Subject: [PATCH 1183/2004] add adapter for neotokyo (#9792) --- projects/neotokyo/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/neotokyo/index.js diff --git a/projects/neotokyo/index.js b/projects/neotokyo/index.js new file mode 100644 index 00000000000..e6257b8212d --- /dev/null +++ b/projects/neotokyo/index.js @@ -0,0 +1,11 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + ethereum: { + tvl: () => ({}), + staking: staking( + "0x67e1eCFA9232E27EAf3133B968A33A9a0dCa9e16", + "0xa19f5264F7D7Be11c451C093D8f92592820Bea86" + ), + }, +}; From 2ca5583b16b26576cdf643b4bcad4e752d554de9 Mon Sep 17 00:00:00 2001 From: VensonLiou <48060449+VensonLiou@users.noreply.github.com> Date: Wed, 10 Apr 2024 21:27:32 +0800 Subject: [PATCH 1184/2004] teahouse: add portfolio vault under permissionless vault (#9791) * teahouse: add portfolio vault under permissionless vault * teahouse: skip doublecount --------- Co-authored-by: Venson Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/teahouse-v3/abi.json | 7 ++++-- projects/teahouse-v3/index.js | 47 ++++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/projects/teahouse-v3/abi.json b/projects/teahouse-v3/abi.json index b6e21cbcbbb..eb53597a085 100644 --- a/projects/teahouse-v3/abi.json +++ b/projects/teahouse-v3/abi.json @@ -1,4 +1,7 @@ { - "assetToken1": "function assetToken1() view returns (address)", - "estimatedValueIntoken1": "function estimatedValueInToken1() view returns (uint256 value1)" + "decimals": "function decimals() view returns (uint8)", + "assetToken1": "function assetToken1() view returns (address)", + "estimatedValueIntoken1": "function estimatedValueInToken1() view returns (uint256 value1)", + "assets": "function assets(uint256) view returns (address)", + "calculateTotalValue": "function calculateTotalValue() view returns (uint256)" } diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 14665dac5e0..8b05f41d08d 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -6,19 +6,26 @@ const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; // get vault contract addresses from teahouse api async function getVaultContractsAddress(chain) { - let plAddress = []; + let pairVault = []; + let portVault = [] const { vaults } = await getConfig("teahouse/v3", teahouseVaultAPI); vaults.forEach((element) => { - // v3 vaults + // permissionless vaults if (element.isDeFi == true && element.isActive == true) { - if ( - element.share.address.toLowerCase() === '0xf9b099f8EebCC675B63E4f0a4657c10F246af77A'.toLowerCase() && - element.chain === "arbitrum" - ) return; - if (element.chain === chain) plAddress.push(element.share.address); + if (element.chain === chain) { + const type = element.type.toLowerCase(); + if (type === 'v3pair') { + pairVault.push(element.share.address); + } else if (type === 'v3port') { + portVault.push(element.share.address); + } + } } }); - return plAddress; + return { + pair: pairVault, + port: portVault + }; } const chains = ["ethereum", "optimism", "arbitrum", 'polygon', 'boba', 'mantle']; @@ -27,20 +34,26 @@ chains.forEach((chain) => { module.exports[chain] = { tvl: async (api) => { const vaults = await getVaultContractsAddress(chain); - const tokens = await api.multiCall({ + + let tokens = await api.multiCall({ abi: abi.assetToken1, - calls: vaults, + calls: vaults.pair, }); - const bals = await api.multiCall({ + let bals = await api.multiCall({ abi: abi.estimatedValueIntoken1, - calls: vaults, + calls: vaults.pair, }); api.addTokens(tokens, bals); - if (['boba', 'mantle'].includes(chain)) { - const tvl = await api.getUSDValue() - if (+tvl === 0) throw new Error('tvl is 0 Balances:' + JSON.stringify(api.getBalances())) - } - return api.getBalances(); + + tokens = await api.multiCall({ abi: "address[]:getAssets", calls: vaults.port }) + const allTokens = [...new Set(tokens.flat())] + const symbols = await api.multiCall({ abi: 'string:symbol', calls: allTokens }) + const sMap = Object.fromEntries(allTokens.map((address, i) => [address, symbols[i]])) + const ownerTokens = vaults.port.map((v, i) => { + const tokenList = tokens[i].filter(t => !sMap[t].startsWith('TEA-')) + return [tokenList, v] + }) + return api.sumTokens({ ownerTokens}) }, }; }); From 5b56c701dd107ae690fb021c17bbe2712358f7f1 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Wed, 10 Apr 2024 21:29:19 +0800 Subject: [PATCH 1185/2004] Excluding Fof Funds (#9789) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js * update subgraph url * fix bug * revert * Excluding Fof Funds --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/index.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index df5f9b93a31..c84b4266c66 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -34,16 +34,21 @@ async function tvl(api) { async function borrowed(api) { const network = api.chain; - let address = (await getConfig('solv-protocol/funds', addressUrl)); - const depositAddress = filterDepositAddress(network, address); - const graphData = await getGraphData(api.timestamp, network, api); if (graphData.pools.length > 0) { const poolLists = graphData.pools; + let address = (await getConfig('solv-protocol/funds', addressUrl)); + const depositAddress = filterDepositAddress(network, address); + + let fofFundPoolId = []; + if (address[network] && address[network]["fofFund"]) { + fofFundPoolId = address[network]["fofFund"]; + } + let pools = []; for (const pool of poolLists) { - if (depositAddress.length == 0 && depositAddress.indexOf(pool.vault) == -1) { + if (depositAddress.length == 0 && depositAddress.indexOf(pool.vault) == -1 && fofFundPoolId.indexOf(pool.poolId) == -1) { pools.push(pool); } } @@ -100,13 +105,13 @@ async function borrowed(api) { 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 } - - api.add(poolBaseInfos[i][1], balance) + if (balance > 0) { + api.add(poolBaseInfos[i][1], balance) + } } } return api.getBalances() From 1eaf5651e68d35ed824f691d97668d94e4a763ae Mon Sep 17 00:00:00 2001 From: VarinderClearpool <101403188+VarinderClearpool@users.noreply.github.com> Date: Wed, 10 Apr 2024 21:30:24 +0800 Subject: [PATCH 1186/2004] Update index.js to add Mantle Chain Pools (#9788) * Update index.js * Update index.js * Update index.js * Update projects/clearpool/index.js * Update projects/clearpool/index.js --- projects/clearpool/index.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/projects/clearpool/index.js b/projects/clearpool/index.js index 10d4e7da3bd..ae8bc0af130 100644 --- a/projects/clearpool/index.js +++ b/projects/clearpool/index.js @@ -10,14 +10,15 @@ const singleStakingContracts = ["0x629E39da1Db5654fe59cAE31d48CAEBB8dC2A9c6"]; const CPOOL = "0x66761fa41377003622aee3c7675fc7b5c1c2fac5"; module.exports = { - methodology: "We count liquidity by USDC deposited on the pools contracts", + methodology: "We count liquidity by Stables deposited on the pools contracts", } const config = { - ethereum: { factory: '0xde204e5a060ba5d3b63c7a4099712959114c2d48', fromBlock: 14443222 }, - polygon_zkevm: { factory: '0xCE3Fec90A05992dF1357651FEF6D143FeeC7Ca16', fromBlock: 302970 }, - polygon: { factory: '0x215CCa938dF02c9814BE2D39A285B941FbdA79bA', fromBlock: 31128013 }, - optimism: { factory: '0x99C10A7aBd93b2db6d1a2271e69F268a2c356b80', fromBlock: 107128813 }, + ethereum: { factory: '0xde204e5a060ba5d3b63c7a4099712959114c2d48', fromBlock: 14443222 }, // Permissionless Pools + polygon_zkevm: { factory: '0xCE3Fec90A05992dF1357651FEF6D143FeeC7Ca16', fromBlock: 302970 }, // Permissionless Pools + polygon: { factory: '0x215CCa938dF02c9814BE2D39A285B941FbdA79bA', fromBlock: 31128013 }, // Permissionless Pools + optimism: { factory: '0x99C10A7aBd93b2db6d1a2271e69F268a2c356b80', fromBlock: 107128813 }, // Permissionless Pools + mantle: { factory: '0xB217D93a8f6A4b7861bB2C865a8C22105FbCdE41', fromBlock: 49691965 }, // Permissionless Pools } Object.keys(config).forEach(chain => { From 7449e6684b152e82d6cc7d64d468e05254394690 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:45:35 +0200 Subject: [PATCH 1187/2004] Add Zeepr adapter and token mapping for Arbitrum (#9796) * Create Zeepr add Zeepr folder * Delete projects/Zeepr * Create index.js add zeepr adapter * Update index.js * Update index.js * Update index.js Get the margins of tvl * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Add arbitrum token mapping and staking for Zeepr --------- Co-authored-by: Joey <38412153+JoJo-Joker@users.noreply.github.com> --- projects/helper/tokenMapping.js | 3 +++ projects/zeepr/index.js | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 projects/zeepr/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index ac58f59b64f..6142a443fdc 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -47,6 +47,9 @@ const fixBalancesTokens = { linea: { '0x894134a25a5fac1c2c26f1d8fbf05111a3cb9487': { coingeckoId: 'grai', decimals: 18, }, }, + arbitrum: { + '0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13': { coingeckoId: 'zeepr', decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/zeepr/index.js b/projects/zeepr/index.js new file mode 100644 index 00000000000..dcbe45767b9 --- /dev/null +++ b/projects/zeepr/index.js @@ -0,0 +1,8 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + arbitrum: { + tvl: () => ({}), + staking: staking("0xbb0390cf2586e9b0a4faadf720ae188d140e9fd5", "0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13"), + }, +} From de1639a4c6c22c37b3729d9f1aeee0b6f9280853 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 16:41:59 +0200 Subject: [PATCH 1188/2004] Update HbarSuite TVL calculation (#9798) * added hsuite as a project * updated folder structure * added hsuite-dex as a project * completed hbarsuite dex adapter * added nft-dex into tvl * adjusted returned tvl value * added hedera chain in the tvl export * added tvl keyword inside hedera chain * added tvl keyword inside hedera chain * removed fetch, left hedera tvl only * trying fetch with hedera chain and total * code refactor --------- Co-authored-by: Tomachi Anura <96837454+tomachianura@users.noreply.github.com> Co-authored-by: Tomachi Anura --- projects/hbarsuite-dex/index.js | 50 +++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 projects/hbarsuite-dex/index.js diff --git a/projects/hbarsuite-dex/index.js b/projects/hbarsuite-dex/index.js new file mode 100644 index 00000000000..8ee3b901252 --- /dev/null +++ b/projects/hbarsuite-dex/index.js @@ -0,0 +1,50 @@ +const { get } = require('../helper/http') + +/* + * HbarSuite is a decentralized network of features built on Hedera Hashgraph. + * It is a suite of products that are built on top of the layer 1, + * relying on the security and speed of the Hedera network. + * + * HbarSute Network relies entirely on HCS (Hedera Consensus Service) for its data storage, + * and HFS (Hedera File Service) for its file storage. + * + * It also uses NFTs (Non-Fungible Tokens) to represent the Liquidity Providers' shares in the pools, + * storing the data on IPFS. + */ + +// Listing the urls of the nodes that are used by HbarSuite to connect to the Hedera Mainnet. +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' +] + +async function tvl(api) { + // generating a random number, so to grab a random smart-node from the network.. + let randomNode = nodes[Math.floor(Math.random() * nodes.length)] + + // grabbing the list of the pools from the HbarSuite DEX.. + let pools = await get(randomNode + '/pools/list') + + // looping through the pools, and grabbing the total liquidity of each pool. + // every pool on HbarSuite DEX has $HSUITE as the base token, and the other token as the quote token. + // so we grab the $HSUITE amount of each pool, and we multiply it by 2, as the total liquidity of the pool is the sum of the two tokens. + // grabbing the list of the pools from the HbarSuite NFT-DEX.. + pools.forEach(i => api.addCGToken('hsuite', i.asset.pair.baseToken.amount * 2)) + let nft_pools = await get(randomNode + '/nft-pools/collections') + nft_pools.forEach(i => api.addCGToken('hedera-hashgraph', +i.latest_statistics.stats.tvl.amount)) +} + +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 From 71eff8923b177e072ce50a8886405dacc36482ff Mon Sep 17 00:00:00 2001 From: Cohiba Nan <132758148+Cohiban@users.noreply.github.com> Date: Wed, 10 Apr 2024 22:43:14 +0800 Subject: [PATCH 1189/2004] Add bitcoin address (#9797) --- projects/ainn-layer2/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/ainn-layer2/index.js b/projects/ainn-layer2/index.js index b699a1f63d8..1c5871701fb 100644 --- a/projects/ainn-layer2/index.js +++ b/projects/ainn-layer2/index.js @@ -17,7 +17,10 @@ const BTCOwners = [ "3Kptt4TZZRcjuGH8ikoQ8mV1TVxq45dnuS", "3G4sMXWAAVTvTXTksr8u9zuu7W8RKsicEz", "335DRGzLLG2tu4H4PnFBHYAwcj5pvV8zei", - "bc1qqg3cdyadq25zn99sdprr4lgpsxg2za998eygy8" + "bc1qqg3cdyadq25zn99sdprr4lgpsxg2za998eygy8", + "bc1qw4vp94e9egkaxc04qsu5z9aq5pqpku2p6pzer8", + "bc1q3q7afjarz7l6v49538qs2prffhtawf38ss85k8", + "bc1q3smt9ut40eld6tgn42sdlp9yrx98s90unqw3pl" ]; From df2a1866bf47e46c34ee22e62aba8029a1d2738c Mon Sep 17 00:00:00 2001 From: 0xdigiscore <7252280+0xdigiscore@users.noreply.github.com> Date: Wed, 10 Apr 2024 22:46:14 +0800 Subject: [PATCH 1190/2004] feat: add bido protocol (#9720) --- projects/bido/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/bido/index.js diff --git a/projects/bido/index.js b/projects/bido/index.js new file mode 100644 index 00000000000..f86d5349bda --- /dev/null +++ b/projects/bido/index.js @@ -0,0 +1,20 @@ +const ADDRESSES = require("../helper/coreAssets.json"); + +const bidoStakeContract = "0x26bda683F874e7AE3e3A5d3fad44Bcb82a7c107C"; + +async function btc(api) { + const pooledBTC = await api.call({ + target: bidoStakeContract, + abi: "uint256:totalSupply", + }); + + return { + [ADDRESSES.ethereum.WBTC]: (pooledBTC / 1e18) * 1e8, + }; +} + +module.exports = { + bevm: { + tvl: btc, + }, +}; From 14f9ff711ecc1d9777ed0e8b4bf8477d5200be7d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:45:11 +0200 Subject: [PATCH 1191/2004] rmm v3: remove oracle usage --- projects/realtoken-rmm-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/realtoken-rmm-v3/index.js b/projects/realtoken-rmm-v3/index.js index 2aed86eb2ee..b4d039d5625 100644 --- a/projects/realtoken-rmm-v3/index.js +++ b/projects/realtoken-rmm-v3/index.js @@ -8,6 +8,6 @@ module.exports = { "0xC6c4b123e731819AC5f7F9E0fe3A118e9b1227Cd", undefined, ["0x11B45acC19656c6C52f93d8034912083AC7Dd756"], - { oracle: "0xb4AE809Ad7CEB7e5B579dEdD0De7c213aD5AB516" } + // { oracle: "0xb4AE809Ad7CEB7e5B579dEdD0De7c213aD5AB516" } ), }; From cacb8dc9a78426fae4b97f9eac9882dfde61e9cb Mon Sep 17 00:00:00 2001 From: Eugene Kadish <7495121+eukadish@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:13:48 -0400 Subject: [PATCH 1192/2004] add blast support (#9801) --- projects/fortunafi-fbill/index.js | 32 ++++++++++++++++++++---------- projects/fortunafi-ifbill/index.js | 24 ++++++++++++++++------ 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/projects/fortunafi-fbill/index.js b/projects/fortunafi-fbill/index.js index a6437d9fc62..208728f2e2f 100644 --- a/projects/fortunafi-fbill/index.js +++ b/projects/fortunafi-fbill/index.js @@ -1,22 +1,32 @@ const ADDRESSES = require('../helper/coreAssets.json') const contracts = { - canto: { - token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' - }, - arbitrum: { - token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' - } + canto: { + token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' + }, + arbitrum: { + token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' + }, + blast: { + token: '0x79ECCE8E2D17603877Ff15BC29804CbCB590EC08' + } } const tvl = async (api) => { - const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); + const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); - api.add(ADDRESSES[api.chain].USDC, nav / 1e12) + switch (api.chain) { + case 'blast': + api.add(ADDRESSES['blast'].USDB, nav); + break; + default: + api.add(ADDRESSES[api.chain].USDC, nav / 1e12); + } } module.exports = { - misrepresentedTokens: true, - canto: { tvl }, - arbitrum: { tvl }, + misrepresentedTokens: true, + canto: { tvl }, + arbitrum: { tvl }, + blast: { tvl } }; diff --git a/projects/fortunafi-ifbill/index.js b/projects/fortunafi-ifbill/index.js index 2c9aa1b5414..0b20c6c11da 100644 --- a/projects/fortunafi-ifbill/index.js +++ b/projects/fortunafi-ifbill/index.js @@ -3,17 +3,29 @@ const ADDRESSES = require('../helper/coreAssets.json') const contracts = { canto: { token: '0x45bafad5a6a531Bc18Cf6CE5B02C58eA4D20589b' + }, + arbitrum: { + token: '0x45bafad5a6a531Bc18Cf6CE5B02C58eA4D20589b' + }, + blast: { + token: '0x45bafad5a6a531Bc18Cf6CE5B02C58eA4D20589b' } -} +}; -const tvl = async (api) => { +const tvl = async (_, _1, _2, { api }) => { const nav = await api.call({ target: contracts[api.chain].token, abi: 'function nav() external view returns (uint256)' }); - api.add(ADDRESSES.canto.USDC, nav / 1e12) + switch (api.chain) { + case 'blast': + api.add(ADDRESSES['blast'].USDB, nav); + break; + default: + api.add(ADDRESSES[api.chain].USDC, nav / 1e12); + } } module.exports = { - canto: { - tvl - } + canto: { tvl }, + arbitrum: { tvl }, + blast: { tvl } }; From 2a171640b57f1ec51e11d57f93c9e644913c8d7e Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Wed, 10 Apr 2024 22:04:40 +0100 Subject: [PATCH 1193/2004] fix hallmarks --- projects/amphor/index.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/projects/amphor/index.js b/projects/amphor/index.js index 55c26fd4ccb..50a87aa85d3 100644 --- a/projects/amphor/index.js +++ b/projects/amphor/index.js @@ -20,10 +20,11 @@ Object.keys(config).forEach((chain) => { vaults: Object.values(lvTokens), tokenAbi: 'asset', balanceAbi: 'totalAssets', - }), - hallmarks: [ - [1710115200, "Beta test closing"], - [1712361600, "LRT vault release"], - ], + }) }; }); + +module.exports.hallmarks = [ + [1710115200, "Beta test closing"], + [1712361600, "LRT vault release"], +] From aaaabf3c066c9c238e1653ef5990eee062efa9dc Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:58:25 +0700 Subject: [PATCH 1194/2004] Add Symmetric on Meter and remove Kava (#9806) --- projects/symmetric/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/symmetric/index.js b/projects/symmetric/index.js index 83d5195e20f..126b17d6c36 100644 --- a/projects/symmetric/index.js +++ b/projects/symmetric/index.js @@ -14,10 +14,10 @@ module.exports = { onChainTvl('0x901E0dC02f64C42F73F0Bdbf3ef21aFc96CF50be', 21343993), ]) }, - kava: { - tvl: onChainTvl('0xA18808989E7EB0FcF0932fd00D007F3C118B78E7', 551649, { onlyUseExistingCache: true} ), - }, telos: { tvl: onChainTvl('0xbccc4b4c6530F82FE309c5E845E50b5E9C89f2AD', 308572378), + }, + meter: { + tvl: onChainTvl('0x913f21E596790aFC6AA45229E9ff8b7d0A473D5A', 51825430), } } From 6213d1effadea05fcd3cfff8415a861b64b5def3 Mon Sep 17 00:00:00 2001 From: Robert Chu Date: Wed, 10 Apr 2024 23:01:31 -0700 Subject: [PATCH 1195/2004] Add TermFinance Avalanche network deployment (#9802) * Add Term Avalanche network deployment * Change startBlock to be per-chain --- projects/term-finance/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/term-finance/index.js b/projects/term-finance/index.js index b7d408164f3..2e04a41cc61 100644 --- a/projects/term-finance/index.js +++ b/projects/term-finance/index.js @@ -36,13 +36,19 @@ query auctionsQuery($lastId: ID) { } }` -const startBlock = 16380765; +const startBlocks = { + "ethereum": 16380765, + "avalanche": 43162228, +}; const emitters = { "ethereum": [ "0x9D6a563cf79d47f32cE46CD7b1fb926eCd0f6160", // 0.2.4 "0xf268E547BC77719734e83d0649ffbC25a8Ff4DB3", // 0.4.1 "0xc60e0f5cD9EE7ACd22dB42F7f56A67611ab6429F", // 0.6.0 ], + "avalanche": [ + "0xb81afB6724ba9d19a3572Fb29ed7ef633fD50093", // 0.6.0 + ], }; module.exports = { @@ -66,7 +72,7 @@ Object.keys(graphs).forEach(chain => { target: eventEmitter, eventAbi: 'event BidAssigned(bytes32 termAuctionId, bytes32 id, uint256 amount)', onlyArgs: true, - fromBlock: startBlock, + fromBlock: startBlocks[chain], }) for (const { termAuctionId, amount } of logs) { const { term: { purchaseToken } } = data.find(i => i.id === termAuctionId) From 487955357d94b04572a5118df2cb38aae3bc940d Mon Sep 17 00:00:00 2001 From: baklavaspace <93024988+baklavaspace@users.noreply.github.com> Date: Thu, 11 Apr 2024 14:04:20 +0800 Subject: [PATCH 1196/2004] Add Base Aerodrome AERO-BAVA vault (#9804) --- projects/baklava-space/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/baklava-space/index.js b/projects/baklava-space/index.js index 5dd0a92c962..b40abba1f20 100644 --- a/projects/baklava-space/index.js +++ b/projects/baklava-space/index.js @@ -37,7 +37,8 @@ const config = { '0x37f716f6693EB2681879642e38BbD9e922A53CDf', '0x49AF8CAf88CFc8394FcF08Cf997f69Cee2105f2b', '0x83B2D994A1d16E6A3A44281D12542E2bc0d5EBFD', - '0xea505C49B43CD0F9Ed3b40D77CAF1e32b0097328' + '0xea505C49B43CD0F9Ed3b40D77CAF1e32b0097328', + '0xc5DFb9698440Eaeb0A7C9dAA5a795e9B48CacadF' ], bsc: [ '0x6659B42C106222a50EE555F76BaD09b68EC056f9', From b4adc937ecb9d20bd32942e82334ab9630828133 Mon Sep 17 00:00:00 2001 From: ZuluSpl0it <55359362+ZuluSpl0it@users.noreply.github.com> Date: Thu, 11 Apr 2024 01:05:51 -0500 Subject: [PATCH 1197/2004] Update backbonelabs project (#9803) * added juno, kujira, and osmosis * added juno, kujira, and osmosis --- projects/backbonelabs/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/projects/backbonelabs/index.js b/projects/backbonelabs/index.js index f7b40ebbff0..f4d583c320c 100644 --- a/projects/backbonelabs/index.js +++ b/projects/backbonelabs/index.js @@ -16,6 +16,21 @@ const config = { token: ADDRESSES.chihuahua.HUAHUA, hub: "chihuahua1psf89r2g9vdlttrjphspcpzzfx87r2r4nl5fg703ky42mp2706wsw5330f", boneToken: "chihuahua1jz5n4aynhpxx7clf2m8hrv9dp5nz83k67fgaxhy4p9dfwl6zssrq3ymr6w" + }, + juno: { + token: ADDRESSES.juno.JUNO, + hub: "juno102at0mu2xeluyw9efg257yy6pyhv088qqhmp4f8wszqcwxnpdcgqsfq0nv", + boneToken: "juno1mvkgcr5uce2rnpzr4qrzf50hx4qreuwzlt7fzsjrhjud3xnjmttq5mkh2m", + }, + kujira: { + token: ADDRESSES.kujira.KUJI, + hub: "kujira15e8q5wzlk5k38gjxlhse3vu6vqnafysncx2ltexd6y9gx50vuj2qpt7dgv", + boneToken: "factory/kujira15e8q5wzlk5k38gjxlhse3vu6vqnafysncx2ltexd6y9gx50vuj2qpt7dgv/boneKuji" + }, + osmosis: { + token: ADDRESSES.osmosis.OSMO, + hub: "osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv", + boneToken: "factory/osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv/boneOsmo" } }; From 2581c2f84c3e297a0b9f0c8e04784dcbe624731c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 08:58:12 +0200 Subject: [PATCH 1198/2004] minor refactor --- projects/1bch/index.js | 16 +------- projects/aktionariat/index.js | 11 ++---- projects/allbridge/index.js | 5 +-- projects/config/smoothy/abis.js | 63 -------------------------------- projects/config/wepiggy/abi.json | 8 ---- projects/know-to-earn.js | 39 +------------------- projects/multichainMiner.js | 25 ++++--------- projects/smoothy.js | 57 +++-------------------------- projects/trisolaris.js | 5 +-- 9 files changed, 24 insertions(+), 205 deletions(-) delete mode 100644 projects/config/smoothy/abis.js delete mode 100644 projects/config/wepiggy/abi.json diff --git a/projects/1bch/index.js b/projects/1bch/index.js index 6d0047b0250..cdb18a6619b 100644 --- a/projects/1bch/index.js +++ b/projects/1bch/index.js @@ -9,21 +9,9 @@ const FACTORY = "0x3dC4e6aC26df957a908cfE1C0E6019545D08319b"; const MASTERBREEDER = "0xeC0A7496e66a206181034F86B261DDDC1A2c406E"; const rBCH_WBCH_LP = "0xb9659B524447F53FF1019952A6eeDBb99776Ab4A"; 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) - } +async function bchMasterChef(api) { + return api.sumTokens({ owner: MASTERBREEDER, tokens: [WBCH]}) } const bchDexTvl = getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }) diff --git a/projects/aktionariat/index.js b/projects/aktionariat/index.js index 6aab1fceaa1..38c548467a7 100644 --- a/projects/aktionariat/index.js +++ b/projects/aktionariat/index.js @@ -1,5 +1,4 @@ const { request, gql } = require('graphql-request'); -const { getBlock } = require('../helper/http'); const { sumTokens2 } = require('../helper/unwrapLPs') const graphs = { @@ -8,9 +7,8 @@ const graphs = { } function tvlPaged(chain) { - return async (_, _b, { [chain]: block }) => { - block = await getBlock(_, chain, { [chain]: block }) - const balances = {} + return async (api) => { + const block = await api.getBlock() const size = 1000 let lastId = '' let brokerbots @@ -23,17 +21,14 @@ function tvlPaged(chain) { } } ` - do { const res = await request(graphs[chain], graphQueryPaged, { lastId, block: block - 5000 }); brokerbots = res.brokerbots const tokensAndOwners = brokerbots.map(i => ([[i.token.id, i.id], [i.base.id, i.id]])).flat() - await sumTokens2({ balances, tokensAndOwners, chain, block }) + await sumTokens2({ tokensAndOwners, api }) lastId = brokerbots[brokerbots.length - 1]?.id } while (brokerbots.length === size) - - return balances } } diff --git a/projects/allbridge/index.js b/projects/allbridge/index.js index 0512b969c44..51f32af495f 100644 --- a/projects/allbridge/index.js +++ b/projects/allbridge/index.js @@ -191,11 +191,10 @@ const nearData = { const toNumber = (decimals, n) => BigNumber(n/(10 ** decimals)).toFixed(0) function getTVLFunction(chain) { - return async function tvl(timestamp, ethBlock, {[chain]: block }) { - const balances = {} + return async function tvl(api) { const chainData = data[chain]; const tokens = chainData.tokens.map(i => i.address) - return sumTokens2({ chain, block, tokens, owner: chainData.contractAddress }) + return sumTokens2({ api, tokens, owner: chainData.contractAddress }) } } diff --git a/projects/config/smoothy/abis.js b/projects/config/smoothy/abis.js deleted file mode 100644 index 408e5a45c20..00000000000 --- a/projects/config/smoothy/abis.js +++ /dev/null @@ -1,63 +0,0 @@ -const ADDRESSES = require('../../helper/coreAssets.json') -let abis = {}; - -abis.smoothy = { - _ntokens: "uint256:_ntokens", - getTokenStats: "function getTokenStats(uint256 bTokenIdx) view returns (uint256 softWeight, uint256 hardWeight, uint256 balance, uint256 decimals)", - }; - - -abis.tokens = [ - { - symbol: "USDT", - address: ADDRESSES.ethereum.USDT, - id: 0, - decimals: 6, - }, - { - symbol: "USDC", - address: ADDRESSES.ethereum.USDC, - id: 1, - decimals: 6, - }, - { - symbol: "DAI", - address: ADDRESSES.ethereum.DAI, - id: 2, - decimals: 18, - }, - { - symbol: "TUSD", - address: ADDRESSES.ethereum.TUSD, - id: 3, - decimals: 18, - }, - { - symbol: "sUSD", - address: ADDRESSES.ethereum.sUSD, - id: 4, - decimals: 18, - }, - { - symbol: "BUSD", - address: ADDRESSES.ethereum.BUSD, - id: 5, - decimals: 18, - }, - { - symbol: "PAX", - address: "0x8e870d67f660d95d5be530380d0ec0bd388289e1", - id: 6, - decimals: 18, - }, - { - symbol: "GUSD", - address: "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd", - id: 7, - decimals: 2, - }, -]; - -module.exports = { - abis -} diff --git a/projects/config/wepiggy/abi.json b/projects/config/wepiggy/abi.json deleted file mode 100644 index da690787c4f..00000000000 --- a/projects/config/wepiggy/abi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "decimals": "uint8:decimals", - "getAllMarkets": "address[]:getAllMarkets", - "underlying": "address:underlying", - "getCash": "uint256:getCash", - "getUnderlyingPrice": "function getUnderlyingPrice(address _pToken) view returns (uint256)", - "oracle": "address:oracle" -} \ No newline at end of file diff --git a/projects/know-to-earn.js b/projects/know-to-earn.js index 4bc3a4655a8..dd684082189 100644 --- a/projects/know-to-earn.js +++ b/projects/know-to-earn.js @@ -1,42 +1,7 @@ -const ADDRESSES = require('./helper/coreAssets.json') -// 0x515343ed04b054d098a0c15cbd7f98b0250d0b38 KNOW token -// 0x767eded9032ce68dc4e475addf0059baab936585 lp token -// 0xEA934138CFEF2c5efedf2b670B93Fb6827295cC4 owner - -const { sumLPWithOnlyOneToken } = require("./helper/unwrapLPs"); - -const iotx = "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69"; -const wiotx = ADDRESSES.iotex.WIOTX; - -function pool2(chain, gasToken) { - return async (timestamp, _block, {[chain]: block}) => { - let balances = { iotex: 0 }; - - await sumLPWithOnlyOneToken( - balances, - '0x767eded9032ce68dc4e475addf0059baab936585', - '0xEA934138CFEF2c5efedf2b670B93Fb6827295cC4', - wiotx, - block, - "iotex" - ); - - if (iotx in balances) { - balances["iotex"] += balances[iotx] / 10 ** 18; - delete balances[iotx]; - } - if (wiotx in balances) { - balances["iotex"] += balances[wiotx] / 10 ** 18; - delete balances[wiotx]; - } - - return balances; - }; -} - +const { sumTokensExport } = require('./helper/unknownTokens'); module.exports = { iotex: { - pool2: pool2("iotex", "iotex"), + pool2: sumTokensExport({ owner: '0x74d80963d1f2db8536be25a9b618c6ed7a20d140', tokens: ['0x767eded9032ce68dc4e475addf0059baab936585'], useDefaultCoreAssets: true, }), tvl: () => ({}), }, }; diff --git a/projects/multichainMiner.js b/projects/multichainMiner.js index 024fc376097..0c7259773b1 100644 --- a/projects/multichainMiner.js +++ b/projects/multichainMiner.js @@ -1,13 +1,12 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const { getChainTransform, } = require("./helper/portedTokens"); +const { sumTokensExport } = require('./helper/unwrapLPs'); const minedTokens = { 'cake': '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82', 'busd': ADDRESSES.bsc.BUSD, - 'matic': ADDRESSES.polygon.WMATIC_2, - 'ftm': ADDRESSES.fantom.WFTM, - 'avax': ADDRESSES.avax.WAVAX, + 'matic': ADDRESSES.null, + 'ftm': ADDRESSES.null, + 'avax': ADDRESSES.null, 'usdc': ADDRESSES.polygon.USDC, // polygon 'doge': '0xba2ae424d960c26247dd6c32edc70b295c744c43', // bsc 'eth': ADDRESSES.bsc.ETH // bsc @@ -22,7 +21,6 @@ const minerContracts = { 'doge': '0x026d814935a053D10abA9987e4D047Aa9369c97E', // bsc 'eth': '0x212A3A41a0e58CCdc86F013b003d4afF805a958c' // bsc }; -const abi = "uint256:getBalance"; const config = { bsc: { @@ -43,16 +41,7 @@ module.exports = {}; Object.keys(config).forEach(chain => { const { keys } = config[chain] - module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }) => { - const balances = {} - const transform = await getChainTransform(chain) - const calls = keys.map(i => ({ target: minerContracts[i] })) - const { output: bals } = await sdk.api.abi.multiCall({ - abi, calls, chain, block, - }) - bals.forEach((data, i) => sdk.util.sumSingleBalance(balances, transform(minedTokens[keys[i]]), data.output)) - return balances - } - } + 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/smoothy.js b/projects/smoothy.js index 506693314ac..a8777639b46 100644 --- a/projects/smoothy.js +++ b/projects/smoothy.js @@ -1,54 +1,9 @@ -const abis = require('./config/smoothy/abis.js') -const { toUSDTBalances } = require('./helper/balances'); -const imp = '0xe5859f4efc09027a9b718781dcb2c6910cac6e91'; -const sdk = require("@defillama/sdk"); +const imp = '0xe5859f4efc09027a9b718781dcb2c6910cac6e91' +const { sumTokensExport } = require('./helper/unwrapLPs') -module.exports = { - ethereum: { - tvl: async (ts, block) => { - let tvl = 0 - const { output: poolLength } = await sdk.api.abi.call({ - block, - target: imp, - abi: abis.abis.smoothy._ntokens - }) - const calls = [] - for (let i = 0; i < poolLength; i++) - calls.push({ params: [i] }) - - const { output: tvls } = await sdk.api.abi.multiCall({ - block, - calls, - target: imp, - abi: abis.abis.smoothy.getTokenStats - }) - tvls.forEach(t => tvl += t.output.balance / 10 ** t.output.decimals) - return toUSDTBalances(tvl) - } - }, +const tvl = sumTokensExport({ owner: imp, fetchCoValentTokens: true }) - bsc: { - tvl: async (ts, _block, { bsc: block }) => { - let tvl = 0 - const { output: poolLength } = await sdk.api.abi.call({ - block, - target: imp, - chain: 'bsc', - abi: abis.abis.smoothy._ntokens - }) - const calls = [] - for (let i = 0; i < poolLength; i++) - calls.push({ params: [i] }) - - const { output: tvls } = await sdk.api.abi.multiCall({ - block, - calls, - target: imp, - chain: 'bsc', - abi: abis.abis.smoothy.getTokenStats - }) - tvls.forEach(t => tvl += t.output.balance / 10 ** t.output.decimals) - return toUSDTBalances(tvl) - } - } +module.exports = { + ethereum: { tvl }, + bsc: { tvl }, } diff --git a/projects/trisolaris.js b/projects/trisolaris.js index 32a5aa4cbbb..e1aff9756ff 100644 --- a/projects/trisolaris.js +++ b/projects/trisolaris.js @@ -2,14 +2,13 @@ const ADDRESSES = require('./helper/coreAssets.json') const { getUniTVL } = require('./helper/unknownTokens') const sdk = require('@defillama/sdk') const { sumTokens2 } = require('./helper/unwrapLPs') -const chain = 'aurora' const dexTVL = getUniTVL({ factory: '0xc66F594268041dB60507F00703b152492fb176E7', useDefaultCoreAssets: true, }) -async function stableswapTVL(_, _b, { [chain]: block }) { +async function stableswapTVL(api) { const pools = [ { name: 'USDC/USDT/USN', @@ -38,7 +37,7 @@ async function stableswapTVL(_, _b, { [chain]: block }) { ] const tokensAndOwners = pools.map(({ contract, tokens }) => tokens.map(t => [t, contract])).flat() - return sumTokens2({ chain, block, tokensAndOwners }) + return sumTokens2({ api, tokensAndOwners }) } module.exports = { From 5f83d6623c105f2ad8b30c58cc8ac2b36282260b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 11:11:21 +0200 Subject: [PATCH 1199/2004] update sakai --- projects/sakai-vault/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/sakai-vault/index.js b/projects/sakai-vault/index.js index f2bd94c194b..c41f30ac466 100644 --- a/projects/sakai-vault/index.js +++ b/projects/sakai-vault/index.js @@ -3,12 +3,15 @@ const { staking } = require("../helper/staking"); const contracts = { SAKAI: "0x43b35e89d15b91162dea1c51133c4c93bdd1c4af", "Sakai-SP": "0xc20A079c7962D9fc92173cda349e80D484dFA42A", //Sakai Staking Protocol Contract - SakaiDAO: "0x8F2e2baD6020d8bB5BF947199CaE8eb86D24cfD7", //Sakai-DAO Contract + "Sakai-SP-V2": "0xba94E7c2306aC3BE22C123041Fd7823d7fA15933", //Sakai Staking Protocol Contract V2, }; module.exports = { bsc: { tvl: () => ({}), - staking: staking([contracts["Sakai-SP"], contracts["SakaiDAO"]], contracts.SAKAI), + staking: staking( + [contracts["Sakai-SP"], contracts["Sakai-SP-V2"]], + contracts.SAKAI + ), }, -} \ No newline at end of file +}; From 61202a9f50f00249baad71dd593f34463e1ccb82 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 11:48:37 +0200 Subject: [PATCH 1200/2004] minor refactor --- projects/2pi/index.js | 16 ++----- projects/nft20.js | 93 +++++++++++++++------------------------- projects/pinyottas.js | 57 ++---------------------- projects/polyroll.js | 66 ++++++++-------------------- projects/rarify.js | 13 +----- projects/realt.js | 40 +++-------------- projects/sapphiremine.js | 20 ++------- projects/sheesha.js | 15 ++----- projects/tbill.js | 19 ++------ 9 files changed, 77 insertions(+), 262 deletions(-) diff --git a/projects/2pi/index.js b/projects/2pi/index.js index 9532670df7a..5bc419332f5 100644 --- a/projects/2pi/index.js +++ b/projects/2pi/index.js @@ -1,4 +1,3 @@ -const sdk = require('@defillama/sdk') const { getUniqueAddresses } = require('../helper/utils') const { getConfig } = require('../helper/cache') const archimedesAbi = require('./archimedes.json') @@ -17,21 +16,14 @@ const fetchChainAddresses = async chain => { } const fetchTvl = chain => { - return async (_timestamp, _block, chainBlocks) => { - const block = chainBlocks[chain] + return async (api) => { const addresses = await fetchChainAddresses(chains[chain]) - let pools = await Promise.all(addresses.map(i => sdk.api2.abi.fetchList({ withMetadata: true, chain, block, target: i, lengthAbi: archimedesAbi['poolLength'], itemAbi: archimedesAbi['poolInfo'] }))) + let pools = await Promise.all(addresses.map(i => api.fetchList({ withMetadata: true, target: i, lengthAbi: archimedesAbi['poolLength'], itemAbi: archimedesAbi['poolInfo'] }))) pools = pools.flat() const wantTokens = pools.map(i => i.output.want) const calls = pools.map(i => i.input) - const { output: bal } = await sdk.api.abi.multiCall({ - abi: archimedesAbi.balance, - calls, - chain, block, - }) - const balances = {} - bal.forEach(({ output}, i) => sdk.util.sumSingleBalance(balances,wantTokens[i],output, chain)) - return balances + const bal = await api.multiCall({ abi: archimedesAbi.balance, calls, }) + api.add(wantTokens, bal) } } diff --git a/projects/nft20.js b/projects/nft20.js index 600ee784f5f..39e2dd04bdf 100644 --- a/projects/nft20.js +++ b/projects/nft20.js @@ -1,7 +1,7 @@ const ADDRESSES = require('./helper/coreAssets.json') const sdk = require("@defillama/sdk") -const axios = require("axios") const { staking } = require("./helper/staking"); +const { getConfig } = require('./helper/cache') const MUSE = "0xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81"; const stkMUSE = "0x9cfc1d1a45f79246e8e074cfdfc3f4aacdde8d9a"; @@ -23,85 +23,60 @@ const contracts = { ], weth: ADDRESSES.ethereum.WETH, univ3_factory: '0x1f98431c8ad98523631ae4a59f267346ea31f984', - transform: addr => addr, - }, + }, polygon: { nft20_rest_api: nft20_rest_api_base + '&network=1', uni_v2_factories: ['0xc35DADB65012eC5796536bD9864eD8773aBc74C4'], // sushiv1_factory_polygon weth: ADDRESSES.polygon.WETH_1, univ3_factory: [], - transform: addr => `polygon:${addr}`, } -} +} function chainTvl(chain) { - return async (timestamp, ethBlock, chainBlocks) => { - // Define variables depending on chain - const block = chainBlocks[chain] - const {nft20_rest_api, uni_v2_factories, weth, univ3_factory, transform} = contracts[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 - let nft20_pools = (await axios.get(nft20_rest_api)).data.data // ?perPage=20&page=1&sortBy=pool_users - 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`) + // 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 sdk.api.abi.multiCall({ + // 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'], - block, - chain }) - ).output - - // 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 sdk.api.abi.multiCall({ + + // 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'], - block, - chain - }) - ).output - - const LPs = [...uni_v2_LPs, ...uni_v3_LPs].filter(lp => lp.output !== ADDRESSES.null) - const weth_LPs = ( - await sdk.api.abi.multiCall({ - calls: LPs.map(pool => ({ - target: weth, - params: [pool.output] - })), - abi: 'erc20:balanceOf', - block, - chain }) - ) - const balances = {}; - sdk.util.sumMultiBalanceOf(balances, weth_LPs, true, transform); - return balances -} + 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:{ + 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, "ethereum"), - pool2: staking(MUSE_ETH_univ2_staking, MUSE_ETH_univ2, "ethereum"), + staking: staking(stkMUSE, MUSE, "ethereum"), + pool2: staking(MUSE_ETH_univ2_staking, MUSE_ETH_univ2, "ethereum"), }, polygon: { tvl: chainTvl('polygon') diff --git a/projects/pinyottas.js b/projects/pinyottas.js index f20449bcdd0..eaed77f674a 100644 --- a/projects/pinyottas.js +++ b/projects/pinyottas.js @@ -1,63 +1,12 @@ -const sdk = require('@defillama/sdk'); - const pinyottasContract = '0x2861e4d8e26b10029e5cd1d236239f810c664b99' const abi = { getTokenContractsInPinyotta: "function getTokenContractsInPinyotta(uint256 _id) view returns (address[] tokenContracts)", - getTokenBalanceInPinyotta: "function getTokenBalanceInPinyotta(uint256 _id, address _tokenContract) view returns (uint256 balance)", } -async function tvl(timestamp, block, chainBlocks) { - // Get number of minted Pinyottas - const nPinyottas = ( - await sdk.api.abi.call({ - target: pinyottasContract, - abi: 'erc20:totalSupply', - block, - chain: 'ethereum' - }) - ).output - sdk.log('nPinyottas', nPinyottas) - - // Get contract of tokens held within each pinyotta - const pinyottasIndices = Array.from(Array(parseInt(nPinyottas)).keys()); - const tokenCalls = pinyottasIndices.map(i => ({ - target: pinyottasContract, - params: i+1 - })) - const pinyottasTokenContracts = ( - await sdk.api.abi.multiCall({ - calls: tokenCalls, - abi: abi[ "getTokenContractsInPinyotta"], - block, - chain: 'ethereum' - }) - ).output - - const calls_2 = pinyottasTokenContracts.map((el, i) => el.output.map( token => ({ - target: pinyottasContract, - params: [i+1, token] - }))).flat(); - - // Get balances for each token (eventually multiple) of each pinyotta - const pinyottasTokenBalances = ( - await sdk.api.abi.multiCall({ - calls: calls_2, - abi: abi['getTokenBalanceInPinyotta'], - block, - chain: 'ethereum' - }) - ).output - - const balances = {} - pinyottasTokenBalances.forEach(bal => { - sdk.util.sumSingleBalance( - balances, - bal.input.params[1], - bal.output - ) - }) - return balances; +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 = { diff --git a/projects/polyroll.js b/projects/polyroll.js index fbdbf7ffca8..9b4ce87562a 100644 --- a/projects/polyroll.js +++ b/projects/polyroll.js @@ -1,55 +1,23 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokensAndLPsSharedOwners } = require('./helper/unwrapLPs'); +const ADDRESSES = require('./helper/coreAssets.json'); +const { staking } = require('./helper/staking'); const tokens = [ - [ADDRESSES.polygon.WMATIC_2, false], //WMATIC - [ADDRESSES.polygon.WETH_1, false], //WETH - [ADDRESSES.polygon.USDT, false], //USDT - ['0x831753dd7087cac61ab5644b308642cc1c33dc13', false] //QUICK + 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 -]; -async function tvl(timestamp, block, chainBlocks) { - const transform = i => `polygon:${i}`; - const balances = {}; - block = chainBlocks.polygon; - - await sumTokensAndLPsSharedOwners( - balances, - tokens, - fundedContracts, - block, - 'polygon', - transform - ); - - return balances; -} -async function staking(timestamp, block, chainBlocks) { - const transform = i => `polygon:${i}`; - const balances = {}; - block = chainBlocks.polygon; - - await sumTokensAndLPsSharedOwners( - balances, - [['0xc68e83a305b0fad69e264a1769a0a070f190d2d6', false]], - fundedContracts, - block, - 'polygon', - transform - ); + '0x3C58EA8D37f4fc6882F678f822E383Df39260937', //masterchef + '0xc7F4F97E710C2d87F29f6F03220a3425064e02E5', //prize + '0xa3541eA15556AD3272b9BDe36241F61cCbb60aE8', //staking pool + '0x6A974e96a963e9f219915797C4E3B9e2A63ab0e2', //roll + '0xC96D9032770010f5f3D167cA4eeca84a0Bca0Fa2' //miner +] - return balances; -} -// node test.js projects/polyroll.js -module.exports={ - polygon: { - tvl, - staking - } +module.exports = { + polygon: { + tvl: staking(fundedContracts, tokens), + staking: staking(fundedContracts, '0xc68e83a305b0fad69e264a1769a0a070f190d2d6') + } } \ No newline at end of file diff --git a/projects/rarify.js b/projects/rarify.js index 69f538c2cbb..b122577b040 100644 --- a/projects/rarify.js +++ b/projects/rarify.js @@ -1,20 +1,11 @@ -const { sumLPWithOnlyOneTokenOtherThanKnown} = require("./helper/unwrapLPs"); +const { sumTokensExport} = require("./helper/unknownTokens"); const stakingContract = '0x79bfE41cDbF6b7E949B93B46a2cBEFB497d71c20' const RARE_WXDAI_LP = '0x5805bb63e73ec272c74e210d280c05b41d719827' -const RARE = '0x57e93bb58268de818b42e3795c97bad58afcd3fe' - -// Since RARE-Coin is not listed yet on coingecko for pricing data, use sumLPWithOnlyOneTokenOtherThanKnown -// When listed on coingecko, could be simply pool2:pool2(stakingContract, RARE_WXDAI_LP, "xdai", t => `xdai:${t}`) -async function pool2(timestamp, ethBlock, chainBlocks) { - const balances = {} - await sumLPWithOnlyOneTokenOtherThanKnown(balances, RARE_WXDAI_LP, stakingContract, RARE, chainBlocks['xdai'], 'xdai', t => `xdai:${t}`) - return balances -} module.exports = { xdai: { - pool2, + 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/realt.js b/projects/realt.js index 8bbc85c229f..49e477d2be1 100644 --- a/projects/realt.js +++ b/projects/realt.js @@ -1,44 +1,16 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk") -const { getConfig } = require('./helper/cache') +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 -const xdai_usdc = 'xdai:' + ADDRESSES.xdai.USDC -async function xdaiTvl(timestamp, block, chainBlocks) { - let realt_tokens = await getConfig('realt', 'https://api.realt.community/v1/token') +async function xdaiTvl(api) { + let realt_tokens = await get('https://api.realt.community/v1/token') // Filter out deprecated contracts - realt_tokens = realt_tokens.filter(t => !t['fullName'].startsWith('OLD-')) - // realt_tokens = realt_tokens.slice(0,5) + realt_tokens = realt_tokens.filter(t => !t['fullName'].startsWith('OLD-')).filter(t => t.xDaiContract && +t.tokenPrice) - const calls_xdai = realt_tokens.map((token) => ({ - target: token['xDaiContract'], - })).filter(t => t.target) - - const tokenSupplies_xdai = ( - await sdk.api.abi.multiCall({ - calls: calls_xdai, - abi: 'erc20:totalSupply', - block: chainBlocks['xdai'], - chain: 'xdai' - }) - ).output - - const tokenProperties = tokenSupplies_xdai.map((supply) => { - const tokenContract = supply.input.target - const token = realt_tokens.find(t => t['xDaiContract'] === tokenContract) - return { - 'contract': tokenContract, - 'supply': supply.output, - 'tokenPrice': token['tokenPrice'], - 'propertyPrice': (supply.output / 1e18) * token['tokenPrice'] - } - }) - - // Accumulate to TVL in USD and log - let tvl = tokenProperties.reduce((acc, token) => acc + token.propertyPrice, 0) - return { [xdai_usdc]: tvl * 1e6 } + 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 = { diff --git a/projects/sapphiremine.js b/projects/sapphiremine.js index 81d620c4b01..3f6beed01e1 100644 --- a/projects/sapphiremine.js +++ b/projects/sapphiremine.js @@ -1,20 +1,8 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const target = '0x7146854856E3f373675105556c7D964B329606be'; -const WMATIC = ADDRESSES.polygon.WMATIC_2; - -async function tvl(timestamp, block, chainBlocks) { - return { [ `polygon:${WMATIC}` ]: - (await sdk.api.eth.getBalance({ - target, - block: chainBlocks.polygon, - chain: 'polygon' - })).output - }; -} +const { sumTokensExport } = require('./helper/unwrapLPs'); module.exports = { - polygon: { - tvl - } + polygon: { + tvl: sumTokensExport({ owner: '0x7146854856E3f373675105556c7D964B329606be', token: ADDRESSES.null}), + } }; \ No newline at end of file diff --git a/projects/sheesha.js b/projects/sheesha.js index 34039f1977a..84703a4d1be 100644 --- a/projects/sheesha.js +++ b/projects/sheesha.js @@ -1,18 +1,11 @@ -const ADDRESSES = require('./helper/coreAssets.json') -const { sumLPWithOnlyOneToken } = require("./helper/unwrapLPs"); -const { stakingUnknownPricedLP } = require("./helper/staking"); - -async function pool2(timestamp, block, chainBlocks) { - const balances = {}; - await sumLPWithOnlyOneToken(balances, "0xB31Ecb43645EB273210838e710f2692CC6b30a11", "0x5d350F07c1D9245c1Ecb7c622c67EDD49c6a0A35", ADDRESSES.bsc.WBNB, chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`) - return balances -} +const { sumTokensExport } = require("./helper/unknownTokens"); +const { staking } = require("./helper/staking"); module.exports = { misrepresentedTokens: true, bsc: { tvl: () => ({}), - pool2, - staking: stakingUnknownPricedLP("0xC77CfF4cE3E4c3CB57420C1488874988463Fe4a4", "0x232fb065d9d24c34708eedbf03724f2e95abe768","bsc", "0xb31ecb43645eb273210838e710f2692cc6b30a11"), + pool2: sumTokensExport({ owner: '0x5d350F07c1D9245c1Ecb7c622c67EDD49c6a0A35', tokens: ['0xB31Ecb43645EB273210838e710f2692CC6b30a11']}), + staking: staking("0xC77CfF4cE3E4c3CB57420C1488874988463Fe4a4", "0x232fb065d9d24c34708eedbf03724f2e95abe768"), }, }; diff --git a/projects/tbill.js b/projects/tbill.js index 4ab4a7a8159..b658fb4f6ae 100644 --- a/projects/tbill.js +++ b/projects/tbill.js @@ -1,21 +1,8 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - -async function tvl(timestamp, _, { theta: block }) { - return { - "theta-fuel": ( - await sdk.api.eth.getBalance({ - target: ADDRESSES.theta.WTFUEL, - block, - chain: "theta", - decimals: 18, - }) - ).output, - }; -} +const { sumTokensExport } = require('./helper/unwrapLPs'); module.exports = { theta: { - tvl, + tvl: sumTokensExport({ owner: ADDRESSES.theta.WTFUEL, token: ADDRESSES.null}), }, -}; +} \ No newline at end of file From 18a5248a4570c326d110f8b825ce9748bb749c70 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:24:29 +0200 Subject: [PATCH 1201/2004] fix for bep2 chain --- projects/helper/sumTokens.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/sumTokens.js b/projects/helper/sumTokens.js index 2f2193b0437..7fba8db3f26 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -54,6 +54,7 @@ async function sumTokens(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] From 031ab7d66b891b2ef0f355815c020ffe8aeca1ab Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:59:33 +0200 Subject: [PATCH 1202/2004] Remove redundant params in staking functions (#9810) * remove redundant param * remove redundant param --- projects/Caketomb/index.js | 2 +- projects/Equalizer/index.js | 2 +- projects/Scale/index.js | 2 +- projects/StrikeX.js | 2 +- projects/aavegotchi/index.js | 4 +-- projects/agave.js | 2 +- projects/algebra/index.js | 2 +- projects/alpacacity/index.js | 4 +-- projects/alternity/index.js | 2 +- projects/ambire-wallet/index.js | 4 +-- projects/angle/index.js | 2 +- projects/apwine/index.js | 2 +- projects/arable-protocol/index.js | 2 +- projects/arbinyan/index.js | 2 +- projects/arbis.js | 2 +- projects/atlantisloans/index.js | 4 +-- projects/auraswap/index.js | 2 +- projects/aurora-plus/index.js | 2 +- projects/auroraswap/index.js | 2 +- projects/autoshark/index.js | 2 +- projects/axe/index.js | 2 +- projects/babyswap/index.js | 2 +- projects/bacondao/index.js | 4 +-- projects/badgerdao.js | 34 ++++++++++--------------- projects/bakeryswap/index.js | 2 +- projects/banana.js | 4 +-- projects/based-finance/index.js | 2 +- projects/basis-cash.js | 5 ++-- projects/basis-market/index.js | 2 +- projects/beamswap/index.js | 2 +- projects/becoswap/index.js | 2 +- projects/benqi/index.js | 2 +- projects/billion-happiness/index.js | 8 +++--- projects/bitindi/index.js | 4 +-- projects/bloxmove/index.js | 4 +-- projects/bluebit/index.js | 2 +- projects/bobagateway/index.js | 2 +- projects/bogged.js | 8 +++--- projects/bolide/index.js | 4 +-- projects/bombmoney/index.js | 2 +- projects/boofinance/index.js | 2 +- projects/brokoli/index.js | 4 +-- projects/bscswap/index.js | 2 +- projects/burgerswap/index.js | 2 +- projects/butterswap/index.js | 4 +-- projects/cafeswap/index.js | 2 +- projects/canary/index.js | 2 +- projects/carbon/index.js | 2 +- projects/casinocronos/index.js | 2 +- projects/champagne-swap.js | 2 +- projects/championfinance/index.js | 2 +- projects/chargedefi/index.js | 2 +- projects/chronicle/index.js | 4 +-- projects/coinwind/index.js | 8 +++--- projects/comb/index.js | 2 +- projects/comfymoney/index.js | 4 +-- projects/cookfinance/index.js | 6 ++--- projects/crabada/index.js | 2 +- projects/creditum/index.js | 2 +- projects/croblanc/index.js | 2 +- projects/cronaswap/index.js | 2 +- projects/cyclone/index.js | 4 +-- projects/defikingdoms/index.js | 4 +-- projects/defilyio/index.js | 4 +-- projects/dogsofelon/index.js | 2 +- projects/drip/index.js | 2 +- projects/dyson-money/index.js | 2 +- projects/elephantmoney/index.js | 2 +- projects/empyrean/index.js | 2 +- projects/epns/index.js | 4 +-- projects/euphoria/index.js | 2 +- projects/fantOHM/index.js | 2 +- projects/feederfinance/index.js | 4 +-- projects/fees-wtf/index.js | 4 +-- projects/ferrum/index.js | 2 +- projects/freebie/index.js | 2 +- projects/galaxygoggle/index.js | 2 +- projects/gale/index.js | 2 +- projects/gamblefi/index.js | 2 +- projects/geist/index.js | 4 +-- projects/gfs/index.js | 2 +- projects/gft/index.js | 2 +- projects/gibxswap/index.js | 2 +- projects/goat-protocol/index.js | 2 +- projects/grape-finance/index.js | 2 +- projects/hades-money/index.js | 2 +- projects/halodao/index.js | 2 +- projects/hermes-finance/index.js | 2 +- projects/hermes-protocol/index.js | 2 +- projects/horizon/index.js | 4 +-- projects/hotfries/index.js | 2 +- projects/hurricaneswap.js | 2 +- projects/instrumental/index.js | 4 +-- projects/jelly/index.js | 2 +- projects/kalata/index.js | 2 +- projects/kanvas/index.js | 4 +-- projects/kittyfinance/index.js | 6 ++--- projects/klima-dao/index.js | 2 +- projects/ktx/index.js | 6 ++--- projects/levinswap/index.js | 2 +- projects/libero/index.js | 2 +- projects/liondex/index.js | 2 +- projects/looks-rare/index.js | 4 +-- projects/luchadores/index.js | 2 +- projects/luckychip/index.js | 2 +- projects/lyra/index.js | 4 +-- projects/merchant-moe/index.js | 2 +- projects/metavault.trade/index.js | 2 +- projects/metf-finance/index.js | 2 +- projects/mm-finance-arbitrum/index.js | 2 +- projects/mm-finance-polygon/index.js | 2 +- projects/mm-finance/index.js | 2 +- projects/morphex-old/index.js | 2 +- projects/morphex/index.js | 4 +-- projects/mycelium/index.js | 2 +- projects/nacho-finance/index.js | 4 +-- projects/naos/index.js | 2 +- projects/nasdex/index.js | 4 +-- projects/nava-finance/index.js | 2 +- projects/nerve/index.js | 2 +- projects/nether-fi/index.js | 2 +- projects/nft20.js | 4 +-- projects/numbers/index.js | 4 +-- projects/openxswap/index.js | 2 +- projects/orbitalswap/index.js | 2 +- projects/orcadao/index.js | 2 +- projects/ottopia/index.js | 2 +- projects/paintswap/index.js | 2 +- projects/pangolin/index.js | 2 +- projects/paraswap.js | 2 +- projects/partialfinance/index.js | 2 +- projects/pdollar/index.js | 2 +- projects/peardao/index.js | 2 +- projects/pegasusfinance/index.js | 2 +- projects/penguin/index.js | 2 +- projects/phiat/index.js | 2 +- projects/piggy-finance/index.js | 4 +-- projects/pinkswap/index.js | 2 +- projects/polkastarter/index.js | 2 +- projects/polycat-dex/index.js | 2 +- projects/polycub/index.js | 2 +- projects/ponytaswap/index.js | 2 +- projects/predictcoin/index.js | 2 +- projects/quartzdefi/index.js | 2 +- projects/radiant/index.js | 4 +-- projects/realperp/index.js | 2 +- projects/retrodefi/index.js | 2 +- projects/ribbon/evm.js | 2 +- projects/sakeperp/index.js | 6 ++--- projects/scarabfinance/index.js | 2 +- projects/scream/index.js | 2 +- projects/sculptor-finance/index.js | 4 +-- projects/seedify/index.js | 2 +- projects/solidly-v2/index.js | 2 +- projects/soulswap/index.js | 4 +-- projects/spartacus/index.js | 2 +- projects/spiritswap/index.js | 2 +- projects/stonedefi/index.js | 6 ++--- projects/sushiswap/historical.js | 2 +- projects/sushiswap/index.js | 2 +- projects/swapfish/index.js | 4 +-- projects/teddy/index.js | 6 ++--- projects/tendieswap/index.js | 2 +- projects/tenfinance/index.js | 2 +- projects/the-open-dao-sos/index.js | 2 +- projects/thegrandbanks/index.js | 4 +-- projects/thorfi/index.js | 2 +- projects/thorusfi/index.js | 2 +- projects/toreus/index.js | 2 +- projects/tornadocore/index.js | 2 +- projects/toxicdeer/index.js | 2 +- projects/traderjoe-lb-v2-1/index.js | 2 +- projects/treasuredao/index.js | 4 +-- projects/treasury/croblanc.js | 2 +- projects/treasury/dnadollar.js | 2 +- projects/treasury/gale.js | 2 +- projects/treasury/oceanus.js | 2 +- projects/trustednode/index.js | 6 ++--- projects/ubi-poh.js | 2 +- projects/ultra/index.js | 4 +-- projects/umbrella/index.js | 2 +- projects/unilend/index.js | 2 +- projects/unipower/index.js | 4 +-- projects/valas/index.js | 4 +-- projects/vaulty/index.js | 2 +- projects/velaspad.js | 2 +- projects/voyager/index.js | 2 +- projects/wannaswap/index.js | 2 +- projects/wardenswap/index.js | 2 +- projects/waterfall-wtf-finance/index.js | 2 +- projects/wtfdex/index.js | 2 +- projects/x-xyz/index.js | 2 +- projects/x2y2/index.js | 2 +- projects/zenithswap/index.js | 2 +- projects/zeroswap/index.js | 6 ++--- projects/zkdx-finance/index.js | 2 +- 196 files changed, 274 insertions(+), 283 deletions(-) diff --git a/projects/Caketomb/index.js b/projects/Caketomb/index.js index d95217c0cc2..6b6806de2b1 100644 --- a/projects/Caketomb/index.js +++ b/projects/Caketomb/index.js @@ -14,7 +14,7 @@ module.exports = { deadFrom: 1648765747, bsc: { tvl: async () => ({}), - staking: staking(boardroom, shares, "bsc"), + staking: staking(boardroom, shares), pool2: pool2Exports(shareRewardPool, pancakeLPs, "bsc", addr=>`bsc:${addr}`) } } diff --git a/projects/Equalizer/index.js b/projects/Equalizer/index.js index ade0739938d..1d2e0a46571 100644 --- a/projects/Equalizer/index.js +++ b/projects/Equalizer/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, fantom:{ tvl: uniTvlExport("0xc6366EFD0AF1d09171fe0EBF32c7943BB310832a", "fantom", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: true, }), - staking: staking("0x8313f3551C4D3984FfbaDFb42f780D0c8763Ce94", "0x3Fd3A0c85B70754eFc07aC9Ac0cbBDCe664865A6","fantom"), + staking: staking("0x8313f3551C4D3984FfbaDFb42f780D0c8763Ce94", "0x3Fd3A0c85B70754eFc07aC9Ac0cbBDCe664865A6"), }, } diff --git a/projects/Scale/index.js b/projects/Scale/index.js index cdeb69eaf34..2b179553ea6 100644 --- a/projects/Scale/index.js +++ b/projects/Scale/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, base:{ tvl: uniTvlExport("0xEd8db60aCc29e14bC867a497D94ca6e3CeB5eC04", "base", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: true, fetchBalances: true, }), - staking: staking("0x28c9c71c776a1203000b56c0cca48bef1cd51c53", "0x54016a4848a38f257b6e96331f7404073fd9c32c","base"), + staking: staking("0x28c9c71c776a1203000b56c0cca48bef1cd51c53", "0x54016a4848a38f257b6e96331f7404073fd9c32c"), }, } diff --git a/projects/StrikeX.js b/projects/StrikeX.js index 15b99299791..f80a6665b46 100644 --- a/projects/StrikeX.js +++ b/projects/StrikeX.js @@ -7,7 +7,7 @@ const token = "0xd6fdde76b8c1c45b33790cc8751d5b88984c44ec" module.exports = { - //staking: staking("5867cd4f7e105878afbc903505c207eb7b130a50", "bsc"), + //staking: staking("5867cd4f7e105878afbc903505c207eb7b130a50"), ...masterChefExports(masterchef, "bsc", token) }; diff --git a/projects/aavegotchi/index.js b/projects/aavegotchi/index.js index 3588ed40c71..912aa44ba8d 100644 --- a/projects/aavegotchi/index.js +++ b/projects/aavegotchi/index.js @@ -113,9 +113,9 @@ module.exports = { tvl: ethTvl, }, polygon: { - staking: staking(stkGHST_QUICKContract, GHST_Polygon, "polygon"), + staking: staking(stkGHST_QUICKContract, GHST_Polygon), tvl: polygonTvl, - pool2: staking([stkGHST_QUICKContract], GHST_pools2, "polygon") + pool2: staking([stkGHST_QUICKContract], GHST_pools2) }, methodology: `We count liquidity on Vaults from ETHEREUM and Polygon chains through Vault Contracts; diff --git a/projects/agave.js b/projects/agave.js index 77ccffb174e..628cfd5d94e 100644 --- a/projects/agave.js +++ b/projects/agave.js @@ -26,6 +26,6 @@ module.exports = { borrowed: sdk.util.sumChainTvls([ aaveChainTvl("xdai", addressesProviderRegistryXDAI, addr => `xdai:${addr}`, [protocolDataHelper], true), ]), - staking: staking(agaveStakingContract, agaveTokenAddress, "xdai") + staking: staking(agaveStakingContract, agaveTokenAddress) } } diff --git a/projects/algebra/index.js b/projects/algebra/index.js index 76d59b71c42..1958624b5cb 100644 --- a/projects/algebra/index.js +++ b/projects/algebra/index.js @@ -28,6 +28,6 @@ function chainTvl(chain) { module.exports = { polygon: { tvl: chainTvl('polygon'), - staking: staking('0x32CFF674763b06B983C0D55Ef2e41B84D16855bb', '0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6', 'polygon') + staking: staking('0x32CFF674763b06B983C0D55Ef2e41B84D16855bb', '0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6') } } \ No newline at end of file diff --git a/projects/alpacacity/index.js b/projects/alpacacity/index.js index 1fe3e782df7..7897f81e30c 100644 --- a/projects/alpacacity/index.js +++ b/projects/alpacacity/index.js @@ -45,8 +45,8 @@ module.exports = { pool2: staking(farmContract, WETH_ALPA2_UNIV2), }, bsc: { - staking: staking(stakingContractBSC, ALPA_BSC, "bsc"), - pool2: staking(farmContractsBSC, lpPairContractsBSC, "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/alternity/index.js b/projects/alternity/index.js index ba60c03c92b..b5aba4a5414 100644 --- a/projects/alternity/index.js +++ b/projects/alternity/index.js @@ -9,6 +9,6 @@ module.exports = { start: 1692423851, ethereum: { tvl: getLiquityTvl('0x51c014510A5AdA43408b40D49eF52094014ef3A7'), - staking: staking(STAKING_ADDRESS, ALTR_ADDRESS, "ethereum") + staking: staking(STAKING_ADDRESS, ALTR_ADDRESS) } }; diff --git a/projects/ambire-wallet/index.js b/projects/ambire-wallet/index.js index 19cfa24f7c2..075dfa5d9d0 100644 --- a/projects/ambire-wallet/index.js +++ b/projects/ambire-wallet/index.js @@ -11,8 +11,8 @@ module.exports = { ethereum:{ tvl: () => ({}), staking: sdk.util.sumChainTvls([ - staking(WALLET_staking, WALLET, 'ethereum'), - staking(ADX_staking, ADX, 'ethereum') + staking(WALLET_staking, WALLET), + staking(ADX_staking, ADX) ]), } } \ No newline at end of file diff --git a/projects/angle/index.js b/projects/angle/index.js index 726079fcb15..79a702b8ff7 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -190,7 +190,7 @@ module.exports = { [Math.floor(new Date("2024-03-14") / 1e3), "Rebrading of agEUR to EURA"], ], ethereum: { - staking: staking(veANGLE, ANGLE, "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.`, }; diff --git a/projects/apwine/index.js b/projects/apwine/index.js index 5b46bc7518e..c556a0bd7d9 100644 --- a/projects/apwine/index.js +++ b/projects/apwine/index.js @@ -108,7 +108,7 @@ module.exports = { doublecounted: true, ethereum: { tvl: tvl_from_registry('ethereum'), - staking: staking(veAPW, APW, "ethereum"), + staking: staking(veAPW, APW), }, polygon: { tvl: tvl_from_registry('polygon'), diff --git a/projects/arable-protocol/index.js b/projects/arable-protocol/index.js index 2434b2100ec..74db2b8336a 100644 --- a/projects/arable-protocol/index.js +++ b/projects/arable-protocol/index.js @@ -10,7 +10,7 @@ const acrewavaxpgl = "0x64694FC8dFCA286bF1A15b0903FAC98217dC3AD7"; module.exports = { avax:{ tvl: async () => ({}), - staking: staking(stakingContract, acre, "avax"), + staking: staking(stakingContract, acre), pool2: pool2Exports(farming, [acrewavaxpgl], "avax") } } \ No newline at end of file diff --git a/projects/arbinyan/index.js b/projects/arbinyan/index.js index f977cef4037..57b4c5a4683 100644 --- a/projects/arbinyan/index.js +++ b/projects/arbinyan/index.js @@ -75,7 +75,7 @@ async function arbTvl(time, _ethBlock, {arbitrum: block}) { module.exports = { misrepresentedTokens: true, arbitrum: { - staking: staking(stakingNYANContract, NYAN, "arbitrum"), + staking: staking(stakingNYANContract, NYAN), pool2: pool2, tvl: arbTvl, }, diff --git a/projects/arbis.js b/projects/arbis.js index 8c1c1b645b7..901f6b28892 100644 --- a/projects/arbis.js +++ b/projects/arbis.js @@ -29,7 +29,7 @@ async function tvl(api) { module.exports = { arbitrum: { tvl, - staking: staking('0xBf00759D7E329d7A7fa1D4DCdC914C53d1d2db86', '0x9f20de1fc9b161b34089cbeae888168b44b03461', 'arbitrum') + staking: staking('0xBf00759D7E329d7A7fa1D4DCdC914C53d1d2db86', '0x9f20de1fc9b161b34089cbeae888168b44b03461') } } diff --git a/projects/atlantisloans/index.js b/projects/atlantisloans/index.js index e63bd38b711..7acc9bff00f 100644 --- a/projects/atlantisloans/index.js +++ b/projects/atlantisloans/index.js @@ -17,8 +17,8 @@ const ALT_BUSD_CakeLP_BNB = "0xaa40dc3ec6ad76db3254b54443c4531e3dfe6bdb"; module.exports = { misrepresentedTokens: true, bsc: { - pool2: pool2(lpVaultStakingContract_BNB, ALT_BUSD_CakeLP_BNB, "bsc"), - staking: staking(vaultStakingContract_BNB, ATL, "bsc"), + pool2: pool2(lpVaultStakingContract_BNB, ALT_BUSD_CakeLP_BNB), + staking: staking(vaultStakingContract_BNB, ATL), // ...compoundExports(comptroller, // "bsc", // "0x5A9A90983A369b6bB8F062f0AFe6219Ac01caF63", diff --git a/projects/auraswap/index.js b/projects/auraswap/index.js index 21dce941f42..830891d2b5e 100644 --- a/projects/auraswap/index.js +++ b/projects/auraswap/index.js @@ -8,6 +8,6 @@ const FACTORY_POLYGON = "0x015DE3ec460869eb5ceAe4224Dc7112ac0a39303"; module.exports = { polygon: { tvl: uniTvlExport(FACTORY_POLYGON, 'polygon', true), - staking: staking(MASTER_CHEF, AURA_TOKEN, "polygon"), + staking: staking(MASTER_CHEF, AURA_TOKEN), }, } \ No newline at end of file diff --git a/projects/aurora-plus/index.js b/projects/aurora-plus/index.js index 394fc0166c5..69510869cc0 100644 --- a/projects/aurora-plus/index.js +++ b/projects/aurora-plus/index.js @@ -6,7 +6,7 @@ const stakingContract = "0xf075c896cbbb625e7911e284cd23ee19bdccf299"; module.exports = { aurora: { - tvl: staking(stakingContract, AURORA, "aurora"), + tvl: staking(stakingContract, AURORA), }, methodology: "Aurora tokens locked in staking contract", }; diff --git a/projects/auroraswap/index.js b/projects/auroraswap/index.js index e89758a348d..9cfc50fe608 100644 --- a/projects/auroraswap/index.js +++ b/projects/auroraswap/index.js @@ -6,6 +6,6 @@ const brlTokenAddress = "0x12c87331f086c3C926248f964f8702C0842Fd77F"; module.exports = { aurora: { tvl: uniTvlExport('0xC5E1DaeC2ad401eBEBdd3E32516d90Ab251A3aA3', 'aurora', true), - staking: staking(masterchefAddress, brlTokenAddress, "aurora"), + staking: staking(masterchefAddress, brlTokenAddress), }, }; diff --git a/projects/autoshark/index.js b/projects/autoshark/index.js index 511e55501b3..d0025a39ac7 100644 --- a/projects/autoshark/index.js +++ b/projects/autoshark/index.js @@ -61,6 +61,6 @@ module.exports = { methodology: "Liquidity from the finsFactory is counted as TVL", bsc: { tvl, - staking: staking(jawsPool, jaws, "bsc"), + staking: staking(jawsPool, jaws), }, }; diff --git a/projects/axe/index.js b/projects/axe/index.js index 92b63f35320..e3cab00080c 100644 --- a/projects/axe/index.js +++ b/projects/axe/index.js @@ -37,7 +37,7 @@ module.exports = { start: 1637036516, // 16 Nov 2021 ethereum: { tvl: ethTvl, - staking: staking(AXEStaking, AXE, "ethereum"), + staking: staking(AXEStaking, AXE), }, methodology: "Counts DAI, USDC and DAI SLP (AXE-DAI) on the treasury", diff --git a/projects/babyswap/index.js b/projects/babyswap/index.js index 84eb77d60f2..409c98f85ae 100644 --- a/projects/babyswap/index.js +++ b/projects/babyswap/index.js @@ -8,7 +8,7 @@ const BABY = "0x53E562b9B7E5E94b81f10e96Ee70Ad06df3D2657"; /* module.exports = { bsc: { - staking: staking(MasterChefContract, BABY, "bsc"), + staking: staking(MasterChefContract, BABY), tvl: bscTvl, }, methodology: diff --git a/projects/bacondao/index.js b/projects/bacondao/index.js index 6668d00320e..9e6f0f6476f 100644 --- a/projects/bacondao/index.js +++ b/projects/bacondao/index.js @@ -20,11 +20,11 @@ module.exports = { ethereum: { tvl: async () => ({}), pool2: pool2(stakingContract, ethLP), - staking: staking(stakingContract, baconToken, "ethereum"), + staking: staking(stakingContract, baconToken), }, bsc: { tvl: async () => ({}), pool2: pool2(bscPool2Contract, bscLP, "bsc", (addr) => `bsc:${addr}`), - staking: staking(bscStakingContract, bscBaconToken, "bsc"), + staking: staking(bscStakingContract, bscBaconToken), }, }; diff --git a/projects/badgerdao.js b/projects/badgerdao.js index 01d48c07bac..4fb388a781c 100644 --- a/projects/badgerdao.js +++ b/projects/badgerdao.js @@ -1,24 +1,18 @@ -const utils = require('./helper/utils'); -const { fetchChainExports } = require('./helper/exports'); -const sdk = require('@defillama/sdk') +const { getConfig } = require('./helper/cache') +module.exports.hallmarks = [[1638403200, "Front-end attack"]] -function chainTvl(chain) { +const chains = ["ethereum", "bsc", "arbitrum", "polygon", "fantom"] + +chains.forEach(chain => { + let oChain = chain if (chain === 'bsc') - chain = 'binance-smart-chain' - // chain = chain === "ethereum" ? "eth" : chain - return async () => { - let data = await utils.fetchURL(`https://api.badger.com/v2/vaults?chain=${chain}¤cy=usd`) - return data.data.filter(i => { - if (i.value > 1e9) { - sdk.log('error', i) - return false - } - return true - }).reduce((acc, i) => acc + i.value, 0) + 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`) + const calls = data.map(i => i.vaultToken) + return api.erc4626Sum({ calls, permitFailure: true, }) + } } -} - -module.exports = fetchChainExports(chainTvl, ["ethereum", "bsc", "arbitrum","polygon", "fantom"]), - module.exports.hallmarks = [[1638403200, "Front-end attack"] - ] +}) \ No newline at end of file diff --git a/projects/bakeryswap/index.js b/projects/bakeryswap/index.js index f921f862ba9..691c9b83887 100644 --- a/projects/bakeryswap/index.js +++ b/projects/bakeryswap/index.js @@ -5,7 +5,7 @@ const factory = "0x01bF7C66c6BD861915CdaaE475042d3c4BaE16A7"; module.exports = { bsc:{ - staking: staking("6a8dbbfbb5a57d07d14e63e757fb80b4a7494f81", "0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5", "bsc"), + staking: staking("6a8dbbfbb5a57d07d14e63e757fb80b4a7494f81", "0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5"), tvl: uniTvlExport(factory, "bsc", true) } }; diff --git a/projects/banana.js b/projects/banana.js index 120dd212b19..a3504294fac 100644 --- a/projects/banana.js +++ b/projects/banana.js @@ -3,6 +3,4 @@ const { masterChefExports, } = require("./helper/masterchef") const token = "0xc67b9b1b0557aeafa10aa1ffa1d7c87087a6149e"; const masterchef = "0x0e69359B4783094260abFaD7dD904999fc1d6Fd0"; -module.exports = { - ...masterChefExports(masterchef, "boba", token, false) -} \ No newline at end of file +module.exports = masterChefExports(masterchef, "boba", token, false) \ No newline at end of file diff --git a/projects/based-finance/index.js b/projects/based-finance/index.js index 03e8e23cf98..da65486f3e9 100644 --- a/projects/based-finance/index.js +++ b/projects/based-finance/index.js @@ -33,7 +33,7 @@ module.exports = { factory: '0x407C47E3FDB7952Ee53aa232B5f28566A024A759', useDefaultCoreAssets: true, }), - staking: staking(acropolisAddress, bshareTokenAddress, "fantom"), + staking: staking(acropolisAddress, bshareTokenAddress), treasury }, }; diff --git a/projects/basis-cash.js b/projects/basis-cash.js index 04796ac67a7..b7c7bfaf0c0 100644 --- a/projects/basis-cash.js +++ b/projects/basis-cash.js @@ -1,7 +1,6 @@ const ADDRESSES = require('./helper/coreAssets.json') -const { sumTokens } = require('./helper/unwrapLPs') -async function tvl(ts, block) { +async function tvl(api) { const toa = [ [ADDRESSES.ethereum.DAI, '0xEBd12620E29Dc6c452dB7B96E1F190F3Ee02BDE8'], [ADDRESSES.ethereum.sUSD, '0xdc42a21e38c3b8028b01a6b00d8dbc648f93305c'], @@ -10,7 +9,7 @@ async function tvl(ts, block) { ['0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8', '0xC462d8ee54953E7d7bF276612b75387Ea114c3bf'], ] - return sumTokens(undefined, toa, block) + return api.sumTokens({ tokensAndOwners: toa }) } diff --git a/projects/basis-market/index.js b/projects/basis-market/index.js index 8cbac9eb811..20c721b24ed 100644 --- a/projects/basis-market/index.js +++ b/projects/basis-market/index.js @@ -13,6 +13,6 @@ module.exports = { methodology: `TVL for basis market is staking for now`, solana:{ tvl: () => ({}), - staking: stakingTVL//: staking(basis_staking, basis, "solana"), + staking: stakingTVL//: staking(basis_staking, basis), } } \ No newline at end of file diff --git a/projects/beamswap/index.js b/projects/beamswap/index.js index 687a9887b84..7b2aca892ce 100644 --- a/projects/beamswap/index.js +++ b/projects/beamswap/index.js @@ -17,6 +17,6 @@ module.exports = { "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, 'moonbeam') + staking: staking([SHARE_CONTRACT, STGLINT_CONTRACT], GLINT_TOKEN) }, }; diff --git a/projects/becoswap/index.js b/projects/becoswap/index.js index 5429048c0ec..45c246b1991 100644 --- a/projects/becoswap/index.js +++ b/projects/becoswap/index.js @@ -8,7 +8,7 @@ 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, "kardia"), + staking: staking(masterChef, becoToken), tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x58b54BCDF2aF8a70dD6433EB39b308148261bB49', diff --git a/projects/benqi/index.js b/projects/benqi/index.js index 71c35ed6a7e..34d42abf70d 100644 --- a/projects/benqi/index.js +++ b/projects/benqi/index.js @@ -5,6 +5,6 @@ module.exports={ methodology: "Same as compound, we just get all the collateral (not borrowed money) on the lending markets", avax:{ ...compoundExports("0x486af39519b4dc9a7fccd318217352830e8ad9b4", "avax"), - pool2: pool2("0x784da19e61cf348a8c54547531795ecfee2affd1", "0xe530dc2095ef5653205cf5ea79f8979a7028065c", "avax") + pool2: pool2("0x784da19e61cf348a8c54547531795ecfee2affd1", "0xe530dc2095ef5653205cf5ea79f8979a7028065c") } } diff --git a/projects/billion-happiness/index.js b/projects/billion-happiness/index.js index 0e8a4bbbc4b..dca3f3499d8 100644 --- a/projects/billion-happiness/index.js +++ b/projects/billion-happiness/index.js @@ -33,11 +33,11 @@ module.exports = { bsc: { tvl: async () => ({}), staking: stakings(stakingPools, bhcToken, 'bsc'), - pool2: staking(masterchef, pool2LP, "bsc"), + pool2: staking(masterchef, pool2LP), }, ethpow: { - pool2: pool2(ethpowPools[1], targetCoinsETHW[1], "ethpow"), - tvl: staking(ethpowPools[0], targetCoinsETHW[0], "ethpow"), - staking: staking(ethpowPools[2], targetCoinsETHW[2], "ethpow"), + pool2: pool2(ethpowPools[1], targetCoinsETHW[1]), + tvl: staking(ethpowPools[0], targetCoinsETHW[0]), + staking: staking(ethpowPools[2], targetCoinsETHW[2]), } }; diff --git a/projects/bitindi/index.js b/projects/bitindi/index.js index 083c991e7bc..1f778d86113 100644 --- a/projects/bitindi/index.js +++ b/projects/bitindi/index.js @@ -4,12 +4,12 @@ const { staking } = require('../helper/staking') module.exports = { bsc: { tvl: () => ({}), - staking: staking('0xf559BF9c0563Ed5322E7F493C02ea2275d68A367', '0x77fc65deda64f0cca9e3aea7b9d8521f4151882e', 'bsc'), + staking: staking('0xf559BF9c0563Ed5322E7F493C02ea2275d68A367', '0x77fc65deda64f0cca9e3aea7b9d8521f4151882e'), }, bitindi: { tvl: () => ({}), staking: () => ({}), - // staking: staking('0x140c312c8841B0a7152946C0Bc2BD343bA51bbcc', ADDRESSES.bitindi.WBNI, 'bitindi'), + // staking: staking('0x140c312c8841B0a7152946C0Bc2BD343bA51bbcc', ADDRESSES.bitindi.WBNI), }, // deadFrom: '2023-12-20', }; diff --git a/projects/bloxmove/index.js b/projects/bloxmove/index.js index 3d8c347877c..b5703b06fc1 100644 --- a/projects/bloxmove/index.js +++ b/projects/bloxmove/index.js @@ -17,8 +17,8 @@ module.exports = { tvl: (async) => ({}), }, bsc: { - staking: staking(farmContract_bsc, BLXM_bsc, "bsc"), - pool2: pool2(farmContract_bsc, WBNB_BLXM_CakeLP, "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/bluebit/index.js b/projects/bluebit/index.js index 8a4948e074a..2c5690370a0 100644 --- a/projects/bluebit/index.js +++ b/projects/bluebit/index.js @@ -32,6 +32,6 @@ module.exports = { start: 62936418, aurora: { tvl: tvl, - staking: staking(veToken, token, "aurora"), + staking: staking(veToken, token), }, }; diff --git a/projects/bobagateway/index.js b/projects/bobagateway/index.js index 0f499efd727..42276e113d1 100644 --- a/projects/bobagateway/index.js +++ b/projects/bobagateway/index.js @@ -76,7 +76,7 @@ module.exports = { }, boba: { staking: sdk.util.sumChainTvls([ - staking(L2LiquidityPool, L2StakingTokens[0], "boba"), + staking(L2LiquidityPool, L2StakingTokens[0]), staking(L2LiquidityPool, L2StakingTokens[1], "boba", L1StakingTokens[1]), ]), tvl: bobaTvl_L2, diff --git a/projects/bogged.js b/projects/bogged.js index d4764573d31..84f399d8574 100644 --- a/projects/bogged.js +++ b/projects/bogged.js @@ -17,8 +17,8 @@ const lpAddresses = [ module.exports = { bsc: { - staking: stakings(stakingContracts, boggedToken, "bsc"), - pool2: stakings(lpContracts, lpAddresses, "bsc"), - tvl: (async) => ({}), + 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 index 50e7555bf3f..b89341fb74a 100644 --- a/projects/bolide/index.js +++ b/projects/bolide/index.js @@ -47,8 +47,8 @@ async function tvl(chain, ts, _block, chainBlocks) { module.exports = { bsc: { tvl: tvl.bind(this, 'bsc'), - staking: staking('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x766AFcf83Fd5eaf884B3d529b432CA27A6d84617', 'bsc'), - pool2: pool2('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x12c35ed2405bc70721584594723351bf5db6235c', 'bsc'), + staking: staking('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x766AFcf83Fd5eaf884B3d529b432CA27A6d84617'), + pool2: pool2('0x3782c47e62b13d579fe748946aef7142b45b2cf7', '0x12c35ed2405bc70721584594723351bf5db6235c'), }, polygon: { tvl: tvl.bind(this, 'polygon'), diff --git a/projects/bombmoney/index.js b/projects/bombmoney/index.js index bd65f1f822a..fcc813abdf7 100644 --- a/projects/bombmoney/index.js +++ b/projects/bombmoney/index.js @@ -15,7 +15,7 @@ const pancakeLPs = [ module.exports = { bsc: { tvl: async () => ({}), - staking: staking(masonry, shares, "bsc"), + staking: staking(masonry, shares), pool2: pool2Exports(shareRewardPool, pancakeLPs, "bsc", addr=>`bsc:${addr}`) } } \ No newline at end of file diff --git a/projects/boofinance/index.js b/projects/boofinance/index.js index 3be9d7d35d2..67e8836e268 100644 --- a/projects/boofinance/index.js +++ b/projects/boofinance/index.js @@ -86,6 +86,6 @@ module.exports = { avax: { tvl, pool2, - staking: staking(stakingAddress, boofi, "avax") + staking: staking(stakingAddress, boofi) } } \ No newline at end of file diff --git a/projects/brokoli/index.js b/projects/brokoli/index.js index 81ae2cac007..e7900d38664 100644 --- a/projects/brokoli/index.js +++ b/projects/brokoli/index.js @@ -24,8 +24,8 @@ module.exports = { pool2: staking(farmContracts, [USDC_BRKL_UNIV2]), }, bsc: { - staking: staking(farmStakingContract_bsc, BRKL_bsc, "bsc"), - pool2: staking(farmContracts_bsc, [BUSD_BRKL_CakeLP], "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/bscswap/index.js b/projects/bscswap/index.js index f8d0681088c..3736c287f9b 100644 --- a/projects/bscswap/index.js +++ b/projects/bscswap/index.js @@ -7,7 +7,7 @@ const BSWAP = "0xacc234978a5eb941665fd051ca48765610d82584"; module.exports = { misrepresentedTokens: true, bsc: { - staking: staking(BSWAPStakingContract, BSWAP, "bsc"), + staking: staking(BSWAPStakingContract, BSWAP), tvl: getUniTVL({ factory: '0xCe8fd65646F2a2a897755A1188C04aCe94D2B8D0', useDefaultCoreAssets: true }), }, methodology: diff --git a/projects/burgerswap/index.js b/projects/burgerswap/index.js index dc184e8db15..bbdd797afb9 100644 --- a/projects/burgerswap/index.js +++ b/projects/burgerswap/index.js @@ -61,7 +61,7 @@ module.exports = { misrepresentedTokens: true, bsc: { tvl: sdk.util.sumChainTvls([bscDexTvl, bscShackTvl]), - staking: staking(stakingContract, BURGER, "bsc"), + staking: staking(stakingContract, BURGER), }, methodology: "TVL is equal to AMMs liquidity plus the Assets deposited on Burger Shack", diff --git a/projects/butterswap/index.js b/projects/butterswap/index.js index aa2548ee2dd..1706e3b7fc7 100644 --- a/projects/butterswap/index.js +++ b/projects/butterswap/index.js @@ -15,10 +15,10 @@ const bscChef = "0xa49f4CF57eaFE0098D398DF3eD3A7dF10EAaBfAB"; module.exports = { heco: { tvl: uniTvlExport('heco', hecoFactory).heco.tvl, - staking: staking(hecoChef, hecoButter, 'heco'), + staking: staking(hecoChef, hecoButter), }, bsc: { tvl: uniTvlExport('bsc', bscFactory).bsc.tvl, - staking: staking(bscChef, bscButter, 'bsc'), + staking: staking(bscChef, bscButter), }, } \ No newline at end of file diff --git a/projects/cafeswap/index.js b/projects/cafeswap/index.js index de587de9d34..3f575b6d2e9 100644 --- a/projects/cafeswap/index.js +++ b/projects/cafeswap/index.js @@ -16,7 +16,7 @@ module.exports = { useDefaultCoreAssets: true, factory: BSC_DEX_FACTORY, }), - staking: staking(BSC_MASTER_CHEF, BSC_BREW_ADDRESS, 'bsc') + staking: staking(BSC_MASTER_CHEF, BSC_BREW_ADDRESS) }, polygon: { tvl: getUniTVL({ diff --git a/projects/canary/index.js b/projects/canary/index.js index 677973626a2..acee974f3e5 100644 --- a/projects/canary/index.js +++ b/projects/canary/index.js @@ -16,7 +16,7 @@ module.exports = { misrepresentedTokens: true, avax:{ tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.avax.factory, }), - staking: staking(contracts.avax.stakingContract, contracts.avax.cnr, "avax"), + staking: staking(contracts.avax.stakingContract, contracts.avax.cnr), }, scroll:{ tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.scroll.factory, }), diff --git a/projects/carbon/index.js b/projects/carbon/index.js index bc6d1aca9ff..901cb5ea340 100644 --- a/projects/carbon/index.js +++ b/projects/carbon/index.js @@ -89,7 +89,7 @@ async function arbTvl(time, _ethBlock, {arbitrum: block}) { module.exports = { misrepresentedTokens: true, arbitrum: { - staking: staking(stakingCARBONContract, CARBON, "arbitrum"), + staking: staking(stakingCARBONContract, CARBON), pool2: pool2, tvl: arbTvl, }, diff --git a/projects/casinocronos/index.js b/projects/casinocronos/index.js index 4c57fc6c777..03ccdc1841e 100644 --- a/projects/casinocronos/index.js +++ b/projects/casinocronos/index.js @@ -10,6 +10,6 @@ module.exports={ useDefaultCoreAssets: true, }), - staking: staking("0x81b5118bF8A720B19FEC6F3078d2b555790cb0AB", "0x95ac4a86c0677971c4125ACe494e3C17a87a4C61", 'cronos') + staking: staking("0x81b5118bF8A720B19FEC6F3078d2b555790cb0AB", "0x95ac4a86c0677971c4125ACe494e3C17a87a4C61") } } \ No newline at end of file diff --git a/projects/champagne-swap.js b/projects/champagne-swap.js index 80c0f8bb41d..6a0a805b2a4 100644 --- a/projects/champagne-swap.js +++ b/projects/champagne-swap.js @@ -9,7 +9,7 @@ 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, 'bsc'), + staking: staking(masterChef, champagneToken), tvl: getUniTVL({ useDefaultCoreAssets: true, factory, }) }, } diff --git a/projects/championfinance/index.js b/projects/championfinance/index.js index 7927bf436a8..d2e64289a7f 100644 --- a/projects/championfinance/index.js +++ b/projects/championfinance/index.js @@ -49,7 +49,7 @@ async function calcPool2(masterchef, lps, block, chain) { } async function pool2(timestamp, block, chainBlocks) { - return await calcPool2(chamRewardPoolAddress, lps, chainBlocks.avax, "avax"); + return await calcPool2(chamRewardPoolAddress, lps, chainBlocks.avax); } async function tvl(timestamp, block, chainBlocks) { let balances = {}; diff --git a/projects/chargedefi/index.js b/projects/chargedefi/index.js index be1c6841ba0..92151453ec5 100644 --- a/projects/chargedefi/index.js +++ b/projects/chargedefi/index.js @@ -67,7 +67,7 @@ module.exports = { [chargeBUSDLpAddress], "bsc" ), - staking: staking(chargeBoardroomAddress, chargeTokenAddress, "bsc"), + staking: staking(chargeBoardroomAddress, chargeTokenAddress), }, }; diff --git a/projects/chronicle/index.js b/projects/chronicle/index.js index dc6bc1ab010..75cb6239db7 100644 --- a/projects/chronicle/index.js +++ b/projects/chronicle/index.js @@ -9,8 +9,8 @@ module.exports = { misrepresentedTokens: true, aurora: { tvl: (async) => ({}), - staking: staking(farmContract, XNL, "aurora"), - pool2: pool2(farmContract, XNL_AURORA_TriLP, "aurora"), + staking: staking(farmContract, XNL), + pool2: pool2(farmContract, XNL_AURORA_TriLP), }, methodology: "Counts liquidty on the staking and pool2 only", }; diff --git a/projects/coinwind/index.js b/projects/coinwind/index.js index 80dfd5a6f2d..5cad4cefa78 100644 --- a/projects/coinwind/index.js +++ b/projects/coinwind/index.js @@ -64,13 +64,13 @@ 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: ethTvl }, bsc: { - staking: staking(BSC_POOL_DAO, "0x422e3af98bc1de5a1838be31a56f75db4ad43730", "bsc"), - pool2: pool2(BSC_POOL_DAO, "0xf16d5142086dbf7723b0a57b8d96979810e47448", "bsc"), + staking: staking(BSC_POOL_DAO, "0x422e3af98bc1de5a1838be31a56f75db4ad43730"), + pool2: pool2(BSC_POOL_DAO, "0xf16d5142086dbf7723b0a57b8d96979810e47448"), tvl: bscTvl }, heco: { - staking: staking(HECO_POOL_DAO, "0x80861a817106665bca173db6ac2ab628a738c737", "heco"), - pool2: pool2(HECO_POOL_DAO, "0x3f57530bdba9bcd703c8ba75c57cf7de52014036", "heco"), + staking: staking(HECO_POOL_DAO, "0x80861a817106665bca173db6ac2ab628a738c737"), + pool2: pool2(HECO_POOL_DAO, "0x3f57530bdba9bcd703c8ba75c57cf7de52014036"), tvl: hecoTvl }, }; diff --git a/projects/comb/index.js b/projects/comb/index.js index 785d90d58a3..7c21e749ecc 100644 --- a/projects/comb/index.js +++ b/projects/comb/index.js @@ -56,6 +56,6 @@ module.exports = { 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', 'fantom'), + staking: staking('0xdecce40d4176abefb4c709b2220c8396fe710cf7', '0xae45a827625116d6c0c40b5d7359ecf68f8e9afd'), } } diff --git a/projects/comfymoney/index.js b/projects/comfymoney/index.js index 86a258d1366..723aa39ca6e 100644 --- a/projects/comfymoney/index.js +++ b/projects/comfymoney/index.js @@ -21,7 +21,7 @@ async function calcPool2(block, chain) { } async function onePool2(timestamp, block, chainBlocks) { - return calcPool2(chainBlocks.harmony, "harmony"); + return calcPool2(chainBlocks.harmony); } module.exports = { @@ -30,6 +30,6 @@ module.exports = { harmony: { tvl: async () => ({}), pool2: onePool2, - staking: staking(zenDenAddress, cshareTokenAddress, "harmony"), + staking: staking(zenDenAddress, cshareTokenAddress), }, }; diff --git a/projects/cookfinance/index.js b/projects/cookfinance/index.js index b47efc53a8e..52d649be675 100644 --- a/projects/cookfinance/index.js +++ b/projects/cookfinance/index.js @@ -157,7 +157,7 @@ module.exports = { }, avax: { tvl: avaTvl, - pool2: staking(["0x35be7982bc5e40a8c9af39a639bddce32081102e", "0x188bED1968b795d5c9022F6a0bb5931Ac4c18F00"], avaxPool2LPs, "avax"), + pool2: staking(["0x35be7982bc5e40a8c9af39a639bddce32081102e", "0x188bED1968b795d5c9022F6a0bb5931Ac4c18F00"], avaxPool2LPs), staking: staking( "0x35bE7982bC5E40A8C9aF39A639bDDcE32081102e", "0x637afeff75ca669ff92e4570b14d6399a658902f", @@ -179,7 +179,7 @@ module.exports = { tvl: bscTvl, }, heco: { - staking: staking(stakingContractHeco, COOK_heco, "heco"), - pool2: pool2(stakingPool2ContractHeco, ETH_COOK_HMDXLP, "heco"), + staking: staking(stakingContractHeco, COOK_heco), + pool2: pool2(stakingPool2ContractHeco, ETH_COOK_HMDXLP), }, }; diff --git a/projects/crabada/index.js b/projects/crabada/index.js index 65dbb8985dd..93166fcc302 100644 --- a/projects/crabada/index.js +++ b/projects/crabada/index.js @@ -6,7 +6,7 @@ const CRA = "0xa32608e873f9ddef944b24798db69d80bbb4d1ed"; module.exports = { misrepresentedTokens: true, avax: { - staking: staking(stakingContract, CRA, "avax"), + staking: staking(stakingContract, CRA), tvl: () =>({}), }, methodology: diff --git a/projects/creditum/index.js b/projects/creditum/index.js index 8622d2cad5a..b428aeba56d 100644 --- a/projects/creditum/index.js +++ b/projects/creditum/index.js @@ -30,6 +30,6 @@ module.exports={ fantom:{ tvl, staking: stakingPricedLP("0xd9e28749e80D867d5d14217416BFf0e668C10645", "0x77128dfdd0ac859b33f44050c6fa272f34872b5e", "fantom", "0x06F3Cb227781A836feFAEa7E686Bdc857e80eAa7", "wrapped-fantom"), - pool2: pool2("0xe0c43105235c1f18ea15fdb60bb6d54814299938", "0x06f3cb227781a836fefaea7e686bdc857e80eaa7", "fantom"), + pool2: pool2("0xe0c43105235c1f18ea15fdb60bb6d54814299938", "0x06f3cb227781a836fefaea7e686bdc857e80eaa7"), }, } \ No newline at end of file diff --git a/projects/croblanc/index.js b/projects/croblanc/index.js index 7cb747f4c93..f466414e4c7 100644 --- a/projects/croblanc/index.js +++ b/projects/croblanc/index.js @@ -45,7 +45,7 @@ const cronosTvl = async (_, _b, chainBlocks) => { module.exports = { misrepresentedTokens: true, cronos: { - pool2: pool2(pool2Farm, WCRO_CROBLANC_CronaLP[0], "cronos"), + pool2: pool2(pool2Farm, WCRO_CROBLANC_CronaLP[0]), tvl: cronosTvl, }, methodology: diff --git a/projects/cronaswap/index.js b/projects/cronaswap/index.js index bd16746ac99..fa52c5ad6db 100644 --- a/projects/cronaswap/index.js +++ b/projects/cronaswap/index.js @@ -12,6 +12,6 @@ module.exports={ '0x5b5fe1238aca91c65683acd7f9d9bf922e271eaa', // SUS ] }), - staking: staking("0x77ea4a4cF9F77A034E4291E8f457Af7772c2B254", "0xadbd1231fb360047525BEdF962581F3eee7b49fe", 'cronos') + staking: staking("0x77ea4a4cF9F77A034E4291E8f457Af7772c2B254", "0xadbd1231fb360047525BEdF962581F3eee7b49fe") } } \ No newline at end of file diff --git a/projects/cyclone/index.js b/projects/cyclone/index.js index b2a8f087d46..f53dbcaf1af 100644 --- a/projects/cyclone/index.js +++ b/projects/cyclone/index.js @@ -33,11 +33,11 @@ module.exports = { }, ethereum: { tvl: tvl("ethereum", ADDRESSES.ethereum.WETH), - pool2: pool2(contracts.ethereum.pool2.address, contracts.ethereum.pool2.token, "ethereum"), + pool2: pool2(contracts.ethereum.pool2.address, contracts.ethereum.pool2.token), }, bsc: { tvl: tvl("bsc", "bsc:" + ADDRESSES.bsc.WBNB), - pool2: pool2(contracts.bsc.pool2.address, contracts.bsc.pool2.token, "bsc"), + 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: { diff --git a/projects/defikingdoms/index.js b/projects/defikingdoms/index.js index 1892bd74e4f..19607d62b2d 100644 --- a/projects/defikingdoms/index.js +++ b/projects/defikingdoms/index.js @@ -6,11 +6,11 @@ const { getUniTVL } = require("../helper/unknownTokens"); module.exports = { harmony: { tvl: getUniTVL({ factory: '0x9014B937069918bd319f80e8B3BB4A2cf6FAA5F7', useDefaultCoreAssets: true }), - staking: staking(ADDRESSES.harmony.xJEWEL, ADDRESSES.harmony.JEWEL, "harmony"), + staking: staking(ADDRESSES.harmony.xJEWEL, ADDRESSES.harmony.JEWEL), }, klaytn: { tvl: getUniTVL({ factory: '0x36fAE766e51f17F8218C735f58426E293498Db2B', useDefaultCoreAssets: true }), - staking: staking("0xaa8548665bcc12c202d5d0c700093123f2463ea6", "0x30c103f8f5a3a732dfe2dce1cc9446f545527b43", "klaytn"), + staking: staking("0xaa8548665bcc12c202d5d0c700093123f2463ea6", "0x30c103f8f5a3a732dfe2dce1cc9446f545527b43"), }, hallmarks:[ [1655991120, "Horizon bridge Hack $100m"], diff --git a/projects/defilyio/index.js b/projects/defilyio/index.js index eca2a2ca3fb..ee30f573821 100644 --- a/projects/defilyio/index.js +++ b/projects/defilyio/index.js @@ -19,10 +19,10 @@ const fetch = async () => { module.exports = { bsc: { - staking: staking(stakingContract_BSC, DFL, "bsc"), + staking: staking(stakingContract_BSC, DFL), }, kardia: { - staking: staking(stakingContract_KARDIA, DFL, "kardia"), + staking: staking(stakingContract_KARDIA, DFL), }, harmony: { staking: staking(stakingContract_Harmony, DFL_Harmony, "harmony", `kardia:${DFL}`), diff --git a/projects/dogsofelon/index.js b/projects/dogsofelon/index.js index d21033f86be..31db5325c5e 100644 --- a/projects/dogsofelon/index.js +++ b/projects/dogsofelon/index.js @@ -17,7 +17,7 @@ module.exports = { tvl: (async) => ({}), }, arbitrum: { - pool2: pool2(stakingPool2Contract, DOE_WETH_SLP, "arbitrum"), + pool2: pool2(stakingPool2Contract, DOE_WETH_SLP), }, methodology: "Counts liquidty on the staking and pool2 only", }; diff --git a/projects/drip/index.js b/projects/drip/index.js index 1e99a8ac727..5d22b34e302 100644 --- a/projects/drip/index.js +++ b/projects/drip/index.js @@ -8,6 +8,6 @@ module.exports = { "Counts the native tokens staked in the vault contract as staking.", bsc: { tvl: async () => ({}), - staking: staking(VAULT_CONTRACT, TOKEN_CONTRACT, "bsc"), + staking: staking(VAULT_CONTRACT, TOKEN_CONTRACT), }, }; diff --git a/projects/dyson-money/index.js b/projects/dyson-money/index.js index 341087bd347..6d600f37fa3 100644 --- a/projects/dyson-money/index.js +++ b/projects/dyson-money/index.js @@ -65,7 +65,7 @@ module.exports = { methodology: "Counts the tokens locked in the contracts.", polygon: { tvl: polygonTvl, - staking: staking(ylSPHEREvault, sphere_token, "polygon") + staking: staking(ylSPHEREvault, sphere_token) }, optimism: { tvl: fetchNetworkTVL('optimism'), diff --git a/projects/elephantmoney/index.js b/projects/elephantmoney/index.js index 5d16c554510..05714843ec0 100644 --- a/projects/elephantmoney/index.js +++ b/projects/elephantmoney/index.js @@ -27,7 +27,7 @@ async function tvl(timestamp, block, chainBlocks) { module.exports = { bsc: { - pool2: pool2([contracts.TRUNK, contracts.ELEPHANT], LPs, "bsc"), + pool2: pool2([contracts.TRUNK, contracts.ELEPHANT], LPs), tvl: tvl, staking: stakings([contracts.staking], contracts.ELEPHANT, 'bsc') } diff --git a/projects/empyrean/index.js b/projects/empyrean/index.js index c675feff74a..fd1a0dd0caf 100644 --- a/projects/empyrean/index.js +++ b/projects/empyrean/index.js @@ -33,7 +33,7 @@ async function auroraTvl(timestamp, chainBlocks) { module.exports = { misrepresentedTokens: true, aurora: { - staking: staking(empyreanStaking, EMPYR, "aurora"), + staking: staking(empyreanStaking, EMPYR), tvl: auroraTvl, }, methodology: diff --git a/projects/epns/index.js b/projects/epns/index.js index 15e8855cf5e..ed5a2646115 100644 --- a/projects/epns/index.js +++ b/projects/epns/index.js @@ -9,7 +9,7 @@ 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, 'ethereum'), - pool2: pool2(staking_contract, PUSH_WETH_LP, 'ethereum'), + staking: staking(staking_contract, PUSH), + pool2: pool2(staking_contract, PUSH_WETH_LP), } } \ No newline at end of file diff --git a/projects/euphoria/index.js b/projects/euphoria/index.js index ffdca2cfece..77a2cc13581 100644 --- a/projects/euphoria/index.js +++ b/projects/euphoria/index.js @@ -49,7 +49,7 @@ async function tvl(time, ethBlock, {harmony: block}) { module.exports = { harmony: { tvl, - staking: staking(wagmiAddresses.staking, wagmiAddresses.wagmi, 'harmony'), + staking: staking(wagmiAddresses.staking, wagmiAddresses.wagmi), }, methodology: 'Counts tokens in the treasury for tvl and staked WAGMI for staking', diff --git a/projects/fantOHM/index.js b/projects/fantOHM/index.js index 8744e8ae8d0..4ef7e40e403 100644 --- a/projects/fantOHM/index.js +++ b/projects/fantOHM/index.js @@ -299,7 +299,7 @@ async function lqdrFtm_BeetsLp(owner, balances, block) { module.exports = { fantom: { tvl: fantomTvl, - staking: staking(fantomStaking, fantomFhm, "fantom") + staking: staking(fantomStaking, fantomFhm) }, moonriver: { tvl: moonriverTvl, diff --git a/projects/feederfinance/index.js b/projects/feederfinance/index.js index d0f283fe4fb..0731f1e3a87 100644 --- a/projects/feederfinance/index.js +++ b/projects/feederfinance/index.js @@ -33,8 +33,8 @@ module.exports = yieldHelper({ module.exports = { bsc: { tvl:() => ({}), - pool2: pool2('0xd90A8878a2277879600AA2cba0CADC7E1a11354D', '0xcF3ED0670C671034C58F6b771757a8529238CA3a', 'bsc'), - staking: staking('0xeb9902a19fa1286c8832bf44e9b18e89f682f614', '0x67d66e8ec1fd25d98b3ccd3b19b7dc4b4b7fc493', 'bsc'), + 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 index 562d6bd988c..4803eb2be8e 100644 --- a/projects/fees-wtf/index.js +++ b/projects/fees-wtf/index.js @@ -10,7 +10,7 @@ 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, "ethereum"), - pool2: pool2(WTF_ETH_univ2_staking, WTF_ETH_univ2, "ethereum"), + staking: staking(stakingContract, WTF), + pool2: pool2(WTF_ETH_univ2_staking, WTF_ETH_univ2), } } \ No newline at end of file diff --git a/projects/ferrum/index.js b/projects/ferrum/index.js index fb1d7dac15f..706710b1376 100644 --- a/projects/ferrum/index.js +++ b/projects/ferrum/index.js @@ -37,7 +37,7 @@ module.exports = { tvl: (async) => ({}), }, polygon: { - pool2: pool2(stakingPoolContract, FRM_DFYN_LP, "polygon"), + pool2: pool2(stakingPoolContract, FRM_DFYN_LP), }, methodology: "Counts liquidty on the staking and pool2 only", }; diff --git a/projects/freebie/index.js b/projects/freebie/index.js index 8b811d66ed4..36b9e1909fc 100644 --- a/projects/freebie/index.js +++ b/projects/freebie/index.js @@ -13,7 +13,7 @@ async function frbVault(api) { return balances } -const stakedFRB = staking("0xcc2F243FA7bBcab3BD951E8aE40730173af88b83", "0x9BedCE29F79076b21DD04958a9Fd4B22F63fD86D", "avax") +const stakedFRB = staking("0xcc2F243FA7bBcab3BD951E8aE40730173af88b83", "0x9BedCE29F79076b21DD04958a9Fd4B22F63fD86D") module.exports = { misrepresentedTokens: true, diff --git a/projects/galaxygoggle/index.js b/projects/galaxygoggle/index.js index cde55da1d80..1c558cf2ea6 100644 --- a/projects/galaxygoggle/index.js +++ b/projects/galaxygoggle/index.js @@ -9,7 +9,7 @@ const bscStaking = "0x97209Cf7a6FccC388eEfF85b35D858756f31690d"; module.exports = { avax:{ tvl: () => 0, - staking: staking(GgStaking, gg, "avax") + staking: staking(GgStaking, gg) }, bsc: { tvl: () => 0, diff --git a/projects/gale/index.js b/projects/gale/index.js index 848bd361818..c2bd95d4e8e 100644 --- a/projects/gale/index.js +++ b/projects/gale/index.js @@ -14,7 +14,7 @@ const config = { module.exports = { bsc: { tvl: () => ({}), - staking: staking(config.bsc.windmillContract, config.bsc.tokenContract, "bsc"), + staking: staking(config.bsc.windmillContract, config.bsc.tokenContract), }, methodology: "Counts tokens on the windmill for tvl", diff --git a/projects/gamblefi/index.js b/projects/gamblefi/index.js index eb139fcf655..9e6513d0381 100644 --- a/projects/gamblefi/index.js +++ b/projects/gamblefi/index.js @@ -49,7 +49,7 @@ async function tvl(timestamp, ethBlock, chainBlocks) { module.exports = { cronos: { tvl, - staking: staking(betifystaking, betify, "cronos"), + staking: staking(betifystaking, betify), }, methodology: "Counts tokens on the treasury for tvl and staked BETIFY for staking", diff --git a/projects/geist/index.js b/projects/geist/index.js index e4d4c5f1163..b787ec300ab 100644 --- a/projects/geist/index.js +++ b/projects/geist/index.js @@ -27,8 +27,8 @@ module.exports = { fantom: { tvl: lending(false), borrowed: lending(true), - staking: staking(stakingContract, GEIST, "fantom"), - pool2: pool2(stakingContractPool2, GEIST_WFTM_spLP, "fantom"), + staking: staking(stakingContract, GEIST), + pool2: pool2(stakingContractPool2, GEIST_WFTM_spLP), }, hallmarks:[ [1665090175, "BSC Bridge hacker deposits coins"] diff --git a/projects/gfs/index.js b/projects/gfs/index.js index d012c7a63fc..26bd35f0a33 100644 --- a/projects/gfs/index.js +++ b/projects/gfs/index.js @@ -35,6 +35,6 @@ function pool2(chain, gasToken) { module.exports = { iotex: { tvl: () => ({}), - pool2: pool2("iotex", "iotex"), + pool2: pool2("iotex"), }, }; diff --git a/projects/gft/index.js b/projects/gft/index.js index 7dbbbad2016..584c81984fc 100644 --- a/projects/gft/index.js +++ b/projects/gft/index.js @@ -64,6 +64,6 @@ function pool2(chain, gasToken) { module.exports = { iotex: { tvl: () => ({}), - pool2: pool2("iotex", "iotex"), + pool2: pool2("iotex"), }, }; diff --git a/projects/gibxswap/index.js b/projects/gibxswap/index.js index 66bf7620997..16293f9d44d 100644 --- a/projects/gibxswap/index.js +++ b/projects/gibxswap/index.js @@ -7,7 +7,7 @@ const X = "0xAe28714390e95B8dF1Ef847C58AEaC23ED457702"; module.exports = { misrepresentedTokens: true, bsc: { - staking: staking(swapMiningStakingContract, X, "bsc"), + staking: staking(swapMiningStakingContract, X), tvl: getUniTVL({ factory: '0x97bCD9BB482144291D77ee53bFa99317A82066E8', useDefaultCoreAssets: true }), }, methodology: diff --git a/projects/goat-protocol/index.js b/projects/goat-protocol/index.js index 5970675ba28..c8aa49e7ae8 100644 --- a/projects/goat-protocol/index.js +++ b/projects/goat-protocol/index.js @@ -19,6 +19,6 @@ module.exports = { vaults.push(pools[i].earnedTokenAddress); return yieldHelper({ vaults, chain, block, tokenAPI, useDefaultCoreAssets: true, }) }, - staking: staking(REWARD_POOL_CONTRACT, GOA_TOKEN_CONTRACT, "arbitrum") + staking: staking(REWARD_POOL_CONTRACT, GOA_TOKEN_CONTRACT) } } \ No newline at end of file diff --git a/projects/grape-finance/index.js b/projects/grape-finance/index.js index 9d4a6d51dad..3e8edd94203 100644 --- a/projects/grape-finance/index.js +++ b/projects/grape-finance/index.js @@ -16,6 +16,6 @@ module.exports = { avax:{ tvl: async () => ({}), pool2: pool2Exports(rewardpool, LPTokens, "avax"), - staking: staking(boardroom, wine, "avax") + staking: staking(boardroom, wine) } } \ No newline at end of file diff --git a/projects/hades-money/index.js b/projects/hades-money/index.js index f7f0d40659a..991b828d2a9 100644 --- a/projects/hades-money/index.js +++ b/projects/hades-money/index.js @@ -14,7 +14,7 @@ const pool2LPs = [ module.exports = { metis: { tvl: async () => ({}), - staking: staking(masonry, hellshare, "metis"), + staking: staking(masonry, hellshare), pool2: pool2Exports(hellsharerewardpool, pool2LPs, "metis") } } \ No newline at end of file diff --git a/projects/halodao/index.js b/projects/halodao/index.js index ba2fb4b4194..ca020c5dd4d 100644 --- a/projects/halodao/index.js +++ b/projects/halodao/index.js @@ -122,7 +122,7 @@ module.exports = { }, polygon: { tvl: polygonTvl, - //staking: staking(wrnbwPolyPool, wrnbwPolyToken, "polygon"), + //staking: staking(wrnbwPolyPool, wrnbwPolyToken), }, arbitrum: { tvl: arbitrumTvl, diff --git a/projects/hermes-finance/index.js b/projects/hermes-finance/index.js index 4b516e766db..a44ac2602ac 100644 --- a/projects/hermes-finance/index.js +++ b/projects/hermes-finance/index.js @@ -14,7 +14,7 @@ const pool2LPs = [ module.exports = { avax:{ tvl: async () => ({}), - staking: staking(olympus, hermesShares, "avax"), + staking: staking(olympus, hermesShares), pool2: pool2Exports(hShareRewardPool, pool2LPs, "avax") } } \ No newline at end of file diff --git a/projects/hermes-protocol/index.js b/projects/hermes-protocol/index.js index d1a24e441e3..588585d64af 100644 --- a/projects/hermes-protocol/index.js +++ b/projects/hermes-protocol/index.js @@ -5,6 +5,6 @@ module.exports = { misrepresentedTokens: true, metis:{ tvl: uniTvlExport("0x633a093C9e94f64500FC8fCBB48e90dd52F6668F", "metis", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: true, }), - staking: staking("0xa4C546c8F3ca15aa537D2ac3f62EE808d915B65b", "0xb27bbeaaca2c00d6258c3118bab6b5b6975161c8","metis"), + staking: staking("0xa4C546c8F3ca15aa537D2ac3f62EE808d915B65b", "0xb27bbeaaca2c00d6258c3118bab6b5b6975161c8"), }, } diff --git a/projects/horizon/index.js b/projects/horizon/index.js index e804dca5a4d..06ec662fe8c 100644 --- a/projects/horizon/index.js +++ b/projects/horizon/index.js @@ -30,7 +30,7 @@ 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), 'bsc'), - pool2: staking(lpStaking.map(i => i.stakingContract), lpStaking.map(i => i.stakingLPToken), 'bsc') + 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/hotfries/index.js b/projects/hotfries/index.js index d81e6f3e81e..fe69713f5c3 100644 --- a/projects/hotfries/index.js +++ b/projects/hotfries/index.js @@ -3,6 +3,6 @@ const {staking} = require('../helper/staking') module.exports={ bsc:{ - tvl: staking("0x849741B79bc1618b46CF9ec600E94E771DEde601", ADDRESSES.bsc.BUSD, "bsc") + tvl: staking("0x849741B79bc1618b46CF9ec600E94E771DEde601", ADDRESSES.bsc.BUSD) } } \ No newline at end of file diff --git a/projects/hurricaneswap.js b/projects/hurricaneswap.js index 2d3bc46fc55..8765c90ba0a 100644 --- a/projects/hurricaneswap.js +++ b/projects/hurricaneswap.js @@ -20,7 +20,7 @@ const chainTvl = getUniTVL({ module.exports = { misrepresentedTokens: true, avax: { - tvl: sdk.util.sumChainTvls([chainTvl, staking(masterChefV2, AVAX, "avax")]), + tvl: sdk.util.sumChainTvls([chainTvl, staking(masterChefV2, AVAX)]), staking: stakings( [ stakingConttract_xhctBar, diff --git a/projects/instrumental/index.js b/projects/instrumental/index.js index 00784a6ff02..cedeabd2268 100644 --- a/projects/instrumental/index.js +++ b/projects/instrumental/index.js @@ -11,8 +11,8 @@ const veSTRM = "0x62ae88697782f474b2537b890733cc15d3e01f1d"; module.exports = { ethereum: { tvl: () => ({}), - pool2: staking([LP_staking, LP_locking], [STRM_ETH_sushi], "ethereum"), - staking: staking(veSTRM, STRM, "ethereum"), // vote escrowed STRM, TVL corresponds + 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/jelly/index.js b/projects/jelly/index.js index 7d0115f23fe..1fb6ea4892d 100644 --- a/projects/jelly/index.js +++ b/projects/jelly/index.js @@ -12,7 +12,7 @@ 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], 'ethereum'), + pool2: staking([sweetPool, royalPool], [jellyUsdcLP]), tvl: () => ({}), }, } diff --git a/projects/kalata/index.js b/projects/kalata/index.js index f9db890c6ff..b0de3e25e8e 100644 --- a/projects/kalata/index.js +++ b/projects/kalata/index.js @@ -27,6 +27,6 @@ async function tvl(api) { module.exports = { bsc: { tvl: sdk.util.sumChainTvls([getUniTVL({ factory: '0xa265535863305ce0a2a8ec330c2cec972aca3004', useDefaultCoreAssets: true, }), tvl]), - staking: staking(masterchef, kala, 'bsc'), + staking: staking(masterchef, kala), } } \ No newline at end of file diff --git a/projects/kanvas/index.js b/projects/kanvas/index.js index 30323e346cc..3f291924631 100644 --- a/projects/kanvas/index.js +++ b/projects/kanvas/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const token0Abi = 'address:token0' @@ -111,6 +111,6 @@ module.exports = { kava:{ tvl, pool2, - staking: staking(stakingAddress, kanvas, "kava") + staking: staking(stakingAddress, kanvas) } } \ No newline at end of file diff --git a/projects/kittyfinance/index.js b/projects/kittyfinance/index.js index 534cf866b12..398ee3a7188 100644 --- a/projects/kittyfinance/index.js +++ b/projects/kittyfinance/index.js @@ -50,11 +50,11 @@ async function calcPool2(masterchef, lps, block, chain) { } async function polyPool2(timestamp, block, chainBlocks) { - return await calcPool2(polyChef, polyLPs, chainBlocks.polygon, "polygon"); + return await calcPool2(polyChef, polyLPs, chainBlocks.polygon); } async function avaxPool2(timestamp, block, chainBlocks) { - return await calcPool2(avaxChef, avaxLPs, chainBlocks.avax, "avax"); + return await calcPool2(avaxChef, avaxLPs, chainBlocks.avax); } module.exports = { @@ -72,6 +72,6 @@ module.exports = { avax: { tvl: async () => ({}), pool2: avaxPool2, - staking: staking(avaxNursery, avaxCat, "avax"), + staking: staking(avaxNursery, avaxCat), }, }; diff --git a/projects/klima-dao/index.js b/projects/klima-dao/index.js index 58cca4736db..95445385555 100644 --- a/projects/klima-dao/index.js +++ b/projects/klima-dao/index.js @@ -10,7 +10,7 @@ module.exports = { const supply = await api.call({ abi: 'erc20:totalSupply', target: bctAddress, }) api.add(bctAddress, supply) }, - staking: staking("0x25d28a24Ceb6F81015bB0b2007D795ACAc411b4d", "0x4e78011ce80ee02d2c3e649fb657e45898257815", "polygon"), + staking: staking("0x25d28a24Ceb6F81015bB0b2007D795ACAc411b4d", "0x4e78011ce80ee02d2c3e649fb657e45898257815"), }, hallmarks: [ [1709828986, "BCT administrative control transferred to KlimaDAO"], diff --git a/projects/ktx/index.js b/projects/ktx/index.js index eec9c2402bd..f71abf3df9d 100644 --- a/projects/ktx/index.js +++ b/projects/ktx/index.js @@ -15,15 +15,15 @@ const arbitrumKTC = "0x487f6baB6DEC7815dcd7Dfa2C44a8a17bd3dEd27"; module.exports = { bsc: { - staking: staking(bscStaking, bscKTC, "bsc"), + staking: staking(bscStaking, bscKTC), tvl: gmxExports({ vault: bscVault }), }, mantle: { - staking: staking(mantleStaking, mantleKTC, "mantle"), + staking: staking(mantleStaking, mantleKTC), tvl: gmxExports({ vault: mantleVault }), }, arbitrum: { - staking: staking(arbitrumStaking, arbitrumKTC, "arbitrum"), + staking: staking(arbitrumStaking, arbitrumKTC), tvl: gmxExports({ vault: arbitrumVault }), }, }; diff --git a/projects/levinswap/index.js b/projects/levinswap/index.js index 9b4126fac09..e89dce61375 100644 --- a/projects/levinswap/index.js +++ b/projects/levinswap/index.js @@ -8,6 +8,6 @@ const xlevin = "0xafa57Fb9d8D63Ff8124E17c1495C73bc3a7678D0"; module.exports = { xdai: { tvl: uniTvlExport(factory, 'xdai', true), - staking: staking(xlevin, levin, "xdai") + staking: staking(xlevin, levin) } } \ No newline at end of file diff --git a/projects/libero/index.js b/projects/libero/index.js index 5094bce0ee0..6c3850f7667 100644 --- a/projects/libero/index.js +++ b/projects/libero/index.js @@ -5,7 +5,7 @@ const { staking } = require('../helper/staking') module.exports = { bsc: { tvl: () => ({}), - staking: staking(owner, target, 'bsc'), + 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/liondex/index.js b/projects/liondex/index.js index 4b35cf5ab85..354680d3bb6 100644 --- a/projects/liondex/index.js +++ b/projects/liondex/index.js @@ -14,6 +14,6 @@ module.exports = { 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, 'arbitrum') + staking: staking(lionStaking, LION) } } diff --git a/projects/looks-rare/index.js b/projects/looks-rare/index.js index 264e94b0b7e..b08d957000f 100644 --- a/projects/looks-rare/index.js +++ b/projects/looks-rare/index.js @@ -14,7 +14,7 @@ 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, "ethereum"), - pool2: pool2(LOOKS_ETH_univ2_staking, LOOKS_ETH_univ2, "ethereum"), + staking: staking(tokenDistributor, LOOKS), + pool2: pool2(LOOKS_ETH_univ2_staking, LOOKS_ETH_univ2), } } \ No newline at end of file diff --git a/projects/luchadores/index.js b/projects/luchadores/index.js index f3e6eb3aaaa..6c8f660abad 100644 --- a/projects/luchadores/index.js +++ b/projects/luchadores/index.js @@ -51,7 +51,7 @@ async function tvl(time, ethBlock, chainBlocks){ module.exports={ polygon:{ tvl, - staking: staking(luchaStk, LUCHA_polygon, "polygon"), + staking: staking(luchaStk, LUCHA_polygon), pool2: pool2s([luchaMaticStk, luchaMustStk], [LUCHA_MATIC_comethLp, LUCHA_MUST_comethLp, LUCHA_MATIC_satinLp, LUCHA_CASH_satinLp], "polygon") }, methodology: `- Staking : Players can stake their $LUCHA to earn $MASK and access in-game services or equipment.\r diff --git a/projects/luckychip/index.js b/projects/luckychip/index.js index 4c43b006076..641db817251 100644 --- a/projects/luckychip/index.js +++ b/projects/luckychip/index.js @@ -70,7 +70,7 @@ const masterChef = '0x15D2a6FC45aF66A2952dC27c40450C1F06A1eC2b'; module.exports={ methodology: 'TVL comes from the tables of LuckyChip for now.', bsc: { - staking: staking(masterChef, lcToken, 'bsc'), + staking: staking(masterChef, lcToken), tvl, } } diff --git a/projects/lyra/index.js b/projects/lyra/index.js index cfdd6d5f38f..c84247a7639 100644 --- a/projects/lyra/index.js +++ b/projects/lyra/index.js @@ -83,8 +83,8 @@ module.exports = { tvl:tvlArbitrum }, ethereum:{ - tvl: staking("0x54d59c4596c7ea66fd62188ba1e16db39e6f5472", ADDRESSES.ethereum.USDC, "ethereum"), - staking: staking("0xcb9f85730f57732fc899fb158164b9ed60c77d49", "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", "ethereum") + tvl: staking("0x54d59c4596c7ea66fd62188ba1e16db39e6f5472", ADDRESSES.ethereum.USDC), + staking: staking("0xcb9f85730f57732fc899fb158164b9ed60c77d49", "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf") }, hallmarks:[ [1635218174, "Lyra Token"], diff --git a/projects/merchant-moe/index.js b/projects/merchant-moe/index.js index db3ad50caf0..1e5a585c6ab 100644 --- a/projects/merchant-moe/index.js +++ b/projects/merchant-moe/index.js @@ -4,6 +4,6 @@ const { getUniTVL } = require('../helper/unknownTokens'); module.exports = { mantle:{ tvl: getUniTVL({ factory: '0x5bef015ca9424a7c07b68490616a4c1f094bedec' }), - //staking: staking("0xE92249760e1443FbBeA45B03f607Ba84471Fa793", "0x4515A45337F461A11Ff0FE8aBF3c606AE5dC00c9", "mantle") + //staking: staking("0xE92249760e1443FbBeA45B03f607Ba84471Fa793", "0x4515A45337F461A11Ff0FE8aBF3c606AE5dC00c9") }, }; \ No newline at end of file diff --git a/projects/metavault.trade/index.js b/projects/metavault.trade/index.js index 6d164cc0057..fa7420216d3 100644 --- a/projects/metavault.trade/index.js +++ b/projects/metavault.trade/index.js @@ -30,7 +30,7 @@ const polygonTVL = async (timestamp, _block, { [chain]: block}) => { module.exports = { polygon: { - staking: staking(polygonStaking, polygonMVX, "polygon"), + staking: staking(polygonStaking, polygonMVX), tvl: polygonTVL, }, }; \ No newline at end of file diff --git a/projects/metf-finance/index.js b/projects/metf-finance/index.js index 619cad7f487..5347c8b59cc 100644 --- a/projects/metf-finance/index.js +++ b/projects/metf-finance/index.js @@ -111,6 +111,6 @@ module.exports = { cronos: { tvl: newTVL, staking: staking, - pool2: pool2("0xE25737b093626233877EC0777755c5c4081580be", "0xd7385f46FFb877d8c8Fe78E5f5a7c6b2F18C05A7", "cronos") + pool2: pool2("0xE25737b093626233877EC0777755c5c4081580be", "0xd7385f46FFb877d8c8Fe78E5f5a7c6b2F18C05A7") } } \ No newline at end of file diff --git a/projects/mm-finance-arbitrum/index.js b/projects/mm-finance-arbitrum/index.js index b8a2e7f1efe..16aa440ab58 100644 --- a/projects/mm-finance-arbitrum/index.js +++ b/projects/mm-finance-arbitrum/index.js @@ -10,7 +10,7 @@ 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, 'arbitrum'), + staking: staking(masterChef, mmfToken), tvl: getUniTVL({ factory, useDefaultCoreAssets: true, diff --git a/projects/mm-finance-polygon/index.js b/projects/mm-finance-polygon/index.js index df641554212..77167c32240 100644 --- a/projects/mm-finance-polygon/index.js +++ b/projects/mm-finance-polygon/index.js @@ -8,7 +8,7 @@ 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, 'polygon'), + staking: staking(masterChef, mmfToken), tvl: getUniTVL({ factory, useDefaultCoreAssets: true, diff --git a/projects/mm-finance/index.js b/projects/mm-finance/index.js index f7bbb270a4a..3e4e6884338 100644 --- a/projects/mm-finance/index.js +++ b/projects/mm-finance/index.js @@ -10,7 +10,7 @@ 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, 'cronos'), + staking: staking(masterChef, mmfToken), tvl: getUniTVL({ factory, useDefaultCoreAssets: true, diff --git a/projects/morphex-old/index.js b/projects/morphex-old/index.js index cb3e5dde3df..9f8f53a2385 100644 --- a/projects/morphex-old/index.js +++ b/projects/morphex-old/index.js @@ -9,7 +9,7 @@ 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, "fantom"), + staking: staking(stakingAddressFantom, tokenAddressMPXFantom), tvl: gmxExports({ vault: vaultAddressFantom }) } }; diff --git a/projects/morphex/index.js b/projects/morphex/index.js index 2e0276be689..0060c6a7119 100644 --- a/projects/morphex/index.js +++ b/projects/morphex/index.js @@ -16,11 +16,11 @@ 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, "fantom"), + staking: staking(stakingAddressFantom, tokenAddressMPXFantom), tvl: sdk.util.sumChainTvls([gmxExports({ vault: vaultAddressFantom }), gmxExports({ vault: vaultAddressFantomMultichain })]) }, bsc: { - staking: staking(stakingAddressBSC, tokenAddressMPXBSC, "bsc"), + staking: staking(stakingAddressBSC, tokenAddressMPXBSC), tvl: gmxExports({ vault: vaultAddressBSC }) }, }; diff --git a/projects/mycelium/index.js b/projects/mycelium/index.js index aa8bb727522..18de56cbdf7 100644 --- a/projects/mycelium/index.js +++ b/projects/mycelium/index.js @@ -5,6 +5,6 @@ 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', 'arbitrum') + staking: staking('0xF9B003Ee160dA9677115Ad3c5bd6BB6dADcB2F93', '0xC74fE4c715510Ec2F8C61d70D397B32043F55Abe') }, } \ No newline at end of file diff --git a/projects/nacho-finance/index.js b/projects/nacho-finance/index.js index 80097b55a60..d4b285de1f9 100644 --- a/projects/nacho-finance/index.js +++ b/projects/nacho-finance/index.js @@ -48,7 +48,7 @@ async function calcPool2(masterchef, lps, block, chain) { } async function ftmPool2(timestamp, block, chainBlocks) { - return await calcPool2(tshareRewardPoolAddress, ftmLPs, chainBlocks.polygon, "polygon"); + return await calcPool2(tshareRewardPoolAddress, ftmLPs, chainBlocks.polygon); } module.exports = { @@ -56,6 +56,6 @@ module.exports = { polygon: { tvl: async () => ({}), pool2: ftmPool2, - staking: staking(masonryAddress, tshareTokenAddress, "polygon"), + staking: staking(masonryAddress, tshareTokenAddress), }, }; diff --git a/projects/naos/index.js b/projects/naos/index.js index 60a261e5c77..bab9b3c7351 100644 --- a/projects/naos/index.js +++ b/projects/naos/index.js @@ -174,6 +174,6 @@ module.exports = { tvl: bscTvl, borrowed: bscBorrowed, staking: stakings([BSC_BOOST_POOL,], BSC_NAOS_ADDRESS, 'bsc'), - pool2: pool2(BSC_STAKING_POOL_WITH_TRANSFER, CAKE_BNB_NAOS_LP_ADDRESS, 'bsc'), + pool2: pool2(BSC_STAKING_POOL_WITH_TRANSFER, CAKE_BNB_NAOS_LP_ADDRESS), }, }; diff --git a/projects/nasdex/index.js b/projects/nasdex/index.js index a5380570b6f..a804f510be0 100644 --- a/projects/nasdex/index.js +++ b/projects/nasdex/index.js @@ -8,8 +8,8 @@ const NSDX_USDC_UNIV2 = "0x56B8936a96cD5EE5C5837F385a19B4c2999fD74a"; module.exports = { misrepresentedTokens: true, polygon:{ - staking: staking(stakingContract, NSDX, "polygon"), - pool2: pool2(stakingContract, NSDX_USDC_UNIV2, "polygon"), + staking: staking(stakingContract, NSDX), + pool2: pool2(stakingContract, NSDX_USDC_UNIV2), tvl: async () => ({}), }, methodology: diff --git a/projects/nava-finance/index.js b/projects/nava-finance/index.js index f2ebd6cc26c..f3d06e71ff4 100644 --- a/projects/nava-finance/index.js +++ b/projects/nava-finance/index.js @@ -32,4 +32,4 @@ module.exports.rei.tvl = async (_, _b, { rei: block }) => sumUnknownTokens({ useDefaultCoreAssets: true, }) -staking(rewardPool, WREI, 'rei') \ No newline at end of file +staking(rewardPool, WREI) \ No newline at end of file diff --git a/projects/nerve/index.js b/projects/nerve/index.js index 7637b89e750..2a3aba64d53 100644 --- a/projects/nerve/index.js +++ b/projects/nerve/index.js @@ -27,6 +27,6 @@ module.exports = { start: 1614556800, // March 1, 2021 00:00 AM (UTC) bsc:{ tvl: sumTokensExport({ ownerTokens }), - staking:staking(xnrvAddress, nrv, "bsc") + staking:staking(xnrvAddress, nrv) } } diff --git a/projects/nether-fi/index.js b/projects/nether-fi/index.js index 4e48eab5632..2dd6739954a 100644 --- a/projects/nether-fi/index.js +++ b/projects/nether-fi/index.js @@ -7,7 +7,7 @@ const NFI = "0x60359A0DD148B18d5cF1Ddf8Aa1916221ED0cbCd"; module.exports = { base: { - staking: staking(stakingBase, NFI, "base"), + staking: staking(stakingBase, NFI), tvl: gmxExports({ vault: vaultBase }), } }; diff --git a/projects/nft20.js b/projects/nft20.js index 39e2dd04bdf..be9ee5689a3 100644 --- a/projects/nft20.js +++ b/projects/nft20.js @@ -75,8 +75,8 @@ 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, "ethereum"), - pool2: staking(MUSE_ETH_univ2_staking, MUSE_ETH_univ2, "ethereum"), + staking: staking(stkMUSE, MUSE), + pool2: staking(MUSE_ETH_univ2_staking, MUSE_ETH_univ2), }, polygon: { tvl: chainTvl('polygon') diff --git a/projects/numbers/index.js b/projects/numbers/index.js index ee153f9a456..26102611b73 100644 --- a/projects/numbers/index.js +++ b/projects/numbers/index.js @@ -17,8 +17,8 @@ module.exports = { pool2: pool2(farmContract, USDC_NUM_UNIV2), }, bsc: { - staking: staking(farmContract_bsc, NUM_bsc, "bsc"), - pool2: pool2(farmContract_bsc, BUSD_NUM_CakeLP, "bsc"), + staking: staking(farmContract_bsc, NUM_bsc), + pool2: pool2(farmContract_bsc, BUSD_NUM_CakeLP), }, methodology: "Counts liquidty on the staking and pool2 only", }; diff --git a/projects/openxswap/index.js b/projects/openxswap/index.js index 54cf9275661..4130ce72cd1 100644 --- a/projects/openxswap/index.js +++ b/projects/openxswap/index.js @@ -11,7 +11,7 @@ module.exports = { factory: '0xf3C7978Ddd70B4158b53e897f980093183cA5c52', useDefaultCoreAssets: true, }), - staking: staking(OpenXStaking, OpenX, 'optimism') + staking: staking(OpenXStaking, OpenX) }, } diff --git a/projects/orbitalswap/index.js b/projects/orbitalswap/index.js index 415b05f29f3..09847f3e5d1 100644 --- a/projects/orbitalswap/index.js +++ b/projects/orbitalswap/index.js @@ -11,7 +11,7 @@ module.exports = { incentivized: true, bsc: { tvl: getUniTVL({ factory: '0x1A04Afe9778f95829017741bF46C9524B91433fB', useDefaultCoreAssets: true }), - staking: staking(MasterChefContract, ORB, "bsc"), + staking: staking(MasterChefContract, ORB), } }; diff --git a/projects/orcadao/index.js b/projects/orcadao/index.js index 8a030aa2ce6..61f59d07466 100644 --- a/projects/orcadao/index.js +++ b/projects/orcadao/index.js @@ -100,6 +100,6 @@ module.exports = { borrowed, pool2: pool2Exports(podLeader, pool2LPs, "avax", addr=>`avax:${addr}`), treasury, - staking: staking(podLeader, orca, "avax") + staking: staking(podLeader, orca) } } \ No newline at end of file diff --git a/projects/ottopia/index.js b/projects/ottopia/index.js index 4403edb91a3..003956ae96a 100644 --- a/projects/ottopia/index.js +++ b/projects/ottopia/index.js @@ -34,7 +34,7 @@ module.exports = { start: 30711580, polygon: { tvl, - staking: staking(PearlBank, CLAM, "polygon"), + staking: staking(PearlBank, CLAM), }, hallmarks: [ [1641686400, "Pearl Chest launch"], diff --git a/projects/paintswap/index.js b/projects/paintswap/index.js index 5425ba987b5..544d6d49816 100644 --- a/projects/paintswap/index.js +++ b/projects/paintswap/index.js @@ -9,6 +9,6 @@ module.exports = { misrepresentedTokens: true, fantom:{ tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: staking(masterchef, brush, "fantom"), + staking: staking(masterchef, brush), } } \ No newline at end of file diff --git a/projects/pangolin/index.js b/projects/pangolin/index.js index dce65c5454c..c7125c9f32e 100644 --- a/projects/pangolin/index.js +++ b/projects/pangolin/index.js @@ -28,7 +28,7 @@ module.exports = { "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, "avax"), + staking: staking(contracts.avax.stakingContract, contracts.avax.png), }, songbird: { tvl: getUniTVL({ useDefaultCoreAssets: true, factory: contracts.songbird.factory, }), diff --git a/projects/paraswap.js b/projects/paraswap.js index 9e6fef8d8e7..1feb546bf4c 100644 --- a/projects/paraswap.js +++ b/projects/paraswap.js @@ -12,7 +12,7 @@ async function staking(api) { } // Safety Module staking of 20WETH_80PSP balancer LP -// pool2(safetyModuleBalStaking, balancerLP_20WETH_80PSP, "ethereum") // not working as it is a balancer and not a uniswap 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) { diff --git a/projects/partialfinance/index.js b/projects/partialfinance/index.js index 8c3dfa0b3fa..e7d213f9795 100644 --- a/projects/partialfinance/index.js +++ b/projects/partialfinance/index.js @@ -44,7 +44,7 @@ async function calcPool2(masterchef, lps, block, chain) { } async function ftmPool2(timestamp, block, chainBlocks) { - return await calcPool2(pshareRewardPoolAddress, ftmLPs, chainBlocks.fantom, "fantom"); + return await calcPool2(pshareRewardPoolAddress, ftmLPs, chainBlocks.fantom); } async function treasury(timestamp, block, chainBlocks) { diff --git a/projects/pdollar/index.js b/projects/pdollar/index.js index 21358261bd4..9846cc5bede 100644 --- a/projects/pdollar/index.js +++ b/projects/pdollar/index.js @@ -44,7 +44,7 @@ async function calcPool2(masterchef, lps, block, chain) { } async function ftmPool2(timestamp, block, chainBlocks) { - return await calcPool2(spdoRewardPoolAddress, ftmLPs, chainBlocks.fantom, "fantom"); + return await calcPool2(spdoRewardPoolAddress, ftmLPs, chainBlocks.fantom); } async function treasury(timestamp, block, chainBlocks) { diff --git a/projects/peardao/index.js b/projects/peardao/index.js index 76369712c40..77331e29321 100644 --- a/projects/peardao/index.js +++ b/projects/peardao/index.js @@ -26,6 +26,6 @@ module.exports = { bsc: { tvl: sumTokensExport({ tokens, owner: DOTC_CONTRACT, }), staking: stakings([TREASURY_ADDRESS, PEX_STAKING_POOL_CONTRACT], PEX_TOKEN_CONTRACT, "bsc"), - pool2: pool2(PEX_BNB_LP_MASTER_CHEF, PEX_BNB_LP_CONTRACT, 'bsc') + pool2: pool2(PEX_BNB_LP_MASTER_CHEF, PEX_BNB_LP_CONTRACT) } }; \ No newline at end of file diff --git a/projects/pegasusfinance/index.js b/projects/pegasusfinance/index.js index 98aee5bb23b..1f156bb38df 100644 --- a/projects/pegasusfinance/index.js +++ b/projects/pegasusfinance/index.js @@ -7,6 +7,6 @@ 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, "optimism"), + tvl: staking(LIQUIDITY_POOL_CONTRACT, WETH_OPTIMISM), }, }; diff --git a/projects/penguin/index.js b/projects/penguin/index.js index 3bcaf726f5f..3c7cdf83842 100644 --- a/projects/penguin/index.js +++ b/projects/penguin/index.js @@ -54,7 +54,7 @@ async function getTokensInMasterChef(time, ethBlock, chainBlocks) { module.exports = { avax:{ - staking: sdk.util.sumChainTvls([nest, nestv2].map(chef => staking(chef, pefiToken, "avax"))), + staking: sdk.util.sumChainTvls([nest, nestv2].map(chef => staking(chef, pefiToken))), tvl: getTokensInMasterChef, } } diff --git a/projects/phiat/index.js b/projects/phiat/index.js index e4630e76e7d..7a411a373c2 100644 --- a/projects/phiat/index.js +++ b/projects/phiat/index.js @@ -25,6 +25,6 @@ module.exports = { pulse: { tvl: lending(false), borrowed: lending(true), - staking: staking(stakingContract, PHIAT, "pulse"), + staking: staking(stakingContract, PHIAT), }, }; diff --git a/projects/piggy-finance/index.js b/projects/piggy-finance/index.js index 0533f4eee06..1566deb3e7b 100644 --- a/projects/piggy-finance/index.js +++ b/projects/piggy-finance/index.js @@ -43,7 +43,7 @@ async function calcPool2(masterchef, lps, block, chain) { } async function AvaxPool2(timestamp, block, chainBlocks) { - return await calcPool2(rewardPool, AvaxLPs, chainBlocks.avax, "avax"); + return await calcPool2(rewardPool, AvaxLPs, chainBlocks.avax); } module.exports = { @@ -51,7 +51,7 @@ module.exports = { avax: { tvl: async () => ({}), pool2: AvaxPool2, - staking: staking(pshareStaking, pshare, "avax"), + staking: staking(pshareStaking, pshare), }, }; diff --git a/projects/pinkswap/index.js b/projects/pinkswap/index.js index c8443974675..ebd03620030 100644 --- a/projects/pinkswap/index.js +++ b/projects/pinkswap/index.js @@ -10,6 +10,6 @@ module.exports = { factory: FACTORY, useDefaultCoreAssets: true, }), - staking: staking(masterChef, pinksToken, 'bsc'), + staking: staking(masterChef, pinksToken), } } \ No newline at end of file diff --git a/projects/polkastarter/index.js b/projects/polkastarter/index.js index f6d6387af1a..4cf4e1bb1b0 100644 --- a/projects/polkastarter/index.js +++ b/projects/polkastarter/index.js @@ -13,7 +13,7 @@ module.exports = { staking: staking(stakingContract, POLS), }, bsc: { - staking: staking(stakingContract_bsc, POLS_bsc, "bsc"), + staking: staking(stakingContract_bsc, POLS_bsc), }, methodology: "Counts liquidty on the staking only", }; diff --git a/projects/polycat-dex/index.js b/projects/polycat-dex/index.js index 8b582d2a7ac..902bb8a3a59 100644 --- a/projects/polycat-dex/index.js +++ b/projects/polycat-dex/index.js @@ -10,6 +10,6 @@ module.exports = { methodology: "TVL are from the pools created by the factory and TVL in vaults", polygon: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), - staking: staking(tankchef, paw, 'polygon'), + staking: staking(tankchef, paw), } } \ No newline at end of file diff --git a/projects/polycub/index.js b/projects/polycub/index.js index 0d54d871f54..8841b954b17 100644 --- a/projects/polycub/index.js +++ b/projects/polycub/index.js @@ -11,4 +11,4 @@ module.exports = yieldHelper({ nativeToken: POLYCUB_TOKEN, }) -module.exports.polygon.staking = staking('0x905E21f6C4CB1Ad789CeD61CD0734590a4542346', POLYCUB_TOKEN, 'polygon') \ No newline at end of file +module.exports.polygon.staking = staking('0x905E21f6C4CB1Ad789CeD61CD0734590a4542346', POLYCUB_TOKEN) \ No newline at end of file diff --git a/projects/ponytaswap/index.js b/projects/ponytaswap/index.js index 7a6770b4c0a..db5563c9160 100644 --- a/projects/ponytaswap/index.js +++ b/projects/ponytaswap/index.js @@ -15,6 +15,6 @@ module.exports = { useDefaultCoreAssets: true, factory: '0x1589DD24f11e1e49566fE99744E7487CbcAb2d43', }), - staking: staking(pool,contractAddr,"rpg") + staking: staking(pool,contractAddr) } } \ No newline at end of file diff --git a/projects/predictcoin/index.js b/projects/predictcoin/index.js index 219e18f207b..93fd85f5abf 100644 --- a/projects/predictcoin/index.js +++ b/projects/predictcoin/index.js @@ -16,7 +16,7 @@ module.exports = { misrepresentedTokens: true, bsc: { tvl: (async) => ({}), - staking: staking(farmContract, PRED, "bsc"), + staking: staking(farmContract, PRED), pool2: pool2s([farmContract], lpContracts, "bsc"), }, methodology: "Counts liquidty on the staking and Farming", diff --git a/projects/quartzdefi/index.js b/projects/quartzdefi/index.js index b9913df2ab7..ecb96cb1847 100644 --- a/projects/quartzdefi/index.js +++ b/projects/quartzdefi/index.js @@ -100,7 +100,7 @@ module.exports = { }, bsc: { tvl: async () => ({}), - staking: staking(aShareBoardroomAddress, ashareTokenAddress, "bsc"), + staking: staking(aShareBoardroomAddress, ashareTokenAddress), pool2: pool2Exports(ashareRewardPool, BSCLPTokens, "bsc", addr=> { addr = addr.toLowerCase(); if (addr === "0x36d53ed6380313f3823eed2f44dddb6d1d52f656") { diff --git a/projects/radiant/index.js b/projects/radiant/index.js index 00463ae298f..9307503d2bd 100644 --- a/projects/radiant/index.js +++ b/projects/radiant/index.js @@ -12,7 +12,7 @@ module.exports = { methodology, arbitrum: { ...aaveExports('arbitrum', '0x7BB843f889e3a0B307299c3B65e089bFfe9c0bE0'), - staking: staking(stakingContract, RADIANT, "arbitrum"), - pool2: pool2(stakingContractPool2, RADIANT_WETH_sushiLP, "arbitrum"), + staking: staking(stakingContract, RADIANT), + pool2: pool2(stakingContractPool2, RADIANT_WETH_sushiLP), }, }; diff --git a/projects/realperp/index.js b/projects/realperp/index.js index e05a410705e..9ac475a6123 100644 --- a/projects/realperp/index.js +++ b/projects/realperp/index.js @@ -7,7 +7,7 @@ const RAP = "0x9576ca6D15E7CcCe184fA7523085d21A554B1b52"; module.exports = { manta: { - staking: staking(Staking, RAP, "manta"), + staking: staking(Staking, RAP), tvl: gmxExports({ vault: Vault }), }, }; diff --git a/projects/retrodefi/index.js b/projects/retrodefi/index.js index 89f107c654a..7bd2d99279f 100644 --- a/projects/retrodefi/index.js +++ b/projects/retrodefi/index.js @@ -156,7 +156,7 @@ const bscStaking = async (chainBlocks) => { const polygonStaking = async (...params) => { for (const stakingContract of retroStakingsPolygon) { - return staking(stakingContract, pQBERT, "polygon")(...params); + return staking(stakingContract, pQBERT)(...params); } }; diff --git a/projects/ribbon/evm.js b/projects/ribbon/evm.js index c2260902c07..47a1a9f80fd 100644 --- a/projects/ribbon/evm.js +++ b/projects/ribbon/evm.js @@ -118,7 +118,7 @@ async function avaxTvl(_, _b, { avax: block }) { */ const RBN = "0x6123B0049F904d730dB3C36a31167D9d4121fA6B"; const veRBN = "0x19854C9A5fFa8116f48f984bDF946fB9CEa9B5f7"; -const veRBNStaking = staking(veRBN, RBN, "ethereum"); +const veRBNStaking = staking(veRBN, RBN); module.exports = { ethereum: { diff --git a/projects/sakeperp/index.js b/projects/sakeperp/index.js index 20d230a11c3..8c881b34d7d 100644 --- a/projects/sakeperp/index.js +++ b/projects/sakeperp/index.js @@ -100,15 +100,15 @@ async function bscTvl(timestamp, block, chainBlocks) { } async function ethStaking(timestamp, block) { - return await staking(ethSake, ethSakebar, block, "ethereum"); + return await staking(ethSake, ethSakebar, block); } async function bscStaking(timestamp, block, chainBlocks) { - return await staking(bscSake, bscSakebar, chainBlocks.bsc, "bsc"); + return await staking(bscSake, bscSakebar, chainBlocks.bsc); } async function perpVaultTvl(timestamp, block, chainBlocks) { - return await staking(bUsd, perpVault, chainBlocks.bsc, "bsc"); + return await staking(bUsd, perpVault, chainBlocks.bsc); } module.exports = { diff --git a/projects/scarabfinance/index.js b/projects/scarabfinance/index.js index b725133ddc3..efc020baa65 100644 --- a/projects/scarabfinance/index.js +++ b/projects/scarabfinance/index.js @@ -14,6 +14,6 @@ module.exports = { fantom: { tvl: async () => ({}), pool2: sumTokensExport({ owner: gscarabRewardPoolAddress, tokens: ftmLPs, }), - staking: staking(templeAddress, gscarabTokenAddress, "fantom"), + staking: staking(templeAddress, gscarabTokenAddress), }, }; \ No newline at end of file diff --git a/projects/scream/index.js b/projects/scream/index.js index a133a480501..7ad0fd5a1b4 100644 --- a/projects/scream/index.js +++ b/projects/scream/index.js @@ -21,7 +21,7 @@ module.exports = { ], 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", "fantom"), + staking: staking("0xe3d17c7e840ec140a7a51aca351a482231760824", "0xe0654C8e6fd4D733349ac7E09f6f23DA256bF475"), tvl: lending(false), borrowed: lending(true), } diff --git a/projects/sculptor-finance/index.js b/projects/sculptor-finance/index.js index 74757976b5b..ad62c2c1aec 100644 --- a/projects/sculptor-finance/index.js +++ b/projects/sculptor-finance/index.js @@ -26,7 +26,7 @@ module.exports = { bsc: { tvl: lending(false), borrowed: lending(true), - staking: staking(stakingContract, SCULPT, "bsc"), - pool2: pool2(stakingContractPool2, SCULPT_BNB, "bsc"), + staking: staking(stakingContract, SCULPT), + pool2: pool2(stakingContractPool2, SCULPT_BNB), }, }; diff --git a/projects/seedify/index.js b/projects/seedify/index.js index e5b9b2a91f4..c4f5bdc14d1 100644 --- a/projects/seedify/index.js +++ b/projects/seedify/index.js @@ -27,7 +27,7 @@ const stakingContracts = [ module.exports = { bsc: { tvl: () => ({}), - pool2: pool2(pool2Holder, pool2Token, "bsc"), + pool2: pool2(pool2Holder, pool2Token), staking: stakings(stakingContracts.map(i => i.address), SFUND, 'bsc') } }; \ No newline at end of file diff --git a/projects/solidly-v2/index.js b/projects/solidly-v2/index.js index 452a39f36e8..52d2dd20b45 100644 --- a/projects/solidly-v2/index.js +++ b/projects/solidly-v2/index.js @@ -4,7 +4,7 @@ const { staking } = require('../helper/staking'); module.exports = { ethereum: { tvl: uniTvlExport("0x777de5Fe8117cAAA7B44f396E93a401Cf5c9D4d6", "ethereum", undefined, undefined, { hasStablePools: true, useDefaultCoreAssets: false, }), - staking: staking("0x77730ed992D286c53F3A0838232c3957dAeaaF73", "0x777172D858dC1599914a1C4c6c9fC48c99a60990","ethereum"), + staking: staking("0x77730ed992D286c53F3A0838232c3957dAeaaF73", "0x777172D858dC1599914a1C4c6c9fC48c99a60990"), }, hallmarks:[ [1678410000, "USDC depeg (90% TVL in USDC-USDT)"], diff --git a/projects/soulswap/index.js b/projects/soulswap/index.js index 3b255525b2d..18b015606b5 100644 --- a/projects/soulswap/index.js +++ b/projects/soulswap/index.js @@ -24,12 +24,12 @@ const wl_avax = [ usdc_avax, soul_avax, wbtc_avax, weth_avax ] module.exports = { fantom:{ - staking: staking(farm_fantom, soul_fantom, 'fantom'), + staking: staking(farm_fantom, soul_fantom), tvl: calculateUsdSoulTvl(factory_fantom, 'fantom', wftm_fantom, wl_fantom, 'fantom'), borrowed: underworldLending('fantom', true) }, avax:{ - staking: staking(farm_avax, soul_avax, 'avax'), + staking: staking(farm_avax, soul_avax), tvl: calculateUsdSoulTvl(factory_avax, 'avax', wavax_avax, wl_avax, 'avax'), borrowed: underworldLending('avax', true) }, diff --git a/projects/spartacus/index.js b/projects/spartacus/index.js index 0495b35761e..8042057ed5d 100644 --- a/projects/spartacus/index.js +++ b/projects/spartacus/index.js @@ -3,6 +3,6 @@ const { staking } = require('../helper/staking') module.exports = { fantom: { tvl: () => 0, - staking: staking("0x9863056B4Bdb32160A70107a6797dD06B56E8137", "0x5602df4A94eB6C680190ACCFA2A475621E0ddBdc", "fantom") + staking: staking("0x9863056B4Bdb32160A70107a6797dD06B56E8137", "0x5602df4A94eB6C680190ACCFA2A475621E0ddBdc") } } \ No newline at end of file diff --git a/projects/spiritswap/index.js b/projects/spiritswap/index.js index 6928e634f0c..e92d2bde542 100644 --- a/projects/spiritswap/index.js +++ b/projects/spiritswap/index.js @@ -13,6 +13,6 @@ const ammTvl2 = getUniTVL({ chain, factory: factory2, useDefaultCoreAssets: fals module.exports = { fantom:{ tvl: sdk.util.sumChainTvls([ammTvl,ammTvl2]), - staking: staking("0x2fbff41a9efaeae77538bd63f1ea489494acdc08", "0x5cc61a78f164885776aa610fb0fe1257df78e59b", 'fantom') + staking: staking("0x2fbff41a9efaeae77538bd63f1ea489494acdc08", "0x5cc61a78f164885776aa610fb0fe1257df78e59b") }, } diff --git a/projects/stonedefi/index.js b/projects/stonedefi/index.js index 0dd3242770c..d1b3d6b6249 100644 --- a/projects/stonedefi/index.js +++ b/projects/stonedefi/index.js @@ -127,12 +127,12 @@ module.exports = { doublecounted: true, ethereum: { tvl: eth, - staking: staking("0xa72ad1293b253522fde41f1104aa432d7669b299", "ethereum"), + staking: staking("0xa72ad1293b253522fde41f1104aa432d7669b299"), pool2: pool2Exports(ethuniv2vault, [ethuniv2lp]) }, bsc: { tvl: bsc, - staking: staking("0xBd2861c0f43F6E8d571fcfA5a7C77D13d5695Ebf", "bsc"), + staking: staking("0xBd2861c0f43F6E8d571fcfA5a7C77D13d5695Ebf"), pool2: pool2s([bsccakevault, stbnbcakevault], [stbnbcakelp, bsccakelp], "bsc", addr=>{ addr = addr.toLowerCase(); if (addr === "0xd523a3c371c0c301794120c7ca9639f22c02839a") { @@ -146,7 +146,7 @@ module.exports = { }, polygon: { tvl: polygon, - staking: staking("0xA035eCd4824c4C13506D39d7041e8E0Ad156686D", "polygon"), + staking: staking("0xA035eCd4824c4C13506D39d7041e8E0Ad156686D"), pool2: pool2Exports(polyuniv2vault, [polyuniv2lp], "polygon", addr=>{ if (addr.toLowerCase() === "0xfb8a07e99450d1dc566da18a8f0e630addefdd3e") { return "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab" diff --git a/projects/sushiswap/historical.js b/projects/sushiswap/historical.js index a458e2f86a6..1c411e70c35 100644 --- a/projects/sushiswap/historical.js +++ b/projects/sushiswap/historical.js @@ -34,6 +34,6 @@ const subgraphChainTvls = Object.keys(subgraphs).reduce((obj, chain) => ({ const xSUSHI = "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" const SUSHI = ADDRESSES.ethereum.SUSHI -subgraphChainTvls.ethereum.staking = staking(xSUSHI, SUSHI, 'ethereum'); +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 index c6fe3f752df..4a4ea92d3f2 100644 --- a/projects/sushiswap/index.js +++ b/projects/sushiswap/index.js @@ -16,7 +16,7 @@ const SUSHI = ADDRESSES.ethereum.SUSHI module.exports = indexExports module.exports.misrepresentedTokens = true -module.exports.ethereum.staking = staking(xSUSHI, SUSHI, 'ethereum') +module.exports.ethereum.staking = staking(xSUSHI, SUSHI) // node test.js projects/sushiswap/index.js module.exports.boba_avax.tvl = () => ({}) // boba avax is sunset \ No newline at end of file diff --git a/projects/swapfish/index.js b/projects/swapfish/index.js index 4acd24c93c3..cea2a2b4ef5 100644 --- a/projects/swapfish/index.js +++ b/projects/swapfish/index.js @@ -9,11 +9,11 @@ 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, "arbitrum"), + staking: staking(MasterChefContract, FISH), }, bsc: { tvl: getUniTVL({ factory: '0x71539D09D3890195dDa87A6198B98B75211b72F3', useDefaultCoreAssets: true }), - staking: staking(MasterChefBscContract, FISH, "bsc"), + staking: staking(MasterChefBscContract, FISH), } }; diff --git a/projects/teddy/index.js b/projects/teddy/index.js index 769649c4a91..7cf2042a198 100644 --- a/projects/teddy/index.js +++ b/projects/teddy/index.js @@ -14,10 +14,10 @@ const TROVE_MANAGER_ADDRESS = "0xd22b04395705144Fd12AfFD854248427A2776194"; module.exports = { avax: { staking: sdk.util.sumChainTvls([ - staking(stakingContract, TEDDY, "avax"), - //staking(STABILITY_POOL_ADDRESS, TSD, "avax"), + staking(stakingContract, TEDDY), + //staking(STABILITY_POOL_ADDRESS, TSD), ]), - pool2: pool2(stakingPool2Contract, WAVAX_TSD_PGL, "avax"), + pool2: pool2(stakingPool2Contract, WAVAX_TSD_PGL), tvl: getLiquityTvl(TROVE_MANAGER_ADDRESS), }, methodology: diff --git a/projects/tendieswap/index.js b/projects/tendieswap/index.js index be6c8a943e9..e6fcbbf9355 100644 --- a/projects/tendieswap/index.js +++ b/projects/tendieswap/index.js @@ -11,7 +11,7 @@ module.exports = { useDefaultCoreAssets: true, factory: factoryBSC, }), - staking: staking(masterchef, tendie, "bsc") + 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/tenfinance/index.js b/projects/tenfinance/index.js index f0ae04afb6b..2144658edd2 100644 --- a/projects/tenfinance/index.js +++ b/projects/tenfinance/index.js @@ -15,4 +15,4 @@ module.exports = yieldHelper({ blacklistedTokens: [tenFi_PCS, tenfi], }) -module.exports.bsc.staking = staking(tenVault, tenfi, "bsc") \ No newline at end of file +module.exports.bsc.staking = staking(tenVault, tenfi) \ No newline at end of file diff --git a/projects/the-open-dao-sos/index.js b/projects/the-open-dao-sos/index.js index 9a0af21afe5..b113cd9c063 100644 --- a/projects/the-open-dao-sos/index.js +++ b/projects/the-open-dao-sos/index.js @@ -7,6 +7,6 @@ module.exports = { methodology: `TVL for TheOpenDAO consists of the staking of SOS into veSOS to get protocol fees.`, ethereum:{ tvl: () => ({}), - staking: staking(veSOS, SOS, "ethereum"), + staking: staking(veSOS, SOS), } } \ No newline at end of file diff --git a/projects/thegrandbanks/index.js b/projects/thegrandbanks/index.js index b925d55116a..aa0721fe91e 100644 --- a/projects/thegrandbanks/index.js +++ b/projects/thegrandbanks/index.js @@ -154,11 +154,11 @@ const moonriverTvl = async (timestamp, block, chainBlocks) => { module.exports = { misrepresentedTokens: true, bsc: { - staking: staking(GRANDBANKS_CONTRACT.bsc, GRAND.bsc, "bsc"), + staking: staking(GRANDBANKS_CONTRACT.bsc, GRAND.bsc), tvl: bscTvl, }, polygon: { - staking: staking(GRANDBANKS_CONTRACT.polygon, GRAND.polygon, "polygon"), + staking: staking(GRANDBANKS_CONTRACT.polygon, GRAND.polygon), tvl: polygonTvl, }, moonriver: { diff --git a/projects/thorfi/index.js b/projects/thorfi/index.js index da60df3f73f..1d8115278ad 100644 --- a/projects/thorfi/index.js +++ b/projects/thorfi/index.js @@ -6,7 +6,7 @@ const WAVAX_THOR_JLP = "0x95189f25b4609120F72783E883640216E92732DA"; module.exports = { misrepresentedTokens: true, avax: { - pool2: pool2(stakingPool2Contract, WAVAX_THOR_JLP, "avax"), + pool2: pool2(stakingPool2Contract, WAVAX_THOR_JLP), tvl: (async) => ({}), }, methodology: "Counts liquidty on pool2 only", diff --git a/projects/thorusfi/index.js b/projects/thorusfi/index.js index 11856a6cc33..a293ffea462 100644 --- a/projects/thorusfi/index.js +++ b/projects/thorusfi/index.js @@ -17,7 +17,7 @@ module.exports = { useDefaultCoreAssets: true, factory: factoryContract, }), - staking: staking(thorusMaster_avax, THO_avax, "avax"), + staking: staking(thorusMaster_avax, THO_avax), }, moonbeam: { tvl: getUniTVL({ diff --git a/projects/toreus/index.js b/projects/toreus/index.js index 8d7ed182408..9050af084a7 100644 --- a/projects/toreus/index.js +++ b/projects/toreus/index.js @@ -8,6 +8,6 @@ module.exports = { methodology, kava: { ...aaveExports("kava", "0xcCe311383b0f4A41c82D8d03a1f4214A3c8E70Bd"), - staking: staking(stakingContract, TOREUS, "kava"), + staking: staking(stakingContract, TOREUS), }, }; \ No newline at end of file diff --git a/projects/tornadocore/index.js b/projects/tornadocore/index.js index caa3d03a085..3c9c6a2c93f 100644 --- a/projects/tornadocore/index.js +++ b/projects/tornadocore/index.js @@ -37,7 +37,7 @@ module.exports = { ), }, polygon: { - staking: staking(vaultV1Contract_polygon, TCORE_polygon, "polygon"), + staking: staking(vaultV1Contract_polygon, TCORE_polygon), pool2: pool2( vaultV1Contract_polygon, WMATIC_TCORE_UNIV2_polygon, diff --git a/projects/toxicdeer/index.js b/projects/toxicdeer/index.js index 85470c1437a..6350fd1e3c5 100644 --- a/projects/toxicdeer/index.js +++ b/projects/toxicdeer/index.js @@ -45,7 +45,7 @@ async function calcPool2(masterchef, lps, block, chain) { } async function pool2(timestamp, block, chainBlocks) { - return await calcPool2(rewardPool, lps, chainBlocks.cronos, "cronos"); + return await calcPool2(rewardPool, lps, chainBlocks.cronos); } async function tvl(timestamp, block, chainBlocks) { let balances = {}; diff --git a/projects/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js index a8d73f0ba65..f57931d8a4e 100644 --- a/projects/traderjoe-lb-v2-1/index.js +++ b/projects/traderjoe-lb-v2-1/index.js @@ -37,4 +37,4 @@ Object.keys(factories).forEach(chain => { module.exports[chain] = { tvl } }) -module.exports.arbitrum.staking = staking("0x43646A8e839B2f2766392C1BF8f60F6e587B6960", "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07", "arbitrum") \ No newline at end of file +module.exports.arbitrum.staking = staking("0x43646A8e839B2f2766392C1BF8f60F6e587B6960", "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07") \ No newline at end of file diff --git a/projects/treasuredao/index.js b/projects/treasuredao/index.js index 830e48c95b2..bdbc6a5e9c4 100644 --- a/projects/treasuredao/index.js +++ b/projects/treasuredao/index.js @@ -11,8 +11,8 @@ module.exports = { misrepresentedTokens: true, arbitrum: { tvl: (async) => ({}), - staking: staking(stakingContract, MAGIC, "arbitrum"), - pool2: pool2(stakingPool2Contract, MAGIC_WETH_SLP, "arbitrum"), + staking: staking(stakingContract, MAGIC), + pool2: pool2(stakingPool2Contract, MAGIC_WETH_SLP), }, methodology: "Counts liquidty on the staking and pool2 only", }; diff --git a/projects/treasury/croblanc.js b/projects/treasury/croblanc.js index 0d61e2165bb..806a6efef58 100644 --- a/projects/treasury/croblanc.js +++ b/projects/treasury/croblanc.js @@ -5,6 +5,6 @@ const WCRO = "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23"; module.exports = { cronos: { - tvl: staking(treasury, WCRO, "cronos"), + tvl: staking(treasury, WCRO), }, }; diff --git a/projects/treasury/dnadollar.js b/projects/treasury/dnadollar.js index f18747a6b59..df5e44fad26 100644 --- a/projects/treasury/dnadollar.js +++ b/projects/treasury/dnadollar.js @@ -8,6 +8,6 @@ const DNA = "0xcc57f84637b441127f2f74905b9d99821b47b20c"; module.exports = { cronos: { tvl: () => ({}), - ownTokens: staking(treasuryContract, DNA, "cronos"), + ownTokens: staking(treasuryContract, DNA), }, }; diff --git a/projects/treasury/gale.js b/projects/treasury/gale.js index f3929898207..0abfb73fc91 100644 --- a/projects/treasury/gale.js +++ b/projects/treasury/gale.js @@ -13,6 +13,6 @@ const config = { module.exports = { bsc: { - tvl: staking(config.bsc.vaultContract, config.bsc.busd, "bsc"), + tvl: staking(config.bsc.vaultContract, config.bsc.busd), }, }; diff --git a/projects/treasury/oceanus.js b/projects/treasury/oceanus.js index fad7b8de8a3..207db1ba575 100644 --- a/projects/treasury/oceanus.js +++ b/projects/treasury/oceanus.js @@ -7,6 +7,6 @@ const SEA = "0x41607272ce6f2a42732ae382f00f8f9ce68d78f3"; module.exports = { metis: { tvl: (async) => ({}), - ownTokens: staking(treasuryContract, SEA, "metis"), + ownTokens: staking(treasuryContract, SEA), }, }; diff --git a/projects/trustednode/index.js b/projects/trustednode/index.js index 1a3b7c544ee..d779537e75e 100644 --- a/projects/trustednode/index.js +++ b/projects/trustednode/index.js @@ -4,10 +4,10 @@ const { pool2 } = require('../helper/pool2') module.exports = { bsc: { tvl: () => ({}), - pool2: pool2('0x44dC7FE8e51076De1B9f863138107148b441853C', '0x562C0c707984D40b98cCba889C6847DE274E5d57', 'bsc'), - staking: staking('0x98386F210af731ECbeE7cbbA12C47A8E65bC8856', '0x7f12a37b6921ffac11fab16338b3ae67ee0c462b', 'bsc'), + pool2: pool2('0x44dC7FE8e51076De1B9f863138107148b441853C', '0x562C0c707984D40b98cCba889C6847DE274E5d57'), + staking: staking('0x98386F210af731ECbeE7cbbA12C47A8E65bC8856', '0x7f12a37b6921ffac11fab16338b3ae67ee0c462b'), }, fantom: { - pool2: pool2('0xe056aba40572f64d98a8c8e717c34e96056c4aad', '0x9206444A1820c508FbA5bF815713451Ee540B3c8', 'fantom'), + pool2: pool2('0xe056aba40572f64d98a8c8e717c34e96056c4aad', '0x9206444A1820c508FbA5bF815713451Ee540B3c8'), }, } \ No newline at end of file diff --git a/projects/ubi-poh.js b/projects/ubi-poh.js index 77647cebd45..518d5b5eafa 100644 --- a/projects/ubi-poh.js +++ b/projects/ubi-poh.js @@ -12,7 +12,7 @@ const stakingContracts = [ module.exports = { ethereum: { - pool2: staking(stakingContracts, lpTokens, '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/ultra/index.js b/projects/ultra/index.js index 72db331f4fc..0c953a4db9b 100644 --- a/projects/ultra/index.js +++ b/projects/ultra/index.js @@ -8,8 +8,8 @@ const ULTRA = "0x0b3f42481c228f70756dbfa0309d3ddc2a5e0f6a"; module.exports = { misrepresentedTokens: true, bsc: { - staking: staking(stakingContract, ULTRA, "bsc"), - pool2: pool2(stakingContract, ULTRA_WBNB_CakeLP, "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/umbrella/index.js b/projects/umbrella/index.js index 71d4a7482a8..7b6435453dd 100644 --- a/projects/umbrella/index.js +++ b/projects/umbrella/index.js @@ -17,7 +17,7 @@ module.exports = { pool2: staking(pool2StakingContract, UMB_WETH_UNIV2), }, bsc: { - staking: staking(stakingContract_bsc, UMB_bsc, "bsc"), + staking: staking(stakingContract_bsc, UMB_bsc), }, methodology: "Counts liquidty on the staking and pool2 only", }; diff --git a/projects/unilend/index.js b/projects/unilend/index.js index a5a6f89a867..730ff89f26a 100644 --- a/projects/unilend/index.js +++ b/projects/unilend/index.js @@ -13,7 +13,7 @@ module.exports = { polygon: tvl, bsc: { tvl, - staking: staking(UnilendContract,"0x2645d5f59D952ef2317C8e0AaA5A61c392cCd44d","bsc") + staking: staking(UnilendContract,"0x2645d5f59D952ef2317C8e0AaA5A61c392cCd44d") }, methodology: "We count liquidity on the Pools through UnilendFlashLoansCore Contract", diff --git a/projects/unipower/index.js b/projects/unipower/index.js index 7d582b450f3..d38aa9feab1 100644 --- a/projects/unipower/index.js +++ b/projects/unipower/index.js @@ -46,8 +46,8 @@ module.exports = { }, polygon: { tvl: async () => ({}), - staking: staking(stakingContract, POWER_polygon, "polygon"), - pool2: staking(stakingContract, POWER_USDC_UNIV2, "polygon"), + 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/valas/index.js b/projects/valas/index.js index de45d326d24..ea63ea9d77a 100644 --- a/projects/valas/index.js +++ b/projects/valas/index.js @@ -26,7 +26,7 @@ module.exports = { bsc: { tvl: lending(false), borrowed: lending(true), - staking: staking(stakingContract, VALAS, "bsc"), - pool2: pool2(stakingContractPool2, VALAS_BNB_pLP, "bsc"), + staking: staking(stakingContract, VALAS), + pool2: pool2(stakingContractPool2, VALAS_BNB_pLP), }, }; diff --git a/projects/vaulty/index.js b/projects/vaulty/index.js index d224cb82be1..ce132374008 100644 --- a/projects/vaulty/index.js +++ b/projects/vaulty/index.js @@ -18,7 +18,7 @@ module.exports = { misrepresentedTokens: true, methodology: 'TVL counts the tokens deposited to all vaults', bsc:{ - staking: staking(stakingContract, vlty, "bsc"), + staking: staking(stakingContract, vlty), tvl } }; \ No newline at end of file diff --git a/projects/velaspad.js b/projects/velaspad.js index 09768dde087..6406883cc23 100644 --- a/projects/velaspad.js +++ b/projects/velaspad.js @@ -3,6 +3,6 @@ const { staking } = require('./helper/staking') module.exports = { velas: { tvl: async _ => ({}), - staking: staking('0xdb0422A1C78C2064Ce5Af1B75412294F5B6D7Edf', '0xa065e0858417dfc7abc6f2bd4d0185332475c180', 'velas') + staking: staking('0xdb0422A1C78C2064Ce5Af1B75412294F5B6D7Edf', '0xa065e0858417dfc7abc6f2bd4d0185332475c180') } } \ No newline at end of file diff --git a/projects/voyager/index.js b/projects/voyager/index.js index 3eb1e188c3f..7b00d35f7e5 100644 --- a/projects/voyager/index.js +++ b/projects/voyager/index.js @@ -6,7 +6,7 @@ const stakingContract = "0x8692e782ea478623f3342e0fb3936f6530c5d54f"; module.exports = { ethereum: { tvl: () => ({}), - staking: staking(stakingContract, VGX, "ethereum"), + staking: staking(stakingContract, VGX), }, methodology: "Voyager token VGX can be staked", }; diff --git a/projects/wannaswap/index.js b/projects/wannaswap/index.js index 24b1424d444..5ecec74eefc 100644 --- a/projects/wannaswap/index.js +++ b/projects/wannaswap/index.js @@ -4,7 +4,7 @@ const { staking, stakingPricedLP, stakingUnknownPricedLP } = require('../helper/ module.exports = { misrepresentedTokens: true, aurora: { - staking: staking("0x5205c30bf2E37494F8cF77D2c19C6BA4d2778B9B", "0x7faA64Faf54750a2E3eE621166635fEAF406Ab22", "aurora"), // single staking + staking: staking("0x5205c30bf2E37494F8cF77D2c19C6BA4d2778B9B", "0x7faA64Faf54750a2E3eE621166635fEAF406Ab22"), // single staking tvl: getUniTVL({ factory: '0x7928D4FeA7b2c90C732c10aFF59cf403f0C38246', useDefaultCoreAssets: true }), }, }; diff --git a/projects/wardenswap/index.js b/projects/wardenswap/index.js index 32557f48fb0..b185c4a9f35 100644 --- a/projects/wardenswap/index.js +++ b/projects/wardenswap/index.js @@ -10,7 +10,7 @@ module.exports = { factory: '0x3657952d7bA5A0A4799809b5B6fdfF9ec5B46293', useDefaultCoreAssets: true, }), - staking: staking(masterchefAddress, wardenTokenAddress, "bsc") + staking: staking(masterchefAddress, wardenTokenAddress) }, hallmarks:[ [1629910800, `Announcement 2 week left before pool's rewards end`], diff --git a/projects/waterfall-wtf-finance/index.js b/projects/waterfall-wtf-finance/index.js index 5bf6ca2b8f9..991debacfe6 100644 --- a/projects/waterfall-wtf-finance/index.js +++ b/projects/waterfall-wtf-finance/index.js @@ -15,7 +15,7 @@ const pancakeLPs = [ module.exports = { bsc: { tvl: async () => ({}), - staking: staking(masonry, shares, "bsc"), + staking: staking(masonry, shares), pool2: pool2Exports(shareRewardPool, pancakeLPs, "bsc", addr=>`bsc:${addr}`) } } \ No newline at end of file diff --git a/projects/wtfdex/index.js b/projects/wtfdex/index.js index 49fc8bb614c..5c98c25c784 100644 --- a/projects/wtfdex/index.js +++ b/projects/wtfdex/index.js @@ -8,6 +8,6 @@ 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, "arbitrum"), + staking: staking(MasterChefContract, WTFX), } }; diff --git a/projects/x-xyz/index.js b/projects/x-xyz/index.js index 879d9294467..aae9ee130da 100644 --- a/projects/x-xyz/index.js +++ b/projects/x-xyz/index.js @@ -7,6 +7,6 @@ module.exports = { methodology: `TVL for X.xyz consists of the staking of X into veX.`, ethereum:{ tvl: () => ({}), - staking: staking(veX, X, "ethereum"), + staking: staking(veX, X), } } \ No newline at end of file diff --git a/projects/x2y2/index.js b/projects/x2y2/index.js index 8765fab0062..af2af0c0b81 100644 --- a/projects/x2y2/index.js +++ b/projects/x2y2/index.js @@ -19,6 +19,6 @@ module.exports = { methodology: `TVL for X2Y2 consists of deposited NFTs`, ethereum:{ tvl, - staking: staking(X2Y2_staking, X2Y2, "ethereum"), + staking: staking(X2Y2_staking, X2Y2), } } \ No newline at end of file diff --git a/projects/zenithswap/index.js b/projects/zenithswap/index.js index a41e9aec7e6..4e7ea80d454 100644 --- a/projects/zenithswap/index.js +++ b/projects/zenithswap/index.js @@ -10,6 +10,6 @@ module.exports = { "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, 'arbitrum') + staking: staking( MASTER_CHEF, ZSP_TOKEN) }, }; \ No newline at end of file diff --git a/projects/zeroswap/index.js b/projects/zeroswap/index.js index 19c6a6460da..17163c26daa 100644 --- a/projects/zeroswap/index.js +++ b/projects/zeroswap/index.js @@ -16,13 +16,13 @@ module.exports = { staking: staking(ETH_STAKING_ADDRESS, ETH_TOKEN_ADDRESS), }, bsc: { - staking: staking(BSC_STAKING_ADDRESS, BSC_TOKEN_ADDRESS, 'bsc'), + staking: staking(BSC_STAKING_ADDRESS, BSC_TOKEN_ADDRESS), }, polygon: { - staking: staking(POLY_STAKING_ADDRESS, POLY_TOKEN_ADDRESS, 'polygon') + staking: staking(POLY_STAKING_ADDRESS, POLY_TOKEN_ADDRESS) }, avax: { - staking: staking(AVAX_STAKING_ADDRESS, AVAX_TOKEN_ADDRESS, 'avax') + staking: staking(AVAX_STAKING_ADDRESS, AVAX_TOKEN_ADDRESS) } }; diff --git a/projects/zkdx-finance/index.js b/projects/zkdx-finance/index.js index 961dda96225..8e2cb1eaf12 100644 --- a/projects/zkdx-finance/index.js +++ b/projects/zkdx-finance/index.js @@ -7,6 +7,6 @@ const zkZKE = "0x7b3e1236c39ddD2e61cF6Da6ac6D11193238ccB0"; module.exports = { era: { tvl: gmxExports({ vault: '0xBC918775C20959332c503d51a9251C2405d9cF88' }), - staking: staking(zkStaking, zkZKE, "era"), + staking: staking(zkStaking, zkZKE), }, }; \ No newline at end of file From 798ae1a7cfd8d732eb910a9c6f0d292dde105db5 Mon Sep 17 00:00:00 2001 From: Arthur <166661318+shibnova@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:00:48 +0300 Subject: [PATCH 1203/2004] add ShibaNova tvl adapter (#9809) --- projects/shibanova/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/shibanova/index.js diff --git a/projects/shibanova/index.js b/projects/shibanova/index.js new file mode 100644 index 00000000000..63f30751be1 --- /dev/null +++ b/projects/shibanova/index.js @@ -0,0 +1,6 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport( + "bsc", + "0x251912dE998ec91DFDf67EfBe032d6f4aB5EC485" +); From cb1482aafd3b8bd4d3c9122e0c4ae148ba189bc7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 14:31:48 +0200 Subject: [PATCH 1204/2004] track spiritswap v3 --- projects/spiritswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/spiritswap-v3/index.js diff --git a/projects/spiritswap-v3/index.js b/projects/spiritswap-v3/index.js new file mode 100644 index 00000000000..5b5b4947982 --- /dev/null +++ b/projects/spiritswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + fantom: { factory: '0xb860200bd68dc39ceafd6ebb82883f189f4cda76', fromBlock: 78654346, isAlgebra: true, } +}) From 382dad1099259a283efe1f43c6b7f15966d03ae2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:11:02 +0200 Subject: [PATCH 1205/2004] white: remove staking upon request --- projects/white-protocol/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/white-protocol/index.js b/projects/white-protocol/index.js index a692b5afc2a..d7cc3a94d49 100644 --- a/projects/white-protocol/index.js +++ b/projects/white-protocol/index.js @@ -9,7 +9,6 @@ module.exports = { misrepresentedTokens: true, op_bnb: { tvl: sumTokensExport({ owner: stakingContractAddress, tokens: [nullAddress]}), - staking: sumTokensExport({ owner: stakingContractAddress, tokens: [whiteTokenAddress],lps: [LP]}), pool2: sumTokensExport({ owner: '0xdB9320dDE030cEF08C615E7547cee98848Bd297e', tokens: [LP]}), }, }; \ No newline at end of file From 609176863ed23c9282a81054b3646529f423f913 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:12:08 +0200 Subject: [PATCH 1206/2004] Update White Protocol TVL calculation --- projects/white-protocol/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/white-protocol/index.js b/projects/white-protocol/index.js index d7cc3a94d49..a4260dc34ae 100644 --- a/projects/white-protocol/index.js +++ b/projects/white-protocol/index.js @@ -8,7 +8,7 @@ const LP = '0x177f0bcEF458cb379581A9B8e67E02abfe4a3d08' module.exports = { misrepresentedTokens: true, op_bnb: { - tvl: sumTokensExport({ owner: stakingContractAddress, tokens: [nullAddress]}), - pool2: sumTokensExport({ owner: '0xdB9320dDE030cEF08C615E7547cee98848Bd297e', tokens: [LP]}), + tvl: sumTokensExport({ owner: stakingContractAddress, tokens: [nullAddress] }), + pool2: sumTokensExport({ owner: '0xdB9320dDE030cEF08C615E7547cee98848Bd297e', tokens: [LP], useDefaultCoreAssets: true }), }, }; \ No newline at end of file From 96aaefeb0a80b67a6b2323916452ccee9e71fa9d Mon Sep 17 00:00:00 2001 From: Joey <38412153+JoJo-Joker@users.noreply.github.com> Date: Fri, 12 Apr 2024 00:40:33 +0800 Subject: [PATCH 1207/2004] add core's zeepr (#9812) * Update tokenMapping.js * Update index.js --- projects/helper/tokenMapping.js | 3 +++ projects/zeepr/index.js | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6142a443fdc..343c5c0c3c6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -50,6 +50,9 @@ const fixBalancesTokens = { arbitrum: { '0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13': { coingeckoId: 'zeepr', decimals: 18, }, }, + core: { + '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/zeepr/index.js b/projects/zeepr/index.js index dcbe45767b9..388fdb3bb4a 100644 --- a/projects/zeepr/index.js +++ b/projects/zeepr/index.js @@ -5,4 +5,8 @@ module.exports = { tvl: () => ({}), staking: staking("0xbb0390cf2586e9b0a4faadf720ae188d140e9fd5", "0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13"), }, + core: { + tvl: () => ({}), + staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", "0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223"), + }, } From 826351427d77edd11861d405279c6302444b344c Mon Sep 17 00:00:00 2001 From: pthor11 <33623944+pthor11@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:46:20 +0700 Subject: [PATCH 1208/2004] adding new staking pool (#9816) --- projects/metastrike/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/metastrike/index.js b/projects/metastrike/index.js index 66b307cb59a..0983d3f4bb9 100644 --- a/projects/metastrike/index.js +++ b/projects/metastrike/index.js @@ -17,11 +17,12 @@ 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], MTS_TOKEN, 'bsc'), + staking: stakings([StakingV1, StakingV2Pool1, StakingV2Pool2, StakingV2Pool3, StakingV2Pool4, StakingV2Pool5, StakingV2Pool6], MTS_TOKEN, 'bsc'), vesting: stakings([VestingCEXV1, VestingCEXV2, VestingAdvisors, VestingTeam, VestingMarketing], MTS_TOKEN, 'bsc'), tvl: () => ({}), } From 16a0fcd4dfffce836bc2cceac2b8098a5b0222bc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:48:04 +0200 Subject: [PATCH 1209/2004] remove redundant param --- projects/adamantfinance/index.js | 4 ++-- projects/apollox/index.js | 2 +- projects/axl-inu/index.js | 2 +- projects/based-finance/basedV2.js | 2 +- projects/billion-happiness/index.js | 2 +- projects/blitzlabs.js | 4 ++-- projects/bmcc/index.js | 2 +- projects/btcst/index.js | 2 +- projects/candle/index.js | 2 +- projects/candycity/index.js | 4 ++-- projects/championfinance/index.js | 2 +- projects/croissant/index.js | 2 +- projects/elephantmoney/index.js | 2 +- projects/ethichub/index.js | 2 +- projects/farmersonly/index.js | 2 +- projects/farmhero/index.js | 6 +++--- projects/herafinance/index.js | 2 +- projects/impossiblefi/index.js | 2 +- projects/kyotoswap/index.js | 2 +- projects/metastrike/index.js | 4 ++-- projects/minto/index.js | 4 ++-- projects/mojitoswap/index.js | 2 +- projects/naos/index.js | 2 +- projects/nomiswap/index.js | 2 +- projects/octane/index.js | 2 +- projects/paraswap.js | 4 ++-- projects/peardao/index.js | 2 +- projects/positionexchange/index.js | 2 +- projects/purefi/index.js | 4 ++-- projects/retreeb.js | 2 +- projects/rfox/stakings.js | 4 ++-- projects/rubic/index.js | 2 +- projects/sashimidao/index.js | 2 +- projects/seedify/index.js | 2 +- projects/sushiswap-v3/index.js | 3 ++- projects/sushiswap/api.js | 15 ++++++--------- projects/the-parallel/index.js | 2 +- projects/tornadocore/index.js | 2 +- projects/treasury/benqi.js | 2 +- projects/umamifinance/index.js | 2 +- projects/uwulend/index.js | 2 +- projects/wasabix/index.js | 4 ++-- projects/wonderland/index.js | 2 +- projects/xrune/index.js | 2 +- 44 files changed, 61 insertions(+), 63 deletions(-) diff --git a/projects/adamantfinance/index.js b/projects/adamantfinance/index.js index a99662b26a2..b3ad679c36f 100644 --- a/projects/adamantfinance/index.js +++ b/projects/adamantfinance/index.js @@ -128,12 +128,12 @@ const tvl = async (timestamp, chain, chainBlocks, lpAddressesIgnored) => { module.exports = { polygon: { - staking: stakings(stakingContracts_polygon, ADDY, "polygon"), + staking: stakings(stakingContracts_polygon, ADDY), pool2: pool2Polygon, tvl: polygonTvl, }, arbitrum: { - staking: stakings(stakingContracts_Arbitrum, ARBY, "arbitrum"), + staking: stakings(stakingContracts_Arbitrum, ARBY), tvl: arbitrumTvl, }, cronos: { diff --git a/projects/apollox/index.js b/projects/apollox/index.js index 022e9a24d04..f08b77e3ba4 100644 --- a/projects/apollox/index.js +++ b/projects/apollox/index.js @@ -68,7 +68,7 @@ module.exports = { start: 1640100600, // 12/21/2021 @ 15:30pm (UTC) bsc: { tvl: bscTVL, - staking: stakings([stakingContract_APX, daoContract], TOKEN_APX, "bsc"), + staking: stakings([stakingContract_APX, daoContract], TOKEN_APX), pool2: pool2s([stakingContract, stakingContractV2], [poolContract, poolContractV2], "bsc"), }, ethereum: { diff --git a/projects/axl-inu/index.js b/projects/axl-inu/index.js index 6f2b13427cf..86528e7641f 100644 --- a/projects/axl-inu/index.js +++ b/projects/axl-inu/index.js @@ -8,7 +8,7 @@ const AXL = "0x25b24B3c47918b7962B3e49C4F468367F73CC0E0"; module.exports = { methodology: 'TVL only counts liquidity in the staking pools.', bsc: { - staking: stakings(stakingContractsBSC, AXL, "bsc"), + staking: stakings(stakingContractsBSC, AXL), tvl: (async) => ({}), }, ethereum: { diff --git a/projects/based-finance/basedV2.js b/projects/based-finance/basedV2.js index 5b4b8b2f73d..87b3936b1ed 100644 --- a/projects/based-finance/basedV2.js +++ b/projects/based-finance/basedV2.js @@ -27,6 +27,6 @@ module.exports = { fantom: { tvl: async () => ({}), treasury, - staking: stakings([BoardroomV2, shortNodes, mediumNodes, longNodes, ], smelt, "fantom"), + staking: stakings([BoardroomV2, shortNodes, mediumNodes, longNodes, ], smelt), }, }; \ No newline at end of file diff --git a/projects/billion-happiness/index.js b/projects/billion-happiness/index.js index dca3f3499d8..ef176e2555e 100644 --- a/projects/billion-happiness/index.js +++ b/projects/billion-happiness/index.js @@ -32,7 +32,7 @@ module.exports = { "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, 'bsc'), + staking: stakings(stakingPools, bhcToken), pool2: staking(masterchef, pool2LP), }, ethpow: { diff --git a/projects/blitzlabs.js b/projects/blitzlabs.js index 6397396b9a1..eab37bc2dc3 100644 --- a/projects/blitzlabs.js +++ b/projects/blitzlabs.js @@ -14,8 +14,8 @@ const BLITZ = "0xF376807DcdbAa0d7FA86E7c9EAcC58d11ad710E4"; module.exports = { misrepresentedTokens: true, bsc: { - staking: stakings(singleStakingContracts, BLITZ, 'bsc'), - pool2: stakings(LPStakingContracts, BUSD_BLITZ_CAKELP, 'bsc'), + staking: stakings(singleStakingContracts, BLITZ), + pool2: stakings(LPStakingContracts, BUSD_BLITZ_CAKELP), tvl: async () => ({}), }, methodology: "Counts liquidty on the staking and pool2s only", diff --git a/projects/bmcc/index.js b/projects/bmcc/index.js index 7cdd0664ed3..19bbc649f5c 100644 --- a/projects/bmcc/index.js +++ b/projects/bmcc/index.js @@ -32,7 +32,7 @@ module.exports = { misrepresentedTokens: true, bsc: { tvl: async () => ({}), - staking: stakings(stakingContracts, token, "bsc"), + staking: stakings(stakingContracts, token), pool2: pool2s(lockedContracts, bmccLP, "bsc"), }, methodology: "Counts liquidty on the staking and pool2s", diff --git a/projects/btcst/index.js b/projects/btcst/index.js index f533d4bdf92..19563fa439c 100644 --- a/projects/btcst/index.js +++ b/projects/btcst/index.js @@ -51,7 +51,7 @@ async function bscTvl(chainBlocks) { module.exports = { misrepresentedTokens: true, bsc: { - staking: stakings(vaultContracts, BTCST, "bsc"), + staking: stakings(vaultContracts, BTCST), tvl: bscTvl, }, methodology: "Counts liquidty on all the Vaults through their Contracts", diff --git a/projects/candle/index.js b/projects/candle/index.js index 6c5dc5017de..c969c696b6a 100644 --- a/projects/candle/index.js +++ b/projects/candle/index.js @@ -19,7 +19,7 @@ module.exports = { tvl: () => ({}), }, // candle: { - // staking: stakings(stakingContracts, CNDL, 'candle'), + // staking: stakings(stakingContracts, CNDL), // pool2: pool2s(stakingContracts, [USDC_CNDL_UNIV2], 'candle'), // tvl: () => ({}), // }, diff --git a/projects/candycity/index.js b/projects/candycity/index.js index a9c913a1c33..5b3ee12eee9 100644 --- a/projects/candycity/index.js +++ b/projects/candycity/index.js @@ -31,7 +31,7 @@ const VESTING_CONTRACTS = [ async function fetchTvl(timestamp, ethBlock, chainBlocks) { let cmc_response = await get(CMC_API_URL) const candyPrice = cmc_response.data.marketPairs[0].price - const balances = await stakings(STAKING_CONTRACTS, CANDY_TOKEN, "cronos")(timestamp, ethBlock, chainBlocks) + const balances = await stakings(STAKING_CONTRACTS, CANDY_TOKEN)(timestamp, ethBlock, chainBlocks) const candyBalances = Object.values(balances)[0] return toUSDTBalances(BigNumber(candyBalances).times(BigNumber(candyPrice)).div(1e18)); @@ -40,7 +40,7 @@ async function fetchTvl(timestamp, ethBlock, chainBlocks) { async function fetchVesting(timestamp, ethBlock, chainBlocks) { let cmc_response = await get(CMC_API_URL) const candyPrice = cmc_response.data.marketPairs[0].price - const balances = await stakings(VESTING_CONTRACTS, CANDY_TOKEN, "cronos")(timestamp, ethBlock, chainBlocks) + const balances = await stakings(VESTING_CONTRACTS, CANDY_TOKEN)(timestamp, ethBlock, chainBlocks) const candyBalances = Object.values(balances)[0] return toUSDTBalances(BigNumber(candyBalances).times(BigNumber(candyPrice)).div(1e18)); diff --git a/projects/championfinance/index.js b/projects/championfinance/index.js index d2e64289a7f..07724930823 100644 --- a/projects/championfinance/index.js +++ b/projects/championfinance/index.js @@ -59,6 +59,6 @@ module.exports = { avax: { tvl: tvl, pool2: pool2, - staking: stakings(boardroomAddress, chamTokenAddress, "avax",) + staking: stakings(boardroomAddress, chamTokenAddress) } }; diff --git a/projects/croissant/index.js b/projects/croissant/index.js index 6560f0873dc..2224a6f358a 100644 --- a/projects/croissant/index.js +++ b/projects/croissant/index.js @@ -7,7 +7,7 @@ const croi_mmf_lp = "0xde991150329dbe53389db41db459cae3ff220bac"; module.exports = { misrepresentedTokens: true, cronos: { - staking: stakings([masterchef], croissant, 'cronos'), + staking: stakings([masterchef], croissant), pool2: pool2s([masterchef], [croi_mmf_lp], 'cronos'), tvl: () => ({}) }, diff --git a/projects/elephantmoney/index.js b/projects/elephantmoney/index.js index 05714843ec0..fe12359108a 100644 --- a/projects/elephantmoney/index.js +++ b/projects/elephantmoney/index.js @@ -29,6 +29,6 @@ module.exports = { bsc: { pool2: pool2([contracts.TRUNK, contracts.ELEPHANT], LPs), tvl: tvl, - staking: stakings([contracts.staking], contracts.ELEPHANT, 'bsc') + staking: stakings([contracts.staking], contracts.ELEPHANT) } }; \ No newline at end of file diff --git a/projects/ethichub/index.js b/projects/ethichub/index.js index 993becbc851..6791c5d367b 100644 --- a/projects/ethichub/index.js +++ b/projects/ethichub/index.js @@ -23,7 +23,7 @@ module.exports = { }, celo: { tvl: () => ({}), - staking: stakings([STAKED_ETHIX_CELO], ETHIX_TOKEN_CELO, 'celo') + staking: stakings([STAKED_ETHIX_CELO], ETHIX_TOKEN_CELO) }, hallmarks:[ [1608640694, "Ethix launch"], diff --git a/projects/farmersonly/index.js b/projects/farmersonly/index.js index 1d2c0420c42..a9db1c11086 100644 --- a/projects/farmersonly/index.js +++ b/projects/farmersonly/index.js @@ -71,6 +71,6 @@ const vaultTvl = async (_, _b, { [chain]: block }) => { module.exports = { harmony: { tvl: sdk.util.sumChainTvls([vaultTvl, dexTVL]), - staking: stakings(['0x15e04418d328c39bA747690F6DaE9Bbf548CD358', '0xA68E643e1942fA8635776b718F6EeD5cEF2a3F15',], '0x0159ed2e06ddcd46a25e74eb8e159ce666b28687', 'harmony') + staking: stakings(['0x15e04418d328c39bA747690F6DaE9Bbf548CD358', '0xA68E643e1942fA8635776b718F6EeD5cEF2a3F15',], '0x0159ed2e06ddcd46a25e74eb8e159ce666b28687') } } \ No newline at end of file diff --git a/projects/farmhero/index.js b/projects/farmhero/index.js index 9a83e7a4abc..0a73a6381ab 100644 --- a/projects/farmhero/index.js +++ b/projects/farmhero/index.js @@ -202,17 +202,17 @@ module.exports = { misrepresentedTokens: true, bsc: { tvl: bscTvl, - staking: stakings(stakingContractBsc, HERO, "bsc"), + staking: stakings(stakingContractBsc, HERO), pool2: pool2s(pool2StratsBsc, excludePool2Bsc, "bsc"), }, polygon: { tvl: polygonTvl, - staking: stakings(stakingContractPolygon, HONOR, "polygon"), + staking: stakings(stakingContractPolygon, HONOR), pool2: pool2s(pool2StratsPolygon, excludePool2Polygon, "polygon"), }, okexchain: { tvl: okexTvl, - staking: stakings(stakingContractOkex, GLORY, "okexchain"), + staking: stakings(stakingContractOkex, GLORY), pool2: pool2s(pool2StratsOkex, excludePool2Okex, "okexchain"), }, methodology: diff --git a/projects/herafinance/index.js b/projects/herafinance/index.js index 4a52e1567c6..79d2196a44d 100644 --- a/projects/herafinance/index.js +++ b/projects/herafinance/index.js @@ -13,7 +13,7 @@ const HERA_TOKEN = "0x6F05709bc91Bad933346F9E159f0D3FdBc2c9DCE"; module.exports = { metis: { - staking: stakings(stakingContracts, HERA_TOKEN, 'metis'), + staking: stakings(stakingContracts, HERA_TOKEN), tvl: () => ({}), }, }; diff --git a/projects/impossiblefi/index.js b/projects/impossiblefi/index.js index 5714025be8c..f2e97195491 100644 --- a/projects/impossiblefi/index.js +++ b/projects/impossiblefi/index.js @@ -37,4 +37,4 @@ Object.keys(config).forEach(chain => { } }) -module.exports.bsc.staking = stakings(stakingAddresses, idia, 'bsc') +module.exports.bsc.staking = stakings(stakingAddresses, idia) diff --git a/projects/kyotoswap/index.js b/projects/kyotoswap/index.js index b88ecd6a337..9e449835eef 100644 --- a/projects/kyotoswap/index.js +++ b/projects/kyotoswap/index.js @@ -14,6 +14,6 @@ module.exports = { factory: FACTORY, useDefaultCoreAssets: true, }), - staking: stakings([LOCKER], KSWAP, "bsc"), + staking: stakings([LOCKER], KSWAP), }, }; diff --git a/projects/metastrike/index.js b/projects/metastrike/index.js index 0983d3f4bb9..7c897e16ff9 100644 --- a/projects/metastrike/index.js +++ b/projects/metastrike/index.js @@ -22,8 +22,8 @@ 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, 'bsc'), - vesting: stakings([VestingCEXV1, VestingCEXV2, VestingAdvisors, VestingTeam, VestingMarketing], MTS_TOKEN, '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/minto/index.js b/projects/minto/index.js index a425e25ad00..c9311e75027 100644 --- a/projects/minto/index.js +++ b/projects/minto/index.js @@ -9,10 +9,10 @@ const stackingContracts = [ module.exports = { bsc: { - staking: stakings(stackingContracts, minto, 'bsc') + staking: stakings(stackingContracts, minto) }, heco: { tvl: () => ({}), - staking: stakings(stackingContracts, hminto, 'heco') + staking: stakings(stackingContracts, hminto) } } diff --git a/projects/mojitoswap/index.js b/projects/mojitoswap/index.js index f233878bb42..d8a21cd9016 100644 --- a/projects/mojitoswap/index.js +++ b/projects/mojitoswap/index.js @@ -11,7 +11,7 @@ module.exports = { "We count liquidity and staking on the dexes, pulling data from subgraphs", kcc: { tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x79855a03426e15ad120df77efa623af87bd54ef3', }), - staking: stakings([masterchefAddress, masterchefV2Address], mjtAddress, 'kcc'), + staking: stakings([masterchefAddress, masterchefV2Address], mjtAddress), }, start: 3000000, }; diff --git a/projects/naos/index.js b/projects/naos/index.js index bab9b3c7351..321ebebf4d8 100644 --- a/projects/naos/index.js +++ b/projects/naos/index.js @@ -173,7 +173,7 @@ module.exports = { bsc: { tvl: bscTvl, borrowed: bscBorrowed, - staking: stakings([BSC_BOOST_POOL,], BSC_NAOS_ADDRESS, 'bsc'), + staking: stakings([BSC_BOOST_POOL,], BSC_NAOS_ADDRESS), pool2: pool2(BSC_STAKING_POOL_WITH_TRANSFER, CAKE_BNB_NAOS_LP_ADDRESS), }, }; diff --git a/projects/nomiswap/index.js b/projects/nomiswap/index.js index 282a7c3f243..01839db1af4 100644 --- a/projects/nomiswap/index.js +++ b/projects/nomiswap/index.js @@ -19,7 +19,7 @@ const stakingPools = [ module.exports = { bsc: { - staking: stakings(stakingPools, NMX, 'bsc'), + staking: stakings(stakingPools, NMX), tvl: sdk.util.sumChainTvls(factories), }, }; \ No newline at end of file diff --git a/projects/octane/index.js b/projects/octane/index.js index e2d10d5e3ab..27a33afa71e 100644 --- a/projects/octane/index.js +++ b/projects/octane/index.js @@ -49,6 +49,6 @@ module.exports = { bsc: { tvl, pool2: pool2s(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], ['0x39bfae0c96bdc69dc657e381c272997f66cbf9c1'], 'bsc'), - staking: stakings(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], '0x5416ab2b4b5a40f740b67a83dc5939591b5c08be', 'bsc'), + staking: stakings(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], '0x5416ab2b4b5a40f740b67a83dc5939591b5c08be'), }, }; diff --git a/projects/paraswap.js b/projects/paraswap.js index 1feb546bf4c..f8a4230a60c 100644 --- a/projects/paraswap.js +++ b/projects/paraswap.js @@ -27,8 +27,8 @@ module.exports = { tvl: () => ({}), }, optimism: { - staking: stakings(["0x8C934b7dBc782568d14ceaBbEAeDF37cB6348615"], "0xd3594E879B358F430E20F82bea61e83562d49D48", "optimism"), - pool2: stakings(["0x26Ee65874f5DbEfa629EB103E7BbB2DEAF4fB2c8"], "0x11f0b5cca01b0f0a9fe6265ad6e8ee3419c68440", "optimism"), + staking: stakings(["0x8C934b7dBc782568d14ceaBbEAeDF37cB6348615"], "0xd3594E879B358F430E20F82bea61e83562d49D48"), + pool2: stakings(["0x26Ee65874f5DbEfa629EB103E7BbB2DEAF4fB2c8"], "0x11f0b5cca01b0f0a9fe6265ad6e8ee3419c68440"), tvl: () => ({}), }, } diff --git a/projects/peardao/index.js b/projects/peardao/index.js index 77331e29321..60be1953c53 100644 --- a/projects/peardao/index.js +++ b/projects/peardao/index.js @@ -25,7 +25,7 @@ module.exports = { start: 15966251, // Mar-11-2022 01:00:01 PM +UTC bsc: { tvl: sumTokensExport({ tokens, owner: DOTC_CONTRACT, }), - staking: stakings([TREASURY_ADDRESS, PEX_STAKING_POOL_CONTRACT], PEX_TOKEN_CONTRACT, "bsc"), + 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/positionexchange/index.js b/projects/positionexchange/index.js index f3143586914..8034b38b235 100644 --- a/projects/positionexchange/index.js +++ b/projects/positionexchange/index.js @@ -15,7 +15,7 @@ module.exports = { bsc: { tvl: chefExport.tvl, pool2: chefExport.pool2, - staking: sdk.util.sumChainTvls([chefExport.staking, stakings([nftMiningProxy,newNftMintingProxy], token, 'bsc')]) + staking: sdk.util.sumChainTvls([chefExport.staking, stakings([nftMiningProxy,newNftMintingProxy], token)]) } }; diff --git a/projects/purefi/index.js b/projects/purefi/index.js index 5fc915f2cc5..39cf6f11bae 100644 --- a/projects/purefi/index.js +++ b/projects/purefi/index.js @@ -76,10 +76,10 @@ module.exports = { staking: staking(farmingStakingContract, UFI), }, bsc: { - staking: stakings(farmingStakingContracts_bsc, UFI_bsc, "bsc"), + staking: stakings(farmingStakingContracts_bsc, UFI_bsc), }, polygon: { - staking: stakings(farmingStakingContracts_polygon, UFI_polygon, "polygon"), + staking: stakings(farmingStakingContracts_polygon, UFI_polygon), tvl: polygonTvl, }, //tvl: (tvl) => ({}), diff --git a/projects/retreeb.js b/projects/retreeb.js index 420b8012916..843ad322b13 100644 --- a/projects/retreeb.js +++ b/projects/retreeb.js @@ -15,7 +15,7 @@ const contracts = [ module.exports = { fantom: { - staking: stakings(contracts, TREEB, 'fantom'), + staking: stakings(contracts, TREEB), tvl: async() => ({}), } }; diff --git a/projects/rfox/stakings.js b/projects/rfox/stakings.js index 9826b28fc96..5f672486bdf 100644 --- a/projects/rfox/stakings.js +++ b/projects/rfox/stakings.js @@ -18,8 +18,8 @@ const BSC_VFOX_STAKINGS = [ const calculateBscStakings = async function(...params) { const [rfoxData, vfoxData] = await Promise.all([ - stakings(BSC_RFOX_STAKINGS, BSC_RFOX, "bsc")(...params), - stakings(BSC_VFOX_STAKINGS, BSC_VFOX, "bsc")(...params) + stakings(BSC_RFOX_STAKINGS, BSC_RFOX)(...params), + stakings(BSC_VFOX_STAKINGS, BSC_VFOX)(...params) ]); return { diff --git a/projects/rubic/index.js b/projects/rubic/index.js index 952db83665a..bc977ffa2a1 100644 --- a/projects/rubic/index.js +++ b/projects/rubic/index.js @@ -66,7 +66,7 @@ module.exports = { methodology: 'Staking pool balance', bsc: { tvl: () => ({}), - staking: stakings([stakingContractRoundOne, stakingContractRoundTwo, stakingContractRoundThree, ], stakingToken, 'bsc'), + staking: stakings([stakingContractRoundOne, stakingContractRoundTwo, stakingContractRoundThree, ], stakingToken), }, hallmarks:[ [1655991120, "Horizon bridge Hack $100m"], diff --git a/projects/sashimidao/index.js b/projects/sashimidao/index.js index 015f1abed7f..4c9606bee19 100644 --- a/projects/sashimidao/index.js +++ b/projects/sashimidao/index.js @@ -41,7 +41,7 @@ module.exports = { ], misrepresentedTokens: true, avax: { - staking: stakings(sashimidaoStakings, SASHI, "avax"), + staking: stakings(sashimidaoStakings, SASHI), tvl: avaxTvl, }, methodology: "Counts MIM and TLP (SASHI-MIM) on the treasury", diff --git a/projects/seedify/index.js b/projects/seedify/index.js index c4f5bdc14d1..4675594e403 100644 --- a/projects/seedify/index.js +++ b/projects/seedify/index.js @@ -28,6 +28,6 @@ module.exports = { bsc: { tvl: () => ({}), pool2: pool2(pool2Holder, pool2Token), - staking: stakings(stakingContracts.map(i => i.address), SFUND, 'bsc') + staking: stakings(stakingContracts.map(i => i.address), SFUND) } }; \ No newline at end of file diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index 3c4a95b4eb8..93f9064367f 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -73,7 +73,8 @@ module.exports = uniV3Export({ metis: { factory: '0x145d82bCa93cCa2AE057D1c6f26245d1b9522E6F', fromBlock: 9077930, }, bittorrent: { factory: '0xBBDe1d67297329148Fe1ED5e6B00114842728e65', fromBlock: 29265724, }, zeta: { factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', fromBlock: 1551069, }, - islm: { factory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4', fromBlock: 6541826, }, + islm: { factory, fromBlock: 6541826, }, + blast: { factory: '0x7680d4b43f3d1d54d6cfeeb2169463bfa7a6cf0d', fromBlock: 284122, }, }); const config = { diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index 7dc40179f77..02737ea89f4 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -50,6 +50,7 @@ const tvl = getUniTVL({ '0xc0e39cbac6a5c5cdcdf2c1a1c29cbf5917754943', // GSHIB ], }) +const tvl2 = getUniTVL({ factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', useDefaultCoreAssets: true, }) module.exports = { ethereum: { tvl: eth, }, @@ -61,7 +62,7 @@ module.exports = { okexchain: { tvl, }, arbitrum: { tvl, }, xdai: { tvl, }, - harmony: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, queryBatched: 200}), }, + harmony: { tvl: getUniTVL({ factory, useDefaultCoreAssets: true, queryBatched: 200 }), }, fantom: { tvl, }, bsc: { tvl, }, heco: { tvl, }, @@ -78,26 +79,22 @@ module.exports = { base: { tvl: getUniTVL({ factory: '0x71524B4f93c58fcbF659783284E38825f0622859', useDefaultCoreAssets: true, }), }, - scroll: { - tvl: getUniTVL({ factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', useDefaultCoreAssets: true, }), - }, + scroll: { tvl: tvl2, }, kava: { tvl: getUniTVL({ factory: '0xD408a20f1213286fB3158a2bfBf5bFfAca8bF269', useDefaultCoreAssets: true, }), }, metis: { tvl: getUniTVL({ factory: '0x580ED43F3BBa06555785C81c2957efCCa71f7483', useDefaultCoreAssets: true, }), }, - bittorrent: { - tvl: getUniTVL({ factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', useDefaultCoreAssets: true, }), - }, + bittorrent: { tvl: tvl2, }, filecoin: { tvl: getUniTVL({ factory: '0x9B3336186a38E1b6c21955d112dbb0343Ee061eE', useDefaultCoreAssets: true, }), }, zeta: { tvl: getUniTVL({ factory: '0x33d91116e0370970444B0281AB117e161fEbFcdD', useDefaultCoreAssets: true, }), }, - blast: { tvl: getUniTVL({ factory: '0x42Fa929fc636e657AC568C0b5Cf38E203b67aC2b' })}, - core: { tvl: getUniTVL({ factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', useDefaultCoreAssets: true })}, + blast: { tvl: getUniTVL({ factory: '0x42Fa929fc636e657AC568C0b5Cf38E203b67aC2b', useDefaultCoreAssets: true, }) }, + core: { tvl: tvl2 }, } module.exports.polygon.tvl = getChainTVL('polygon') diff --git a/projects/the-parallel/index.js b/projects/the-parallel/index.js index e514d0e4eac..c323881a5ee 100644 --- a/projects/the-parallel/index.js +++ b/projects/the-parallel/index.js @@ -15,7 +15,7 @@ const PRL_MINING = '0x21EFC3DDE8a69Fb8A5403406ebDd23e08C924785' module.exports = { bsc: { - staking: stakings([ PRL_MINING, PRL_LOCKED, ], PRL_TOKEN, 'bsc'), + staking: stakings([ PRL_MINING, PRL_LOCKED, ], PRL_TOKEN), tvl: () => ({}), } } \ No newline at end of file diff --git a/projects/tornadocore/index.js b/projects/tornadocore/index.js index 3c9c6a2c93f..4202adb426b 100644 --- a/projects/tornadocore/index.js +++ b/projects/tornadocore/index.js @@ -29,7 +29,7 @@ module.exports = { pool2: pool2(vaultV1Contract, WETH_TCORE_UNIV2), }, bsc: { - staking: stakings(vaultContracts_bsc, TCORE_bsc, "bsc"), + staking: stakings(vaultContracts_bsc, TCORE_bsc), pool2: pool2s( vaultContracts_bsc, [WBNB_TCORE_BLP, WBNB_TCORE_CakeLP], diff --git a/projects/treasury/benqi.js b/projects/treasury/benqi.js index d8c6c0cb6cc..f4f236745ed 100644 --- a/projects/treasury/benqi.js +++ b/projects/treasury/benqi.js @@ -24,7 +24,7 @@ async function tvl(api){ module.exports = { avax:{ - ownTokens: stakings(owners, qi, "avax"), + ownTokens: stakings(owners, qi), tvl } } diff --git a/projects/umamifinance/index.js b/projects/umamifinance/index.js index a2d93b1157a..7efb67a8d7c 100644 --- a/projects/umamifinance/index.js +++ b/projects/umamifinance/index.js @@ -28,7 +28,7 @@ module.exports = { doublecounted: true, start: 1657027865, // UMAMI deployment block ts arbitrum: { - staking: stakings([mUMAMI, OHM_STAKING_sUMAMI], UMAMI, "arbitrum"), + staking: stakings([mUMAMI, OHM_STAKING_sUMAMI], UMAMI), tvl: async (api) => { const totalAssets = await api.call({ abi: abi.totalAssets, target: glpUSDC, }); diff --git a/projects/uwulend/index.js b/projects/uwulend/index.js index 782dcc029e3..48d8208b564 100644 --- a/projects/uwulend/index.js +++ b/projects/uwulend/index.js @@ -23,6 +23,6 @@ module.exports = { ethereum: { tvl: lending(false), borrowed: lending(true), - pool2: stakings([PoolV1, PoolV2], [SLP], "ethereum"), + pool2: stakings([PoolV1, PoolV2], [SLP]), }, }; diff --git a/projects/wasabix/index.js b/projects/wasabix/index.js index 0d8ec1e772a..7e6d1f879e8 100644 --- a/projects/wasabix/index.js +++ b/projects/wasabix/index.js @@ -483,14 +483,14 @@ module.exports = { }, bsc:{ tvl: bsc, - staking: stakings([contractsBSC.votingEscrow.address], tokensBSC.wasabi.address, 'bsc'), + staking: stakings([contractsBSC.votingEscrow.address], tokensBSC.wasabi.address), pool2: pool2s([ contractsBSC.stakingPools.address, ], [contractsBSC.wasabiWBNBLp.address, contractsBSC.wabusdBusdLp.address], 'bsc'), }, polygon:{ tvl: polygon, - staking: stakings([contractsPolygon.votingEscrow.address], tokensPolygon.wasabi.address, 'polygon'), + staking: stakings([contractsPolygon.votingEscrow.address], tokensPolygon.wasabi.address), pool2: pool2s([ contractsPolygon.stakingPools.address, ], [contractsPolygon.wasabiUSDCLp.address, contractsPolygon.wapusdPusdSLp.address], 'polygon'), diff --git a/projects/wonderland/index.js b/projects/wonderland/index.js index f988c0317cc..10028e4ccf4 100644 --- a/projects/wonderland/index.js +++ b/projects/wonderland/index.js @@ -76,7 +76,7 @@ async function ethTvl(timestamp, ethBlock, chainBlocks) { module.exports = { avax: { tvl: avaxTvl, - staking: stakings([TimeStaking, RevenueSharingFarm], [TIME, wMEMO], "avax"), + staking: stakings([TimeStaking, RevenueSharingFarm], [TIME, wMEMO]), }, ethereum: { tvl: ethTvl, diff --git a/projects/xrune/index.js b/projects/xrune/index.js index 85914817a18..679dcf6af8a 100644 --- a/projects/xrune/index.js +++ b/projects/xrune/index.js @@ -55,6 +55,6 @@ module.exports = { methodology: `TVL comes from the Staking Vaults and Launchpad Tiers`, ethereum: { tvl: eth, - staking: stakings(ethStaking, token, "ethereum"), + staking: stakings(ethStaking, token), }, }; From c689056bc7b8aeff94488060964ba7eaf60e8d80 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:51:00 +0200 Subject: [PATCH 1210/2004] remove redundant param --- projects/apollox/index.js | 2 +- projects/apwine/index.js | 2 +- projects/bmcc/index.js | 2 +- projects/candle/index.js | 2 +- projects/croissant/index.js | 2 +- projects/cybertime/index.js | 2 +- projects/deeplock/apiCache.js | 2 +- projects/deeplock/index.js | 2 +- projects/farmhero/index.js | 6 +++--- projects/luchadores/index.js | 2 +- projects/octane/index.js | 2 +- projects/predictcoin/index.js | 2 +- projects/retrodefi/index.js | 4 ++-- projects/rfox/pool2s.js | 2 +- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/projects/apollox/index.js b/projects/apollox/index.js index f08b77e3ba4..fc8582d6327 100644 --- a/projects/apollox/index.js +++ b/projects/apollox/index.js @@ -69,7 +69,7 @@ module.exports = { bsc: { tvl: bscTVL, staking: stakings([stakingContract_APX, daoContract], TOKEN_APX), - pool2: pool2s([stakingContract, stakingContractV2], [poolContract, poolContractV2], "bsc"), + pool2: pool2s([stakingContract, stakingContractV2], [poolContract, poolContractV2]), }, ethereum: { tvl: sumTokensExport({ diff --git a/projects/apwine/index.js b/projects/apwine/index.js index c556a0bd7d9..1de189ff1ab 100644 --- a/projects/apwine/index.js +++ b/projects/apwine/index.js @@ -112,7 +112,7 @@ module.exports = { }, polygon: { tvl: tvl_from_registry('polygon'), - pool2: pool2s([APW_WETH_cometh_staking, APW_MUST_cometh_staking], [APW_WETH_cometh, APW_MUST_cometh], "polygon") + 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` } diff --git a/projects/bmcc/index.js b/projects/bmcc/index.js index 19bbc649f5c..1b7b03490e0 100644 --- a/projects/bmcc/index.js +++ b/projects/bmcc/index.js @@ -33,7 +33,7 @@ module.exports = { bsc: { tvl: async () => ({}), staking: stakings(stakingContracts, token), - pool2: pool2s(lockedContracts, bmccLP, "bsc"), + pool2: pool2s(lockedContracts, bmccLP), }, methodology: "Counts liquidty on the staking and pool2s", }; diff --git a/projects/candle/index.js b/projects/candle/index.js index c969c696b6a..5b9a90fd0e7 100644 --- a/projects/candle/index.js +++ b/projects/candle/index.js @@ -20,7 +20,7 @@ module.exports = { }, // candle: { // staking: stakings(stakingContracts, CNDL), - // pool2: pool2s(stakingContracts, [USDC_CNDL_UNIV2], 'candle'), + // pool2: pool2s(stakingContracts, [USDC_CNDL_UNIV2]), // tvl: () => ({}), // }, methodology: "Counts liquidty on the staking and pool2s only", diff --git a/projects/croissant/index.js b/projects/croissant/index.js index 2224a6f358a..c3a12631513 100644 --- a/projects/croissant/index.js +++ b/projects/croissant/index.js @@ -8,7 +8,7 @@ module.exports = { misrepresentedTokens: true, cronos: { staking: stakings([masterchef], croissant), - pool2: pool2s([masterchef], [croi_mmf_lp], 'cronos'), + pool2: pool2s([masterchef], [croi_mmf_lp]), tvl: () => ({}) }, methodology: "LPs and tokens in masterchef", diff --git a/projects/cybertime/index.js b/projects/cybertime/index.js index 13405a0a5c3..96bc09744d7 100644 --- a/projects/cybertime/index.js +++ b/projects/cybertime/index.js @@ -100,7 +100,7 @@ const bscTvl = async (api) => { module.exports = { bsc: { staking: Staking, - pool2: pool2s(pool2FarmContracts, lpPool2, "bsc"), + pool2: pool2s(pool2FarmContracts, lpPool2), tvl: bscTvl, }, methodology: diff --git a/projects/deeplock/apiCache.js b/projects/deeplock/apiCache.js index dd607136600..19c7a36a366 100644 --- a/projects/deeplock/apiCache.js +++ b/projects/deeplock/apiCache.js @@ -102,7 +102,7 @@ const bscTvl = async (ts, _b, { bsc: block }) => { module.exports = { misrepresentedTokens: true, bsc: { - pool2: pool2s(stakingPool2Contracts, lpAddresses, "bsc"), + pool2: pool2s(stakingPool2Contracts, lpAddresses), tvl: bscTvl, }, methodology: diff --git a/projects/deeplock/index.js b/projects/deeplock/index.js index 9a2c22fa288..9987cd5c7cd 100644 --- a/projects/deeplock/index.js +++ b/projects/deeplock/index.js @@ -97,7 +97,7 @@ const bscTvl = async (ts, _b, { bsc: block }) => { module.exports = { misrepresentedTokens: true, bsc: { - pool2: pool2s(stakingPool2Contracts, lpAddresses, "bsc"), + pool2: pool2s(stakingPool2Contracts, lpAddresses), tvl: bscTvl, }, methodology: diff --git a/projects/farmhero/index.js b/projects/farmhero/index.js index 0a73a6381ab..6631ba7c5ce 100644 --- a/projects/farmhero/index.js +++ b/projects/farmhero/index.js @@ -203,17 +203,17 @@ module.exports = { bsc: { tvl: bscTvl, staking: stakings(stakingContractBsc, HERO), - pool2: pool2s(pool2StratsBsc, excludePool2Bsc, "bsc"), + pool2: pool2s(pool2StratsBsc, excludePool2Bsc), }, polygon: { tvl: polygonTvl, staking: stakings(stakingContractPolygon, HONOR), - pool2: pool2s(pool2StratsPolygon, excludePool2Polygon, "polygon"), + pool2: pool2s(pool2StratsPolygon, excludePool2Polygon), }, okexchain: { tvl: okexTvl, staking: stakings(stakingContractOkex, GLORY), - pool2: pool2s(pool2StratsOkex, excludePool2Okex, "okexchain"), + pool2: pool2s(pool2StratsOkex, excludePool2Okex), }, methodology: "We count liquidity on the Farms through MasterChef contracts", diff --git a/projects/luchadores/index.js b/projects/luchadores/index.js index 6c8f660abad..e37047fe2de 100644 --- a/projects/luchadores/index.js +++ b/projects/luchadores/index.js @@ -52,7 +52,7 @@ module.exports={ polygon:{ tvl, staking: staking(luchaStk, LUCHA_polygon), - pool2: pool2s([luchaMaticStk, luchaMustStk], [LUCHA_MATIC_comethLp, LUCHA_MUST_comethLp, LUCHA_MATIC_satinLp, LUCHA_CASH_satinLp], "polygon") + pool2: pool2s([luchaMaticStk, luchaMustStk], [LUCHA_MATIC_comethLp, LUCHA_MUST_comethLp, LUCHA_MATIC_satinLp, LUCHA_CASH_satinLp]) }, 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 diff --git a/projects/octane/index.js b/projects/octane/index.js index 27a33afa71e..325518891cc 100644 --- a/projects/octane/index.js +++ b/projects/octane/index.js @@ -48,7 +48,7 @@ module.exports = { methodology: "Add all the tokens in the orderbook contract", bsc: { tvl, - pool2: pool2s(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], ['0x39bfae0c96bdc69dc657e381c272997f66cbf9c1'], 'bsc'), + pool2: pool2s(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], ['0x39bfae0c96bdc69dc657e381c272997f66cbf9c1']), staking: stakings(['0x8459d87618e45dc801bc384ea60596ddb7223aae', '0x506F1c53Ef26D98243777089816A512Ff4Ce66DA'], '0x5416ab2b4b5a40f740b67a83dc5939591b5c08be'), }, }; diff --git a/projects/predictcoin/index.js b/projects/predictcoin/index.js index 93fd85f5abf..cc400b325bb 100644 --- a/projects/predictcoin/index.js +++ b/projects/predictcoin/index.js @@ -17,7 +17,7 @@ module.exports = { bsc: { tvl: (async) => ({}), staking: staking(farmContract, PRED), - pool2: pool2s([farmContract], lpContracts, "bsc"), + pool2: pool2s([farmContract], lpContracts), }, methodology: "Counts liquidty on the staking and Farming", }; diff --git a/projects/retrodefi/index.js b/projects/retrodefi/index.js index 7bd2d99279f..46b98b9e7d2 100644 --- a/projects/retrodefi/index.js +++ b/projects/retrodefi/index.js @@ -199,12 +199,12 @@ module.exports = { bsc: { tvl: bscTvl, staking: bscStaking, - pool2: pool2s(pool2StratsBsc, excludePool2Bsc, "bsc"), + pool2: pool2s(pool2StratsBsc, excludePool2Bsc), }, polygon: { tvl: polygonTvl, staking: polygonStaking, - pool2: pool2s(pool2StratsPolygon, excludePool2Polygon, "polygon"), + 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/rfox/pool2s.js b/projects/rfox/pool2s.js index 52074f5acc0..4efbe058275 100644 --- a/projects/rfox/pool2s.js +++ b/projects/rfox/pool2s.js @@ -13,6 +13,6 @@ const stakingContracts = [ module.exports = { bsc: { - pool2: pool2s(stakingContracts, lpTokens, 'bsc'), + pool2: pool2s(stakingContracts, lpTokens), }, } From 7d44e16aabfa30dcded76a6d328ca3e435bc43e9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 19:08:18 +0200 Subject: [PATCH 1211/2004] minor fix --- projects/cover.js | 33 ++++----------- projects/dev.js | 20 ++------- projects/helper/tokenMapping.js | 6 +++ projects/symblox.js | 74 ++++----------------------------- 4 files changed, 25 insertions(+), 108 deletions(-) diff --git a/projects/cover.js b/projects/cover.js index 527841ea420..b5db9ec2b7d 100644 --- a/projects/cover.js +++ b/projects/cover.js @@ -1,32 +1,13 @@ const ADDRESSES = require('./helper/coreAssets.json') -const sdk = require("@defillama/sdk"); const abis = require('./config/cover/cover.js') -const { sumTokens } = require('./helper/unwrapLPs'); -async function tvl(ts, block) { - - let factory = '0xedfC81Bf63527337cD2193925f9C0cF2D537AccA'; - const { output: allProtocols } = await sdk.api.abi.call({ - block, - target: factory, - abi: abis.abis.protocols.getAllProtocolAddresses - }) - - const calls = allProtocols.map(p => ({ target: p })) - const { output: protocolDetails } = await sdk.api.abi.multiCall({ - block, - calls, - abi: abis.abis.cover.getProtocolDetails - }) - const toa = [] - - protocolDetails.forEach(({ output }) => { - output._allCovers.forEach(cover => toa.push( - [ADDRESSES.ethereum.DAI, cover], // DAI - ['0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01', cover], // yearn DAI - )) - }) - return sumTokens({}, toa, block) +async function tvl(api) { + let factory = '0xedfC81Bf63527337cD2193925f9C0cF2D537AccA' + const allProtocols = await api.call({ abi: abis.abis.protocols.getAllProtocolAddresses, target: factory }) + const details = await api.multiCall({ abi: abis.abis.cover.getProtocolDetails, calls: allProtocols}) + const tokens = [ADDRESSES.ethereum.DAI, '0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01'] + const owners = details.map(i => i._allCovers).flat() + return api.sumTokens({ owners, tokens }) } diff --git a/projects/dev.js b/projects/dev.js index 1f02f198ea5..19bdd476a8a 100644 --- a/projects/dev.js +++ b/projects/dev.js @@ -1,22 +1,10 @@ -const sdk = require("@defillama/sdk") - const ADDRESS_CONFIG_ADDRESS = '0x1D415aa39D647834786EB9B5a333A50e9935b796' const TOKEN_ADDRESS = '0x5cAf454Ba92e6F2c929DF14667Ee360eD9fD5b26' -async function staking(ts, block) { - const { output: lockupAddress } = await sdk.api.abi.call({ - block, - target: ADDRESS_CONFIG_ADDRESS, - abi: 'address:lockup' - }) - const { output: allValue } = await sdk.api.abi.call({ - block, - target: lockupAddress, - abi: 'uint256:getAllValue' - }) - return { - [TOKEN_ADDRESS]: allValue - } +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 = { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 343c5c0c3c6..4a905186800 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -53,6 +53,12 @@ const fixBalancesTokens = { core: { '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, }, + velas: { + '0xaadbaa6758fc00dec9b43a0364a372605d8f1883': { coingeckoId: "staked-vlx", decimals: 18, }, + '0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39': { coingeckoId: "velas", decimals: 18, }, + '0x380f73bad5e7396b260f737291ae5a8100baabcd': { coingeckoId: "ethereum", decimals: 18, }, + '0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f': { coingeckoId: "tether", decimals: 6, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/symblox.js b/projects/symblox.js index ca2ab31185d..ff2e8dc2f4f 100644 --- a/projects/symblox.js +++ b/projects/symblox.js @@ -1,74 +1,16 @@ -const sdk = require("@defillama/sdk"); +const { sumTokens2 } = require("./helper/unwrapLPs"); const symblox = "0xD0CB9244844F3E11061fb3Ea136Aab3a6ACAC017"; const pools = { - "0x2af1fea48018fe9f1266d67d45b388935df1c14d": { - address: "0xaadbaa6758fc00dec9b43a0364a372605d8f1883", - id: "velas", - decimals: 18, - }, - "0x720b92ef8ee928c5cbe9ca787321802610bcbf6e": { - address: "0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39", - id: "velas", - decimals: 18, - }, - "0x974d24a6bce9e0a0a27228e627c9ca1437fe0286": { - address: "0x380f73bad5e7396b260f737291ae5a8100baabcd", - id: "weth", - decimals: 18, - }, - "0xe7557efbe705e425de6a57e90447ba5ad70e9de5": { - address: "0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f", - id: "tether", - decimals: 6, - }, + "0x2af1fea48018fe9f1266d67d45b388935df1c14d": "0xaadbaa6758fc00dec9b43a0364a372605d8f1883", + "0x720b92ef8ee928c5cbe9ca787321802610bcbf6e": "0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39", + "0x974d24a6bce9e0a0a27228e627c9ca1437fe0286": "0x380f73bad5e7396b260f737291ae5a8100baabcd", + "0xe7557efbe705e425de6a57e90447ba5ad70e9de5": "0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f", }; -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - block = chainBlocks.velas; - - const pairBalances = ( - await sdk.api.abi.multiCall({ - abi: "erc20:balanceOf", - calls: Object.keys(pools).map((p) => ({ - target: pools[p].address, - params: p, - })), - block, - chain: "velas", - }) - ).output; - - const syxBalances = ( - await sdk.api.abi.multiCall({ - abi: "erc20:balanceOf", - calls: Object.keys(pools).map((p) => ({ - target: symblox, - params: p, - })), - block, - chain: "velas", - }) - ).output; - - for (let i = 0; i < Object.keys(pools).length; i++) { - const pool = Object.values(pools)[i]; - await Promise.all([ - sdk.util.sumSingleBalance( - balances, - pool.id, - pairBalances[i].output / 10 ** pool.decimals - ), - sdk.util.sumSingleBalance( - balances, - 'symblox', - syxBalances[i].output / 10 ** 18 - ), - ]); - } - - return balances; +async function tvl(api) { + const ownerTokens = Object.entries(pools).map(([id, pool]) => [[pool, symblox], id]) + return sumTokens2({api, ownerTokens }) } module.exports = { From 9fd9720fd90a94a6679a999187f1ca196406c7a2 Mon Sep 17 00:00:00 2001 From: GiMa-Maya <128942712+GiMa-Maya@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:18:12 +0200 Subject: [PATCH 1212/2004] Add Arbitrum to Maya Protocol (#9813) * Update index.js * add comma * Add UNI token to MayaChain mappings --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/mayachain/index.js | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/projects/mayachain/index.js b/projects/mayachain/index.js index 1698388179c..4880587fd77 100644 --- a/projects/mayachain/index.js +++ b/projects/mayachain/index.js @@ -9,11 +9,13 @@ const chainMapping = { BTC: "bitcoin", THOR: "thorchain", DASH: "dash", + ARB: "arbitrum", }; const tokenGeckoMapping = { "ETH.USDT": "tether", "ETH.WSTETH": "wrapped-steth", + "ETH.PEPE": "pepe", "ETH.ETH": "ethereum", "ETH.USDC": "usd-coin", "KUJI.USK": "usk", @@ -21,17 +23,48 @@ const tokenGeckoMapping = { "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", }; const tokenToDecimalMapping = { "ETH.USDT": 6, "ETH.WSTETH": 18, + "ETH.PEPE": 18, "ETH.ETH": 18, "ETH.USDC": 6, "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, }; async function tvl(api) { @@ -55,7 +88,7 @@ async function tvl(api) { if (chain !== aChain) return; let [baseToken, address] = token.split("-"); - if (chain === "ethereum") { + if (chain === "ethereum" || chain === "arbitrum") { assetDepth = assetDepth * 10 ** (+tokenToDecimalMapping[chainStr + "." + baseToken] - 8); @@ -70,6 +103,7 @@ async function tvl(api) { } 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], From d7b6f9fabbff0619a70609b7e77dd891a5ecc2f5 Mon Sep 17 00:00:00 2001 From: doomsower <12031673+doomsower@users.noreply.github.com> Date: Thu, 11 Apr 2024 14:27:13 -0400 Subject: [PATCH 1213/2004] feat: add arbitrum to adapters (#9817) * feat: add arbitrum to adapters * fix: fix how we get block number --- projects/gearbox/index.js | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js index d2f59c3acfe..6ffe93e7c12 100644 --- a/projects/gearbox/index.js +++ b/projects/gearbox/index.js @@ -3,7 +3,7 @@ ** ** ** 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.1.0 + ** Binary release: https://github.com/Gearbox-protocol/defillama/releases/tag/v1.3.1 ** ** ** @@ -13,7 +13,10 @@ var ethers = require("ethers"); var getLogs = require("../helper/cache/getLogs"); // src/adapter/constants.ts -var ADDRESS_PROVIDER_V3 = "0x9ea7b04da02a5373317d745c1571c84aad03321d"; +var ADDRESS_PROVIDER_V3 = { + ethereum: "0x9ea7b04da02a5373317d745c1571c84aad03321d", + arbitrum: "0x7d04eCdb892Ae074f03B5D0aBA03796F90F3F2af", +}; // src/adapter/pools/abi.ts var poolAbis = { @@ -28,7 +31,7 @@ async function getPools(block, api) { const contractsRegisterAddr = await api.call({ block, abi: poolAbis["getAddressOrRevert"], - target: ADDRESS_PROVIDER_V3, + target: ADDRESS_PROVIDER_V3[api.chain], params: [ // cast format-bytes32-string "CONTRACTS_REGISTER" "0x434f4e5452414354535f52454749535445520000000000000000000000000000", @@ -87,7 +90,7 @@ async function getCreditManagersV1(block, api) { const contractsRegisterAddr = await api.call({ block, abi: v1Abis["getAddressOrRevert"], - target: ADDRESS_PROVIDER_V3, + target: ADDRESS_PROVIDER_V3[api.chain], params: [ // cast format-bytes32-string "CONTRACTS_REGISTER" "0x434f4e5452414354535f52454749535445520000000000000000000000000000", @@ -230,7 +233,7 @@ async function getV2TVL(block, api) { async function getCreditManagersV210(block, api) { const dataCompressor210 = await api.call({ abi: v2Abis["getAddressOrRevert"], - target: ADDRESS_PROVIDER_V3, + target: ADDRESS_PROVIDER_V3[api.chain], params: [ // cast format-bytes32-string "DATA_COMPRESSOR" "0x444154415f434f4d50524553534f520000000000000000000000000000000000", @@ -359,7 +362,7 @@ var v3Abis = { async function getV3TVL(block, api) { const dc300 = await api.call({ abi: v3Abis["getAddressOrRevert"], - target: ADDRESS_PROVIDER_V3, + target: ADDRESS_PROVIDER_V3[api.chain], params: [ // cast format-bytes32-string "DATA_COMPRESSOR" "0x444154415f434f4d50524553534f520000000000000000000000000000000000", @@ -406,13 +409,18 @@ async function getV3CAs(dc300, creditManager, block, api) { } // src/adapter/index.ts -async function tvl(api) { - const block = api.block +async function tvl(_timestamp, _block, _, { api }) { + const block = await api.getBlock(); const tokensAndOwners = await getPools(block, api); - const v1Balances = await getV1TVL(block, api); - const v2Balances = await getV2TVL(block, api); + const allBalances = []; + if (api.chain === "ethereum") { + const v1Balances = await getV1TVL(block, api); + const v2Balances = await getV2TVL(block, api); + allBalances.push(...v1Balances, ...v2Balances); + } const v3Balances = await getV3TVL(block, api); - [...v1Balances, ...v2Balances, ...v3Balances].forEach((i) => { + allBalances.push(...v3Balances); + allBalances.forEach((i) => { api.add(i.token, i.bal); }); await api.sumTokens({ tokensAndOwners }); @@ -422,6 +430,9 @@ var adapter_default = { ethereum: { tvl, }, + arbitrum: { + tvl, + }, methodology: `Retrieves the tokens in each Gearbox pool (WETH/DAI/WBTC/USDC/wstETH) & value of all Credit Accounts (V1/V2/V3) denominated in the underlying token.`, misrepresentedTokens: true, }; From a967e0adf9e9ec0b891af38ed4a614e19dc03e44 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 12 Apr 2024 00:48:23 +0100 Subject: [PATCH 1214/2004] fix karpatkey treasuries --- projects/helper/karpatkey.js | 11 ++++++++--- projects/treasury/cowswap.js | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/helper/karpatkey.js b/projects/helper/karpatkey.js index d7c038a8592..d412e0fe79a 100644 --- a/projects/helper/karpatkey.js +++ b/projects/helper/karpatkey.js @@ -22,12 +22,17 @@ const symbolToId = { XDAI: "dai" } -async function karpatKeyTvl(timestamp, daoName, tokenToExclude) { +const MONTH = 30*24*3600e3 + +async function karpatKeyTvl({timestamp}, daoName, tokenToExclude) { const {data} = await fetchURL("https://aumapi.karpatkey.dev/our_daos_token_details") let date = new Date(timestamp*1e3) let monthlyData = data.tokens.filter(t=>t.year_month === `${date.getFullYear()}_${date.getMonth()+1}` && t.dao === daoName) - if(monthlyData.length === 0){ - date = new Date(date - 30*24*3600e3) + while(monthlyData.length === 0){ + if(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 = {} diff --git a/projects/treasury/cowswap.js b/projects/treasury/cowswap.js index ceb1e0a9d04..278dbeca21f 100644 --- a/projects/treasury/cowswap.js +++ b/projects/treasury/cowswap.js @@ -3,7 +3,7 @@ const { sumTokensExport } = require('../helper/unknownTokens'); module.exports={ ethereum:{ - tvl: async (timestamp)=>karpatKeyTvl(timestamp, "CoW DAO", "COW"), + tvl: async (api)=>karpatKeyTvl(api, "CoW DAO", "COW"), ownTokens: sumTokensExport({ tokens: ["0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab"], owners: ["0xca771eda0c70aa7d053ab1b25004559b918fe662"], From 082611d653247bf33cae17d951d571524fc684fc Mon Sep 17 00:00:00 2001 From: Aqua Marine <86425604+RubyAquaMarine@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:00:25 +0700 Subject: [PATCH 1215/2004] europa: aquas.trade (#9819) Co-authored-by: Aqua Marine --- projects/aquas-trade/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/aquas-trade/index.js diff --git a/projects/aquas-trade/index.js b/projects/aquas-trade/index.js new file mode 100644 index 00000000000..9e1cab7675b --- /dev/null +++ b/projects/aquas-trade/index.js @@ -0,0 +1,9 @@ + +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + europa: { tvl: getUniTVL({ + factory: '0xc318a82CB7c2B0faf7e355BB8F285016956aBF55', + useDefaultCoreAssets: true, + }),}, +} From 6641c98b9e091b358d9b172d699d77cc32e409f1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 Apr 2024 08:26:44 +0200 Subject: [PATCH 1216/2004] Add Epoch Island adapter and refactor code (#9822) * feat: adding Epoch Island adapter * code refactor --------- Co-authored-by: umarsa --- projects/epoch-island/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/epoch-island/index.js diff --git a/projects/epoch-island/index.js b/projects/epoch-island/index.js new file mode 100644 index 00000000000..d0a381f149a --- /dev/null +++ b/projects/epoch-island/index.js @@ -0,0 +1,27 @@ +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: 1700179200, + 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 From 5bbfcef8178c24a1c5800008ffa004b0bd574219 Mon Sep 17 00:00:00 2001 From: JJJJ Date: Fri, 12 Apr 2024 02:49:11 -0400 Subject: [PATCH 1217/2004] Feat: Add Avalon Finance (#9818) * Feat: Add Avalon Finance * Feat: Update chain name * Feat: Update chain name * Feat: Update addresses to PoolAddressesProviderRegistry * Feat: Update market name * Feat: Combine the markets tvl and borrowed * Feat: Combine the markets tvl and borrowed * Feat: display the main market data, cannot display the innovation market data * revert change * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/avalon-finance/index.js | 14 ++++++++++++++ projects/helper/tokenMapping.js | 7 +++++++ 2 files changed, 21 insertions(+) create mode 100644 projects/avalon-finance/index.js diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js new file mode 100644 index 00000000000..ebeb87ca3c2 --- /dev/null +++ b/projects/avalon-finance/index.js @@ -0,0 +1,14 @@ + +const { aaveExports } = require('../helper/aave') +const methodologies = require('../helper/methodologies') +const { mergeExports } = require('../helper/utils') + +const mainMarket = { + merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), +} +const innovativeMarket = { + merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682'], { v3: true }), +} + +module.exports = mergeExports(mainMarket, innovativeMarket) +module.exports.methodology = methodologies.lendingMarket \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4a905186800..97a7ae161ab 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -59,6 +59,13 @@ const fixBalancesTokens = { '0x380f73bad5e7396b260f737291ae5a8100baabcd': { coingeckoId: "ethereum", decimals: 18, }, '0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f': { coingeckoId: "tether", decimals: 6, }, }, + merlin: { + '0x4dcb91cc19aadfe5a6672781eb09abad00c19e4c': { coingeckoId: "sats-ordinals", decimals: 18, }, + '0x69181a1f082ea83a152621e4fa527c936abfa501': { coingeckoId: "rats", decimals: 18, }, + '0x0726523eba12edad467c55a962842ef358865559': { coingeckoId: "ordinals", decimals: 18, }, + '0x967aec3276b63c5e2262da9641db9dbebb07dc0d': { coingeckoId: "tether", decimals: 6, }, + '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From aaaeafd0b8c7c0a24d35e0473e76f94d85868a4d Mon Sep 17 00:00:00 2001 From: smol-ninja Date: Fri, 12 Apr 2024 16:45:07 +0100 Subject: [PATCH 1218/2004] feat: add blast endpoint for Sablier (#9825) --- projects/sablier-v2/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sablier-v2/index.js b/projects/sablier-v2/index.js index 5465d86db67..a48b04a09ec 100644 --- a/projects/sablier-v2/index.js +++ b/projects/sablier-v2/index.js @@ -40,6 +40,7 @@ const config = { polygon: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-polygon'], }, avax: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-avalanche'], }, base: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-base'], }, + blast: { endpoints: ['https://api.studio.thegraph.com/query/57079/sablier-v2-blast/version/latest'], }, } Object.keys(config).forEach(chain => { From 9217468668fd38f835fafdf04482c1ba839b2553 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 21:09:45 +0200 Subject: [PATCH 1219/2004] minor fix --- projects/cyclefinance/index.js | 47 ++------ projects/deerfi/index.js | 49 +------- projects/definer/index.js | 208 +++------------------------------ 3 files changed, 28 insertions(+), 276 deletions(-) diff --git a/projects/cyclefinance/index.js b/projects/cyclefinance/index.js index 09c2499da21..c0d755658b9 100644 --- a/projects/cyclefinance/index.js +++ b/projects/cyclefinance/index.js @@ -1,4 +1,3 @@ -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const { sumTokens2 } = require("../helper/unwrapLPs"); @@ -88,51 +87,21 @@ const vaults = [ /*** 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 staking_lpToken = await api.call({ abi: abi.stakingToken, target: coreRewards, }) + return sumTokens2({ api, tokens: [CYCLE, staking_lpToken], owners: [coreRewards, avaxRewards] }) }; -/*** vaults TVL portion ***/ -const avaxTvl = async (timestamp, ethBlock, chainBlocks) => { - const balances = {}; - - const lpTokens = ( - await sdk.api.abi.multiCall({ - abi: abi.LPtoken, - calls: vaults.map((vault) => ({ - target: vault, - })), - chain: "avax", - block: chainBlocks["avax"], - }) - ).output.map((lp) => lp.output); - - const lpTokens_bal = ( - await sdk.api.abi.multiCall({ - abi: abi.balanceLPinSystem, - calls: vaults.map((vault) => ({ - target: vault, - })), - chain: "avax", - block: chainBlocks["avax"], - }) - ).output.map((lpb) => lpb.output); - - for (let index = 0; index < vaults.length; index++) { - sdk.util.sumSingleBalance(balances,lpTokens[index],lpTokens_bal[index], 'avax') - } - - return balances; +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:{ + avax: { tvl: avaxTvl, staking }, diff --git a/projects/deerfi/index.js b/projects/deerfi/index.js index a883f1442fc..1bcf0d3e971 100644 --- a/projects/deerfi/index.js +++ b/projects/deerfi/index.js @@ -1,51 +1,12 @@ -/*** This Protocol seems hacked/rugged. It's a case for study and analyze ***/ - -const sdk = require("@defillama/sdk"); const abi = require("./abi.json"); const factoryContract = "0xa22F8cf50D9827Daef24dCb5BAC92C147a9D342e"; -const ethTvl = async (timestamp, block) => { - const balances = {}; - - const lengthOfPools = ( - await sdk.api.abi.call({ - abi: abi.allPoolsLength, - target: factoryContract, - block, - }) - ).output; - - for (let i = 0; i < lengthOfPools; i++) { - const pool = ( - await sdk.api.abi.call({ - abi: abi.allPools, - target: factoryContract, - params: i, - block, - }) - ).output; - - const token = ( - await sdk.api.abi.call({ - abi: abi.token, - target: pool, - block, - }) - ).output; - - const reserve = ( - await sdk.api.abi.call({ - abi: abi.reserve, - target: pool, - block, - }) - ).output; - - sdk.util.sumSingleBalance(balances, token, reserve); - } - - return balances; +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 = { diff --git a/projects/definer/index.js b/projects/definer/index.js index 1fdb8d05122..7f9d44e61bc 100644 --- a/projects/definer/index.js +++ b/projects/definer/index.js @@ -1,8 +1,5 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); - const abi = require("./abi.json"); -const contracts = { +const config = { ethereum: { DEPLOY_BLOCK: 10819469, GLOBAL_CONFIG_ADDRESS: "0xa13B12D2c2EC945bCAB381fb596481735E24D585", @@ -23,196 +20,21 @@ const contracts = { }, }; -const utility = { - // get the latest TokenRegistry address through the GlobalConfig contract - async getTokenRegistryAddressByGlobalConfig(block, chain) { - return ( - await sdk.api.abi.call({ - block: block, - chain: chain, - target: contracts[chain].GLOBAL_CONFIG_ADDRESS, - params: [], - abi: abi["global:tokenInfoRegistry"], - }) - ).output; - }, - - // Get the latest Bank address through the GlobalConfig contract - async getBankAddressByGlobalConfig(block, chain) { - return ( - await sdk.api.abi.call({ - block: block, - chain: chain, - target: contracts[chain].GLOBAL_CONFIG_ADDRESS, - params: [], - abi: abi["global:bank"], - }) - ).output; - }, - - // Get the TokenRegistry contract - async getTokenRegistryContract(block, ads, chain) { - return ( - await sdk.api.abi.call({ - block: block, - chain: chain, - target: ads, - params: [], - abi: abi["tokenRegistry:getTokens"], - }) - ).output; - }, - - // Get all tokens - async getMarkets(block, chain) { - // Get TokenRegistry Address - let tokenRegistryAddress = - await utility.getTokenRegistryAddressByGlobalConfig(block, chain); - - // Get latest markets - let currentMarkets = await utility.getTokenRegistryContract( - block, - tokenRegistryAddress, - chain - ); - return currentMarkets; - }, - - async getBankPoolAmounts(block, markets, chain) { - let bankAddress = await utility.getBankAddressByGlobalConfig(block, chain); - let callsArray = []; - markets.forEach((element) => { - callsArray.push({ - target: bankAddress, - params: element, - }); - }); - return ( - await sdk.api.abi.multiCall({ - block: block, - chain: chain, - abi: abi["bank:getPoolAmount"], - calls: callsArray, - }) - ).output; - }, - - async getBankContractTokenState(block, markets, chain) { - let bankAddress = await utility.getBankAddressByGlobalConfig(block, chain); - let callsArray = []; - markets.forEach((element) => { - callsArray.push({ - target: bankAddress, - params: element, - }); - }); - return ( - await sdk.api.abi.multiCall({ - block: block, - chain: chain, - abi: abi["bank:getTokenState"], - calls: callsArray, - }) - ).output; - }, - - // Get Token Value - async getCtokenValue(block, ctoken, chain) { - let cEthToken = await sdk.api.abi.call({ - block: block, - chain: chain, - target: ctoken, - params: contracts[chain].SAVINGS_ADDRESS, - abi: "erc20:balanceOf", - }); - return cEthToken.output; - }, - - // Get cTokens - async getCTokens(block, markets, chain) { - let tokenRegistryAddress = - await utility.getTokenRegistryAddressByGlobalConfig(block, chain); - let callsArray = []; - let allTokenObj = {}; - markets.forEach((token_address) => { - allTokenObj[token_address] = ""; - callsArray.push({ - target: tokenRegistryAddress, - params: token_address, - }); - }); - let cToken = ( - await sdk.api.abi.multiCall({ - block: block, - chain: chain, - abi: abi["tokenRegistry:getCToken"], - calls: callsArray, - }) - ).output; - - let zeroCTokenAddress = ADDRESSES.null; - cToken.forEach((item) => { - allTokenObj[item.input.params[0]] = - item.output === zeroCTokenAddress ? "" : item.output; - }); - return allTokenObj; - }, - // -}; - -async function ethereumTvl(timestamp, blockETH, chainBlocks) { - const block = blockETH; - const chain = "ethereum"; - return await getTvlByChain(timestamp, block, chain); -} -async function okexchainTvl(timestamp, blockETH, chainBlocks) { - const block = chainBlocks["okexchain"]; - const chain = "okexchain"; - return await getTvlByChain(timestamp, block, chain); -} -async function polygonTvl(timestamp, blockETH, chainBlocks) { - const block = chainBlocks["polygon"]; - const chain = "polygon"; - return await getTvlByChain(timestamp, block, chain); -} - -async function getTvlByChain(timestamp, block, chain) { - let config = contracts[chain]; +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"], }) - let balances = {}; - let networkAddressSymbol = chain === "ethereum" ? "" : `${chain}:`; - if (!block || block > config.DEPLOY_BLOCK) { - // Get all Tokens in the market - let markets = await utility.getMarkets(block, chain); + // Get latest markets + let markets = await api.call({ target: tokenRegistryAddress, abi: abi["tokenRegistry:getTokens"], }); - // Get Bank - let banksPoolAmounts = await utility.getBankPoolAmounts( - block, - markets, - chain - ); - banksPoolAmounts.forEach((result) => { - balances[networkAddressSymbol + result.input.params] = result.output; - }); + 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}) - // cETH value - balances[networkAddressSymbol + config.CETH] = await utility.getCtokenValue( - block, - config.CETH, - chain - ); + } } - return balances; -} - -module.exports = { - ethereum: { - tvl: ethereumTvl, - }, - okexchain: { - tvl: okexchainTvl, - }, - polygon: { - tvl: polygonTvl, - }, -}; +}) \ No newline at end of file From b2b04305de3a086654d5d64e57a2e5e0b6c72f99 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 11 Apr 2024 21:43:15 +0200 Subject: [PATCH 1220/2004] minor fix --- projects/saharadao/index.js | 123 +++--------------------------------- projects/sakeperp/abi.json | 7 -- projects/sakeperp/index.js | 115 ++------------------------------- 3 files changed, 16 insertions(+), 229 deletions(-) delete mode 100644 projects/sakeperp/abi.json diff --git a/projects/saharadao/index.js b/projects/saharadao/index.js index 772ced7a166..0bae7002251 100644 --- a/projects/saharadao/index.js +++ b/projects/saharadao/index.js @@ -1,6 +1,4 @@ -const BigNumber = require('bignumber.js') const Abis = require("./abi.json"); -const sdk = require("@defillama/sdk"); const Contracts = { cronos: { @@ -11,128 +9,25 @@ const Contracts = { bankMusd: "0xa23608087908F3812219886bCec68c4FA77A9eE5", multiFeeDistribution: "0xE6F7ADf2F2aCd219Ca68136cd47C2C826a3Ba1A9", chef: "0x6F132536069F8E35ED029CEd563710CF68fE8E54", - mmfLps: [ - { - address: "0xa7bE5cB8Be6484c06aBb8942fe682797bb9A76Ec", // MNG_MMF_LP - isToken0: true - }, - { - address: "0x80fdDa345e707dd9e518094b9B50027D9AF148F4", // MMFX_MMF_LP - isToken0: true - } - ], - musdLps: [ - { - address: "0x6b4D24758a65c5bB2fC377B3b45e8b020ba6A4c1", // MNG_MUSD_LP - isToken0: true - }, - { - address: "0xE516830c6dE6E1b653230370CD236c78DB9F66bf", // MMUSD_MUSD_LP - isToken0: true - } - ] }, }; -async function calcTvl(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks.cronos; - const chain = "cronos"; - - const bankBalance = await sdk.api.abi.call({ - target: Contracts.cronos.bank, - abi: Abis.bank.usableCollateralBalance, - chain: chain, - block, - }); - - const bankBalanceMusd = await sdk.api.abi.call({ - target: Contracts.cronos.bankMusd, - abi: Abis.bank.usableCollateralBalance, - chain: chain, - block, - }); - - return { - [`cronos:${Contracts.cronos.mmf}`]: bankBalance.output, - [`cronos:${Contracts.cronos.musd}`]: bankBalanceMusd.output, - }; -} - -async function calcStaking(timestamp, ethBlock, chainBlocks) { - const block = chainBlocks.cronos; - const chain = "cronos"; - - const stakingData = await sdk.api.abi.call({ - target: Contracts.cronos.multiFeeDistribution, - abi: Abis.multiFeeDistribution.totalSupply, - chain: chain, - block, - }); - - return { - [`cronos:${Contracts.cronos.mng}`]: stakingData.output - }; -} - -async function calcLp(lps, block, chain, baseToken) { - const reserves = ( - await sdk.api.abi.multiCall({ - calls: lps.map((lp) => ({ - target: lp.address, - params: [], - })), - abi: Abis.pair.getReserves, - block, - chain, - }) - ).output; - const totalSupplies = ( - await sdk.api.abi.multiCall({ - calls: lps.map((lp) => ({ - target: lp.address, - params: [], - })), - abi: "erc20:totalSupply", - block, - chain, - }) - ).output; - const balances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((lp) => ({ - target: lp.address, - params: [Contracts.cronos.chef], - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - - const results = lps.map((lp, index) => ( - new BigNumber(reserves[index].output[lp.isToken0 ? "_reserve0" : "_reserve1"]) - .times(2) - .times(new BigNumber(balances[index].output)) - .idiv(new BigNumber(totalSupplies[index].output)) - )); - const total = results.reduce((total, num) => total.plus(num), new BigNumber(0)); - - return { - [`cronos:${baseToken}`]: total.toString(10), - }; +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 calcChef(timestamp, block, chainBlocks) { - const farm = await calcLp(Contracts.cronos.mmfLps, chainBlocks.cronos, "cronos", Contracts.cronos.mmf); - const farmMusd = await calcLp(Contracts.cronos.musdLps, chainBlocks.cronos, "cronos", Contracts.cronos.musd); - - return { ...farm, ...farmMusd }; +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: calcChef, + pool2: () => ({}), staking: calcStaking, }, }; diff --git a/projects/sakeperp/abi.json b/projects/sakeperp/abi.json deleted file mode 100644 index e6d48f5a1fb..00000000000 --- a/projects/sakeperp/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "allPairs": "function allPairs(uint256) view returns (address)", - "allPairsLength": "uint256:allPairsLength", - "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/sakeperp/index.js b/projects/sakeperp/index.js index 8c881b34d7d..60f681ae655 100644 --- a/projects/sakeperp/index.js +++ b/projects/sakeperp/index.js @@ -1,125 +1,24 @@ +const { getUniTVL } = require('../helper/unknownTokens') +const { staking } = require('../helper/staking') const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); const ethSake = "0x066798d9ef0833ccc719076Dab77199eCbd178b0"; -const ethFactory = "0x75e48C954594d64ef9613AeEF97Ad85370F13807"; const ethSakebar = "0x5fe808a4889b714496E7b821c8542e26be2f8f67"; const bscSake = "0x8BD778B12b15416359A227F0533Ce2D91844e1eD"; -const bscFactory = "0xA534cf041Dcd2C95B4220254A0dCb4B905307Fd8"; const bscSakebar = "0xbC83FAdA7D0881F772daaB2B4295F949FA309B59"; const perpVault = "0xa34dA41edB2b15A20893d2208377E24D8dcdeB6e"; -const bUsd = ADDRESSES.bsc.BUSD; - -async function tvl(factory, block, chain) { - let balances = {}; - let poolsLength = ( - await sdk.api.abi.call({ - target: factory, - abi: abi.allPairsLength, - block, - chain, - }) - ).output; - let allPools = ( - await sdk.api.abi.multiCall({ - calls: Array.from({ length: Number(poolsLength) }, (_, k) => ({ - target: factory, - params: k, - })), - abi: abi.allPairs, - block, - chain, - }) - ).output; - let reserves = ( - await sdk.api.abi.multiCall({ - calls: allPools.map((p) => ({ - target: p.output, - })), - abi: abi.getReserves, - block, - chain, - }) - ).output; - let token0s = ( - await sdk.api.abi.multiCall({ - calls: allPools.map((p) => ({ - target: p.output, - })), - abi: abi.token0, - block, - chain, - }) - ).output; - let token1s = ( - await sdk.api.abi.multiCall({ - calls: allPools.map((p) => ({ - target: p.output, - })), - abi: abi.token1, - block, - chain, - }) - ).output; - for (let i = 0; i < reserves.length; i++) { - sdk.util.sumSingleBalance( - balances, - `${chain}:${token0s[i].output}`, - reserves[i].output._reserve0 - ); - sdk.util.sumSingleBalance( - balances, - `${chain}:${token1s[i].output}`, - reserves[i].output._reserve1 - ); - } - return balances; -} - -async function staking(sake, sakebar, block, chain) { - let balances = {}; - let balance = ( - await sdk.api.erc20.balanceOf({ - target: sake, - owner: sakebar, - block, - chain, - }) - ).output; - sdk.util.sumSingleBalance(balances, `${chain}:${sake}`, balance); - return balances; -} - -async function ethTvl(timestamp, block) { - return await tvl(ethFactory, block, "ethereum"); -} - -async function bscTvl(timestamp, block, chainBlocks) { - return await tvl(bscFactory, chainBlocks.bsc, "bsc"); -} - -async function ethStaking(timestamp, block) { - return await staking(ethSake, ethSakebar, block); -} - -async function bscStaking(timestamp, block, chainBlocks) { - return await staking(bscSake, bscSakebar, chainBlocks.bsc); -} - -async function perpVaultTvl(timestamp, block, chainBlocks) { - return await staking(bUsd, perpVault, chainBlocks.bsc); -} 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: ethTvl, - staking: ethStaking, + tvl: getUniTVL({ factory: '0x75e48C954594d64ef9613AeEF97Ad85370F13807', useDefaultCoreAssets: true, }), + staking: staking(ethSakebar, ethSake, ), }, bsc: { - tvl: sdk.util.sumChainTvls([bscTvl, perpVaultTvl]), - staking: bscStaking, + tvl: sdk.util.sumChainTvls([getUniTVL({ factory: '0xA534cf041Dcd2C95B4220254A0dCb4B905307Fd8', useDefaultCoreAssets: true, }), staking(perpVault, ADDRESSES.bsc.BUSD,)]), + staking: staking(bscSakebar, bscSake, ), }, }; From 86089658a95e55b3e157365eb29f9f0300a9af7a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:36:08 +0200 Subject: [PATCH 1221/2004] temp fix for zeta --- projects/helper/tokenMapping.js | 3 +++ projects/{treasury/nns.js => nns/index.js} | 0 2 files changed, 3 insertions(+) rename projects/{treasury/nns.js => nns/index.js} (100%) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 97a7ae161ab..aec826d2544 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -65,6 +65,9 @@ const fixBalancesTokens = { '0x0726523eba12edad467c55a962842ef358865559': { coingeckoId: "ordinals", decimals: 18, }, '0x967aec3276b63c5e2262da9641db9dbebb07dc0d': { coingeckoId: "tether", decimals: 6, }, '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, + }, + zeta: { + '0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf': { coingeckoId: "zetachain", decimals: 18, }, } } diff --git a/projects/treasury/nns.js b/projects/nns/index.js similarity index 100% rename from projects/treasury/nns.js rename to projects/nns/index.js From f988f0b5e29a54155c98af62440b4c4f21485c13 Mon Sep 17 00:00:00 2001 From: Joey <38412153+JoJo-Joker@users.noreply.github.com> Date: Sat, 13 Apr 2024 04:26:02 +0800 Subject: [PATCH 1222/2004] add staking of bsc, manta, polygon, zkfair (#9829) * Update tokenMapping.js * Update index.js --- projects/helper/tokenMapping.js | 12 ++++++++++++ projects/zeepr/index.js | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index aec826d2544..c9b40b97d05 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -53,6 +53,18 @@ const fixBalancesTokens = { core: { '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, }, + bsc: { + '0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB': { coingeckoId: "zeepr", decimals: 18, }, + }, + manta: { + '0x0863C7BcdB6Cf6edd5dc4bbd181A8D555AedbfBd': { coingeckoId: "zeepr", decimals: 18, }, + }, + polygon: { + '0x49fdEA2192b04e54E6D1cB5E3B3b996BAA6f621F': { coingeckoId: "zeepr", decimals: 18, }, + }, + zkfair: { + '0x5d26DeA980716e4aBa19F5B73Eb3DCcE1889F042': { coingeckoId: "zeepr", decimals: 18, }, + }, velas: { '0xaadbaa6758fc00dec9b43a0364a372605d8f1883': { coingeckoId: "staked-vlx", decimals: 18, }, '0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39': { coingeckoId: "velas", decimals: 18, }, diff --git a/projects/zeepr/index.js b/projects/zeepr/index.js index 388fdb3bb4a..d876af723fb 100644 --- a/projects/zeepr/index.js +++ b/projects/zeepr/index.js @@ -9,4 +9,20 @@ module.exports = { tvl: () => ({}), staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", "0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223"), }, + bsc: { + tvl: () => ({}), + staking: staking("0x096e9A8B7137bEBA3A043b800D3d227d5abB077a", "0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB"), + }, + manta: { + tvl: () => ({}), + staking: staking("0x37D8A51d9621041d6b9276ea8a835553b31698c7", "0x0863C7BcdB6Cf6edd5dc4bbd181A8D555AedbfBd"), + }, + polygon: { + tvl: () => ({}), + staking: staking("0xCb9A02B704640ffcf43D6a8DAe5096fc8a44021c", "0x49fdEA2192b04e54E6D1cB5E3B3b996BAA6f621F"), + }, + zkfair: { + tvl: () => ({}), + staking: staking("0x37D8A51d9621041d6b9276ea8a835553b31698c7", "0x5d26DeA980716e4aBa19F5B73Eb3DCcE1889F042"), + }, } From 364116addcfb475095fd446bb2b6ad4d1242761f Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 12 Apr 2024 13:27:07 -0700 Subject: [PATCH 1223/2004] Update/additional staking pool (#9830) * Astrzk, mode, blast, flare less url * Add additional ztx staking pool --- projects/steer/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/steer/index.js b/projects/steer/index.js index ac7bf88aec8..24e7646c7c6 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -167,6 +167,7 @@ module.exports.arbitrum.staking = stakings( "0x25Ef108B328Cf752F0E0b0169D499Db164173763", "0x0b619438d1E8b8c205656502de59Af2Af71C43e0", "0xaCdC6fC8F84fbA26f065489a7bf5837D7CDf546F", + "0xff46e1B60dD9De89Aa04902D5c3c5ca01f8576A4" ], "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", "arbitrum" From defcb1481adc2641a5ab5fa74afc3bada3b91656 Mon Sep 17 00:00:00 2001 From: Arjun Bhuptani Date: Fri, 12 Apr 2024 21:30:10 +0100 Subject: [PATCH 1224/2004] Update Connext Adapter (#9827) * Update supported chains * Add locked xerc20 data * fixes based on requested changes --- projects/connext/index.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/projects/connext/index.js b/projects/connext/index.js index 30819a3ff65..d12a39ae86d 100644 --- a/projects/connext/index.js +++ b/projects/connext/index.js @@ -11,10 +11,17 @@ async function getDeployedContractAddress(chainId) { const allContracts = await getContracts() const record = allContracts[chainId + ''] ?? [] const contracts = (record ?? [])[0]?.contracts ?? {} - return [ + + const result = [ contracts.Connext?.address, contracts.Connext_DiamondProxy?.address, - ].filter(i => i) + ].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 @@ -25,13 +32,17 @@ async function getAssetIds(chainId) { getAssetsPromise = getConfig('connect/assets/'+chainId, url) const data = await getAssetsPromise const chainData = data.find(item => item.chainId === chainId) || {} - return Object.entries(chainData.assetId || {}).filter(i => i[0].length && !i[1].symbol.startsWith('next')).map(i => i[0]) + 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("0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"); // ezETH + } + return result; } function chainTvl(chain) { return async (api) => { - const chainId = api.chainId const owners = await getDeployedContractAddress(chainId) if (!owners.length) @@ -49,6 +60,9 @@ const chains = [ "optimism", "arbitrum", "mode", + "metis", + "base", + "linea", // deprecated? "moonriver", From f0a960fb8f7591efab15bcc07b9be914673a7fe6 Mon Sep 17 00:00:00 2001 From: Gwojda Date: Fri, 12 Apr 2024 23:03:47 +0200 Subject: [PATCH 1225/2004] add gold_dao (#9823) * add gold_dao * fix golddao * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gold-dao/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/gold-dao/index.js diff --git a/projects/gold-dao/index.js b/projects/gold-dao/index.js new file mode 100644 index 00000000000..6875ca20277 --- /dev/null +++ b/projects/gold-dao/index.js @@ -0,0 +1,16 @@ +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, + methodology: "TVL counts gold bar owned by gold dao and convert gram to usd price using Forex Public Data", + icp: { + tvl, + }, +} From 272ef572e0af243b5df24a9939978389e6cb2d3c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 13 Apr 2024 06:19:09 +0100 Subject: [PATCH 1226/2004] add mnt --- projects/mantle/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/mantle/index.js b/projects/mantle/index.js index 2cc5812620d..5d62f33f1c8 100644 --- a/projects/mantle/index.js +++ b/projects/mantle/index.js @@ -5,7 +5,7 @@ module.exports = { tvl: (api) => sumTokens2({ api, - owner: "0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012", + owners: ["0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012","0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb"], fetchCoValentTokens: true, }), }, From 799615193b4002025cfc321fd7b491fc716eddee Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:37:24 +0200 Subject: [PATCH 1227/2004] minor fix --- projects/helper/coreAssets.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 1fd5d0c193d..b8ee5536e8f 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1657,8 +1657,7 @@ }, "merlin": { "WBTC": "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA", - "WBTC_1": "0xB880fd278198bd590252621d4CD071b1842E9Bcd", - "VOYA": "0x480e158395cc5b41e5584347c495584ca2caf78d" + "WBTC_1": "0xB880fd278198bd590252621d4CD071b1842E9Bcd" }, "ftn": { "USDC": "0x4237e0A5b55233D5B6D6d1D9BF421723954130D8" From 4fff6a25659f7f02f8542d6fd0163eb76badb45d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:38:08 +0200 Subject: [PATCH 1228/2004] use token labels --- projects/airpuff/index.js | 8 ++++---- projects/blackwing/index.js | 2 +- projects/butternetwork/index.js | 2 +- projects/etherfi-liquid/index.js | 3 ++- projects/helper/tokenMapping.js | 4 ++-- projects/juice-finance/index.js | 2 +- projects/renzo/index.js | 3 ++- projects/swell-l2-farm/index.js | 5 +++-- projects/zircuit/index.js | 2 +- projects/zkLink/index.js | 4 ++-- 10 files changed, 19 insertions(+), 16 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index d5c46736f78..1bec8580a0b 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -26,14 +26,14 @@ module.exports = { const ezETH = { vault: "0x497eB27Ca1ed7566653edf811b03d6418a03FC9d", - reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5", + reStakingToken: ADDRESSES.blast.ezETH, oracle: "0x2BAF3A2B667A5027a83101d218A9e8B73577F117", //Renzo oracleToken: "0x59e710215d45f584f44c0fee83da6d43d762d857", }; const ezETH1x = { vault: "0x9c96d0Cc5341654167ee35DB4F288ae523fe8779", - reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5", + reStakingToken: ADDRESSES.blast.ezETH, oracle: "0x2BAF3A2B667A5027a83101d218A9e8B73577F117", //Renzo oracleToken: "0x59e710215d45f584f44c0fee83da6d43d762d857", }; @@ -257,7 +257,7 @@ module.exports = { // leverage users const ezETH = { vault: "0x6295248F578bFA9c057a3e1182BED27121530E7A", - reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5", + reStakingToken: ADDRESSES.blast.ezETH, oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B", //Renzo }; @@ -275,7 +275,7 @@ module.exports = { const ezETH1x = { vault: "0x0bAc1a3D569c16D8AD9D3aB37f61dAF18DCfF781" /*vault*/, - reStakingToken: "0x2416092f143378750bb29b79eD961ab195CcEea5" /*reStakingToken*/, + reStakingToken: ADDRESSES.blast.ezETH /*reStakingToken*/, oracle: "0x28c1576eb118f2Ccd02eF2e6Dbd732F5C8D2e86B" /*oracle*/, }; const weETH1x = { diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index 29a0b527570..4f0000e7387 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -6,7 +6,7 @@ const BLACKWING_VAULT_ETH = '0xc6aDE8A68026d582AB37B879D188caF7e405dD09' const BLACKWING_VAULT_BSC = '0xD00789260984160a64DcF19A03896DfF73BF4514' const ARBITRUM_WEETH = "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe"; -const ARBITRUM_EZETH = "0x2416092f143378750bb29b79eD961ab195CcEea5"; +const ARBITRUM_EZETH = ADDRESSES.blast.ezETH; const ETHEREUM_MAINNET_RSWETH = '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0'; const ETHEREUM_MAINNET_RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7"; diff --git a/projects/butternetwork/index.js b/projects/butternetwork/index.js index 020b29e4a7e..28ee4eb4264 100644 --- a/projects/butternetwork/index.js +++ b/projects/butternetwork/index.js @@ -58,7 +58,7 @@ const config = { WBTC: ADDRESSES.merlin.WBTC, WBTC_1: ADDRESSES.merlin.WBTC_1, SolvBTC: "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", - iUSD: "0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D" + iUSD: ADDRESSES.bsc.iUSD } } } diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js index 2c0f897708d..b9bc25daedb 100644 --- a/projects/etherfi-liquid/index.js +++ b/projects/etherfi-liquid/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') async function tvl(api) { const bal = await api.call({ abi: "uint256:totalAssets", target: '0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221', }); - api.add("0x35fa164735182de50811e8e2e824cfb9b6118ac2", bal); + api.add(ADDRESSES.ethereum.EETH, bal); } module.exports = { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index c9b40b97d05..fa9c099b285 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -42,7 +42,7 @@ const fixBalancesTokens = { karak: { '0xa415021bc5c4c3b5b989116dc35ae95d9c962c8d': { coingeckoId: 'usd-coin', decimals: 6, }, '0xf948aacec00289fc33d8226391f7e04bb457ad49': { coingeckoId: 'restaked-swell-eth', decimals: 18, }, - '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18, }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: 'ethereum', decimals: 18, }, }, linea: { '0x894134a25a5fac1c2c26f1d8fbf05111a3cb9487': { coingeckoId: 'grai', decimals: 18, }, @@ -79,7 +79,7 @@ const fixBalancesTokens = { '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, }, zeta: { - '0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf': { coingeckoId: "zetachain", decimals: 18, }, + [ADDRESSES.zeta.WZETA]: { coingeckoId: "zetachain", decimals: 18, }, } } diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index 4a4205211f1..c6e89053277 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokens2 } = require("../helper/unwrapLPs"); // Tokens -const EZETH = "0x2416092f143378750bb29b79eD961ab195CcEea5"; +const EZETH = ADDRESSES.blast.ezETH; // Lending pools const LENDING_POOL_USDB = "0x4A1d9220e11a47d8Ab22Ccd82DA616740CF0920a"; diff --git a/projects/renzo/index.js b/projects/renzo/index.js index e547551f9d7..74f234f11f3 100644 --- a/projects/renzo/index.js +++ b/projects/renzo/index.js @@ -1,5 +1,6 @@ +const ADDRESSES = require('../helper/coreAssets.json') const L1_EZ_ETH_ADDRESS = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; -const L2_EZ_ETH_ADDRESS = "0x2416092f143378750bb29b79eD961ab195CcEea5"; +const L2_EZ_ETH_ADDRESS = ADDRESSES.blast.ezETH; const L1_LOCKBOX_ADDRESS = "0xC8140dA31E6bCa19b287cC35531c2212763C2059"; async function L2Tvl(api) { diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js index 5aa1820791a..749ee696861 100644 --- a/projects/swell-l2-farm/index.js +++ b/projects/swell-l2-farm/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress } = require("../helper/tokenMapping"); const { sumTokensExport } = require("../helper/unwrapLPs"); @@ -7,14 +8,14 @@ module.exports = { owners: ["0x38D43a6Cb8DA0E855A42fB6b0733A0498531d774"], tokens: [ nullAddress, - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + ADDRESSES.ethereum.WSTETH, "0x49446A0874197839D15395B908328a74ccc96Bc0", "0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10", "0x49446A0874197839D15395B908328a74ccc96Bc0", "0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0", "0xf951E335afb289353dc249e82926178EaC7DEd78", "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + ADDRESSES.ethereum.WETH, "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", "0x8457CA5040ad67fdebbCC8EdCE889A335Bc0fbFB", "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js index 9748f438658..fb3cb2730b1 100644 --- a/projects/zircuit/index.js +++ b/projects/zircuit/index.js @@ -16,7 +16,7 @@ const TOKEN_CONTRACTS = [ '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', // weETH '0xf951E335afb289353dc249e82926178EaC7DEd78', // swETH '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3', // USDe - '0x4d831e22F062b5327dFdB15f0b6a5dF20E2E3dD0', // cSTONE + ADDRESSES.ethereum.STONE, // cSTONE '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa', // mETH '0xD9A442856C234a39a81a089C06451EBAa4306a72' // pufETH ]; diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 84f9f10327a..3d217bfd4e9 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -35,7 +35,7 @@ const config = { ], tokens: [ "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", // WBTC - "0x2416092f143378750bb29b79eD961ab195CcEea5", // ezETH + ADDRESSES.blast.ezETH, // ezETH "0xB5beDd42000b71FddE22D3eE8a79Bd49A568fC8F", // wstETH "0x531e4901EB141a71e111Cc23Fc4fBD4B7dB788d5", // ZKT ADDRESSES.linea.USDT, // USDT @@ -90,7 +90,7 @@ const config = { ], tokens: [ ADDRESSES.null, - "0x2416092f143378750bb29b79eD961ab195CcEea5", // ezeth + ADDRESSES.blast.ezETH, // ezeth "0x8cDe337D4D39f692f867c9FFA696f555EdaB4BeD", // zkt "0x038f1C6ED5FccF690A920a27b39366eeeF27eFCe", // rich "0x5FE8534a6F96cb01261Bd96e98c17C2c1Cab3204", // BAJA From 0fa786f6969e259efcb2c89d543f0f8127320b09 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 13 Apr 2024 16:16:45 +0200 Subject: [PATCH 1229/2004] temp fix: zeta --- projects/helper/tokenMapping.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index fa9c099b285..d6f210cf2bc 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -79,7 +79,15 @@ const fixBalancesTokens = { '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, }, zeta: { - [ADDRESSES.zeta.WZETA]: { coingeckoId: "zetachain", decimals: 18, }, + [ADDRESSES.zeta.WZETA]: { decimals: 18, coingeckoId: "zetachain" }, + [ADDRESSES.null]: { decimals: 18, coingeckoId: "zetachain" }, + "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0": { decimals: 18, coingeckoId: "usd-coin" }, + "0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a": { decimals: 18, coingeckoId: "usd-coin" }, + "0x7c8dDa80bbBE1254a7aACf3219EBe1481c6E01d7": { decimals: 18, coingeckoId: "tether" }, + "0x91d4F0D54090Df2D81e834c3c8CE71C6c865e79F": { decimals: 18, coingeckoId: "tether" }, + "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891": { decimals: 18, coingeckoId: "ethereum" }, + "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb": { decimals: 18, coingeckoId: "binancecoin" }, + "0x13A0c5930C028511Dc02665E7285134B6d11A5f4": { decimals: 18, coingeckoId: "bitcoin" } } } From 6af4c8abb40782f22be8f03b19fca96fed3e2035 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 13 Apr 2024 17:54:13 +0100 Subject: [PATCH 1230/2004] revert change --- projects/mantle/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/mantle/index.js b/projects/mantle/index.js index 5d62f33f1c8..c212affb3c2 100644 --- a/projects/mantle/index.js +++ b/projects/mantle/index.js @@ -5,7 +5,7 @@ module.exports = { tvl: (api) => sumTokens2({ api, - owners: ["0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012","0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb"], + owners: ["0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012"], fetchCoValentTokens: true, }), }, From cf76e524420c7e1c29370658c5ae422920926e8f Mon Sep 17 00:00:00 2001 From: veneradex <166947008+veneradex@users.noreply.github.com> Date: Sun, 14 Apr 2024 21:08:34 +0300 Subject: [PATCH 1231/2004] add venera sdk adapter (#9834) --- projects/venera/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/venera/index.js diff --git a/projects/venera/index.js b/projects/venera/index.js new file mode 100644 index 00000000000..d777693502b --- /dev/null +++ b/projects/venera/index.js @@ -0,0 +1,14 @@ +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), + }, +}; From 6c873e18f18869a1311aec85e563d2f299af8ff6 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 15 Apr 2024 11:28:18 +0100 Subject: [PATCH 1232/2004] add blast chain to USD+ (#9836) --- projects/overnight-usdPlus/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/overnight-usdPlus/index.js b/projects/overnight-usdPlus/index.js index b66fa08f56f..3b567f50822 100644 --- a/projects/overnight-usdPlus/index.js +++ b/projects/overnight-usdPlus/index.js @@ -8,6 +8,7 @@ const m2m = { era: ["0x240aad990FFc5F04F11593fF4dCF1fF714d6fc80"], base: ["0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb", "0x96aa0bBe4D0dea7C4AF4739c53dBFA0300262253"], linea: ["0x1F4947Cd5A5c058DD5EA6Fd1CCd5c311aDa9E6Fb"], + blast: ["0x93dD104528B35E82c061BB0D521096dCF11628FA", "0x1d48DD3094EbB4B9a2c5Ab96dF4ef05bFF562F26"], } const assets = { @@ -17,7 +18,8 @@ const assets = { arbitrum: ADDRESSES.arbitrum.USDC, //USDC era: ADDRESSES.era.USDC, base: ADDRESSES.base.USDbC, //USDC - linea: ADDRESSES.linea.USDC //USDC + linea: ADDRESSES.linea.USDC, //USDC + blast: ADDRESSES.blast.USDB // USDB } const abi = "uint256:totalNetAssets" From 4727dfb38a8addeefd159a1f8666c688e2d382c1 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:28:07 +0100 Subject: [PATCH 1233/2004] Kucoin april (#9838) * add blast chain to USD+ * kucoin april wallets (cex) --- projects/kucoin/index.js | 41 ++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/projects/kucoin/index.js b/projects/kucoin/index.js index 78bd1974047..f8cc48e7066 100644 --- a/projects/kucoin/index.js +++ b/projects/kucoin/index.js @@ -29,7 +29,7 @@ const config = { '0xec30d02f10353f8efc9601371f56e808751f396f', '0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91', '0xf8da05c625a6e601281110cba52b156e714e1dc2', - '0xf97deb1c0bb4536ff16617d29e5f4b340fe231df', + '0xf97deb1c0bb4536ff16617d29e5f4b340fe231df' ], }, tron: { @@ -38,7 +38,7 @@ const config = { 'TQeNNo5zVarhdKm5EiJSekfNXg6H1tRN4n', 'TRYL7PKCG4b4xRCM554Q5J6o8f1UjUmfnY', 'TSGEXDSRMtzt9swPSgzr8MKefcgEawEdmb', - 'TUpHuDkiCCmwaTZBHZvQdwWzGNm5t8J2b9', + 'TUpHuDkiCCmwaTZBHZvQdwWzGNm5t8J2b9' ] }, bitcoin: { @@ -159,22 +159,28 @@ const config = { }, arbitrum: { owners: [ - '0xd6216fc19db775df9774a6e33526131da7d19a2c', + '0x00f3e09abe73aec2d6ad7b8820049b60ebc73f94', '0x03e6fa590cadcf15a38e86158e9b3d06ff3399ba', + '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23', + '0xd6216fc19db775df9774a6e33526131da7d19a2c', '0xf3f094484ec6901ffc9681bcb808b96bafd0b8a8', - '0x00f3e09abe73aec2d6ad7b8820049b60ebc73f94', - '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23' ], }, algorand: { owners: [ // added on 23/03/24 - 'T6MXHXMGXURKJ7AD5NCB4IYPLWXYXKKFLLO5KAPJ56GKS7BFXHNHOODZCM', '2X2GV36S66B64URLMRZ4O4IGLWSM5MEKIE6J5VREIZC62GVKCSH25IG4PM', + '3CIPOIS4KLKSA3XOCIRKX2TVUJ2V3F5A4P525VGMFCPGN7QFKDDYUABYOY', + '6BR7CEVW45EPNFU5WVRYITT2E5JRIJ4CR3ZQB3ESYFNHQ5WXRCE7DERPJ4', + 'E6JY54BKVABSV3XRR7HETFINONQT6X5B7Y3BHZGOJN7REWHW26C5AAGFQA', + 'FYQAVFTL3QKZJI2CZ6FWNTUGI2CSQFNLPLH54JKOUWTO32JSCQLWA42TUQ', + 'HX3CMSTRXPARNP47QXCLE64TE4GDGH55CMAVJAH6Q6ED4D3LUYB3UMOPKM', 'IMGMVBZEPMM36AIMWI7FZHG2G44KEESC5ALZHWX7B7SBNBDY6Z7COYMO6U', + 'LDBCWDN2DLBTSCOOUQKJKA4VLMCVERCVH474UCUNBLKEG2TNB6JXCTNDBY', 'NDVDIGWEP77WQDDU5M6F7AAS77AOFXLML7DNNPUEVLQMKTIFHYTTMAG6OU', + 'RJDGVT3PCN456KUEGJ36N6SD7XCXDR4FJCCUNJZU7IFYRI6TZVZMGZZLGQ', + 'T6MXHXMGXURKJ7AD5NCB4IYPLWXYXKKFLLO5KAPJ56GKS7BFXHNHOODZCM', 'WBI5LT2BQ7FFYBXW2PEDVB6KBX2F3C77WXBJ2FPVERBXXBUV6SC7XXPGWM', 'YXDKDH5XHXL6OYMH2HYCJCXOZWPOBEUNK5ICFVJRFW3JVQXZ6HQ6QPVQVA', - '3CIPOIS4KLKSA3XOCIRKX2TVUJ2V3F5A4P525VGMFCPGN7QFKDDYUABYOY', ], }, kcc: { @@ -200,9 +206,24 @@ const config = { 'BmFdpraQhkiDQE6SnfG5omcA1VwzqfXrwtNYBwWTymy6', 'EkUy8BB574iEVAQE9dywEiMhp9f2mFBuFu6TBKAkQxFY', 'HVh6wHNBAsG3pq1Bj5oCzRjoWKVogEDHwUHkRz3ekFgt', - 'BmFdpraQhkiDQE6SnfG5omcA1VwzqfXrwtNYBwWTymy6', - 'EkUy8BB574iEVAQE9dywEiMhp9f2mFBuFu6TBKAkQxFY', - 'HVh6wHNBAsG3pq1Bj5oCzRjoWKVogEDHwUHkRz3ekFgt' + ], + }, + bsc: { + owners: [ + '0x1692e170361cefd1eb7240ec13d048fd9af6d667', + '0x17a30350771d02409046a683b18fe1c13ccfc4a8', + '0x3ad7d43702bc2177cc9ec655b6ee724136891ef4', + '0x53f78a071d04224b8e254e243fffc6d9f2f3fa23', + '0xb8e6d31e7b212b2b7250ee9c26c56cebbfbe6b23', + '0xd6216fc19db775df9774a6e33526131da7d19a2c', + '0xf8ba3ec49212ca45325a2335a8ab1279770df6c0', + ], + }, + kava: { + owners: [ + '0x1dd9319a115d36bd0f71c276844f67171678e17b', + '0xd6216fc19db775df9774a6e33526131da7d19a2c', + '0xfb6a733bf7ec9ce047c1c5199f18401052eb062d', ], } } From 95ca53385b2e2e4ab7fd7f8148451c874a8f0618 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:32:20 +0100 Subject: [PATCH 1234/2004] fix kucoin algo (#9839) --- projects/kucoin/index.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/projects/kucoin/index.js b/projects/kucoin/index.js index f8cc48e7066..f158e6a2fb4 100644 --- a/projects/kucoin/index.js +++ b/projects/kucoin/index.js @@ -169,16 +169,8 @@ const config = { algorand: { owners: [ // added on 23/03/24 '2X2GV36S66B64URLMRZ4O4IGLWSM5MEKIE6J5VREIZC62GVKCSH25IG4PM', - '3CIPOIS4KLKSA3XOCIRKX2TVUJ2V3F5A4P525VGMFCPGN7QFKDDYUABYOY', - '6BR7CEVW45EPNFU5WVRYITT2E5JRIJ4CR3ZQB3ESYFNHQ5WXRCE7DERPJ4', - 'E6JY54BKVABSV3XRR7HETFINONQT6X5B7Y3BHZGOJN7REWHW26C5AAGFQA', - 'FYQAVFTL3QKZJI2CZ6FWNTUGI2CSQFNLPLH54JKOUWTO32JSCQLWA42TUQ', - 'HX3CMSTRXPARNP47QXCLE64TE4GDGH55CMAVJAH6Q6ED4D3LUYB3UMOPKM', 'IMGMVBZEPMM36AIMWI7FZHG2G44KEESC5ALZHWX7B7SBNBDY6Z7COYMO6U', - 'LDBCWDN2DLBTSCOOUQKJKA4VLMCVERCVH474UCUNBLKEG2TNB6JXCTNDBY', 'NDVDIGWEP77WQDDU5M6F7AAS77AOFXLML7DNNPUEVLQMKTIFHYTTMAG6OU', - 'RJDGVT3PCN456KUEGJ36N6SD7XCXDR4FJCCUNJZU7IFYRI6TZVZMGZZLGQ', - 'T6MXHXMGXURKJ7AD5NCB4IYPLWXYXKKFLLO5KAPJ56GKS7BFXHNHOODZCM', 'WBI5LT2BQ7FFYBXW2PEDVB6KBX2F3C77WXBJ2FPVERBXXBUV6SC7XXPGWM', 'YXDKDH5XHXL6OYMH2HYCJCXOZWPOBEUNK5ICFVJRFW3JVQXZ6HQ6QPVQVA', ], From 981ab3c91283086b43abc44a93c5cf58e3189cf4 Mon Sep 17 00:00:00 2001 From: rafay-contrax <128805942+rafay-contrax@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:06:41 +0500 Subject: [PATCH 1235/2004] chore: contrax peapods vaults added (#9840) Co-authored-by: Saqlain Riaz --- projects/contrax-finance/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/contrax-finance/index.js b/projects/contrax-finance/index.js index 02bcc9d650e..c4ea826699a 100644 --- a/projects/contrax-finance/index.js +++ b/projects/contrax-finance/index.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const { sumTokens2 } = require("../helper/unwrapLPs"); const Vaults = [ "0x5cc3543656EfA30144965C6c538F4d8379F83138", @@ -15,6 +15,12 @@ const Vaults = [ "0x8ca3f11485Bd85Dd0E952C6b21981DEe8CD1E901", "0x1dda3B8A728a62a30f79d1E2a10e3d6B85ef4C5d", "0x6C416e46424aF2676E9603F9D707f8d4808Bb5d8", + "0x92781a20B6447F304E72321ed4BC8ca4349b3739", + "0x91805fD2cB80ad57379842630a569aC6D72E1B47", + "0x7f9E71e0d829619b5445073d034927347cf0e3eA", + "0xAFbC45a9aaaD39aC26dC4D2Cc32Dc4187d897eCa", + "0x483a461745e4245D5B7Be0BBFb580940d6a4F52a", + "0x0fC2106678F73cFe2D7C09631c05E6eB079EF36A", ]; const HOP_MAGIC_VAULT = "0x2d79B76841191c9c22238535a93Ee8169096A5Cc"; const GMX_VAULT = "0x8CdF8d10ea6Cd3492e67C4250481A695c2a75C4a"; From 59ccc0cb1e16595b42090701e9c337a8f24ffd36 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 Apr 2024 16:28:28 +0200 Subject: [PATCH 1236/2004] track loxodrome.xyz --- projects/loxodrome/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/loxodrome/index.js diff --git a/projects/loxodrome/index.js b/projects/loxodrome/index.js new file mode 100644 index 00000000000..51e4cb90f44 --- /dev/null +++ b/projects/loxodrome/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('iotex', '0x92bfa051bf12a0aef9a5e1ac8b2aa7dc1b05a406', { hasStablePools: true, }) \ No newline at end of file From ed2382a3e35f8955179de4f0bffc5b606cf72456 Mon Sep 17 00:00:00 2001 From: Olena Dolinchuk <103029492+OlenaDolinchuk@users.noreply.github.com> Date: Mon, 15 Apr 2024 16:31:21 +0200 Subject: [PATCH 1237/2004] Add Stobox TVL (#9826) --- projects/stobox/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/stobox/index.js diff --git a/projects/stobox/index.js b/projects/stobox/index.js new file mode 100644 index 00000000000..baa5309e69f --- /dev/null +++ b/projects/stobox/index.js @@ -0,0 +1,34 @@ +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(); + }, + }; +}); From 7f29f51fbb55a6f26270a2a35a6869245e0998ff Mon Sep 17 00:00:00 2001 From: surf <147225412+surf-exchange@users.noreply.github.com> Date: Mon, 15 Apr 2024 22:37:43 +0800 Subject: [PATCH 1238/2004] Adding TVL from the Merlin chain (#9843) Co-authored-by: surf-rd --- projects/surfone/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/surfone/index.js b/projects/surfone/index.js index 9e2f2585165..d7465716ace 100644 --- a/projects/surfone/index.js +++ b/projects/surfone/index.js @@ -1,18 +1,23 @@ const factoryContract = '0x5FeD7c030a1B3b40988984479Fdd666dE81038A3' const positionContract = '0x1fa9702e774D31aB661D84f449b0Aa22c41D6827' +const merlinPoolContract = '0x69d2AbBCef322afcDAED52238f43882cEe3ACC08' +const merlinPositionContract = '0x7A3D0eBb547001E769F2A7AE3f0D7a9b3078F3C1' const ADDRESSES = require('../helper/coreAssets.json') -async function tvl(api) { +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) { + return api.sumTokens({ owners:[merlinPoolContract,merlinPositionContract], tokens: [ADDRESSES.merlin.WBTC, ADDRESSES.merlin.WBTC_1]}) +} module.exports = { - start: 8048857, - base: { tvl }, + base: { tvl:tvlBase}, + merlin: {tvl:merlinTvl}, methodology: "Count the total balance across all fee pools for all trading pairs.", } From 6aae1cd6b907547b5acaa9969a7f1d778b1874a6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 Apr 2024 16:54:56 +0200 Subject: [PATCH 1239/2004] track breadchain.xyz --- projects/breadchain/index.js | 8 ++++++++ projects/mage/index.js | 6 ++++++ 2 files changed, 14 insertions(+) create mode 100644 projects/breadchain/index.js create mode 100644 projects/mage/index.js diff --git a/projects/breadchain/index.js b/projects/breadchain/index.js new file mode 100644 index 00000000000..6d4a567ea1f --- /dev/null +++ b/projects/breadchain/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + xdai: { + tvl: sumTokensExport({ owner: '0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3', tokens: [ADDRESSES.xdai.DAI, '0xaf204776c7245bf4147c2612bf6e5972ee483701']}) + }, +} \ No newline at end of file diff --git a/projects/mage/index.js b/projects/mage/index.js new file mode 100644 index 00000000000..352087fa89b --- /dev/null +++ b/projects/mage/index.js @@ -0,0 +1,6 @@ +const { methodology, compoundExports2 } = require("../helper/compound"); + +module.exports = { + merlin: compoundExports2({ comptroller: '0xCE3bcCd2b0A457782f79000Be1b534C04B3F5aDD', cether: '0xe3b51f15dc086fba15426b8d42b4cd6feb46968e' }), + methodology, +} \ No newline at end of file From 79ad9fa768820f62d51dd8743e7e43fed1039ce6 Mon Sep 17 00:00:00 2001 From: MageFinance <162527621+MageFinance@users.noreply.github.com> Date: Tue, 16 Apr 2024 00:33:55 +0800 Subject: [PATCH 1240/2004] add Mage Protocol (#9831) * add Mage Protocol * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d6f210cf2bc..1bc0f757abe 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -75,6 +75,7 @@ const fixBalancesTokens = { '0x4dcb91cc19aadfe5a6672781eb09abad00c19e4c': { coingeckoId: "sats-ordinals", decimals: 18, }, '0x69181a1f082ea83a152621e4fa527c936abfa501': { coingeckoId: "rats", decimals: 18, }, '0x0726523eba12edad467c55a962842ef358865559': { coingeckoId: "ordinals", decimals: 18, }, + '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, '0x967aec3276b63c5e2262da9641db9dbebb07dc0d': { coingeckoId: "tether", decimals: 6, }, '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, }, From b415c05fe0392280328b76d85f5e0ebd99e4c828 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 16 Apr 2024 00:38:08 +0800 Subject: [PATCH 1241/2004] add strategies for pendle pools (#9824) * add strategies for pendle pools * fix: change api call endpoint to defiLlama * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/airpuff/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 1bec8580a0b..09d66f544e0 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -1,4 +1,3 @@ -//import utils const ADDRESSES = require("../helper/coreAssets.json"); const contractAbis = { readOraclePrice: "function read() view returns (int224 value, uint32 timestamp)", @@ -227,6 +226,25 @@ module.exports = { api.add(ADDRESSES.ethereum.WETH, mswETHBalInETH); } + + //new strats on pendle v2 + const pTweETH = { + vault: "0xE9E2087CD1179378C847C1f3B73CCA929e3deb95", + pendleAddress: "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", + }; + + const pTezETH = { + vault: "0x679EB9b7C57d9B98684034CDAfC2F4a72ABfEBD6", + pendleAddress: "0xeee8aed1957ca1545a0508afb51b53cca7e3c0d1", + }; + + const pTsETH = { + vault: "0x72Da018b1C7FAACEAa141DEc753F1fFe88c493AD", + pendleAddress: "0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e", + }; + + const tokensAndOwners = [pTweETH, pTezETH, pTsETH].map(i => [i.pendleAddress, i.vault]); + await api.sumTokens({ tokensAndOwners }) }, }, //-----------------------------------------------------------------------// From 88b7b359285d7cdfb01fd74146eb99b6a4be503e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 15 Apr 2024 21:27:06 +0200 Subject: [PATCH 1242/2004] update baryon (#9842) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Submit Baryon Tomo Contract * Submit Pool Stake Baryon * remove comma * feat: submit add more chain to baryon * feat: add new chain * code refactor --------- Co-authored-by: khiêm <87562184+khiemsoft@users.noreply.github.com> --- projects/baryon/index.js | 46 ++++++++++++--------------------- projects/helper/chains.json | 2 ++ projects/helper/tokenMapping.js | 5 +++- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/projects/baryon/index.js b/projects/baryon/index.js index 4c90e614589..efac06d3c2b 100644 --- a/projects/baryon/index.js +++ b/projects/baryon/index.js @@ -1,5 +1,4 @@ -const utils = require('../helper/utils'); -const { stakings, staking } = require('../helper/staking'); +const { stakings } = require('../helper/staking'); const { getUniTVL } = require('../helper/unknownTokens') const { getConfig } = require('../helper/cache') @@ -9,33 +8,22 @@ async function fetchData(chain) { return data[chain] } -async function stakingTomo(...args) { - const lpTokenTomo = await fetchData('tomo') - - return stakings(lpTokenTomo.stakeContract, lpTokenTomo.lpToken)(...args) +const config = { + bitkub: { factory: '0xf7eEe3A8363731C611A24CdDfCBcaDE9C153Cfe8', key: 'bitkub' }, + ancient8: { factory: '0xAE12C5930881c53715B369ceC7606B70d8EB229f', key: 'ancient8Mainnet' }, + tomochain: { factory: '0xFe48A2E66EE2f90334d3565E56E0c9d0081447e8', key: 'tomo' }, + bsc: { factory: '0x03879e2a3944fd601e7638dfcbc9253fb793b599', key: 'binanceSmart' }, } -async function stakingBsc(...args) { - const lpTokenTomo = await fetchData('binanceSmart') - - return stakings(lpTokenTomo.stakeContract, lpTokenTomo.lpToken)(...args) -} - -module.exports = { - bsc: { - misrepresentedTokens: true, - staking: stakingBsc, - tvl: getUniTVL({ - factory: '0x03879e2a3944fd601e7638dfcbc9253fb793b599', - useDefaultCoreAssets: true, - }) - }, - tomochain: { - misrepresentedTokens: true, - staking: stakingTomo, - tvl: getUniTVL({ - factory: '0xFe48A2E66EE2f90334d3565E56E0c9d0081447e8', - useDefaultCoreAssets: true, - }) +Object.keys(config).forEach(chain => { + const { factory, key } = config[chain] + module.exports[chain] = { + tvl: getUniTVL({ factory, useDefaultCoreAssets: true }), + staking: async (...args) => { + const { stakeContract, lpToken } = await fetchData(key) + return stakings(stakeContract, lpToken)(...args) + } } -} \ No newline at end of file +}) + +module.exports.misrepresentedTokens = true \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 71aa3f79635..05b0059859e 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -7,6 +7,7 @@ "aptos", "arbitrum", "arbitrum_nova", + "ancient8", "archway", "area", "astar", @@ -28,6 +29,7 @@ "bitrock", "bittensor", "bittorrent", + "bitkub", "blast", "boba", "boba_avax", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 1bc0f757abe..9412aa15377 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -89,7 +89,10 @@ const fixBalancesTokens = { "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891": { decimals: 18, coingeckoId: "ethereum" }, "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb": { decimals: 18, coingeckoId: "binancecoin" }, "0x13A0c5930C028511Dc02665E7285134B6d11A5f4": { decimals: 18, coingeckoId: "bitcoin" } - } + }, + ancient8: { + '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From f5eb2e62f26f367c34c3402c91ccd63c5250c03a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 15 Apr 2024 21:03:26 +0100 Subject: [PATCH 1243/2004] add aero vault --- projects/qidao/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index 816cf018923..3c9e276e1f3 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -102,7 +102,8 @@ const config = { vaults: [ "0x7333fd58d8d73a8e5fc1a16c8037ada4f580fa2b", "0x8d6cebd76f18e1558d4db88138e2defb3909fad6", - "0x654a31ba7d714cfcab19b17d0066171c1a292349" + "0x654a31ba7d714cfcab19b17d0066171c1a292349", + "0x20658fDaBD4C79F1B3666E5bcCAeF78b5059B109" ], psm: ["0x83D41737d086033A9c3acE2F1Ad9350d7d91cf02",], }, From 4f955fa8beba8b008d1f72c3b9264faa6ad3c98c Mon Sep 17 00:00:00 2001 From: DainaTsuru <102115233+DainaTsuru@users.noreply.github.com> Date: Tue, 16 Apr 2024 06:36:46 +0900 Subject: [PATCH 1244/2004] Update contract address and add new chains (#9833) * Update contract address and add new chains * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/xWinFinance/Helper.js | 47 +---------------------- projects/xWinFinance/index.js | 70 ++++++++++++++++++++++++---------- 2 files changed, 51 insertions(+), 66 deletions(-) diff --git a/projects/xWinFinance/Helper.js b/projects/xWinFinance/Helper.js index 4636c161219..64ff10d0aea 100644 --- a/projects/xWinFinance/Helper.js +++ b/projects/xWinFinance/Helper.js @@ -2,48 +2,6 @@ const token = { XWIN: '0xd88ca08d8eec1e9e09562213ae83a7853ebb5d28' }; -const Strategies = { - xSCA: "0x0a652784DF3f8Abde85dAEeee77D1EA97f5c5B24", - xDCA: "0x482ae949E4a70953fCa090717b68359b73b8602a", - xWinBBMA: "0x5EFaaBc34a3ba66f1fD02F056AC457AeBaF57D55", - xWinIRT: "0x5A8a66DF53DF88844c60829967b88d00eD208E08", - xCAKE_V: "0x1d2430bBfe86432E36A7C7286E99f78546F23De9", - xETH_V: "0x0C34Aa4e36983aB6ec11bC557A3B8cF79A7a9Ae7", - xUSDC_V: "0xcBca44d60c5A2b3c56ACfB51aFC66Ea04b8a2742", - xBUSD_V: "0xf4979C043df6f7d5dA929DeAB11b220A82886395", - xBTC_V: "0x7A0dEc70473602Cd0EF3Dc3d909b6Dc3FA42116C", - xUSDT_V: "0x8B7fcACB99124F009c8470FDa6f5fcF60277BDB2", - xADA_V: "0x605926F795FD9B4c3A8B1A2db33cBE01c66bA83f", - xBTC_O: "0x69764856e82180150f5366be610E40c2f812d7D6", - xUSDT_O: "0xCEbd365e4BFd8589Fd6BDe21898DB35a8095f956", -}; - -const PublicVault = { - fDEFI: "0x61d5722290F8755b2f31D260064658D6Ad837F37", - fMIV: "0x0A0817454710102F2bcB2215D616cBe3aFf495e5", - fxDollar: "0xFa4d4B4243dDA1F5f4d09269f61D57d02470635C", - fBTCETH: "0x284b4aDD0C9669f635EA64418C216821c45D0B48", - fvUSDT: "0xE949d266E8740470a15DFB1F40A795b5a2b63f02", - fCombo: "0x4d4F948C8E9Ec3d1cE1B80d598f57F8c75c64e4a", - fTACombo: "0xaaFF5eFe1376474a520FFe9129d8Aa8d7422AAbe", -}; - -const PrivateVault = { - Vault1: "0xa74c70d0bf531171360e603e6441faeb71b117d1", - Vault2: "0x834672c33291fd6932c1786e0c5fd4a3b921dc00", - Vault3: "0xc1908cf72426c0d6c48a4930bef681bb6621c106", - Vault4: "0x774c1ba3c31af51e4596fcaf9f90eaf167aee34c", - Vault5: "0x69f69df395c05202ec935999d072fa390defc31f", - Vault6: "0xb3c713a845378484f66e3f2ad608e3438675ff7c", - Vault7: "0xc5782a89ad76fe0b68cd67dcc4b294fcb5307415", - Vault8: "0xbddd3ff6f5902171faebb34e9ee084341c94a1e6", - Vault9: "0xe6eff8492c6832c1da6f76d3cc3288951021a7b5", - Vault10: "0x42289b0356470bdc0a93d6710f0bcf8bc0868f96", - Vault11: "0x90aadea5b2f10c4c53139fe4cf8005ffe5ed8d47", - Vault12: "0xbff5506a0c604cbf231646838f2f29118210e236", - Vault13: "0xeb23a52115e5ac9ed9085a1c0b25ec29529eef3b", -}; - const farms = { MasterChefAddress: "0xD09774e3d5Dc02fa969896c53D3Cbb5bC8900A60", BuddyChefAddress: "0x4B87a60fC5a94e5ac886867977e29c9711C2E903", @@ -63,10 +21,7 @@ const abi = { }; module.exports = { - Strategies, - PublicVault, - PrivateVault, farms, abi, token, -}; +} \ No newline at end of file diff --git a/projects/xWinFinance/index.js b/projects/xWinFinance/index.js index 5e51881a6f4..78a402af074 100644 --- a/projects/xWinFinance/index.js +++ b/projects/xWinFinance/index.js @@ -1,27 +1,57 @@ const { sumTokens2, sumTokensExport, } = require('../helper/unwrapLPs') -const Helper = require("./Helper.js"); -const { farms: { MasterChefAddress, LockStakingAddress }, abi, token: { XWIN } } = require('./Helper.js'); - -async function tvl(api) { - const vaults = [ - ...Object.values(Helper.Strategies), - ...Object.values(Helper.PublicVault), - ...Object.values(Helper.PrivateVault), - ] - const bals = await api.multiCall({ abi: 'uint256:getVaultValues', calls: vaults}) - const tokens = await api.multiCall({ abi: 'address:baseToken', calls: vaults}) - api.addTokens(tokens, bals) +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) => { + const 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 bals = await api.multiCall({ abi: 'uint256:getVaultValues', calls: vaults }) + 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 / 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, }) + 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: { - tvl, - pool2, - staking: sumTokensExport({ owners: [MasterChefAddress, LockStakingAddress], tokens: [XWIN]}) - }, -}; +module.exports.bsc.pool2 = pool2 +module.exports.bsc.staking = sumTokensExport({ owners: [MasterChefAddress, LockStakingAddress], tokens: [XWIN] }) From 4043b40c461fd1e123460811f6b257c4b1eba3bf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 Apr 2024 00:34:05 +0200 Subject: [PATCH 1245/2004] track hyperliquid --- projects/helper/chains.json | 1 + projects/hyperliquid-perp/index.js | 12 ++++++++++++ projects/hyperliquid-spot/index.js | 12 ++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 projects/hyperliquid-perp/index.js create mode 100644 projects/hyperliquid-spot/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 05b0059859e..c895f312c60 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -127,6 +127,7 @@ "hpb", "hydra", "hydradx", + "hyperliquid", "icon", "icp", "imx", diff --git a/projects/hyperliquid-perp/index.js b/projects/hyperliquid-perp/index.js new file mode 100644 index 00000000000..5c14aacaae9 --- /dev/null +++ b/projects/hyperliquid-perp/index.js @@ -0,0 +1,12 @@ +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('tether', +i.usdcValue)) +} + +module.exports = { + misrepresentedTokens: true, + hyperliquid: { tvl } +} \ No newline at end of file diff --git a/projects/hyperliquid-spot/index.js b/projects/hyperliquid-spot/index.js new file mode 100644 index 00000000000..01158e51026 --- /dev/null +++ b/projects/hyperliquid-spot/index.js @@ -0,0 +1,12 @@ +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 Spot DEX") + data.tokens.forEach(i => api.addCGToken('tether', api.usdcValue)) +} + +module.exports = { + misrepresentedTokens: true, + hyperliquid: { tvl } +} \ No newline at end of file From c0a793dee1b03a47ecf64947f380df811b1a5899 Mon Sep 17 00:00:00 2001 From: VolcanoProtocal <166019007+VolcanoProtocal@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:19:57 +0800 Subject: [PATCH 1246/2004] add volcano project (#9849) --- projects/volcano/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 projects/volcano/index.js diff --git a/projects/volcano/index.js b/projects/volcano/index.js new file mode 100755 index 00000000000..dd1ddef89af --- /dev/null +++ b/projects/volcano/index.js @@ -0,0 +1,18 @@ +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], + ], + }), + } +} From 55b4028c65a452af017e080cc0d668455f98db79 Mon Sep 17 00:00:00 2001 From: Jeremy Crane Date: Tue, 16 Apr 2024 01:47:45 -0600 Subject: [PATCH 1247/2004] Update index.js (#9846) --- projects/alta-finance/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/alta-finance/index.js b/projects/alta-finance/index.js index d13a729abab..8a7a0128c00 100644 --- a/projects/alta-finance/index.js +++ b/projects/alta-finance/index.js @@ -4,7 +4,8 @@ module.exports = { } const config = { - polygon: { investments: ['0xcf152E9f60E197A44FAdce961c6B822Dcb6c9dcc'], debts: ['0xE92F580C930dd24aACB38Ab0EA18F6c1dEf31369','0x64D6583b81716a4d141f07E264805CaCd3f484bB'], token: ADDRESSES.polygon.USDC }, + polygon: { investments: ['0xcf152E9f60E197A44FAdce961c6B822Dcb6c9dcc'], debts: [], token: ADDRESSES.polygon.USDC }, + base: { investments: ['0xF36d1AdDA798Ea9340069207806dcBB137d31212'], debts: [], token: ADDRESSES.base.USDC } } Object.keys(config).forEach(chain => { From 8b443a596b1664788ea36490dc9efaf550de722f Mon Sep 17 00:00:00 2001 From: Cuan Crypto <126179832+cuanswap@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:24:46 +0700 Subject: [PATCH 1248/2004] UPDATE CuanSwap (#9845) * Create index.js * minor fix * Update index.js * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cuanswap/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/cuanswap/index.js b/projects/cuanswap/index.js index d6e1a4e6cf5..9ec53b7b1a2 100644 --- a/projects/cuanswap/index.js +++ b/projects/cuanswap/index.js @@ -5,7 +5,4 @@ module.exports = { core: { tvl: getUniTVL({ factory: '0x23556027Ad3C3e76160AcA51e8098C395a6d815C', useDefaultCoreAssets: true, fetchBalances: true, }), }, - op_bnb: { - tvl: getUniTVL({ factory: '0x43cC4516B1b549a47B493D06Fc28f6C58BC4e888', useDefaultCoreAssets: true, fetchBalances: true, }) - }, }; From 329ed424097a5feeba62e76feeeee222eab123fd Mon Sep 17 00:00:00 2001 From: Emrah <113093777+emrahsky@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:42:45 +0300 Subject: [PATCH 1249/2004] Add Areon Apps TVL (#9667) * Add Areon Apps TVL * updated chain * revised hyperswap * changed chain * Delete projects/areon-apps/index.js * code refactor * revert change --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 9412aa15377..0444db20005 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -34,6 +34,9 @@ const ibcMappings = { } const fixBalancesTokens = { + area: { + '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf': { coingeckoId: 'areon-network', decimals: 18, }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain From dac1ecb3c799d0004daf2db294390b4ebf12ae7c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:13:29 +0200 Subject: [PATCH 1250/2004] minor fix --- projects/helper/cache/uniswap.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index 247acac6ca2..5cce3b6740f 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -28,6 +28,8 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, let chain = api?.chain if (!chain) chain = _chain + // const supply = await api.call({ abi: 'erc20:totalSupply', target: '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf' }) + // console.log(await sdk.api.eth.getBalance({ target: '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf', chain: api.chain }), supply) factory = normalizeAddress(factory, chain) blacklist = (blacklistedTokens || blacklist).map(i => normalizeAddress(i, chain)) const key = `${factory}-${chain}` From 3b057ce60879f20984438f70cf3d74aa7d3adfe4 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 16 Apr 2024 18:54:19 +0800 Subject: [PATCH 1251/2004] add new pools on mainnet and zklink (#9858) * add new airpuff token pool * add pool on zklink pufETH * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/airpuff/index.js | 108 ++++++++++---------------------------- 1 file changed, 27 insertions(+), 81 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 09d66f544e0..e74347c3c79 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -1,3 +1,4 @@ +const { staking } = require('../helper/staking') const ADDRESSES = require("../helper/coreAssets.json"); const contractAbis = { readOraclePrice: "function read() view returns (int224 value, uint32 timestamp)", @@ -9,11 +10,26 @@ const contractAbis = { 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)", }; module.exports = { misrepresentedTokens: true, + zklink: { + tvl: async (api) => { + const pufEth1x = { + vault: "0xD06E74D03a98A085C6060C4148902d2048C2D458", + reStakingToken: "0x1B49eCf1A8323Db4abf48b2F5EFaA33F7DdAB3FC", + }; + + await api.sumTokens({ + tokensAndOwners: [[pufEth1x.reStakingToken, pufEth1x.vault]], + }); + }, + }, + mode: { tvl: async (api) => { const lendingMode = { @@ -70,33 +86,18 @@ module.exports = { eth: "0xdeF3AA48bad043e53207d359dcDFdE46F50b6C02", //ETH sUSD: "0x7c2a7009ffE52a69a8C877b47B07D5dB59C0e3b3", // Not lending pool, staking pool }; - await api.sumTokens({ - tokensAndOwners: [ - [ADDRESSES.ethereum.WETH, lendingMain.eth], - [ADDRESSES.ethereum.sUSDe, lendingMain.sUSD], - ], - }); + 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]); - const eETHPrice = await api.call({ - target: eETH.oracle, - abi: contractAbis.getPrice, - }); - - const eETHBal = await api.call({ - abi: contractAbis.balanceOf, - target: eETH.reStakingToken, - params: [eETH.vault], - }); - - const eETHBalInETH = (eETHBal * eETHPrice) / 1e18; - - api.add(ADDRESSES.ethereum.WETH, eETHBalInETH); // leverage users const ezETH = { vault: "0x32a0ce2bDfc37eE606aB905b4f9fC286049A774f", @@ -158,37 +159,6 @@ module.exports = { oracle: "svETH", }; - const svETHPrice = await api.call({ - abi: contractAbis.getVectorSharePrice, - target: svETH.vault, - }); - - const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x, svETH1x, svETH]; - - for (const strategy of strategies) { - const bal = await api.call({ - abi: contractAbis.balanceOf, - target: strategy.reStakingToken, - params: [strategy.vault], - }); - - let lrETHPriceInETH; - - if (strategy.oracle == "svETH") { - lrETHPriceInETH = svETHPrice; - } else { - lrETHPriceInETH = await api.call({ - target: strategy.oracle, - abi: contractAbis.readOraclePrice, - }); - lrETHPriceInETH = lrETHPriceInETH.value; - } - - const balInETH = (bal * lrETHPriceInETH) / 1e18; - - api.add(ADDRESSES.ethereum.WETH, balInETH); - } - const mswETH = { vault: "0x7c505E03460aEF7FE88e218CC5fcEeCCcA4C4394", reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", @@ -198,34 +168,8 @@ module.exports = { vault: "0x1100195fbdA2f22AA6f394E6C65f168779Fe572c", reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", }; - - const mswETHPrice = await api.call({ - abi: contractAbis.getMswEthPrice, - target: mswETH.reStakingToken, - }); - // mswETH1x - - for (const msw of [mswETH, mswETH1x]) { - if (msw.vault == "0x1100195fbdA2f22AA6f394E6C65f168779Fe572c") { - const bal = await api.call({ - abi: contractAbis.balanceOf, - target: msw.reStakingToken, - params: [msw.vault], - }); - const balInETH = (bal * mswETHPrice) / 1e18; - api.add(ADDRESSES.ethereum.WETH, balInETH); - continue; - } - - const mswETHBal = await api.call({ - abi: contractAbis.getMswBalance, - target: msw.vault, - }); - - const mswETHBalInETH = (mswETHBal * mswETHPrice) / 1e18; - - api.add(ADDRESSES.ethereum.WETH, mswETHBalInETH); - } + const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x, svETH1x, svETH, mswETH, mswETH1x, ]; + strategies.forEach(({ vault, reStakingToken}) => tokensAndOwners.push([reStakingToken, vault])); //new strats on pendle v2 const pTweETH = { @@ -243,9 +187,11 @@ module.exports = { pendleAddress: "0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e", }; - const tokensAndOwners = [pTweETH, pTezETH, pTsETH].map(i => [i.pendleAddress, i.vault]); - await api.sumTokens({ tokensAndOwners }) + const tokensAndOwners2 = [pTweETH, pTezETH, pTsETH].map((i) => [i.pendleAddress, i.vault]); + tokensAndOwners.push(...tokensAndOwners2); + await api.sumTokens({ tokensAndOwners }); }, + staking: staking('0x296281cC6EB049F33aB278D946F18d9cacCFcfB5', '0x2BE056e595110B30ddd5eaF674BdAC54615307d9') }, //-----------------------------------------------------------------------// From acdfc98f8f8fee5d7002006bb597a1e0af684f99 Mon Sep 17 00:00:00 2001 From: Pavel Shuvalov Date: Tue, 16 Apr 2024 14:56:04 +0400 Subject: [PATCH 1252/2004] Add new vaults for Storm Trade (#9859) --- projects/helper/coreAssets.json | 3 ++- projects/stormtrade/index.js | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index b8ee5536e8f..a7fbedb672d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1270,7 +1270,8 @@ "MATIC": "EQBq4d4GPyBoh-Pjnf3wxUyQSS28WY2Yt-7cPAG8FHpWpNRX", "ORC": "EQDCIEo0HUUYsAV-lTMviOd-GkSXfVPsNZMGjRaNOA_6--FD", "MEGA": "EQBf6-YoR9xylol_NwjHrLkrTFAZJCX-bsd-Xx_902OaPaBf", - "WEMIX": "EQCf7Nb341dxOE3N0jimngRxGEV8T3zo-eU2EZVs_nchNhhZ" + "WEMIX": "EQCf7Nb341dxOE3N0jimngRxGEV8T3zo-eU2EZVs_nchNhhZ", + "jUSDT": "EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA" }, "defichain": { "DFI": "DFI", diff --git a/projects/stormtrade/index.js b/projects/stormtrade/index.js index 0ed1cc5ab14..af8e9a374a9 100644 --- a/projects/stormtrade/index.js +++ b/projects/stormtrade/index.js @@ -1,9 +1,19 @@ 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({ owner: 'EQDynReiCeK8xlKRbYArpp4jyzZuF6-tYfhFM0O5ulOs5H0L' }) + tvl: ( + sumTokensExport({ + owners: [ + 'EQDynReiCeK8xlKRbYArpp4jyzZuF6-tYfhFM0O5ulOs5H0L', // USDT vault + 'EQDpJnZP89Jyxz3euDaXXFUhwCWtaOeRmiUJTi3jGYgF8fnj', // TON-M vault + 'EQBwfRtqEf3ZzhkeGsmXiC7hzTh1C5zZZzLgDH5VL8gENQ2A' // Notcoin pre-market vault + ], + tokens: [ADDRESSES.ton.jUSDT, ADDRESSES.ton.TON] + }) + ) } } From 13bf215c1e4d02c397f8b466d2da258aa8d8b366 Mon Sep 17 00:00:00 2001 From: abdulrafay-contrax <122004952+abdulrafay-contrax@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:56:45 +0500 Subject: [PATCH 1253/2004] chore: contrax steer vaults added (#9854) Co-authored-by: Saqlain Riaz --- projects/contrax-finance/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/projects/contrax-finance/index.js b/projects/contrax-finance/index.js index c4ea826699a..60d1d69d721 100644 --- a/projects/contrax-finance/index.js +++ b/projects/contrax-finance/index.js @@ -15,6 +15,7 @@ const Vaults = [ "0x8ca3f11485Bd85Dd0E952C6b21981DEe8CD1E901", "0x1dda3B8A728a62a30f79d1E2a10e3d6B85ef4C5d", "0x6C416e46424aF2676E9603F9D707f8d4808Bb5d8", + // Peapods Vaults "0x92781a20B6447F304E72321ed4BC8ca4349b3739", "0x91805fD2cB80ad57379842630a569aC6D72E1B47", "0x7f9E71e0d829619b5445073d034927347cf0e3eA", @@ -25,6 +26,7 @@ const Vaults = [ const HOP_MAGIC_VAULT = "0x2d79B76841191c9c22238535a93Ee8169096A5Cc"; const GMX_VAULT = "0x8CdF8d10ea6Cd3492e67C4250481A695c2a75C4a"; const GMX = ADDRESSES.arbitrum.GMX; +const STEER_VAULTS = ["0x3fB6C1C5b7319Af78608570F97b920a553aB0Ed3", "0xe41586C416D8fAb3ee01e8a29DaD6f3a8655097d"]; async function getHopMagicData(api) { const tokenAddress = await api.call({ @@ -39,6 +41,15 @@ async function getHopMagicData(api) { api.add(tokenAddress, balance); } +async function getSteerData(api) { + let tokens = await api.multiCall({ abi: "address:steerVault", calls: STEER_VAULTS }); + let bals = await api.multiCall({ + abi: "uint256:balance", + calls: STEER_VAULTS, + }); + api.addTokens(tokens, bals); +} + async function getGMXData(api) { const balance = await api.call({ abi: "uint256:balance", @@ -49,7 +60,6 @@ async function getGMXData(api) { async function tvl(api) { let tokens = await api.multiCall({ abi: "address:token", calls: Vaults }); - // Controllers let bals = await api.multiCall({ abi: "uint256:balance", calls: Vaults, @@ -61,6 +71,7 @@ async function tvl(api) { // }); await getHopMagicData(api); await getGMXData(api); + await getSteerData(api); api.addTokens(tokens, bals); return sumTokens2({ api, resolveLP: true }); From 72e952b0fa79ecd4d70fdf8e264df33c436a9e8c Mon Sep 17 00:00:00 2001 From: sheykei <47207681+clement4saunier@users.noreply.github.com> Date: Tue, 16 Apr 2024 13:40:58 +0200 Subject: [PATCH 1254/2004] fix: treasury token listing (#9860) --- projects/angle/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/angle/index.js b/projects/angle/index.js index 79a702b8ff7..25b73e35240 100644 --- a/projects/angle/index.js +++ b/projects/angle/index.js @@ -164,12 +164,11 @@ async function tvl(api) { }) // Treasury - Stablecoins - const treasuriesTokens = stablecoins + stablecoins .map(({ treasury, treasuryTokens }) => treasuryTokens?.[chain]?.map((token) => [token, treasury]) ) - .flat(2) - tokensAndOwners.push(treasuriesTokens) + .flat(1).forEach((tokenAndOwner) => tokensAndOwners.push(tokenAndOwner)) return sumTokens2({ api, From 6f235afc21ae0dcfbb4a8f407e8197fe4b8cd0f9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:09:46 +0200 Subject: [PATCH 1255/2004] Add Nibiru staking TVL (#9862) * Kryptonite:SEI Liquid Staking Platform TVL * Add STSEI-USEI-LP to the statistics of Pool2 * Add staking tvl on the Nibiru chain * add nibiru --------- Co-authored-by: smith Co-authored-by: smithmonnnnnnn <130979786+smithmonnnnnnn@users.noreply.github.com> --- projects/helper/chain/cosmos.js | 1 + projects/helper/chains.json | 1 + projects/kryptonite/index.js | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index 3acbd43e3ae..c7b392745cf 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -40,6 +40,7 @@ const endPoints = { archway: "https://api.mainnet.archway.io", sifchain: "https://sifchain-api.polkachu.com", nolus: "https://pirin-cl.nolus.network:1317", + nibiru: "https://lcd.nibiru.fi", bostrom: "https://lcd.bostrom.cybernode.ai" }; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index c895f312c60..12b50f80576 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -190,6 +190,7 @@ "neon_evm", "neutron", "new", + "nibiru", "nolus", "nos", "nova", diff --git a/projects/kryptonite/index.js b/projects/kryptonite/index.js index 02ce1fb0430..2ebb4b89035 100644 --- a/projects/kryptonite/index.js +++ b/projects/kryptonite/index.js @@ -32,6 +32,15 @@ const config = { sei10knxlv9e54z0xcywdhtycc63uf970aefeec73ycqwd75ep9nu45sh66m6a: "kryptonite", sei1hrndqntlvtmx2kepr0zsfgr7nzjptcc72cr4ppk4yav58vvy7v3s4er8ed: "seiyan" } + }, + nibiru: { + coinGeckoId: "nibiru", + hub: "nibi1dvepyy7s2nkfep05c4v6tfkmzqyvz7x3nj6ddj3kkr8nfsmmylhqy7t9a0", + seilorLps: [], + coinGeckoMap: { + unibiru: "nibiru", + nibi1fke5pfygutantkfd9lakf9e8zu06cq43tss6avclm8lhkskr4f3semnvx5: "nibiru" + } } }; From 2d058437564a549d17121ebbef8197b1a101d3bf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 16 Apr 2024 15:35:30 +0200 Subject: [PATCH 1256/2004] fix broken adapters --- projects/candycity/index.js | 33 ++--------------- projects/championfinance/index.js | 46 ++--------------------- projects/hyperliquid-spot/index.js | 2 +- projects/init-capital/index.js | 4 +- projects/kittyfinance/index.js | 57 +++-------------------------- projects/nacho-finance/index.js | 43 +--------------------- projects/partialfinance/index.js | 59 +++--------------------------- projects/pdollar/index.js | 56 ++-------------------------- projects/toxicdeer/index.js | 45 ++--------------------- test.js | 4 +- 10 files changed, 33 insertions(+), 316 deletions(-) diff --git a/projects/candycity/index.js b/projects/candycity/index.js index 5b3ee12eee9..c4926a75681 100644 --- a/projects/candycity/index.js +++ b/projects/candycity/index.js @@ -1,8 +1,4 @@ -const sdk = require("@defillama/sdk"); -const BigNumber = require("bignumber.js"); -const { toUSDTBalances } = require('../helper/balances') -const { get } = require('../helper/http'); -const { staking, stakings } = require("../helper/staking"); +const { staking, } = require("../helper/staking"); const { getUniTVL } = require('../helper/unknownTokens') const chainTvl = getUniTVL({ @@ -12,8 +8,6 @@ const chainTvl = getUniTVL({ const CANDY_TOKEN = '0x06C04B0AD236e7Ca3B3189b1d049FE80109C7977'; -const CMC_API_URL = 'https://api.coinmarketcap.com/data-api/v3/cryptocurrency/market-pairs/latest?slug=bored-candy-city' - const STAKING_CONTRACTS = [ '0xDAf7c0e2882818b46c36AdBCe95399821Eca08F8', // masterchef '0x8FEf43b1f3046F8f58A76c64aD01Bc8d82ff0ad1', // candy vault @@ -28,32 +22,13 @@ const VESTING_CONTRACTS = [ '0x427f1230A547566a51F5Ffd5698BB65c06acA2D2', // candy vesting ] -async function fetchTvl(timestamp, ethBlock, chainBlocks) { - let cmc_response = await get(CMC_API_URL) - const candyPrice = cmc_response.data.marketPairs[0].price - const balances = await stakings(STAKING_CONTRACTS, CANDY_TOKEN)(timestamp, ethBlock, chainBlocks) - const candyBalances = Object.values(balances)[0] - - return toUSDTBalances(BigNumber(candyBalances).times(BigNumber(candyPrice)).div(1e18)); -} - -async function fetchVesting(timestamp, ethBlock, chainBlocks) { - let cmc_response = await get(CMC_API_URL) - const candyPrice = cmc_response.data.marketPairs[0].price - const balances = await stakings(VESTING_CONTRACTS, CANDY_TOKEN)(timestamp, ethBlock, chainBlocks) - const candyBalances = Object.values(balances)[0] - - return toUSDTBalances(BigNumber(candyBalances).times(BigNumber(candyPrice)).div(1e18)); -} - 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: fetchTvl, - vesting: fetchVesting - + staking: staking(STAKING_CONTRACTS, CANDY_TOKEN), + vesting: staking(VESTING_CONTRACTS, CANDY_TOKEN), }, -}; // node test.js projects/crodex/index.js +} \ No newline at end of file diff --git a/projects/championfinance/index.js b/projects/championfinance/index.js index 07724930823..8883c59340f 100644 --- a/projects/championfinance/index.js +++ b/projects/championfinance/index.js @@ -1,8 +1,6 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); +const { pool2 } = require('../helper/pool2') const { stakings } = require("../helper/staking"); -const avicTokenAddress = "0x59B18817CA9f4ad2dEE6FBf30132dF6AEb9D763d"; const chamTokenAddress = "0xc65bC1E906771e105fBAcBD8dfE3862Ee7BE378E"; const chamRewardPoolAddress = "0x649EfBF7D96B06a2bD0fB134621AC9dD031923A4"; const boardroomAddress = [ @@ -16,49 +14,11 @@ const lps = [ "0xd6F18CDe9A52A9D815dd3C03C2325D453E32BDef", //CHAMUsdcLpAddress "0x8392a728aEe00a26E99AF8e837c33591944e033a", // EVIC-WETH.e Address ]; -const shareLps = "0xd6F18CDe9A52A9D815dd3C03C2325D453E32BDef"; -async function calcPool2(masterchef, lps, block, chain) { - let balances = {}; - const lpBalances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((p) => ({ - target: p, - params: masterchef, - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - let lpPositions = []; - lpBalances.forEach((p) => { - lpPositions.push({ - balance: p.output, - token: p.input.target, - }); - }); - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - (addr) => `${chain}:${addr}` - ); - return balances; -} - -async function pool2(timestamp, block, chainBlocks) { - return await calcPool2(chamRewardPoolAddress, lps, chainBlocks.avax); -} -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - return balances; -} module.exports = { avax: { - tvl: tvl, - pool2: pool2, + tvl: () => ({}), + pool2: pool2(chamRewardPoolAddress, lps), staking: stakings(boardroomAddress, chamTokenAddress) } }; diff --git a/projects/hyperliquid-spot/index.js b/projects/hyperliquid-spot/index.js index 01158e51026..ce0db61f472 100644 --- a/projects/hyperliquid-spot/index.js +++ b/projects/hyperliquid-spot/index.js @@ -3,7 +3,7 @@ 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 Spot DEX") - data.tokens.forEach(i => api.addCGToken('tether', api.usdcValue)) + data.tokens.forEach(i => api.addCGToken('tether', +i.usdcValue)) } module.exports = { diff --git a/projects/init-capital/index.js b/projects/init-capital/index.js index e8416f152f7..1e809208256 100644 --- a/projects/init-capital/index.js +++ b/projects/init-capital/index.js @@ -14,7 +14,7 @@ const tvl = async (api) => { if (chainId === 81457) { pools = Object.keys(allPoolData[chainId]).map( - (pool) => allPoolData[chainId][pool].rebaseWrapperAddress + (pool) => allPoolData[chainId][pool].rebaseWrapperAddress ?? allPoolData[chainId][pool].poolAddress ); } else { pools = Object.keys(allPoolData[chainId]); @@ -36,7 +36,7 @@ const borrowed = async (api) => { if (chainId === 81457) { debts = await api.multiCall({ calls: debts.map((debt, i) => ({ - target: allPoolData[chainId][pools[i]].rebaseWrapperAddress, + target: allPoolData[chainId][pools[i]].rebaseWrapperAddress ?? allPoolData[chainId][pools[i]].poolAddress, params: [debt], })), abi: "function toAmt(uint256) returns (uint256)", diff --git a/projects/kittyfinance/index.js b/projects/kittyfinance/index.js index 398ee3a7188..96279eddd05 100644 --- a/projects/kittyfinance/index.js +++ b/projects/kittyfinance/index.js @@ -1,9 +1,6 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { stakingUnknownPricedLP, staking } = require("../helper/staking"); +const { staking } = require("../helper/staking"); +const { pool2 } = require("../helper/pool2"); -const avaxKitty = "0x788AE3b5D153d49F8DB649aacbA1857f744b739e"; -const polyKitty = "0x182dB1252C39073eeC9d743F13b5eeb80FDE314e"; const avaxCat = "0x094BFaC9894d2A2A35771D0BD6d2447689190F32"; const polyCat = "0xB932D203f83B8417Be0F61D9dAFad09cc24a4715"; const polyChef = "0xc17c09f7615c660dd5A7C1051E096240CF75685a"; @@ -19,59 +16,15 @@ const avaxLPs = [ "0x2d9A57C484C60241f5340a145a3004c7E4cfE040", // CAT-AVAX LP ]; -async function calcPool2(masterchef, lps, block, chain) { - let balances = {}; - const lpBalances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((p) => ({ - target: p, - params: masterchef, - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - let lpPositions = []; - lpBalances.forEach((p) => { - lpPositions.push({ - balance: p.output, - token: p.input.target, - }); - }); - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - (addr) => `${chain}:${addr}` - ); - return balances; -} - -async function polyPool2(timestamp, block, chainBlocks) { - return await calcPool2(polyChef, polyLPs, chainBlocks.polygon); -} - -async function avaxPool2(timestamp, block, chainBlocks) { - return await calcPool2(avaxChef, avaxLPs, chainBlocks.avax); -} - module.exports = { polygon: { tvl: async () => ({}), - pool2: polyPool2, - staking: stakingUnknownPricedLP( - polyNursery, - polyCat, - "polygon", - polyLPs[1], - (addr) => `polygon:${addr}` - ), + pool2: pool2(polyChef, polyLPs), + staking: staking(polyNursery, polyCat), }, avax: { tvl: async () => ({}), - pool2: avaxPool2, + pool2: pool2(avaxChef, avaxLPs), staking: staking(avaxNursery, avaxCat), }, }; diff --git a/projects/nacho-finance/index.js b/projects/nacho-finance/index.js index d4b285de1f9..353f79af4fd 100644 --- a/projects/nacho-finance/index.js +++ b/projects/nacho-finance/index.js @@ -1,8 +1,6 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); const { staking } = require("../helper/staking"); +const { pool2 } = require("../helper/pool2"); -const tombTokenAddress = "0xcD86152047e800d67BDf00A4c635A8B6C0e5C4c2"; const tshareTokenAddress = "0x948D0a28b600BDBd77AF4ea30E6F338167034181"; const tshareRewardPoolAddress = "0xdD694F459645eb6EfAE934FE075403760eEb9aA1"; const masonryAddress = "0x1ad667aCe03875fe48534c65BFE14191CF81fd64"; @@ -12,50 +10,13 @@ const ftmLPs = [ "0x2c97767BFa132E3785943cf14F31ED3f025405Ea", // NSHARE-MATIC "0xcD90217f76F3d8d5490FD0434F597516767DaDe1", // ETH-MATIC "0x354789e7bBAC6E3d3143A0457324cD80bD0BE050", // ETH-USDC - "0xfc4a30f328E946ef3E727BD294a93e84c2e43c24" // NBOND ]; -async function calcPool2(masterchef, lps, block, chain) { - let balances = {}; - const lpBalances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((p) => ({ - target: p, - params: masterchef, - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - let lpPositions = []; - lpBalances.forEach((p) => { - if (p.input.target != '0xfc4a30f328E946ef3E727BD294a93e84c2e43c24') { - lpPositions.push({ - balance: p.output, - token: p.input.target, - }); - } - }); - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - (addr) => `${chain}:${addr}` - ); - return balances; -} - -async function ftmPool2(timestamp, block, chainBlocks) { - return await calcPool2(tshareRewardPoolAddress, ftmLPs, chainBlocks.polygon); -} - 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: ftmPool2, + pool2: pool2(tshareRewardPoolAddress, ftmLPs), staking: staking(masonryAddress, tshareTokenAddress), }, }; diff --git a/projects/partialfinance/index.js b/projects/partialfinance/index.js index e7d213f9795..09f3dfb9917 100644 --- a/projects/partialfinance/index.js +++ b/projects/partialfinance/index.js @@ -1,68 +1,21 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { staking, stakingPricedLP } = require("../helper/staking"); +const { staking, } = require("../helper/staking"); +const { pool2 } = require('../helper/pool2') -const partialTokenAddress = "0x9486fDA4C1192db69a08CA7235E2E6bAf31B467B"; const pshareTokenAddress = "0x8C64D18E9d4A7b8e8c10C5c5a4b8D6D83cb15002"; const pshareRewardPoolAddress = "0xd5f73D588C3CaCd45B334f873b7B2E7DfaA4cCc7"; const boardroomAddress = "0x5FcE757a1aa5C489B008a4Df6CA2ef9088B5bCA4"; -const treasuryAddress = "0x5Cf2EB28083B95A7c0E73FE0F1312e4497FC2A53"; const ftmLPs = [ "0xe78c2b734F0e7BD708B1a6d79a0cF8937C4DA278", // partialFtmLpAddress "0x802ed580E7b48abBfaBf6edC73009705CE210d0b", // pshareFtmLpAddress -]; +] -async function calcPool2(masterchef, lps, block, chain) { - let balances = {}; - const lpBalances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((p) => ({ - target: p, - params: masterchef, - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - let lpPositions = []; - lpBalances.forEach((p) => { - lpPositions.push({ - balance: p.output, - token: p.input.target, - }); - }); - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - (addr) => `${chain}:${addr}` - ); - return balances; -} - -async function ftmPool2(timestamp, block, chainBlocks) { - return await calcPool2(pshareRewardPoolAddress, ftmLPs, chainBlocks.fantom); -} - -async function treasury(timestamp, block, chainBlocks) { - let balance = (await sdk.api.erc20.balanceOf({ - target: partialTokenAddress, - owner: treasuryAddress, - block: chainBlocks.fantom, - chain: 'fantom' - })).output; - - return { [`fantom:${partialTokenAddress}`] : balance } -} 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: ftmPool2, - staking: stakingPricedLP(boardroomAddress, pshareTokenAddress, "fantom", "0x802ed580E7b48abBfaBf6edC73009705CE210d0b", "fantom"), - treasury + pool2: pool2(pshareRewardPoolAddress, ftmLPs), + staking: staking(boardroomAddress, pshareTokenAddress), }, }; \ No newline at end of file diff --git a/projects/pdollar/index.js b/projects/pdollar/index.js index 9846cc5bede..a8e0b146136 100644 --- a/projects/pdollar/index.js +++ b/projects/pdollar/index.js @@ -1,68 +1,20 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { staking, stakingPricedLP } = require("../helper/staking"); +const { staking, } = require("../helper/staking"); +const { pool2 } = require('../helper/pool2') -const pdoTokenAddress = "0xb9D62c829fbF7eAff1EbA4E50F3D0480b66c1748"; const spdoTokenAddress = "0x1D3918043d22de2D799a4d80f72Efd50Db90B5Af"; const spdoRewardPoolAddress = "0xe8E0f521433028718baa338467151A3D43974292"; const boardroomAddress = "0x82D868D99747fbF9FDff367Bb9f1c55112B05c7F"; -const treasuryAddress = "0x25231b57030e795e1A12E10315cD9b779E395AaD"; const ftmLPs = [ "0xd339d12C6096Cb8E16a2BcCB5ACacA362bE78EA7", // pdoDaiLpAddress "0x5FBbd691e7d998fe6D5059B9BFa841223c018c31", // spdoDaiLpAddress ]; -async function calcPool2(masterchef, lps, block, chain) { - let balances = {}; - const lpBalances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((p) => ({ - target: p, - params: masterchef, - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - let lpPositions = []; - lpBalances.forEach((p) => { - lpPositions.push({ - balance: p.output, - token: p.input.target, - }); - }); - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - (addr) => `${chain}:${addr}` - ); - return balances; -} - -async function ftmPool2(timestamp, block, chainBlocks) { - return await calcPool2(spdoRewardPoolAddress, ftmLPs, chainBlocks.fantom); -} - -async function treasury(timestamp, block, chainBlocks) { - let balance = (await sdk.api.erc20.balanceOf({ - target: pdoTokenAddress, - owner: treasuryAddress, - block: chainBlocks.fantom, - chain: 'fantom' - })).output; - - return { [`fantom:${pdoTokenAddress}`] : balance } -} 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: ftmPool2, - staking: stakingPricedLP(boardroomAddress, spdoTokenAddress, "fantom", "0x5FBbd691e7d998fe6D5059B9BFa841223c018c31", "fantom"), - treasury + pool2: pool2(spdoRewardPoolAddress, ftmLPs), + staking: staking(boardroomAddress, spdoTokenAddress), }, }; \ No newline at end of file diff --git a/projects/toxicdeer/index.js b/projects/toxicdeer/index.js index 6350fd1e3c5..80fec0b47e1 100644 --- a/projects/toxicdeer/index.js +++ b/projects/toxicdeer/index.js @@ -1,9 +1,6 @@ +const { staking } = require('../helper/staking') +const { pool2 } = require('../helper/pool2') -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); -const { stakingUnknownPricedLP, stakingPricedLP } = require("../helper/staking"); - -const DEER = "0x8efbaa6080412d7832025b03b9239d0be1e2aa3b"; const XDSHARE = "0x6f715158d4b1468528da002f5941c72fe4159520"; const boardroom = "0x85b60750761d0e170237700Ce1e94213E1742A34"; const rewardPool = "0xf6c3e1B489c1e634a3c66876d5A8E19B1A65B252"; @@ -12,41 +9,7 @@ const lps = [ "0x18cD20C6CA9Ccfe1C8b48516e6d5e0055a0271D2", "0x40d85d01f8b8E4A8cEa6F552e47Cf8F88A42db54" ]; -const shareLps = "0x18cD20C6CA9Ccfe1C8b48516e6d5e0055a0271D2"; - -async function calcPool2(masterchef, lps, block, chain) { - let balances = {}; - const lpBalances = ( - await sdk.api.abi.multiCall({ - calls: lps.map((p) => ({ - target: p, - params: masterchef, - })), - abi: "erc20:balanceOf", - block, - chain, - }) - ).output; - let lpPositions = []; - lpBalances.forEach((p) => { - lpPositions.push({ - balance: p.output, - token: p.input.target, - }); - }); - await unwrapUniswapLPs( - balances, - lpPositions, - block, - chain, - (addr) => `${chain}:${addr}` - ); - return balances; -} -async function pool2(timestamp, block, chainBlocks) { - return await calcPool2(rewardPool, lps, chainBlocks.cronos); -} async function tvl(timestamp, block, chainBlocks) { let balances = {}; return balances; @@ -54,7 +17,7 @@ async function tvl(timestamp, block, chainBlocks) { module.exports = { cronos: { tvl: tvl, - pool2: pool2, - staking: stakingPricedLP(boardroom, XDSHARE, "cronos", shareLps, "usd-coin", null, 6) + pool2: pool2(rewardPool, lps), + staking: staking(boardroom, XDSHARE) } }; // node test.js projects/toxicdeer.js diff --git a/test.js b/test.js index 071450af080..05aef5f0dd8 100644 --- a/test.js +++ b/test.js @@ -425,8 +425,8 @@ setTimeout(() => { async function initCache() { let currentCache = await sdk.cache.readCache(INTERNAL_CACHE_FILE) - if (process.env.NO_EXIT_ON_LONG_RUN_RPC) - sdk.log('cache size:', JSON.stringify(currentCache).length, 'chains:', Object.keys(currentCache).length) + // if (process.env.NO_EXIT_ON_LONG_RUN_RPC) + // sdk.log('cache size:', JSON.stringify(currentCache).length, 'chains:', Object.keys(currentCache).length) const ONE_WEEK = 60 * 60 * 24 * 31 if (!currentCache || !currentCache.startTime || (Date.now() / 1000 - currentCache.startTime > ONE_WEEK)) { currentCache = { From 5188217591fcbdd95de8491e5f3a26fa83ccc8fa Mon Sep 17 00:00:00 2001 From: utwang Date: Wed, 17 Apr 2024 00:23:21 +0900 Subject: [PATCH 1257/2004] Add new vaults (#9863) --- projects/orange-finance/index.js | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/projects/orange-finance/index.js b/projects/orange-finance/index.js index a0942e3de48..7e5528c5778 100644 --- a/projects/orange-finance/index.js +++ b/projects/orange-finance/index.js @@ -1,14 +1,36 @@ const ADDRESSES = require("../helper/coreAssets.json"); const VAULTS = [ - "0xb9c5425084671221d7d5a547dbf1bdcec26c8b7d", //Camelot ETH-USDC.e DN Vault - "0x1c99416c7243563ebEDCBEd91ec8532fF74B9a39", //UniswapV3 ETH-USDC.e Dynamic Hedge Vault + // alpha + { address: "0x1c99416c7243563ebEDCBEd91ec8532fF74B9a39", asset: ADDRESSES.arbitrum.USDC }, // UniswapV3 ETH-USDC.e Dynamic Hedge Vault + { address: "0x16F6617680333e90f18aA89a85817d347078b7b8", asset: ADDRESSES.arbitrum.USDC }, // UniswapV3 ETH-USDC.e DN Vault + { address: "0x810fd69F58fF7Ff8553D43a5D3DCE3853960cAa6", asset: ADDRESSES.arbitrum.USDC }, // UniswapV3 ETH-USDC.e DN Vault + { address: "0xb9c5425084671221d7d5a547dbf1bdcec26c8b7d", asset: ADDRESSES.arbitrum.USDC }, // Camelot ETH-USDC.e DN Vault + { address: "0xdB8a12EeC655748A74576BD8E0acAbdF8e622508", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-USDC.e Stable Vault + { address: "0x690633417eA231073c53f00D30f194489196dfaD", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-WETH DN Vault + { address: "0x7B9d8c413ACE4008E22dcF08C3A79A9178682e13", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-ARB DN Vault + { address: "0x32790eAf83B52E53d54bFD4779832d6aDEAC880E", asset: ADDRESSES.arbitrum.WETH }, // UniswapV3 WETH-WBTC DN Vault + { address: "0x3870eECe85e6CDD013511Afb4ac6A7C4c1688bEa", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-USDC.e DN Vault + // app - strategy + { address: "0x706b3bcA6d6deD8c61d73270c228f276f4414B5e", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-ARB DN Vault + { address: "0xF47ecD6514D66A635b2933765Bc7A64895e27139", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-ARB DN Vault + { address: "0xd6ecEb3978bf2b76958b96E8A207246b98C7d639", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-DAI Stable Vault + { address: "0x2854038d756Aaef87E801d0d617Df5219838bd05", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-WETH DN Vault + { address: "0x68EC0e9A000c2063b64DC98B8C58d019CCBFb01a", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-USDC DN Vault + { address: "0x0B48540e214bc196e1D0954834876691fE19068D", asset: ADDRESSES.arbitrum.USDC }, // Camelot USDC-USDT Stable Vault + { address: "0xe4762eAcD41BD6BfB87eCdd3eC815d242b72F4AF", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-WBTC DN Vault + { address: "0xb70671F6b436C755389D3f7a2C61a39296D1ccda", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-USDT DN Vault + { address: "0x59671Aa8F4E5adCcb26f4c88F0d6047B0ae7620b", asset: ADDRESSES.arbitrum.USDC }, // Camelot USDC.e-USDC Stable Vault + // app - lpdfi + { address: "0x65Fb7fa8731710b435999cB7d036D689097548e8", asset: ADDRESSES.arbitrum.WETH }, // Stryke CLAMM WETH-USDC +-2.5% Automator v1 + { address: "0xe1B68841E764Cc31be1Eb1e59d156a4ED1217c2C", asset: ADDRESSES.arbitrum.WETH }, // Stryke CLAMM WETH-USDC +-2.5% Automator v2 ]; async function tvl(api) { - const totalAssets = await api.multiCall({ abi: "uint256:totalAssets", calls: VAULTS }) + const totalAssets = await api.multiCall({ abi: "uint256:totalAssets", calls: VAULTS.map(v => v.address) }) - totalAssets.forEach((i) => api.add(ADDRESSES.arbitrum.USDC, i)) + VAULTS.forEach((v, i) => api.add(v.asset, totalAssets[i])) + // totalAssets.forEach((i) => api.add(ADDRESSES.arbitrum.WETH, i)) } module.exports = { @@ -20,5 +42,7 @@ module.exports = { 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 ], }; From 87bc0e86ff232755ca3c25ffc51c49d31d5caf85 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 Apr 2024 01:00:39 +0200 Subject: [PATCH 1258/2004] Add LAMA Miner TVL and Staking (#9867) * add lama miner tvl * mark it as staking --------- Co-authored-by: Ilyas --- projects/LamaMiner/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/LamaMiner/index.js diff --git a/projects/LamaMiner/index.js b/projects/LamaMiner/index.js new file mode 100644 index 00000000000..196c5423338 --- /dev/null +++ b/projects/LamaMiner/index.js @@ -0,0 +1,13 @@ +const { sumTokensExport } = require("../helper/unknownTokens") +const LAMA_TOKEN_CONTRACT = '0x89A8633bcaD3af0951acC5137811ea21a17C37DC'; +const LAMA_MINER_CONTRACT = '0x1f4292Cf1C0fDa5Ef1C3e9d1e59C13bd1808DD10'; +const LP_LAMA_WAVAX = "0xf3336be3416916D26840f41780E0cBc861eF3B3C" + +module.exports = { + methodology: 'counts the number of LAMA tokens in the Lama Miner contract.', + start: 1711962980, + avax: { + tvl: () => ({}), + staking: sumTokensExport({ owner: LAMA_MINER_CONTRACT, tokens: [LAMA_TOKEN_CONTRACT], lps: [LP_LAMA_WAVAX], useDefaultCoreAssets: true, }), + } +} \ No newline at end of file From 01b78fafe758afc0f7f9e8f6ea33fbc22c29124e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 Apr 2024 01:44:09 +0200 Subject: [PATCH 1259/2004] tranchess-2 (#9868) * fix incorrect asset address use on ETH * add STONE fund TVL * code refactor --------- Co-authored-by: Bill Clippy Co-authored-by: Bill Clippy <80559444+bill-clippy@users.noreply.github.com> --- projects/helper/tokenMapping.js | 3 + projects/tranchess/abi.json | 9 -- projects/tranchess/index.js | 271 +++++++------------------------- 3 files changed, 58 insertions(+), 225 deletions(-) delete mode 100644 projects/tranchess/abi.json diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 0444db20005..5b3cddf3d59 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -68,6 +68,9 @@ const fixBalancesTokens = { zkfair: { '0x5d26DeA980716e4aBa19F5B73Eb3DCcE1889F042': { coingeckoId: "zeepr", decimals: 18, }, }, + scroll: { + "0x80137510979822322193fc997d400d5a6c747bf7": { coingeckoId: "ethereum:0x7122985656e38bdc0302db86685bb972b145bd3c", decimals: 0 }, + }, velas: { '0xaadbaa6758fc00dec9b43a0364a372605d8f1883': { coingeckoId: "staked-vlx", decimals: 18, }, '0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39': { coingeckoId: "velas", decimals: 18, }, diff --git a/projects/tranchess/abi.json b/projects/tranchess/abi.json deleted file mode 100644 index 694f3bd35ff..00000000000 --- a/projects/tranchess/abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "tokenUnderlying": "address:tokenUnderlying", - "getPrimaryMarketCount": "uint256:getPrimaryMarketCount", - "getPrimaryMarketMember": "function getPrimaryMarketMember(uint256 index) view returns (address)", - "currentCreatingUnderlying": "uint256:currentCreatingUnderlying", - "getTotalUnderlying": "uint256:getTotalUnderlying", - "quoteAddress": "address:quoteAddress", - "allBalances": "function allBalances() view returns (uint256, uint256)" -} \ No newline at end of file diff --git a/projects/tranchess/index.js b/projects/tranchess/index.js index 9a3f46b0dae..7f50f4377f9 100644 --- a/projects/tranchess/index.js +++ b/projects/tranchess/index.js @@ -1,221 +1,60 @@ -const sdk = require('@defillama/sdk') -const abi = require('./abi.json') - -const chess = '0x20de22029ab63cf9A7Cf5fEB2b737Ca1eE4c82A6' -const votingEscrow = '0x95A2bBCD64E2859d40E2Ad1B5ba49Dc0e1Abc6C2' - -const ethChess = '0xD6123271F980D966B00cA4FCa6C2c021f05e2E73' -const ethVotingEscrow = '0x3FadADF8f443A6DC1E091f14Ddf8d5046b6CF95E' - -const funds = new Map([ - ['0xd6B3B86209eBb3C608f3F42Bf52818169944E402', false], // BTC - ['0x677B7304Cb944b413D3c9aEbc4D4B5DA1A698A6B', false], // ETH - ['0x629d4562033e432B390d0808B54A82B0C4A0896B', true ], // BNB -]); - -const v2Funds = [ - '0x2f40c245c66C5219e0615571a526C93883B456BB', // BTC V2 Fund - '0x1F18cC2b50575A71dD2EbF58793d4e661a7Ba0e0', // ETH V2 Fund - '0x7618f37EfE8930d5EE6da34185b3AbB750BD2a34', // BNB V2 Fund -] - -const v2Swaps = [ - '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 -] - -const ETHV2Funds = [ - '0x811c9dD8B7B670A78d02fac592EbbE465e5dD0FA', // wstETH Fund (ETH mainnet) -] - -const ETHV2Swaps = [ - '0xBA919470C7a2983fbcdA6ADC89Be9C43b8298079', // ETH V2 BISHOP Swap (ETH mainnet) - '0xAD06a2DBd34Da8f8Cf5f85d284A5B93A2057bDb5', // wstETH SWAP (ETH mainnet) -] - -function getBSCAddress(address) { - return `bsc:${address}` -} - -async function bsc(timestamp, blockETH, chainBlocks){ - let balances = {}; - const block = chainBlocks["bsc"]; - - for (const [fund, isV2] of funds.entries()) { - const tokenUnderlying = (await sdk.api.abi.call({ - target: fund, - abi: abi.tokenUnderlying, - chain: 'bsc', - block: block - })).output - const primaryMarketCount = Number((await sdk.api.abi.call({ - target: fund, - abi: abi.getPrimaryMarketCount, - chain: 'bsc', - block: block - })).output) - - // primaryMarket count - for (let i = 0; i < primaryMarketCount; i++) { - const primaryMarket = (await sdk.api.abi.call({ - target: fund, - abi: abi.getPrimaryMarketMember, - params: [i], - chain: 'bsc', - block: chainBlocks['bsc'] - })).output - const currentCreatingUnderlying = (await sdk.api.abi.call({ - target: primaryMarket, - abi: abi.currentCreatingUnderlying, - chain: 'bsc', - block: chainBlocks['bsc'] - })).output - - sdk.util.sumSingleBalance(balances, getBSCAddress(tokenUnderlying), currentCreatingUnderlying) - } - - var underlyingInFund; - if (isV2) { - underlyingInFund = (await sdk.api.abi.call({ - target: fund, - abi: abi.getTotalUnderlying, - chain: 'bsc', - block: chainBlocks['bsc'] - })).output - } else { - underlyingInFund = (await sdk.api.erc20.balanceOf({ - target: tokenUnderlying, - owner: fund, - chain: 'bsc', - block: chainBlocks['bsc'] - })).output - } - - sdk.util.sumSingleBalance(balances, getBSCAddress(tokenUnderlying), underlyingInFund) - } - - // ------------------------------------------- V2 ------------------------------------------------ - - for (const fund of v2Funds) { - const tokenUnderlying = (await sdk.api.abi.call({ - target: fund, - abi: abi.tokenUnderlying, - chain: 'bsc', - block: chainBlocks["bsc"] - })).output - - const underlyingInFund = (await sdk.api.abi.call({ - target: fund, - abi: abi.getTotalUnderlying, - chain: 'bsc', - block: chainBlocks["bsc"] - })).output - - sdk.util.sumSingleBalance(balances, getBSCAddress(tokenUnderlying), underlyingInFund) - } - - for (const swap of v2Swaps) { - const quoteAddress = (await sdk.api.abi.call({ - target: swap, - abi: abi.quoteAddress, - chain: 'bsc', - block: chainBlocks["bsc"] - })).output - - const balancesInSwap = (await sdk.api.abi.call({ - target: swap, - abi: abi.allBalances, - chain: 'bsc', - block: chainBlocks["bsc"] - })).output - - sdk.util.sumSingleBalance(balances, getBSCAddress(quoteAddress), balancesInSwap[1]) - } - - return balances -} - -async function bscStaking(timestamp, block, chainBlocks) { - let balances = {}; - let { output: balance } = await sdk.api.erc20.balanceOf({ - target: chess, - owner: votingEscrow, - chain: 'bsc', - block: chainBlocks['bsc'] - }); - sdk.util.sumSingleBalance(balances, getBSCAddress(chess), balance); - - return balances; -} - -async function ethStaking(timestamp, blockETH, chainBlocks) { - let balances = {}; - let { output: balance } = await sdk.api.erc20.balanceOf({ - target: ethChess, - owner: ethVotingEscrow, - chain: 'ethereum', - block: blockETH - }); - sdk.util.sumSingleBalance(balances, ethChess, balance); - - return balances; -} - -async function ethereum(timestamp, blockETH, chainBlocks){ - let balances = {}; - - for (const fund of ETHV2Funds) { - const tokenUnderlying = (await sdk.api.abi.call({ - target: fund, - abi: abi.tokenUnderlying, - chain: 'ethereum', - block: blockETH - })).output - - const underlyingInFund = (await sdk.api.abi.call({ - target: fund, - abi: abi.getTotalUnderlying, - chain: 'ethereum', - block: blockETH - })).output - - sdk.util.sumSingleBalance(balances, tokenUnderlying, underlyingInFund) - } - - for (const swap of ETHV2Swaps) { - const quoteAddress = (await sdk.api.abi.call({ - target: swap, - abi: abi.quoteAddress, - chain: 'ethereum', - block: blockETH - })).output - - const balancesInSwap = (await sdk.api.abi.call({ - target: swap, - abi: abi.allBalances, - chain: 'ethereum', - block: blockETH - })).output - - sdk.util.sumSingleBalance(balances, quoteAddress, balancesInSwap[1]) - } - - return balances +const { staking } = require('../helper/staking') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + scroll: { + funds: [ + '0x289E69E5B611F6193694F6Cfa2F93B7cF161253f', // Stone Fund (Scroll mainnet) + ], + swaps:[ + '0xD151ce31322aEa25E4779678dF0A3f376f9FFc6f', // Stone SWAP (Scroll mainnet) + ], + token: '0x9735fb1126B521A913697A541f768376011bCcF9', + escrow: '0xffD17794bF2e3BA798170f358225763F1aF8f5ba', + }, + bsc: { + funds: [ + '0x2f40c245c66C5219e0615571a526C93883B456BB', // BTC V2 Fund + '0x1F18cC2b50575A71dD2EbF58793d4e661a7Ba0e0', // ETH V2 Fund + '0x7618f37EfE8930d5EE6da34185b3AbB750BD2a34', // BNB V2 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 + ], + 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.`, - bsc:{ - staking: bscStaking, - tvl: bsc - }, - ethereum:{ - staking: ethStaking, - tvl: ethereum +} + +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 +}) \ No newline at end of file From b4648abd35f5afdba99662eadaae3a42b9c3182b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 17 Apr 2024 03:04:55 +0100 Subject: [PATCH 1260/2004] remove PSM pool --- projects/nostra-pools/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/nostra-pools/index.js b/projects/nostra-pools/index.js index 21d97f0e83d..4e660d9db0c 100644 --- a/projects/nostra-pools/index.js +++ b/projects/nostra-pools/index.js @@ -36,8 +36,12 @@ async function tvl() { 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], From 1f7482f4a06433e5124f91920f65c223be3daf80 Mon Sep 17 00:00:00 2001 From: xwaynec Date: Wed, 17 Apr 2024 15:50:31 +0800 Subject: [PATCH 1261/2004] Add Zomma protocol new vault (#9870) * update zomma protocol audit contract address * add zomma new vaults --- projects/zomma/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/zomma/index.js b/projects/zomma/index.js index 39cd06b20b0..2c3ef3a96d6 100644 --- a/projects/zomma/index.js +++ b/projects/zomma/index.js @@ -3,14 +3,21 @@ const { sumTokensExport } = require("../helper/sumTokens"); const ZOMMA_CONTRACT_ALPHA = "0x709051774c60c0527dbaf880f41425eae036efaf"; const ZOMMA_CONTRACT_BETA = "0x7bf1f1c2d8caa200b068747487cb9bf109e529f1"; -const ZOMMA_CONTRACT_AUDIT = "0xdd5ae451a75a654146747235fdb515f06a55d018"; +const ZOMMA_CONTRACT_ETH_AUDIT = "0xdd5ae451a75a654146747235fdb515f06a55d018"; +const ZOMMA_CONTRACT_BTC_AUDIT = "0x1f14544aea89046e068e98c8672d2fbc3ab45bab"; const USDC_CONTRACT = ADDRESSES.era.USDC; module.exports = { - methodology: "TVL is calculated as the sum of USDC deposited by traders and the liquidity in the Pools.", + methodology: + "TVL is calculated as the sum of USDC deposited by traders and the liquidity in the Pools.", era: { tvl: sumTokensExport({ - owners: [ZOMMA_CONTRACT_ALPHA, ZOMMA_CONTRACT_BETA, ZOMMA_CONTRACT_AUDIT], + owners: [ + ZOMMA_CONTRACT_ALPHA, + ZOMMA_CONTRACT_BETA, + ZOMMA_CONTRACT_ETH_AUDIT, + ZOMMA_CONTRACT_BTC_AUDIT, + ], tokens: [USDC_CONTRACT], }), }, From 80ec419084afb4e5f80871ee40f6c08510f1c104 Mon Sep 17 00:00:00 2001 From: 0xYFLOW <139814596+0xYFLOW@users.noreply.github.com> Date: Wed, 17 Apr 2024 12:15:13 +0400 Subject: [PATCH 1262/2004] Update index.js (#9871) --- projects/yieldflow/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js index f7d0d989eef..f1c3d6dc795 100644 --- a/projects/yieldflow/index.js +++ b/projects/yieldflow/index.js @@ -17,7 +17,14 @@ const managers = [ '0x6EeFc6ceF687783F9eD767637Ae3cf06693c0A82', '0x6205A335C76F3dE01f5D75a27E9C90b49A5C69dc', '0x54250F1cb24304136A5B05fAbfb0C3Fb1E980169', - '0x0F6EEFd958287FDF80F5B1D4Ea79B928F9Ae933d' + '0x0F6EEFd958287FDF80F5B1D4Ea79B928F9Ae933d', + + '0xc291Ecf279714b7f56b0E5a2051DE4C533184A4E', + '0x562e92916103a9866b5139dE5269c46d6d3f3117', + '0x4142B8B00713CE9A441B8e3bd40D692BE56137C3', + '0xa05b2b641A904292E4D835f882235AF4D3E34e7c', + '0x3c3260a79a50ECD154d2e2F00C857A06dD0e5619', + '0x75346B1CF609d2FaCBb6e0b187e658869dd3aE83' ] async function tvl(api) { From a2a35396069cab9fecaff9ad6610dff55cb786e0 Mon Sep 17 00:00:00 2001 From: Kevin Park Date: Wed, 17 Apr 2024 16:34:02 +0800 Subject: [PATCH 1263/2004] Add USDM to Nayms TVL (#9872) * feat: add USDM to coreAssets ADDRESSES.ethereum * feat: add USDM to nayms TVL --- projects/helper/coreAssets.json | 3 ++- projects/nayms/index.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a7fbedb672d..afe257bd586 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -47,7 +47,8 @@ "FDUSD": "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2", "AEVO": "0xB528edBef013aff855ac3c50b381f253aF13b997", - "STONE": "0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0" + "STONE": "0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0", + "USDM": "0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C" }, "fantom": { "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", diff --git a/projects/nayms/index.js b/projects/nayms/index.js index c4b954c24eb..0aeb90282ec 100644 --- a/projects/nayms/index.js +++ b/projects/nayms/index.js @@ -7,9 +7,10 @@ const tokens = [ ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.TUSD, ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.USDM, ]; -const owner = '0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5' +const owner = "0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5"; module.exports = { methodology: "Sum assets on Nayms", From dd0849f96b9d157a5a0fa9fe8bd4d98efefd87cf Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Wed, 17 Apr 2024 18:18:19 +0800 Subject: [PATCH 1264/2004] fix: change balance calculation of Eignepie mswETH leverage vault (#9874) * fix: change balance calculation of Eignepie mswETH leverage vault * Update index.js * bugfix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/airpuff/index.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index e74347c3c79..2325a44e011 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -1,4 +1,4 @@ -const { staking } = require('../helper/staking') +const { staking } = require("../helper/staking"); const ADDRESSES = require("../helper/coreAssets.json"); const contractAbis = { readOraclePrice: "function read() view returns (int224 value, uint32 timestamp)", @@ -168,8 +168,29 @@ module.exports = { vault: "0x1100195fbdA2f22AA6f394E6C65f168779Fe572c", reStakingToken: "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", }; - const strategies = [ezETH, weETH, rsETH, ezETH1x, weETH1x, rsETH1x, bedRockETH, bedRockETH1x, svETH1x, svETH, mswETH, mswETH1x, ]; - strategies.forEach(({ vault, reStakingToken}) => tokensAndOwners.push([reStakingToken, vault])); + 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 = { @@ -191,7 +212,7 @@ module.exports = { tokensAndOwners.push(...tokensAndOwners2); await api.sumTokens({ tokensAndOwners }); }, - staking: staking('0x296281cC6EB049F33aB278D946F18d9cacCFcfB5', '0x2BE056e595110B30ddd5eaF674BdAC54615307d9') + staking: staking("0x296281cC6EB049F33aB278D946F18d9cacCFcfB5", "0x2BE056e595110B30ddd5eaF674BdAC54615307d9"), }, //-----------------------------------------------------------------------// From 6ea968b544d03e80d37bd09aca97b8a82e10b6e8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 Apr 2024 12:24:51 +0200 Subject: [PATCH 1265/2004] fix broken adapters --- projects/comfymoney/index.js | 8 +-- projects/helper/pool2.js | 10 ++-- projects/monster/index.js | 84 ++------------------------- projects/quicksilver/index.js | 3 +- projects/stonedefi/abi.json | 5 -- projects/stonedefi/index.js | 106 ++++++++-------------------------- 6 files changed, 41 insertions(+), 175 deletions(-) delete mode 100644 projects/stonedefi/abi.json diff --git a/projects/comfymoney/index.js b/projects/comfymoney/index.js index 723aa39ca6e..641d375a9f1 100644 --- a/projects/comfymoney/index.js +++ b/projects/comfymoney/index.js @@ -16,12 +16,12 @@ const allLpPools = [ { poolAddress: cshareRewardPoolAddress, tokenAddress: comfyWoneLp }, ]; -async function calcPool2(block, chain) { - return sumTokens2({ chain, block, tokensAndOwners: allLpPools.map(i => ([i.tokenAddress, i.poolAddress, ])), resolveLP: true, }) +async function calcPool2(api) { + return sumTokens2({ api, tokensAndOwners: allLpPools.map(i => ([i.tokenAddress, i.poolAddress, ])), resolveLP: true, }) } -async function onePool2(timestamp, block, chainBlocks) { - return calcPool2(chainBlocks.harmony); +async function onePool2(api) { + return calcPool2(api); } module.exports = { diff --git a/projects/helper/pool2.js b/projects/helper/pool2.js index caf0bc46c62..bc4a64d1774 100644 --- a/projects/helper/pool2.js +++ b/projects/helper/pool2.js @@ -7,11 +7,13 @@ const masterchefAbi = require("./abis/masterchef.json") const token0Abi = 'address:token0' const token1Abi = 'address:token1' const { isLP, getPoolInfo } = require('./masterchef') +const { sumTokensExport: uSumExport } = require('./unknownTokens') function pool2(stakingContract, lpToken, chain, transformAddress) { - if (!Array.isArray(stakingContract)) stakingContract = [stakingContract] - if (!Array.isArray(lpToken)) lpToken = [lpToken] - return pool2s(stakingContract, lpToken, chain,transformAddress ) + 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, chain, transformAddress) } function pool2s(stakingContracts, lpTokens, chain = "ethereum", transformAddress = undefined) { @@ -147,7 +149,7 @@ function pool2BalanceFromMasterChefExports(masterchef, token, chain = "ethereum" } function pool2UniV3({ stakingAddress, chain = 'ethereum' }) { - return sumTokensExport({ owner: stakingAddress, resolveUniV3: true}) + return sumTokensExport({ owner: stakingAddress, resolveUniV3: true }) } module.exports = { diff --git a/projects/monster/index.js b/projects/monster/index.js index 81a811d0ed6..848b287c279 100644 --- a/projects/monster/index.js +++ b/projects/monster/index.js @@ -1,5 +1,5 @@ -const sdk = require("@defillama/sdk"); -const { unwrapUniswapLPs } = require("../helper/unwrapLPs"); +const { pool2 } = require('../helper/pool2') +const { staking } = require('../helper/staking') const MST_TOKEN_CONTRACT = "0x152888854378201e173490956085c711f1DeD565"; const VE_CONTRACT = "0xc8034b3dF18Ea4d607E86D6b6Bf23E2A8Ed70F89"; const LP_POOL_1 = "0x1a88e447c7468b28de490b25a076a4ffc0c68b16"; @@ -7,89 +7,13 @@ const LP_STAKING_1 = "0x06bFdfF7366DE711F363105F446f8399663db749"; const LP_POOL_2 = "0x1f5c5b104d6246B3d096135806cd6C6e53e206F1"; const LP_STAKING_2 = "0xc13926C5CB2636a29381Da874b1e2686163DC226"; -async function staking(timestamp, block, chainBlocks) { - const balances = {}; - const transform = i => `fantom:${i}`; - - const collateralBalance = ( - await sdk.api.abi.call({ - abi: "erc20:balanceOf", - chain: "fantom", - target: MST_TOKEN_CONTRACT, - params: [VE_CONTRACT], - block: chainBlocks["fantom"], - }) - ).output; - - sdk.util.sumSingleBalance( - balances, - transform(MST_TOKEN_CONTRACT), - collateralBalance - ); - - return balances; -} - -async function pool2(timestamp, block, chainBlocks) { - const balances = {}; - const transform = i => `fantom:${i}`; - - const balance1 = ( - await sdk.api.abi.call({ - abi: "erc20:balanceOf", - chain: "fantom", - target: LP_POOL_1, - params: [LP_STAKING_1], - block: chainBlocks["fantom"], - }) - ).output; - - await unwrapUniswapLPs( - balances, - [ - { - token: LP_POOL_1, - balance: balance1, - }, - ], - chainBlocks["fantom"], - "fantom", - transform - ); - - const balance2 = ( - await sdk.api.abi.call({ - abi: "erc20:balanceOf", - chain: "fantom", - target: LP_POOL_2, - params: [LP_STAKING_2], - block: chainBlocks["fantom"], - }) - ).output; - - await unwrapUniswapLPs( - balances, - [ - { - token: LP_POOL_2, - balance: balance2, - }, - ], - chainBlocks["fantom"], - "fantom", - transform - ); - - return balances; -} - module.exports = { methodology: "counts the number of MST tokens in the ve contract and the pairs in the staking pool", start: 22569995, fantom: { tvl: async () => ({}), - pool2: pool2, - staking: staking, + 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/quicksilver/index.js b/projects/quicksilver/index.js index 9fe89b8c48b..ebdac00359b 100644 --- a/projects/quicksilver/index.js +++ b/projects/quicksilver/index.js @@ -9,7 +9,8 @@ const coinGeckoIds = { usomm: "sommelier", uregen: "regen", ujuno: "juno-network", - ustars: "stargaze" + ustars: "stargaze", + usaga: "saga-2", }; async function tvl() { diff --git a/projects/stonedefi/abi.json b/projects/stonedefi/abi.json deleted file mode 100644 index 96cbc77ed6a..00000000000 --- a/projects/stonedefi/abi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "token": "address:token", - "totalAssets": "uint256:totalAssets", - "stbnbMarketCapacityCountByBNB": "uint256:stbnbMarketCapacityCountByBNB" -} \ No newline at end of file diff --git a/projects/stonedefi/index.js b/projects/stonedefi/index.js index d1b3d6b6249..1576748692f 100644 --- a/projects/stonedefi/index.js +++ b/projects/stonedefi/index.js @@ -1,15 +1,11 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const abi = require("./abi.json"); -const {BigNumber} = require("bignumber.js"); -const { pool2Exports, pool2s} = require("../helper/pool2"); +const { pool2 } = require("../helper/pool2"); const ethVaults = [ - "0x0F9F39F6AABc86c457901df26275c72de32B26A4", // WETH - "0xFC1cF3DC111981eA4372E91f437581524f3721be", // USDC - "0xbA3CfEa6514cF5acdDeff3167Df0b7a4337751bc", // USDT - "0x5dC81697fC0b3752c1277D260064374E95E8A18b", // DAI - "0xb85E3Fe36a6084985E66d704ABD4be4EA51e06cE" // aETHc + "0x0F9F39F6AABc86c457901df26275c72de32B26A4", // WETH + "0xFC1cF3DC111981eA4372E91f437581524f3721be", // USDC + "0xbA3CfEa6514cF5acdDeff3167Df0b7a4337751bc", // USDT + "0x5dC81697fC0b3752c1277D260064374E95E8A18b", // DAI + "0xb85E3Fe36a6084985E66d704ABD4be4EA51e06cE" // aETHc ] const ethuniv2vault = "0xafB6c80FF3CFDaE5977Df0196F3d35Cd65e3c7a3"; @@ -59,102 +55,50 @@ const avaxVaults = [ "0x7A1b1e74f3646DE85066a501bC78edE6bc9D3FF2" // AAVE ] -async function calcTvl(vaults, block, chain) { - let balances = {}; - - const tokens = (await sdk.api.abi.multiCall({ - calls: vaults.map(p => ({ - target: p - })), - abi: abi.token, - block, - chain - })).output; - - const totalAssets = (await sdk.api.abi.multiCall({ - calls: vaults.map(p => ({ - target: p - })), - abi: abi.totalAssets, - block, - chain - })).output; - - - for (let i = 0; i < vaults.length; i++) { - let token = tokens[i].output.toLowerCase(); - if ( token === "0xfb8a07e99450d1dc566da18a8f0e630addefdd3e" || token === "0xf7fb08c187e6cd1f2149e6c818d0b6d4d4ef1430") { - sdk.util.sumSingleBalance(balances, "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab", totalAssets[i].output); - continue; - } - sdk.util.sumSingleBalance(balances, `${chain}:${token}`, totalAssets[i].output); - } - - return balances; +async function calcTvl(vaults, api) { + return api.erc4626Sum({ calls: vaults, tokenAbi: 'token', balanceAbi: 'totalAssets' }) } -async function eth (timestamp, block) { - return await calcTvl(ethVaults, block, "ethereum"); +async function eth(api) { + return await calcTvl(ethVaults, api); } -async function bsc (timestamp, block, chainBlocks) { - let balances = await calcTvl(bscVaults, chainBlocks.bsc, "bsc"); - const bnbStakeBalance = (await sdk.api.abi.call({ - target: stonebank, - abi: abi.stbnbMarketCapacityCountByBNB, - block: chainBlocks.bsc, - chain: "bsc" - })).output; - sdk.util.sumSingleBalance(balances, ["binancecoin"], BigNumber(bnbStakeBalance).div(10 ** 18).toFixed(0)); - return balances; +async function bsc(api) { + await calcTvl(bscVaults, api); + const bnbStakeBalance = await api.call({ abi: 'uint256:stbnbMarketCapacityCountByBNB', target: stonebank }) + api.addGasToken(bnbStakeBalance) } -async function polygon (timestamp, block, chainBlocks) { - return await calcTvl(polyVaults, chainBlocks.polygon, "polygon"); +async function polygon(api) { + return calcTvl(polyVaults, api); } -async function avax (timestamp, block, chainBlocks) { - return await calcTvl(avaxVaults, chainBlocks.avax, "avax"); +async function avax(api) { + return calcTvl(avaxVaults, api); } -function staking(stakingContract, chain) { - return async (_timestamp, _block, chainBlocks) => { - return await calcTvl([stakingContract], chainBlocks[chain], chain); - } +function staking(stakingContract) { + return async (api) => calcTvl([stakingContract], api) } module.exports = { - doublecounted: true, + doublecounted: true, ethereum: { tvl: eth, staking: staking("0xa72ad1293b253522fde41f1104aa432d7669b299"), - pool2: pool2Exports(ethuniv2vault, [ethuniv2lp]) + pool2: pool2(ethuniv2vault, [ethuniv2lp]) }, bsc: { tvl: bsc, staking: staking("0xBd2861c0f43F6E8d571fcfA5a7C77D13d5695Ebf"), - pool2: pool2s([bsccakevault, stbnbcakevault], [stbnbcakelp, bsccakelp], "bsc", addr=>{ - addr = addr.toLowerCase(); - if (addr === "0xd523a3c371c0c301794120c7ca9639f22c02839a") { - return "bsc:" + ADDRESSES.bsc.WBNB - } - else if (addr === "0xf7fb08c187e6cd1f2149e6c818d0b6d4d4ef1430") { - return "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab" - } - return `bsc:${addr}` - }) + pool2: pool2([bsccakevault, stbnbcakevault], [stbnbcakelp, bsccakelp]) }, polygon: { tvl: polygon, staking: staking("0xA035eCd4824c4C13506D39d7041e8E0Ad156686D"), - pool2: pool2Exports(polyuniv2vault, [polyuniv2lp], "polygon", addr=>{ - if (addr.toLowerCase() === "0xfb8a07e99450d1dc566da18a8f0e630addefdd3e") { - return "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab" - } - return `polygon:${addr}` - }) + pool2: pool2(polyuniv2vault, [polyuniv2lp]) }, - avax:{ + avax: { tvl: avax, } } From ce69e539f573313635d3527de580b8cf9d5d0425 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 Apr 2024 12:48:56 +0200 Subject: [PATCH 1266/2004] Update addresses and start blocks for various networks --- projects/a51-finance-v3/index.js | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/projects/a51-finance-v3/index.js b/projects/a51-finance-v3/index.js index 166c77a403f..660f1c4c12c 100644 --- a/projects/a51-finance-v3/index.js +++ b/projects/a51-finance-v3/index.js @@ -14,6 +14,30 @@ const ADDRESSES = { CLTBASE: "0x3e0aa2e17fe3e5e319f388c794fdbc3c64ef9da6", HELPER: "0x9d80597d9403bdb35b3d7d9f400377e790b01053", }, + blast: { + CLTBASE: "0x5a8e82c4b3Dbd7579fD198A3276cF75CEA2Df63D", + HELPER: "0xbA13be69628d12963b28de8E7Ba04C3C4c1eaceA", + }, + base: { + CLTBASE: "0x3e0AA2e17FE3E5e319f388C794FdBC3c64Ef9da6", + HELPER: "0xA1d8180F4482359CEb7Eb7437FCf4a2616830F81", + }, + optimism: { + CLTBASE: "0x525c80e91efe9222de3eae86af69a480fbced416", + HELPER: "0x965356eb2c208ce4130e267342ca720042cce7b2", + }, + polygon: { + CLTBASE: "0xD4798F142FDb87738eF4eBE82Bd56Eccde19A88C", + HELPER: "0x9c225a02426e3229C073A6132E083561e95000b5", + }, + bsc: { + CLTBASE: "0x6F2b186e9392042B1edE2D1D1706a3DC4a4725d8", + HELPER: "0x9c225a02426e3229C073A6132E083561e95000b5", + }, + scroll: { + CLTBASE: "0xA8Dc31c8C9F93dB2e42A5472F580689794639576", + HELPER: "0x965356eb2C208Ce4130E267342cA720042Cce7b2", + }, } const DEFAULT_STRATEGY_CREATION_TOPIC = "StrategyCreated(bytes32)" @@ -22,6 +46,24 @@ const START_BLOCKS = { arbitrum: { CLTBASE: 190945156, }, + blast: { + CLTBASE: 1709947, + }, + base: { + CLTBASE: 12765695, + }, + optimism: { + CLTBASE: 118360616, + }, + polygon: { + CLTBASE: 55506149, + }, + bsc: { + CLTBASE: 37623104, + }, + scroll: { + CLTBASE: 4846051, + }, } async function getStrategiesLogs(strategies, factoryType, api) { From 35f3dce9fcd6fc7c4e2f7a68fc8fb50b290f4e4d Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 17 Apr 2024 18:51:44 +0800 Subject: [PATCH 1267/2004] feat: able to calculate PLUR tvl (#9873) * feat: able to calculate PLUR tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/plur/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/plur/index.js diff --git a/projects/plur/index.js b/projects/plur/index.js new file mode 100644 index 00000000000..db2758a2142 --- /dev/null +++ b/projects/plur/index.js @@ -0,0 +1,26 @@ +const { getLogs, getAddress } = require("../helper/cache/getLogs"); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const BUILDER_ADDRESS = '0x5dfee62C78A0E607CCE6A5d4458c328A03275ba2'; +const WETH_ADDRESS = "0x4300000000000000000000000000000000000004" + +async function tvl(_, _1, _2, { api }) { + const createPoolLogs = await getLogs({ + api, + fromBlock: BUILDER_CREATE_BLOCK, + 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, + } +}; From 95e049eff08779376bb237df9018f4c172e74476 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 Apr 2024 16:04:52 +0200 Subject: [PATCH 1268/2004] bugfix --- projects/plur/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/plur/index.js b/projects/plur/index.js index db2758a2142..d3a280ef1af 100644 --- a/projects/plur/index.js +++ b/projects/plur/index.js @@ -7,7 +7,7 @@ const WETH_ADDRESS = "0x4300000000000000000000000000000000000004" async function tvl(_, _1, _2, { api }) { const createPoolLogs = await getLogs({ api, - fromBlock: BUILDER_CREATE_BLOCK, + fromBlock: 489054, target: BUILDER_ADDRESS, topics: ["0x85e6dd046ca5129caaa517b25babd719637bb32968281fef3ede269234eb7250",], }); From c5758d6b5cb6371b938403f81c465ff6efb3643f Mon Sep 17 00:00:00 2001 From: tec05 <73139131+tec05@users.noreply.github.com> Date: Wed, 17 Apr 2024 07:09:42 -0700 Subject: [PATCH 1269/2004] Add TVL for Archly on Ethereum (#9879) --- projects/archly-finance-v2/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/archly-finance-v2/index.js b/projects/archly-finance-v2/index.js index c7b2c60db20..c869a7530b3 100644 --- a/projects/archly-finance-v2/index.js +++ b/projects/archly-finance-v2/index.js @@ -8,6 +8,10 @@ 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 = { @@ -48,4 +52,10 @@ const zksyncTvl = getUniTVL({ factory: ARCHLY_V2_FACTORY_ZKSYNC, useDefaultCoreA 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 From d982fe997fc2cf5fc4dfe3bffec1990fbf9fae70 Mon Sep 17 00:00:00 2001 From: Krunal Amin Date: Wed, 17 Apr 2024 09:10:05 -0500 Subject: [PATCH 1270/2004] add eth pool optimims (#9877) --- projects/unidex/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/unidex/index.js b/projects/unidex/index.js index 50df4fd1128..9ab772064c5 100644 --- a/projects/unidex/index.js +++ b/projects/unidex/index.js @@ -1,5 +1,6 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2, nullAddress, } = require('../helper/unwrapLPs') +//const molten = "0x031d35296154279dc1984dcd93e392b1f946737b"; async function FantomTvl(_time, _ethBlock, { fantom: block }) { const contracts = { @@ -100,10 +101,11 @@ async function MetisTvl(_time, _ethBlock, { metis: block }) { async function OpTvl(_time, _ethBlock, { optimism: block }) { const contracts = { "daiPool": "0xCdDF71750E596b4C38785afFEc3bd4C9bff43f6F", + "ethPool": "0x68A4cF26705B3cEaB49d1C99DE98F3Db28ee767E" }; const dai = ADDRESSES.optimism.DAI; const chain = 'optimism' - const tokens = [dai] + const tokens = [dai, nullAddress] const owners = Object.values(contracts) return sumTokens2({ chain, block, tokens, owners, }) } From 80a336bbfb952a812d8bde149c83326af4f4ab91 Mon Sep 17 00:00:00 2001 From: paladin120 Date: Wed, 17 Apr 2024 22:35:33 +0800 Subject: [PATCH 1271/2004] Qrolli Project TVL Update (#9878) * Qrolli Project TVL Update * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/qrolli/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/qrolli/index.js diff --git a/projects/qrolli/index.js b/projects/qrolli/index.js new file mode 100644 index 00000000000..757c873d0b3 --- /dev/null +++ b/projects/qrolli/index.js @@ -0,0 +1,11 @@ +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 From 7f06cfd551e969b41232bfedf68cfa51afba1118 Mon Sep 17 00:00:00 2001 From: usr-icon-foundation <111794534+usr-icon-foundation@users.noreply.github.com> Date: Wed, 17 Apr 2024 18:39:00 +0200 Subject: [PATCH 1272/2004] Configure external chain deposits for cross-chain Balanced DEX (#9857) * Configure external chain deposits for cross-chain Balanced DEX Placed getExternalChainDeposits and computeTVL functions in balanced/helper.js Updated balanced/index.js to filter out external deposits from the icon TVL and attribute these external deposits to their origin chains. * Fix Module typo * Replace parseInt w/ toInt * code refactor * add reference --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/balanced/helper.js | 150 ++++++++++++++++++++++++++++++++++++ projects/balanced/index.js | 16 +++- 2 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 projects/balanced/helper.js diff --git a/projects/balanced/helper.js b/projects/balanced/helper.js new file mode 100644 index 00000000000..11d11eaa550 --- /dev/null +++ b/projects/balanced/helper.js @@ -0,0 +1,150 @@ +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 +} + + +const networkIdentifiers = { + "0x100.icon": "havah", + "0x38.bsc": "bnbchain", + "0xa86a.avax": "avalanche", + "archway-1": "archway", +} + +// 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) / decimals[tokenNetworkAddress] + } 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) { + 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 index 07078125586..dcf3cd32f24 100644 --- a/projects/balanced/index.js +++ b/projects/balanced/index.js @@ -1,21 +1,33 @@ 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) - return sumTokens({ api, tokens, owner: balancedDexContract }) + 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 consists of liquidity on the DEX, deposits made to the lending program and the stability fund. Data is pulled from the ICX API "https://ctz.solidwallet.io/api/v3" and Balanced stats API "https://balanced.sudoblock.io/api/v1/docs', icon: { tvl }, archway: { - tvl: () => ({}) + tvl: async () => await computeTVL("archway"), + }, + bsc: { + tvl: async () => await computeTVL("bnbchain"), + }, + avax: { + tvl: async () => await computeTVL("avalanche"), }, }; From 854bbee8292e806e370489aa5eb0587dff77d036 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 17 Apr 2024 22:51:02 +0200 Subject: [PATCH 1273/2004] blacklist subava --- projects/traderjoe-lb-v2-1/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js index f57931d8a4e..6921e438112 100644 --- a/projects/traderjoe-lb-v2-1/index.js +++ b/projects/traderjoe-lb-v2-1/index.js @@ -26,7 +26,9 @@ async function tvl(api) { toa.push([tokenA[i], pools[i]]) toa.push([tokenB[i], pools[i]]) }) - return sumTokens2({ api, tokensAndOwners: toa, }) + return sumTokens2({ api, tokensAndOwners: toa, blacklistedTokens: [ + '0x77ea44CB68Eaadd5D7372e5602b5646475ea1C81', + ] }) } module.exports = { From 411b61c6e1f1ed7b09100e487621561a0b726427 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 Apr 2024 00:46:13 +0200 Subject: [PATCH 1274/2004] fix qidao --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 5b3cddf3d59..abcbb1af570 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -99,6 +99,9 @@ const fixBalancesTokens = { ancient8: { '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, }, + linea: { + '0x023617babed6cef5da825bea8363a5a9862e120f': { coingeckoId: "savings-dai", decimals: 18, }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 68cbd17b6afcfcf65bf7d628a67f3e688c3fa916 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 Apr 2024 01:10:57 +0200 Subject: [PATCH 1275/2004] layerbank: track bsquared (#9881) Co-authored-by: Real Shaman <85087525+realdealshaman@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 12 ++++++++++++ projects/lineabank/index.js | 3 ++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 12b50f80576..eaf9d5bea9a 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -38,6 +38,7 @@ "borrowed", "bostrom", "bsc", + "bsquared", "btn", "bytomsidechain", "callisto", diff --git a/projects/helper/env.js b/projects/helper/env.js index a565b3939ff..6d5df83a7dc 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -14,6 +14,7 @@ const DEFAULTS = { RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", KARAK_RPC: "https://rpc.karak.network", FSC_RPC: "https://fsc-dataseed1.fonscan.io,https://fsc-dataseed2.fonscan.io,https://fonscan.io/api/eth-rpc", + BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", FSC_RPC_MULTICALL: "0x18fA376d92511Dd04090566AB6144847c03557d8", } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index abcbb1af570..a1fedbbeafd 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -99,6 +99,18 @@ const fixBalancesTokens = { ancient8: { '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, }, + mode: { + '0x80137510979822322193fc997d400d5a6c747bf7': { coingeckoId: "stakestone-ether", decimals: 18 }, + }, + zklink: { + '0x0000000000000000000000000000000000000000': { coingeckoId: "ethereum", decimals: 18, }, + '0xda4aaed3a53962c83b35697cd138cc6df43af71f': { coingeckoId: "wrapped-bitcoin", decimals: 8, }, + '0x2f8a25ac62179b31d62d7f80884ae57464699059': { coingeckoId: "tether", decimals: 6, }, + '0x1a1a3b2ff016332e866787b311fcb63928464509': { coingeckoId: "usd-coin", decimals: 6, }, + }, + bsquared: { + '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, + }, linea: { '0x023617babed6cef5da825bea8363a5a9862e120f': { coingeckoId: "savings-dai", decimals: 18, }, } diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index 2e1901f5821..c700c8633a4 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -4,7 +4,8 @@ const config = { scroll: '0xEC53c830f4444a8A56455c6836b5D2aA794289Aa', manta: '0xB7A23Fc0b066051dE58B922dC1a08f33DF748bbf', mode: '0x80980869D90A737aff47aBA6FbaA923012C1FF50', - zklink: '0x4Ac518DbF0CC730A1c880739CFa98fe0bB284959' + zklink: '0x4Ac518DbF0CC730A1c880739CFa98fe0bB284959', + bsquared: '0x72f7a8eb9F83dE366AE166DC50F16074076C3Ea6', } Object.keys(config).forEach(chain => { From eb5fb7317aa71df074a11a17206021be40b71de2 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Thu, 18 Apr 2024 07:16:42 +0100 Subject: [PATCH 1276/2004] fix duplicated key --- projects/helper/tokenMapping.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index a1fedbbeafd..bd96df6ae7e 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -49,6 +49,7 @@ const fixBalancesTokens = { }, linea: { '0x894134a25a5fac1c2c26f1d8fbf05111a3cb9487': { coingeckoId: 'grai', decimals: 18, }, + '0x023617babed6cef5da825bea8363a5a9862e120f': { coingeckoId: "savings-dai", decimals: 18, }, }, arbitrum: { '0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13': { coingeckoId: 'zeepr', decimals: 18, }, @@ -111,9 +112,6 @@ const fixBalancesTokens = { bsquared: { '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, }, - linea: { - '0x023617babed6cef5da825bea8363a5a9862e120f': { coingeckoId: "savings-dai", decimals: 18, }, - } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From f9c3e0bcc84d29ebe5bcb1f3275786ff8a10bbb2 Mon Sep 17 00:00:00 2001 From: des0lation <72014077+des0lation@users.noreply.github.com> Date: Thu, 18 Apr 2024 16:17:01 +1000 Subject: [PATCH 1277/2004] Update index.js to add Wave2 Swell L2 Pre-Deposit Tokens (#9884) --- projects/swell-l2-farm/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js index 749ee696861..8a830358df4 100644 --- a/projects/swell-l2-farm/index.js +++ b/projects/swell-l2-farm/index.js @@ -20,7 +20,13 @@ module.exports = { "0x8457CA5040ad67fdebbCC8EdCE889A335Bc0fbFB", "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", - "0x7122985656e38BDC0302Db86685bb972b145bD3C" + "0x7122985656e38BDC0302Db86685bb972b145bD3C", + "0xa0021EF8970104c2d008F38D92f115ad56a9B8e1", + "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", + "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", + "0x6ee2b5E19ECBa773a352E5B21415Dc419A700d1d", + "0xac440d0eE23FA69632Aa731322C2a480dD1376e4", + "0x330c4DD05dB16db6323505262C57CFdE5f0A78Ea" ] }) } From 85533a9031e3ed8451e0ebab2be79eadfac1590a Mon Sep 17 00:00:00 2001 From: Nico Szerman Date: Thu, 18 Apr 2024 03:58:55 -0300 Subject: [PATCH 1278/2004] Added tickers to Sailing Protocol and commented out failing ticker (#9882) * added new tickers * parallelized execution --- projects/sailingprotocol/index.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js index b3f8c7050ef..4ba64d84b1c 100644 --- a/projects/sailingprotocol/index.js +++ b/projects/sailingprotocol/index.js @@ -68,20 +68,30 @@ const tokens = [ "ticker": "QQQ", "sufficientLiquidityForDefiLlamaIndexer": false, }, + // { + // "address": "0xBa5c32915e2303EA41d1986f5B3AAd0a98B4Fd80", + // "ticker": "ETHE", + // "sufficientLiquidityForDefiLlamaIndexer": false, + // }, { - "address": "0xBa5c32915e2303EA41d1986f5B3AAd0a98B4Fd80", - "ticker": "ETHE", + "address": "0xA78Fb2b64Ce2Fb8bBe46968cf961C5Be6eB12924", + "ticker": "AAAU", "sufficientLiquidityForDefiLlamaIndexer": false, }, { - "address": "0xA78Fb2b64Ce2Fb8bBe46968cf961C5Be6eB12924", - "ticker": "AAAU", + "address": "0x79E2174f64286Bb92c8BD00d0D8A126eAc664c27", + "ticker": "ABNB", + "sufficientLiquidityForDefiLlamaIndexer": false, + }, + { + "address": "0x1e01aE049Bcb76ec91aa59e11b84a01375cB19b0", + "ticker": "DNA", "sufficientLiquidityForDefiLlamaIndexer": false, }, ]; async function tvl(api) { - for (const token of tokens) { + const addTokenTVL = async (token) => { const tokenTotalSupply = await api.call({ target: token.address, abi: 'erc20:totalSupply' }); if (token.sufficientLiquidityForDefiLlamaIndexer) { api.add(token.address, tokenTotalSupply); @@ -98,7 +108,12 @@ async function tvl(api) { tokenTotalSupply * tickerPrice * (1e6 / 1e18) ); } + }; + const promises = []; + for (const token of tokens) { + promises.push(addTokenTVL(token)); } + await Promise.all(promises); } module.exports = { From 13c3ea6090ae326b2c05672cd1856db3351ad126 Mon Sep 17 00:00:00 2001 From: nisuscold Date: Thu, 18 Apr 2024 13:21:07 +0530 Subject: [PATCH 1279/2004] Adding Olive-network contracts for TVL computation (#9880) * Adding olive-network project * Incorporating the feedback from PR * Removing the file which is no longer needed * Adding new vault launched PT-ezETH(Zircuit) --------- Co-authored-by: m7 --- projects/olive-network/index.js | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 projects/olive-network/index.js diff --git a/projects/olive-network/index.js b/projects/olive-network/index.js new file mode 100644 index 00000000000..a7f037bd62b --- /dev/null +++ b/projects/olive-network/index.js @@ -0,0 +1,52 @@ +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 From 20ca5fb6fb8601456a43a1b0eb001809041e456f Mon Sep 17 00:00:00 2001 From: hbdgr Date: Thu, 18 Apr 2024 10:05:23 +0200 Subject: [PATCH 1280/2004] Update Colony - include vesting contract (#9886) * colony: unlocked tokens from vesting contract * colony: vesting, specify END_BLOCK - limit logs fetching, update methodology * colony: start and hallmarks * simplify vesting logic --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/colony/clyVesting.js | 143 ++++++++++++++++++++++++++++++++++ projects/colony/index.js | 49 +++++------- 2 files changed, 164 insertions(+), 28 deletions(-) create mode 100644 projects/colony/clyVesting.js diff --git a/projects/colony/clyVesting.js b/projects/colony/clyVesting.js new file mode 100644 index 00000000000..f16130aee8a --- /dev/null +++ b/projects/colony/clyVesting.js @@ -0,0 +1,143 @@ +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/index.js b/projects/colony/index.js index 3dd451d14c4..33623b36c5e 100644 --- a/projects/colony/index.js +++ b/projects/colony/index.js @@ -1,40 +1,33 @@ +const { clyVesting } = require("./clyVesting") +const { staking } = require('../helper/staking') + +const colonyGovernanceToken = "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6"; + const stakingV1Contract = "0x5B0d74C78F2588B3C5C49857EdB856cC731dc557"; const stakingV2Contract = "0x7CcDa6E26dCeD1Ba275c67CD20235790ed615A8D"; const stakingV3Contract = "0x62685d3EAacE96D6145D35f3B7540d35f482DE5b"; -const colonyGovernanceToken = "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6"; - -async function staking({ api }) { - const stakingV1 = ( - await api.call({ - abi: "function totalStaked() external view returns (uint256)", - target: stakingV1Contract, - }) - ) - - const stakingV2 = ( - await api.call({ - abi: "function totalStake() external view returns (uint256)", - target: stakingV2Contract, - }) - ) - const stakingV3 = ( - await api.call({ - abi: "function totalStake() external view returns (uint256)", - target: stakingV3Contract, - }) - ) +const vestingContract = "0xEFAc81f709d314604a7DaEe9ca234dA978c2Be20"; - api.add(colonyGovernanceToken, stakingV1) - api.add(colonyGovernanceToken, stakingV2) - api.add(colonyGovernanceToken, stakingV3) +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)) } module.exports = { methodology: - "Staking is calculated based on CLY tokens locked on Colony staking contracts", - avax:{ + "Staking is calculated based on CLY tokens locked on Colony staking contracts. " + + "Vesting is calculated as already unlocked and available to claim CLY tokens in the vesting contract", + avax: { + start: 1638367059, // CLY Token deployment + hallmarks: [ + [1651241728, "Staking V2 Launch"], + [1711370069, "Staking V3 Launch"] + ], tvl: async () => ({}), - staking, + staking: _staking, + // vesting: clyVesting(colonyGovernanceToken, vestingContract), + vesting: staking(vestingContract, colonyGovernanceToken), }, }; From e139b295978d29cc24f50d8719ea66a450fe1304 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 18 Apr 2024 12:10:56 +0200 Subject: [PATCH 1281/2004] Implement Hinkal TVL calculations and update token registries (#9891) * Implemented Hinkal TVL calculations * Updated tokens registries for each chain * hinkal-api-pricing * Implemented TVL calculation for all Hinkal chains * Fixed issues * bsc fix * working code * hinkal: refactor code --------- Co-authored-by: TsimakuridzeNikolozi Co-authored-by: Thaker Jayam Co-authored-by: TsimakuridzeNikolozi <100114440+TsimakuridzeNikolozi@users.noreply.github.com> --- projects/helper/utils.js | 13 ++++++++++--- projects/hinkal/index.js | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 projects/hinkal/index.js diff --git a/projects/helper/utils.js b/projects/helper/utils.js index aed7725d096..b5855a7314f 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -52,7 +52,7 @@ const blacklisted_LPS = new Set([ function isICHIVaultToken(symbol, token, chain) { if (symbol === 'ICHI_Vault_LP') return true - if (chain === 'bsc' && symbol.startsWith('IV-') && symbol.endsWith('-THE')) return true + if (chain === 'bsc' && symbol.startsWith('IV-') && symbol.endsWith('-THE')) return true return false } @@ -73,7 +73,7 @@ function isLP(symbol, token, chain) { 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', ].includes(symbol)) return true + if (chain === 'polygon' && ['MbtLP', 'GLP',].includes(symbol)) return true 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 @@ -302,7 +302,14 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' }) sdk.log('Balance table for [%s] %s', chain, tableLabel) - console.table(logObj.filter(i => !/\.(com|net|org|xyz|site)\s/.test(i.symbol))) + const 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) + console.table(filtered) } function once(func) { diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js new file mode 100644 index 00000000000..423a7ddd25f --- /dev/null +++ b/projects/hinkal/index.js @@ -0,0 +1,17 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') + +const config = { + ethereum: "0x2ea81946fF675d5Eb88192144ffc1418fA442E28", + arbitrum: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", + optimism: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", + polygon: "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", + avax: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", + bsc: "0x0036E884Cab4F427193839788EDEBB4B92B9a069", + base: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: sumTokensExport({ owner: config[chain], fetchCoValentTokens: true, tokenConfig: { onlyWhitelisted: false, } }) + } +}) \ No newline at end of file From 9a84d76695b6a2cca2cb392bd4ded00aceb30d77 Mon Sep 17 00:00:00 2001 From: JoscelynFarr <130961775+JoscelynFarr@users.noreply.github.com> Date: Thu, 18 Apr 2024 18:24:19 +0800 Subject: [PATCH 1282/2004] add jojo tvl (#9890) * add jojo tvl * Update index.js --------- Co-authored-by: JoscelynFarr Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/jojo/index.js | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/projects/jojo/index.js b/projects/jojo/index.js index 1a2511940ce..b2c8287dc35 100644 --- a/projects/jojo/index.js +++ b/projects/jojo/index.js @@ -2,16 +2,23 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') 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'] - } - ) - }, -}; - + 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], + owners: ['0x2f7c3cf9d9280b165981311b822becc4e05fe635', '0xf8192489A8015cA1690a556D42F7328Ea1Bb53D0'] + } + ) + }, +} From c5a01c151dc3e9bb983807f39931502b958e3bd8 Mon Sep 17 00:00:00 2001 From: Stone <125890624+Stonepapa@users.noreply.github.com> Date: Thu, 18 Apr 2024 18:25:39 +0800 Subject: [PATCH 1283/2004] Update index.js (#9887) --- projects/bsquared/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/bsquared/index.js b/projects/bsquared/index.js index 0dca597dfc3..10a9a86c82c 100644 --- a/projects/bsquared/index.js +++ b/projects/bsquared/index.js @@ -14,6 +14,9 @@ const BRC20Owners = [ 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([ From b0f7e8d4091fd4b9036d75ff2971a87899808768 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 18 Apr 2024 14:33:46 -0700 Subject: [PATCH 1284/2004] add klaytn to mint-club-v2 (#9894) --- projects/mint-club-v2/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/mint-club-v2/index.js b/projects/mint-club-v2/index.js index 275ad16d168..e9344c7e30f 100644 --- a/projects/mint-club-v2/index.js +++ b/projects/mint-club-v2/index.js @@ -9,14 +9,15 @@ const V2_BOND_CONTRACTS = { avax: "0x3Fd5B4DcDa968C8e22898523f5343177F94ccfd1", blast: "0x621c335b4BD8f2165E120DC70d3AfcAfc6628681", degen: "0x3bc6B601196752497a68B2625DB4f2205C3b150b", - zora: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27" + zora: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27", + klaytn: "0xc5a076cad94176c2996B32d8466Be1cE757FAa27" } const ownTokens = { bsc: ['0x1f3Af095CDa17d63cad238358837321e95FC5915'] } -const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast', 'degen', 'zora'] +const chains = ['avax', 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bsc', 'base', 'blast', 'degen', 'zora', 'klaytn'] chains.forEach(chain => { const BOND_CONTRACT = V2_BOND_CONTRACTS[chain] ?? '0xc5a076cad94176c2996B32d8466Be1cE757FAa27' From 2c9754a4e23357226f171cf59e335b58d24ad862 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 Apr 2024 06:01:53 +0200 Subject: [PATCH 1285/2004] Move old gammaswap contract to separate adapter (#9895) * move old gammaswap contract to separate adapter * change folder name --------- Co-authored-by: Daniel Alcarraz --- projects/gammaswap-v2/index.js | 37 ++++++++++++++++++++++++++++++++++ projects/gammaswap/index.js | 11 ++-------- 2 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 projects/gammaswap-v2/index.js diff --git a/projects/gammaswap-v2/index.js b/projects/gammaswap-v2/index.js new file mode 100644 index 00000000000..3d2f22647c6 --- /dev/null +++ b/projects/gammaswap-v2/index.js @@ -0,0 +1,37 @@ +const { getLogs } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const config = { + arbitrum: { + factories: [ + { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 173451651 }, + ], + deltaswapFactory: '0xcb85e1222f715a81b8edaeb73b28182fa37cffa8' + }, +} + +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/index.js b/projects/gammaswap/index.js index a4130799cb0..189b291cc64 100644 --- a/projects/gammaswap/index.js +++ b/projects/gammaswap/index.js @@ -5,14 +5,12 @@ const config = { arbitrum: { factories: [ { factory: '0xe048ccE443E787c5b6FA886236De2981D54E244f', fromBlock: 132429931 }, - { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 173451651 }, ], - deltaswapFactory: '0xcb85e1222f715a81b8edaeb73b28182fa37cffa8' }, } Object.keys(config).forEach(chain => { - const { factories, deltaswapFactory } = config[chain] + const { factories } = config[chain] module.exports[chain] = { tvl: async (api) => { const ownerTokens = [] @@ -27,12 +25,7 @@ Object.keys(config).forEach(chain => { 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, }) + return sumTokens2({ ownerTokens, api, resolveLP: true, }) } } }) \ No newline at end of file From 8a46f78874f500db875e3d430fc93c24c3b1ef7a Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Fri, 19 Apr 2024 10:34:09 +0100 Subject: [PATCH 1286/2004] fix hallmarks --- projects/colony/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/colony/index.js b/projects/colony/index.js index 33623b36c5e..590acdeb52c 100644 --- a/projects/colony/index.js +++ b/projects/colony/index.js @@ -21,13 +21,13 @@ module.exports = { "Vesting is calculated as already unlocked and available to claim CLY tokens in the vesting contract", avax: { start: 1638367059, // CLY Token deployment - hallmarks: [ - [1651241728, "Staking V2 Launch"], - [1711370069, "Staking V3 Launch"] - ], tvl: async () => ({}), staking: _staking, // vesting: clyVesting(colonyGovernanceToken, vestingContract), vesting: staking(vestingContract, colonyGovernanceToken), }, + hallmarks: [ + [1651241728, "Staking V2 Launch"], + [1711370069, "Staking V3 Launch"] + ], }; From abb769d91dae896e0a9ab354094e2ea5bdca3919 Mon Sep 17 00:00:00 2001 From: TonsOfFriends <164272179+TonsOfFriends@users.noreply.github.com> Date: Fri, 19 Apr 2024 20:09:39 +1000 Subject: [PATCH 1287/2004] init tonsoffriends (#9897) --- projects/tonsoffriends/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/tonsoffriends/index.js diff --git a/projects/tonsoffriends/index.js b/projects/tonsoffriends/index.js new file mode 100644 index 00000000000..bf6e20fc1b7 --- /dev/null +++ b/projects/tonsoffriends/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require("../helper/chain/ton"); +const ADDRESSES = require("../helper/coreAssets.json"); + +module.exports = { + ton: { + tvl: sumTokensExport({ owner: "EQBUXXx7QXeogpRqlCEqvJrhLKLmLrJKqnB35V931v2gYdW-", tokens: [ADDRESSES.null] }), + }, +}; From df15af578ba371b4762d658a36fc3fecaf65122f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:36:01 +0200 Subject: [PATCH 1288/2004] track https://ciento.exchange --- package-lock.json | 6 +++--- projects/ciento/index.js | 3 +++ projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ projects/tangleswap/index.js | 3 ++- 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 projects/ciento/index.js diff --git a/package-lock.json b/package-lock.json index e106c3d162c..729926c6f85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.52", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.52.tgz", - "integrity": "sha512-BhkY2eFcoAyGgIaMEheb9PIFC94Lfb1K8UXOmWsOod3GOE5nuJcn/mY7HUtHowSD/LZy+xrnCdDMTtCREjqDZQ==", + "version": "5.0.53", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.53.tgz", + "integrity": "sha512-FhrgVni9TNEdOHV+7NHHTvfzHCkejI/1dG6Jj4TlK3vIGEgsgIlFxZzXImhnXf2SBxBMKvye9WF95Sk5RO6riQ==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/ciento/index.js b/projects/ciento/index.js new file mode 100644 index 00000000000..62ae5ae00bd --- /dev/null +++ b/projects/ciento/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('planq', '0xd2d19c4AdEEB88b93527E3e8D1924F0Ba8325755') \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index eaf9d5bea9a..211ab54f1a9 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -216,6 +216,7 @@ "persistence", "pg", "pgn", + "planq", "pokt", "polis", "polkadot", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index bd96df6ae7e..672cc7cc529 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -112,6 +112,9 @@ const fixBalancesTokens = { bsquared: { '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, }, + planq: { + '0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a': { coingeckoId: "planq", decimals: 18, }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/tangleswap/index.js b/projects/tangleswap/index.js index c2585aad464..9c6d83f502a 100644 --- a/projects/tangleswap/index.js +++ b/projects/tangleswap/index.js @@ -36,4 +36,5 @@ Object.keys(config).forEach(chain => { 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 \ No newline at end of file +// 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 From 2950a3b0a47f10523d0dbe5d175229db8dd2835a Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Fri, 19 Apr 2024 22:02:49 +0800 Subject: [PATCH 1289/2004] add multiple pendle pools (#9898) --- projects/airpuff/index.js | 57 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 2325a44e011..35846d2609a 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -208,7 +208,56 @@ module.exports = { pendleAddress: "0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e", }; - const tokensAndOwners2 = [pTweETH, pTezETH, pTsETH].map((i) => [i.pendleAddress, i.vault]); + //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 tokensAndOwners2 = [ + pTweETH, + pTezETH, + pTsETH, + bptzweETH1x, + bptzezETH1x, + bptpufETH1x, + bptzrsETH1x, + bptzUSDe1x, + bptrswETH1x, + ].map((i) => [i.pendleAddress, i.vault]); tokensAndOwners.push(...tokensAndOwners2); await api.sumTokens({ tokensAndOwners }); }, @@ -228,6 +277,11 @@ module.exports = { usdc: "0xd3E1BDe4b4163c86B9b7668dE8Ae7618720dCa93", }; + const bptUSDe1x = { + vault: "0x83886Af55Dac462Dc7840cdb0157bB3e7d8A6ac4", + pendleAddress: "0xad853EB4fB3Fe4a66CdFCD7b75922a0494955292", + }; + await api.sumTokens({ tokensAndOwners: [ [ADDRESSES.arbitrum.USDC, lendingArb.usdc_e], @@ -236,6 +290,7 @@ module.exports = { [ADDRESSES.arbitrum.WETH, lendingArb.eth], [ADDRESSES.arbitrum.ARB, lendingArb.arb], [ADDRESSES.arbitrum.USDC_CIRCLE, lendingArb.usdc], + [bptUSDe1x.pendleAddress, bptUSDe1x.vault], ], }); From 3faa6a4f8c4d28ab90aa08ce4e477bd6560d0b61 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 19 Apr 2024 16:37:17 +0200 Subject: [PATCH 1290/2004] split wise lending --- projects/wise-lending-v2/index.js | 32 +++++++++++++++++++++++++++++++ projects/wise-lending/index.js | 13 ++++--------- 2 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 projects/wise-lending-v2/index.js diff --git a/projects/wise-lending-v2/index.js b/projects/wise-lending-v2/index.js new file mode 100644 index 00000000000..b344569aa7d --- /dev/null +++ b/projects/wise-lending-v2/index.js @@ -0,0 +1,32 @@ + +async function tvl(api) { + const { lending: lendingContract, feeManager } = config[api.chain] + const pools = await api.fetchList({ lengthAbi: 'uint256:getPoolTokenAddressesLength', itemAbi: 'function getPoolTokenAdressesByIndex(uint256) view returns (address)', target: feeManager }) + const isATokens = await api.multiCall({ abi: 'function isAaveToken(address) view returns (bool)', calls: pools, target: feeManager }) + const aTokens = pools.filter((_, i) => isATokens[i]) + let otherTokens = pools.filter((_, i) => !isATokens[i]) + const names = await api.multiCall({ abi: 'string:name', calls: otherTokens }) + const pendleTokens = otherTokens.filter((_, i) => names[i].includes(' Pendle ')) + otherTokens = otherTokens.filter(i => !pendleTokens.includes(i)) + const uaTokens = await api.multiCall({ abi: 'function underlyingToken(address) view returns (address)', calls: aTokens, target: feeManager }) + + // unwrap pendle + const pBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: pendleTokens.map(t => ({ target: t, params: lendingContract })) }) + const pSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: pendleTokens }) + const pTotalAssets = await api.multiCall({ abi: 'uint256:totalLpAssets', calls: pendleTokens }) + const pUnderlying = await api.multiCall({ abi: 'address:UNDERLYING_PENDLE_MARKET', calls: pendleTokens }) + + pUnderlying.forEach((token, i) => { + api.add(token, pBals[i] * pTotalAssets[i] / pSupply[i]) + }) + + return api.sumTokens({ owner: lendingContract, tokens: [...otherTokens, ...uaTokens], }) +} + +const config = { + arbitrum: { lending: '0x9034a49587bd2c1af27598e0f04f30db66c87ebf', feeManager: '0x90a022796798f9dbA1Da0f8645234B284d4E8EC6' }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) diff --git a/projects/wise-lending/index.js b/projects/wise-lending/index.js index 6759c75ed0f..eeb6bd9a716 100644 --- a/projects/wise-lending/index.js +++ b/projects/wise-lending/index.js @@ -1,24 +1,19 @@ async function tvl(api) { const { lending: lendingContract, feeManager } = config[api.chain] - const pools = await api.fetchList({ lengthAbi: 'uint256:getPoolTokenAddressesLength', itemAbi: 'function getPoolTokenAdressesByIndex(uint256) view returns (address)', target: feeManager }) - const isATokens = await api.multiCall({ abi: 'function isAaveToken(address) view returns (bool)', calls: pools, target: feeManager }) - const aTokens = pools.filter((_, i) => isATokens[i]) - const otherTokens = pools.filter((_, i) => !isATokens[i]) - const uaTokens = await api.multiCall({ abi: 'function underlyingToken(address) view returns (address)', calls: aTokens, target: feeManager }) - return api.sumTokens({ owner: lendingContract, tokens: [...otherTokens, ...uaTokens] }) + 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"] + [1705017600, "Project Exploited"] ], } const config = { ethereum: { lending: '0x37e49bf3749513A02FA535F0CbC383796E8107E4', feeManager: '0x0bc24e61daad6293a1b3b53a7d01086bff0ea6e5' }, - arbitrum: { lending: '0x9034a49587bd2c1af27598e0f04f30db66c87ebf', feeManager: '0x90a022796798f9dbA1Da0f8645234B284d4E8EC6' }, } Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } + module.exports[chain] = { tvl } }) From 46ea72516303d632cc3febcda37c2b42f3af2163 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 19 Apr 2024 21:17:08 +0100 Subject: [PATCH 1291/2004] export as tvl --- projects/LamaMiner/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/LamaMiner/index.js b/projects/LamaMiner/index.js index 196c5423338..79c0e9072ac 100644 --- a/projects/LamaMiner/index.js +++ b/projects/LamaMiner/index.js @@ -7,7 +7,6 @@ module.exports = { methodology: 'counts the number of LAMA tokens in the Lama Miner contract.', start: 1711962980, avax: { - tvl: () => ({}), - staking: sumTokensExport({ owner: LAMA_MINER_CONTRACT, tokens: [LAMA_TOKEN_CONTRACT], lps: [LP_LAMA_WAVAX], useDefaultCoreAssets: true, }), + tvl: sumTokensExport({ owner: LAMA_MINER_CONTRACT, tokens: [LAMA_TOKEN_CONTRACT], lps: [LP_LAMA_WAVAX], useDefaultCoreAssets: true, }) } } \ No newline at end of file From 68fa0a66070f237752c1a17c8ad445c542071bf1 Mon Sep 17 00:00:00 2001 From: MylesMor Date: Sat, 20 Apr 2024 09:36:25 +0100 Subject: [PATCH 1292/2004] Add Ebisu's Bay adapter (#9899) --- projects/ebisus-bay/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/ebisus-bay/index.js diff --git a/projects/ebisus-bay/index.js b/projects/ebisus-bay/index.js new file mode 100644 index 00000000000..32cf05c4aa8 --- /dev/null +++ b/projects/ebisus-bay/index.js @@ -0,0 +1,20 @@ +const { staking } = require('../helper/staking') +const { getUniTVL } = require('../helper/unknownTokens') + +const factory = '0x5f1d751f447236f486f4268b883782897a902379' +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.", + cronos: { + staking: staking(bankContract, frtnToken), + tvl: getUniTVL({ + factory, + useDefaultCoreAssets: true, + }), + }, +} + From 46c104891419c16c2b4fd15988a153facd42542c Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Sat, 20 Apr 2024 16:41:49 +0800 Subject: [PATCH 1293/2004] add other Deposit (#9902) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js * update subgraph url * fix bug * revert * Excluding Fof Funds * add other Deposit --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index c84b4266c66..e368242466f 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -27,6 +27,7 @@ async function tvl(api) { await iziswap(api, address); await lendle(api, address); await vaultBalance(api); + await otherDeposit(api, address); return api.getBalances(); } @@ -117,6 +118,22 @@ async function borrowed(api) { return api.getBalances() } +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; From fde18f409e325875616db1b90b3e1c374bd0a09c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 20 Apr 2024 15:29:55 +0200 Subject: [PATCH 1294/2004] track https://app.creditguild.org --- projects/creditguild/index.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 projects/creditguild/index.js diff --git a/projects/creditguild/index.js b/projects/creditguild/index.js new file mode 100644 index 00000000000..e060ec75f90 --- /dev/null +++ b/projects/creditguild/index.js @@ -0,0 +1,31 @@ +const { getLogs2 } = require('../helper/cache/getLogs') + +const config = { + arbitrum: { factory: '0xfc462354dc9cac684516b49f002ae769514bbe63', fromBlock: 197467973, PSM: '0xc273c03D7F28f570C6765Be50322BC06bdd4bFab', } +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock, PSM } = config[chain] + module.exports[chain] = { + tvl: async (api) => { + const toa = [] + if (PSM) { + const token = await api.call({ abi: 'address:pegToken', target: PSM }) + toa.push([token, PSM]) + } + + const logs = await getLogs2({ + skipCacheRead: true, + 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 tokens = await api.multiCall({ abi: 'address:collateralToken', calls: terms }) + tokens.forEach((token, i) => toa.push([token, terms[i]])) + await api.sumTokens({ tokensAndOwners: toa }) + } + } +}) \ No newline at end of file From 7b15695bb404f8672add0d1534605c0eeb6beb3d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 20 Apr 2024 15:39:56 +0200 Subject: [PATCH 1295/2004] creditguild: minor fix --- projects/creditguild/index.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/projects/creditguild/index.js b/projects/creditguild/index.js index e060ec75f90..cee9d0c8a96 100644 --- a/projects/creditguild/index.js +++ b/projects/creditguild/index.js @@ -1,18 +1,15 @@ const { getLogs2 } = require('../helper/cache/getLogs') const config = { - arbitrum: { factory: '0xfc462354dc9cac684516b49f002ae769514bbe63', fromBlock: 197467973, PSM: '0xc273c03D7F28f570C6765Be50322BC06bdd4bFab', } + arbitrum: { factory: '0xfc462354dc9cac684516b49f002ae769514bbe63', fromBlock: 197467973, PSMs: ['0xc273c03D7F28f570C6765Be50322BC06bdd4bFab', '0x475840078280BaE8EF2428dbe151c7b349CF3f50'], } } Object.keys(config).forEach(chain => { - const { factory, fromBlock, PSM } = config[chain] + const { factory, fromBlock, PSMs = [] } = config[chain] module.exports[chain] = { tvl: async (api) => { - const toa = [] - if (PSM) { - const token = await api.call({ abi: 'address:pegToken', target: PSM }) - toa.push([token, PSM]) - } + const tokens = await api.multiCall({ abi: 'address:pegToken', calls: PSMs }) + const owners = [...PSMs] const logs = await getLogs2({ skipCacheRead: true, @@ -23,9 +20,10 @@ Object.keys(config).forEach(chain => { }) const terms = logs.map(log => log.term) - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: terms }) - tokens.forEach((token, i) => toa.push([token, terms[i]])) - await api.sumTokens({ tokensAndOwners: toa }) + 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 From 5c0b862c06a71f33f312dadf3593f70d852c078c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 20 Apr 2024 20:26:25 +0100 Subject: [PATCH 1296/2004] add swapblast v3 adapter --- projects/swapblast-v3/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/swapblast-v3/index.js diff --git a/projects/swapblast-v3/index.js b/projects/swapblast-v3/index.js new file mode 100644 index 00000000000..0c52b35e3b4 --- /dev/null +++ b/projects/swapblast-v3/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + blast: { + factory: "0x3e1402b653f219D0840A44CBF7FD8F193C2a348A", + fromBlock: 598283 + }, +}); \ No newline at end of file From c308810083d825fe24fe43b9abb24287db1be2e3 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 20 Apr 2024 20:39:32 +0100 Subject: [PATCH 1297/2004] add ebisus treasury --- projects/treasury/ebisusbay.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/treasury/ebisusbay.js diff --git a/projects/treasury/ebisusbay.js b/projects/treasury/ebisusbay.js new file mode 100644 index 00000000000..75afca0610d --- /dev/null +++ b/projects/treasury/ebisusbay.js @@ -0,0 +1,16 @@ + +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 From 14ebb98af256c7ab76c2da59dd003d49a631cbf8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 21 Apr 2024 20:07:38 +0200 Subject: [PATCH 1298/2004] update mage --- projects/mage/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/mage/index.js b/projects/mage/index.js index 352087fa89b..8a065cc6822 100644 --- a/projects/mage/index.js +++ b/projects/mage/index.js @@ -1,6 +1,11 @@ const { methodology, compoundExports2 } = require("../helper/compound"); +const sdk = require('@defillama/sdk'); +const { mergeExports } = require("../helper/utils"); -module.exports = { +module.exports = mergeExports([{ merlin: compoundExports2({ comptroller: '0xCE3bcCd2b0A457782f79000Be1b534C04B3F5aDD', cether: '0xe3b51f15dc086fba15426b8d42b4cd6feb46968e' }), methodology, -} \ No newline at end of file +}, { + merlin: compoundExports2({ comptroller: '0xe7464Caa3fD31A1A8B458a634e72F94A00695d17', }), +} +]) \ No newline at end of file From 33ab8e5f3ae00097286b42524cb6efd2488dcbe2 Mon Sep 17 00:00:00 2001 From: oogway112 <106013294+oogway112@users.noreply.github.com> Date: Sun, 21 Apr 2024 23:38:36 +0530 Subject: [PATCH 1299/2004] Added weETH pool in mode network for MantisSwap (#9904) --- projects/MantisSwap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/MantisSwap/index.js b/projects/MantisSwap/index.js index 5da24c50c01..883b336126a 100644 --- a/projects/MantisSwap/index.js +++ b/projects/MantisSwap/index.js @@ -3,7 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { polygon: { vaults: ['0x62Ba5e1AB1fa304687f132f67E35bFC5247166aD'] }, polygon_zkevm: { vaults: ['0x12d41b6DF938C739F00c392575e3FD9292d98215'] }, - mode: { vaults: ['0x4af97f73343b226C5a5872dCd2d1c4944BDb3E77'] }, + mode: { vaults: ['0x4af97f73343b226C5a5872dCd2d1c4944BDb3E77', '0xe8A1eAD2F4c454e319b76fA3325B754C47Ce1820'] }, } const MAX_LP_TOKENS = 3 From 7519316e9b46f3e3775ad4c4ea0b9eb545dabde7 Mon Sep 17 00:00:00 2001 From: 0xGreatApe <133986793+0xGreatApe@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:01:55 +0700 Subject: [PATCH 1300/2004] Added Firefly Dex (#9906) * added firefly Dex to projects under projects/firefly * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/firefly/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/firefly/index.js diff --git a/projects/firefly/index.js b/projects/firefly/index.js new file mode 100644 index 00000000000..144e22c91ff --- /dev/null +++ b/projects/firefly/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3") + +module.exports = uniV3Export({ + manta: { factory: "0x8666EF9DC0cA5336147f1B11f2C4fC2ecA809B95", fromBlock: 1776716, }, +}) From 1600530b7196a3ba84cd819699276e62464aec86 Mon Sep 17 00:00:00 2001 From: baklavaspace <93024988+baklavaspace@users.noreply.github.com> Date: Mon, 22 Apr 2024 15:11:47 +0800 Subject: [PATCH 1301/2004] Add Base chain Bava Staking (#9912) * Add Base Aerodrome AERO-BAVA vault * Add Base Bava staking tvl --- projects/baklava-space/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/baklava-space/index.js b/projects/baklava-space/index.js index b40abba1f20..abcb3083ff3 100644 --- a/projects/baklava-space/index.js +++ b/projects/baklava-space/index.js @@ -49,6 +49,9 @@ const config = { 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`, @@ -94,3 +97,5 @@ module.exports.avax = { module.exports.avax.staking = staking(bavaStakingRewards, bavaToken) module.exports.avax.pool2 = pool2('0xdcedb18047945de1f05f649569b3d2b0e648d9c8', '0x2c3601fe09c23df8beb8216298d1502c985e376f') + +module.exports.base.staking = staking(baseBavaStakingRewards, baseBavaToken) From 9ec3ce7ce05372c4640ae62454ea84d395478bb2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:20:07 +0200 Subject: [PATCH 1302/2004] Update fx-Protocol TVL and code refactor (#9913) * Update fx-Protocol TVL * Update fx-Protocol tvl * code refactor --------- Co-authored-by: Andrew Clark Co-authored-by: Andrew --- projects/fx-Protocol/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/fx-Protocol/index.js b/projects/fx-Protocol/index.js index ecc29f25f6e..ad6d12f9e21 100644 --- a/projects/fx-Protocol/index.js +++ b/projects/fx-Protocol/index.js @@ -1,16 +1,22 @@ -const { sumERC4626VaultsExport} = require("../helper/erc4626"); - const treasuries = [ "0x0e5CAA5c889Bdf053c9A76395f62267E653AFbb0", "0xED803540037B0ae069c93420F89Cd653B6e3Df1f", "0xcfEEfF214b256063110d3236ea12Db49d2dF2359", "0x781BA968d5cc0b40EB592D5c8a9a3A4000063885", - "0x38965311507D4E54973F81475a149c09376e241e" -] + "0x38965311507D4E54973F81475a149c09376e241e", + "0x63Fe55B3fe3f74B42840788cFbe6229869590f83", +]; module.exports = { doublecounted: true, ethereum: { - tvl: sumERC4626VaultsExport({ vaults: treasuries, tokenAbi: 'baseToken', balanceAbi: 'totalBaseToken' }), + tvl, }, }; + +async function tvl(api) { + const tokens = await api.multiCall({ abi: 'address:baseToken', calls: treasuries }) + const bals = await api.multiCall({ abi: 'uint256:totalBaseToken', calls: treasuries }) + const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens }) + bals.forEach((bal, i) => api.add(tokens[i], bal / 10 ** (18 - decimals[i]))) +} \ No newline at end of file From 87dd271f2ecb0d66bf8ac97a7d2360c58cf3a982 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:54:17 +0200 Subject: [PATCH 1303/2004] track btcfi cdp product --- projects/btcfi-cdp/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/btcfi-cdp/index.js diff --git a/projects/btcfi-cdp/index.js b/projects/btcfi-cdp/index.js new file mode 100644 index 00000000000..6390a554531 --- /dev/null +++ b/projects/btcfi-cdp/index.js @@ -0,0 +1,17 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport, } = require('../helper/unwrapLPs') + +const chainPools = { + bfc: { + WBTC: { pool: '0xA84F9F42dF222da491571Fb70cCc11AC84B7F29D', token: ADDRESSES.bfc.WBTC }, + BTCB: { pool: '0xee66D8C40282439F2eE855D8a3666FB73257D349', token: ADDRESSES.bfc.BTCB } + }, +} + +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 }) + } +}) \ No newline at end of file From 0c5a465fa418314d14c3ab3036a10a8c1f0ae7d5 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:57:49 +0100 Subject: [PATCH 1304/2004] add binance new wallets (trx) (#9916) * add binance new wallets (trx) * remove comments --- projects/binance/config.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/binance/config.js b/projects/binance/config.js index 28a252d7e75..fad58324bbf 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -603,6 +603,16 @@ const assetList = [ ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], ['XRP', 'XRP', 'rpmxpWis42eYV4oMhyxJNSzrLRdacJVooa'], ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], + // added on the 22/04/2024 + ['USDT', 'TRX', 'TJ5usJLLwjwn7Pw3TPbdzreG7dvgKzfQ5y'], + ['TRX', 'TRX', 'TJ5usJLLwjwn7Pw3TPbdzreG7dvgKzfQ5y'], + ['USDT', 'TRX', 'TK4ykR48cQQoyFcZ5N4xZCbsBaHcg6n3gJ'], + ['TRX', 'TRX', 'TK4ykR48cQQoyFcZ5N4xZCbsBaHcg6n3gJ'], + ['TRX', 'TRX', 'TCLgK89AnXbC9rewvhNb9UgXCc2qJJpBXh'], + ['USDT', 'TRX', 'TCLgK89AnXbC9rewvhNb9UgXCc2qJJpBXh'], + ['USDT', 'TRX', 'TJqwA7SoZnERE4zW5uDEiPkbz4B66h9TFj'], + ['TRX', 'TRX', 'TJqwA7SoZnERE4zW5uDEiPkbz4B66h9TFj'], + ] function getAddresses(chain) { From 6c983c850db62ac85c755ba2cf0bd69a7a6f268d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:21:02 +0200 Subject: [PATCH 1305/2004] track mimswap --- projects/abracadabra/index.js | 32 +++++++------------------------- projects/mimswap/index.js | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 25 deletions(-) create mode 100644 projects/mimswap/index.js diff --git a/projects/abracadabra/index.js b/projects/abracadabra/index.js index 74deecee5a2..0ac6eaf5d6d 100644 --- a/projects/abracadabra/index.js +++ b/projects/abracadabra/index.js @@ -1,4 +1,3 @@ -const ADDRESSES = require('../helper/coreAssets.json') const marketsJSON = require('./market.json'); const abi = require('./abi.json'); @@ -34,16 +33,6 @@ const underlyingTokens = { optimism: {}, }; -const liquidityLaunchEvents = { - blast: { - contractAddress: "0xa64B73699Cc7334810E382A4C09CAEc53636Ab96", - supportedTokens: [ - ADDRESSES.blast.USDB, // USDb - // "0x76DA31D7C9CbEAE102aff34D3398bC450c8374c1", // MIM - ] - }, -}; - async function tvl(api) { const { chain } = api const marketsArray = []; @@ -61,20 +50,13 @@ async function tvl(api) { ).flat() const bals = await api.multiCall({ calls, abi: abi.balanceOf, }) api.addTokens(tokens, bals) - - const liquidityLaunchEvent = liquidityLaunchEvents[chain]; - if (liquidityLaunchEvent) - await api.sumTokens({ owner: liquidityLaunchEvent.contractAddress, tokens: liquidityLaunchEvent.supportedTokens }) - - - - return api.getBalances() } 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"], - ] +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/mimswap/index.js b/projects/mimswap/index.js new file mode 100644 index 00000000000..6121e57d58c --- /dev/null +++ b/projects/mimswap/index.js @@ -0,0 +1,16 @@ +const { getLogs2 } = require('../helper/cache/getLogs') + +const config = { + blast: { factory: '0x7E05363E225c1c8096b1cd233B59457104B84908', fromBlock: 1067907 }, +} + +Object.keys(config).forEach(chain => { + const { factory, fromBlock } = config[chain] + module.exports[chain] = { + tvl: async (api) => { + const logs = await getLogs2({ api, factory, eventAbi: 'event LogPoolAdded (address baseToken, address quoteToken, address creator, address pool)', fromBlock, }) + const ownerTokens = logs.map(log => [[log.baseToken, log.quoteToken], log.pool]) + return api.sumTokens({ ownerTokens }) + } + } +}) \ No newline at end of file From 71ecdc8360e55f7ee36f64bf7411618a2949c8c9 Mon Sep 17 00:00:00 2001 From: Ivan <3238603+ivivanov@users.noreply.github.com> Date: Mon, 22 Apr 2024 12:21:47 +0300 Subject: [PATCH 1306/2004] (Nolus) Update contract query response (#9917) --- projects/nolus/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/nolus/index.js b/projects/nolus/index.js index edec5c14c5d..22b30aefc2f 100644 --- a/projects/nolus/index.js +++ b/projects/nolus/index.js @@ -65,7 +65,7 @@ async function getLeaseCodeId(leaserAddress) { data: { config: {} } }) - const leaseCodeId = leaserContract?.config?.lease_code_id + const leaseCodeId = leaserContract?.config?.lease_code if (!leaseCodeId) { return 0 } From d9f6587cc7e39471315ebbf919c3c2664788330e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:36:30 +0200 Subject: [PATCH 1307/2004] Add xlayer config and update abstradex (#9914) * feat: add x layer config * fix: rename * update abstradex --------- Co-authored-by: ryanC --- projects/abstraDex/index.js | 25 +++++++++++-------------- projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 4 ++++ projects/helper/env.js | 2 ++ projects/helper/tokenMapping.js | 4 ++++ projects/xy-finance/index.js | 23 ++++++++++++++++++++--- 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/projects/abstraDex/index.js b/projects/abstraDex/index.js index 720fd6f0ef0..6f4bcb28495 100644 --- a/projects/abstraDex/index.js +++ b/projects/abstraDex/index.js @@ -1,20 +1,17 @@ const { getUniTVL } = require("../helper/unknownTokens"); +const config = { + xlayer: '0xa7afb6163c331ddb0845843889d6f9544328846f', + zkfair: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', + zeta: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', + blast: '0xA7afB6163c331DDb0845843889D6f9544328846F', +} + module.exports = { misrepresentedTokens: true, - zkfair: { - tvl: getUniTVL({ - factory: "0x174c4C03DfeA09682728A5959A253bf1F7C7766F", - useDefaultCoreAssets: true, - }), - }, - - zeta: { - tvl: getUniTVL({ - factory: "0x174c4C03DfeA09682728A5959A253bf1F7C7766F", - useDefaultCoreAssets: 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/helper/chains.json b/projects/helper/chains.json index 211ab54f1a9..1706a5742be 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -298,6 +298,7 @@ "xai", "xdai", "xdc", + "xlayer", "xpla", "zeniq", "zeta", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index afe257bd586..a175ce5dc1b 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1703,5 +1703,9 @@ "WBTC": "0x5fd55a1b9fc24967c4db09c513c3ba0dfa7ff687", "USDT": "0xd567b3d7b8fe3c79a1ad8da978812cfc4fa05e75", "AXLUSDC": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd" + }, + "xlayer": { + "WETH": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c", + "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d" } } diff --git a/projects/helper/env.js b/projects/helper/env.js index 6d5df83a7dc..a7fee3285f5 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -16,6 +16,8 @@ const DEFAULTS = { FSC_RPC: "https://fsc-dataseed1.fonscan.io,https://fsc-dataseed2.fonscan.io,https://fonscan.io/api/eth-rpc", BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", FSC_RPC_MULTICALL: "0x18fA376d92511Dd04090566AB6144847c03557d8", + XLAYER_RPC: "https://wallet.okex.org/fullnode/xlayer/discover/rpc/ro", + XLAYER_RPC_MULTICALL: "0x398F92e15519B4F6F2D5cc42C17FC9ED15De53d8", } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 672cc7cc529..d5ea36f5966 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -114,6 +114,10 @@ const fixBalancesTokens = { }, planq: { '0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a': { coingeckoId: "planq", decimals: 18, }, + }, + xlayer: { + [ADDRESSES.xlayer.WETH]: { coingeckoId: "ethereum", decimals: 18, }, + [ADDRESSES.xlayer.USDT]: { coingeckoId: "tether", decimals: 6, }, } } diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index a4b7179baf2..c1592246c28 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -65,6 +65,9 @@ const config = { blast: { chainId: '81457', }, + xlayer: { + chainId: '196' + } } const ethAddress = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' @@ -382,6 +385,16 @@ const yPoolDepositContract = { "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", "tokenAddress": ethAddress }, + }, + "196": { + "ETH": { + "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", + "tokenAddress": ADDRESSES.xlayer.WETH + }, + "USDT": { + "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", + "tokenAddress": ADDRESSES.xlayer.USDT + } } } @@ -389,11 +402,15 @@ module.exports={} Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: async (_, _b, {[chain]: block}) => { + tvl: async (api) => { const { chainId } = config[chain] const toa = [] Object.values(yPoolDepositContract[chainId]).forEach(i => toa.push([i.tokenAddress, i.contractAddress])) - return sumTokens2({ chain, block, tokensAndOwners: toa, }) + return sumTokens2({ api, tokensAndOwners: toa, }) } } -}) \ No newline at end of file +}) + +module.exports = { + xlayer: module.exports.xlayer, +} \ No newline at end of file From 8d3c9fda60c99d7112fe8a48e03227a07ab6b7a6 Mon Sep 17 00:00:00 2001 From: usr-icon-foundation <111794534+usr-icon-foundation@users.noreply.github.com> Date: Mon, 22 Apr 2024 12:24:44 +0200 Subject: [PATCH 1308/2004] Added Injective chain deposits for cross-chain Balanced DEX (#9919) * Configure external chain deposits for cross-chain Balanced DEX Placed getExternalChainDeposits and computeTVL functions in balanced/helper.js Updated balanced/index.js to filter out external deposits from the icon TVL and attribute these external deposits to their origin chains. * Fix Module typo * Replace parseInt w/ toInt * code refactor * add reference * Added Injective chain deposits for cross-chain Balanced DEX * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/balanced/helper.js | 3 ++- projects/balanced/index.js | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/balanced/helper.js b/projects/balanced/helper.js index 11d11eaa550..ae4542f235e 100644 --- a/projects/balanced/helper.js +++ b/projects/balanced/helper.js @@ -33,12 +33,13 @@ async function getExternalChainDepositsCached() { 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", } // Get decimals of cross-chain Balanced assets in balancedAssetManagerContract diff --git a/projects/balanced/index.js b/projects/balanced/index.js index dcf3cd32f24..9e960219dac 100644 --- a/projects/balanced/index.js +++ b/projects/balanced/index.js @@ -14,6 +14,8 @@ async function tvl(api) { 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 = { @@ -30,4 +32,7 @@ module.exports = { avax: { tvl: async () => await computeTVL("avalanche"), }, + injective: { + tvl: async () => await computeTVL("injective"), + }, }; From ef6adfea84874c1b8f80a4cdba1bba283c260dd2 Mon Sep 17 00:00:00 2001 From: Ersan YAKIT Date: Mon, 22 Apr 2024 13:28:39 +0300 Subject: [PATCH 1309/2004] KEWL (#9915) IMON has been rebranded as KEWL. --- projects/imonswap/index.js | 16 ---------------- projects/kewl/index.js | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 16 deletions(-) delete mode 100644 projects/imonswap/index.js create mode 100644 projects/kewl/index.js diff --git a/projects/imonswap/index.js b/projects/imonswap/index.js deleted file mode 100644 index d42ada23969..00000000000 --- a/projects/imonswap/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); - -module.exports = { - methodology: - "We count liquidity of all paris through Factory Contract and Pools (single tokens) seccions through Factory Contract.", - chz: { tvl, }, - start: 1701478462, //Dec-2-2023 3:54:26 PM +UTC -}; - -async function tvl(api) { - const factory = "0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0" - const getAllPairsAbi = "function getAllPairs() view returns ((bool valid, uint256 index, uint256 reserveBase, uint256 reserveQuote, address pair, (uint256 decimals, address token, string name, string symbol) base, (uint256 decimals, address token, string name, string symbol) quote)[])" - const allPairs = await api.call({ target: factory, abi: getAllPairsAbi }) - const ownerTokens = allPairs.map(i => [[i.base.token, i.quote.token], i.pair]) - return sumTokens2({ api, ownerTokens }) -} \ No newline at end of file diff --git a/projects/kewl/index.js b/projects/kewl/index.js new file mode 100644 index 00000000000..90684e42258 --- /dev/null +++ b/projects/kewl/index.js @@ -0,0 +1,15 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + methodology: + "We count liquidity of all paris through Factory Contract and Pools (single tokens) seccions through Factory Contract.", + start: 1701478462, //Dec-2-2023 3:54:26 PM +UTC + + misrepresentedTokens: true, + chz: { + tvl: getUniTVL({ + factory: "0xA0BB8f9865f732C277d0C162249A4F6c157ae9D0", + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, +}; From 52c6d8f847c326ad10491e0df5f43fca5d52a559 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 22 Apr 2024 12:11:35 +0100 Subject: [PATCH 1310/2004] fix xy (#9920) --- projects/xy-finance/index.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index c1592246c28..79387dddc3d 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -409,8 +409,4 @@ Object.keys(config).forEach(chain => { return sumTokens2({ api, tokensAndOwners: toa, }) } } -}) - -module.exports = { - xlayer: module.exports.xlayer, -} \ No newline at end of file +}) \ No newline at end of file From 50f50422dce4f472150c5290ddde78db05b542b1 Mon Sep 17 00:00:00 2001 From: 0xVe <99217129+0xVe@users.noreply.github.com> Date: Mon, 22 Apr 2024 13:32:29 +0200 Subject: [PATCH 1311/2004] update stake dao bsc tvl (#9921) --- projects/stakedao/abi.json | 4 +++- projects/stakedao/index.js | 37 ++++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/projects/stakedao/abi.json b/projects/stakedao/abi.json index 7f12db2a141..5259464a342 100644 --- a/projects/stakedao/abi.json +++ b/projects/stakedao/abi.json @@ -3,5 +3,7 @@ "balanceOf": "function balanceOf(address arg0) view returns (uint256)", "collateralMap": "function collateralMap(address) view returns (address token, address sanToken, address perpetualManager, address oracle, uint256 stocksUsers, uint256 sanRate, uint256 collatBase, tuple(uint256 lastBlockUpdated, uint256 lockedInterests, uint256 maxInterestsDistributed, uint256 feesAside, uint64 slippageFee, uint64 feesForSLPs, uint64 slippage, uint64 interestsForSLPs) slpData, tuple(uint64[] xFeeMint, uint64[] yFeeMint, uint64[] xFeeBurn, uint64[] yFeeBurn, uint64 targetHAHedge, uint64 bonusMalusMint, uint64 bonusMalusBurn, uint256 capOnStableMinted) feeData)", "bal": "uint256:bal", - "locked": "function locked(address arg0) view returns (int128 amount, uint256 end)" + "locked": "function locked(address arg0) view returns (int128 amount, uint256 end)", + "locks": "function locks(address arg0) view returns (int128 amount, uint256 end)" + } \ No newline at end of file diff --git a/projects/stakedao/index.js b/projects/stakedao/index.js index 6bb0f8b7872..964a6ca4e14 100644 --- a/projects/stakedao/index.js +++ b/projects/stakedao/index.js @@ -1,11 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const abi = require('./abi.json') -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2, PANCAKE_NFT_ADDRESS } = require('../helper/unwrapLPs') const { getConfig } = require('../helper/cache'); -const STRATEGIES_ENDPOINT = 'https://lockers.stakedao.org/api/strategies/cache'; -const LOCKERS_ENDPOINT = 'https://lockers.stakedao.org/api/lockers/cache'; +const STRATEGIES_ENDPOINT = 'https://classic.stakedao.org/api/strategies/cache'; +const LOCKERS_ENDPOINT = 'https://classic.stakedao.org/api/lockers/cache'; async function strategiesCurveBalancer(timestamp, block) { const resp = await Promise.all([ @@ -255,15 +255,10 @@ async function avax(api) { } async function bsc(api) { - const btcEPS_vault_bsc = { - contract: '0xf479e1252481360f67c2b308F998395cA056a77f', - } - const EPS3_vault_bsc = { - contract: '0x4835BC54e87ff7722a89450dc26D9dc2d3A69F36', - } - const fusdt3EPS_vault_bsc = { - contract: '0x8E724986B08F2891cD98F7F71b5F52E7CFF420de', - } + // OLD STRATEGIES + const btcEPS_vault_bsc = { contract: '0xf479e1252481360f67c2b308F998395cA056a77f' } + const EPS3_vault_bsc = { contract: '0x4835BC54e87ff7722a89450dc26D9dc2d3A69F36' } + const fusdt3EPS_vault_bsc = { contract: '0x8E724986B08F2891cD98F7F71b5F52E7CFF420de' } const vaultsBsc = [ btcEPS_vault_bsc, @@ -272,8 +267,24 @@ async function bsc(api) { ].map(i => i.contract) const [bitcoin, usdc, tether] = (await api.multiCall({ abi: abi.balance, calls: vaultsBsc })).map(i => i / 1e18) + + // CAKE LOCKER + const VE_CAKE = '0x5692DB8177a81A6c6afc8084C2976C9933EC1bAB' + const STAKE_DAO_CAKE_LOCKER = '0x1E6F87A9ddF744aF31157d8DaA1e3025648d042d' + const PANCAKESWAP_MASTERCHEF_V3 = '0x556B9306565093C855AEA9AE92A594704c2Cd59e' + + const cakeLock = await api.multiCall({ abi: abi.locks, calls: [{ target: VE_CAKE, params: STAKE_DAO_CAKE_LOCKER }] }) + const cake = Number(cakeLock[0].amount) / 1e18 + + // PANCAKE STRATEGIES + const pcsStratsTvl = await sumTokens2({ + api, + uniV3nftsAndOwners: [[PANCAKE_NFT_ADDRESS, STAKE_DAO_CAKE_LOCKER]], + uniV3ExtraConfig: { nftIdFetcher: PANCAKESWAP_MASTERCHEF_V3 } + }) + return { - bitcoin, tether, 'usd-coin': usdc + bitcoin, tether, 'usd-coin': usdc, 'pancakeswap-token': cake, ...pcsStratsTvl } } From b4ed0ae968a706a818d4ca6aa494d12d9f829930 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Apr 2024 13:58:11 +0200 Subject: [PATCH 1312/2004] track https://flat.money/flatcoin --- projects/flat-money/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/flat-money/index.js diff --git a/projects/flat-money/index.js b/projects/flat-money/index.js new file mode 100644 index 00000000000..cf30a21236b --- /dev/null +++ b/projects/flat-money/index.js @@ -0,0 +1,13 @@ +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 From 5e2e9b6d0c9af9e0fe1516603332ac51e420ed29 Mon Sep 17 00:00:00 2001 From: Dmitriy Babenko <159453675+dmitriy-woof-software@users.noreply.github.com> Date: Mon, 22 Apr 2024 07:02:19 -0500 Subject: [PATCH 1313/2004] feat: add usdc optimism market (#9922) --- projects/compound-v3/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/compound-v3/index.js b/projects/compound-v3/index.js index f12c4c736aa..7932a5dde46 100644 --- a/projects/compound-v3/index.js +++ b/projects/compound-v3/index.js @@ -25,5 +25,8 @@ module.exports = compoundV3Exports({ }, scroll: { markets: ['0xB2f97c1Bd3bf02f5e74d13f02E3e26F93D77CE44'], // USDC Market + }, + optimism: { + markets: ['0x2e44e174f7D53F0212823acC11C01A11d58c5bCB'], // USDC Matket } }) From 2128b99e5afcdf4bba28da39da1b06d6d2020b51 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 22 Apr 2024 13:34:56 +0100 Subject: [PATCH 1314/2004] add linea chain to spartadex (#9923) --- projects/spartadex/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/spartadex/index.js b/projects/spartadex/index.js index e3130b435e1..e760b929898 100644 --- a/projects/spartadex/index.js +++ b/projects/spartadex/index.js @@ -3,4 +3,5 @@ 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 From d11acccd6b3c55c2b004448d1d25eabf7ba4ee4a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:56:31 +0200 Subject: [PATCH 1315/2004] Add REBALANCE Finance adapter and refactor code (#9925) * feat: add REBALANCE Finance adapter * code refactor --------- Co-authored-by: Levon Avetisyan --- projects/rebalance/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/rebalance/index.js diff --git a/projects/rebalance/index.js b/projects/rebalance/index.js new file mode 100644 index 00000000000..e3a7ab1ac1e --- /dev/null +++ b/projects/rebalance/index.js @@ -0,0 +1,21 @@ +const { sumERC4626VaultsExport } = require('../helper/erc4626') +const config = { + arbitrum: [ + '0x4DdbCB86FCa5B4678Bd132085C818b07cd5716D1', // rUSDT + '0xD430e22c3a0F8Ebd6813411084a5cb26937f6661', // rUSDC.e + '0x46cbC1397710e177810B84028F4bf6F8B75B6F71', // rWETH + '0x52952120EAd486EC7cdd4CA93EA13f2abA44cC20', // rFRAX + '0xD77B4AdfF67108f7Ea3155ce1fB67c5345ee89C8', // rDAI + ] +} + +module.exports = { + methodology: + 'TVL displays the total amount of assets stored in the REBALANCE vault contracts.', + start: 1712143874, + hallmarks: [[1712143874, 'Profitable vaults deployment']], +}; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl: sumERC4626VaultsExport({ vaults: config[chain], isOG4626: true, }) } +}) \ No newline at end of file From 7267518be956e40aef2adebfab83be1739314c26 Mon Sep 17 00:00:00 2001 From: alkinemk <71387893+alkinemk@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:02:29 +0300 Subject: [PATCH 1316/2004] fix layout (#9926) --- projects/helper/utils/solana/layout.js | 2 ++ .../layouts/stake-pool-partial-layout.js | 21 +++++++++++++++++++ projects/sanctum-validator-lsts/index.js | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 projects/helper/utils/solana/layouts/stake-pool-partial-layout.js diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index ba56dcf5c84..09c332eecb6 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -9,6 +9,7 @@ const { ReserveLayout, ReserveLayoutLarix, MintLayout, AccountLayout, TokenSwapL const { SCN_STAKE_POOL } = 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 parseReserve = (info) => { const pubkey = PublicKey.default @@ -57,6 +58,7 @@ const customDecoders = { phoenix: parsePhoenix, sanctumInfinity: defaultParseLayout(SANCTUM_INFINITY), sanctumValidatorLsts: parseSanctumLstStateList, + stakePoolPartial: defaultParseLayout(STAKE_POOL_PARTIAL) } function decodeAccount(layout, accountInfo) { diff --git a/projects/helper/utils/solana/layouts/stake-pool-partial-layout.js b/projects/helper/utils/solana/layouts/stake-pool-partial-layout.js new file mode 100644 index 00000000000..f1742ab38bc --- /dev/null +++ b/projects/helper/utils/solana/layouts/stake-pool-partial-layout.js @@ -0,0 +1,21 @@ +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/sanctum-validator-lsts/index.js b/projects/sanctum-validator-lsts/index.js index 7b5050761fc..9e33033e161 100644 --- a/projects/sanctum-validator-lsts/index.js +++ b/projects/sanctum-validator-lsts/index.js @@ -24,7 +24,7 @@ async function tvl() { }) // join SVSP and MVSP and decode pool data - const allValidatorStakePoolAccounts = singleValidatorStakePoolAccounts.push(...multipleValidatorStakePoolAccounts).map(poolAccount => decodeAccount("scnStakePool", poolAccount.account)) + const allValidatorStakePoolAccounts = [...singleValidatorStakePoolAccounts,...multipleValidatorStakePoolAccounts].map(poolAccount => decodeAccount("stakePoolPartial", poolAccount.account)) // get sanctum LSTs mints const poolMints = allValidatorStakePoolAccounts.map(value => value.poolMint) From cf7f2850d7d9419ed7c4026f2c659c545276f950 Mon Sep 17 00:00:00 2001 From: 0xR <99395193+0xrmvdao@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:02:43 +0300 Subject: [PATCH 1317/2004] Add Grizzly Trade Derivatives V2 TVL adapter (#9927) * Add Grizzly Trade Derivatives V2 TVL adapter. * [fix] Kinetix Derivatives V2 adapter token address fixed. --- projects/grizzly-trade-derivatives-v2/index.js | 13 +++++++++++++ projects/kinetix-derivatives-v2/index.js | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 projects/grizzly-trade-derivatives-v2/index.js diff --git a/projects/grizzly-trade-derivatives-v2/index.js b/projects/grizzly-trade-derivatives-v2/index.js new file mode 100644 index 00000000000..f7fddc6dd7c --- /dev/null +++ b/projects/grizzly-trade-derivatives-v2/index.js @@ -0,0 +1,13 @@ +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/kinetix-derivatives-v2/index.js b/projects/kinetix-derivatives-v2/index.js index ff0267536c8..bd5cee17be1 100644 --- a/projects/kinetix-derivatives-v2/index.js +++ b/projects/kinetix-derivatives-v2/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { nullAddress } = require("../helper/unwrapLPs"); async function KavaTvl(api) { - const tokens = [nullAddress, ADDRESSES.kava.USDC]; + const tokens = [nullAddress, ADDRESSES.kava.USDt]; const owners = ["0xB5CE30B6EBAA252bDEac2F768EF9b1e4Bdf8d120"]; return api.sumTokens({ owners, tokens }); } From f1139fb874fc98c29c367011c32bc0c2be327a3b Mon Sep 17 00:00:00 2001 From: Ankit Kumar Karna Date: Mon, 22 Apr 2024 21:10:06 +0545 Subject: [PATCH 1318/2004] Station DEX Added (#9928) --- projects/stationdex-v2/index.js | 14 ++++++++++++++ projects/stationdex-v3/index.js | 5 +++++ 2 files changed, 19 insertions(+) create mode 100644 projects/stationdex-v2/index.js create mode 100644 projects/stationdex-v3/index.js diff --git a/projects/stationdex-v2/index.js b/projects/stationdex-v2/index.js new file mode 100644 index 00000000000..433ddfc0a42 --- /dev/null +++ b/projects/stationdex-v2/index.js @@ -0,0 +1,14 @@ + +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 new file mode 100644 index 00000000000..3568f032afd --- /dev/null +++ b/projects/stationdex-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + xlayer: { factory: '0xA7c6d971586573CBa1870b9b6A281bb0d5f853bC', fromBlock: 451069 }, +}) \ No newline at end of file From 5f53bec773cbe1972566a8457183a5d7422ac57e Mon Sep 17 00:00:00 2001 From: Krugo D <85778179+Krugo-D@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:03:23 +0700 Subject: [PATCH 1319/2004] add lynx->veLYNX staking (#9929) * add lynx->veLYNX staking * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lynex/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/lynex/index.js b/projects/lynex/index.js index ec429cd12b3..55800a18ef9 100644 --- a/projects/lynex/index.js +++ b/projects/lynex/index.js @@ -1,4 +1,5 @@ const { uniV3Export } = require("../helper/uniswapV3"); +const { staking } = require("../helper/staking"); module.exports = uniV3Export({ linea: { @@ -6,4 +7,6 @@ module.exports = uniV3Export({ fromBlock: 143660, isAlgebra: true, }, -}); +}) + +module.exports.linea.staking = staking("0x8D95f56b0Bac46e8ac1d3A3F12FB1E5BC39b4c0c", "0x1a51b19CE03dbE0Cb44C1528E34a7EDD7771E9Af") From e6b640c76c75efb8cffffe84ecae4d8c9f013bf1 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 22 Apr 2024 19:40:13 +0100 Subject: [PATCH 1320/2004] uniswap linea --- projects/uniswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index b166851121f..6e381b717b5 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -81,6 +81,7 @@ module.exports = { rsk: { factory: "0xAf37Ec98A00fD63689cF3060Bf3b6784e00CaD82", fromBlock: 5829207, }, scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, blast: { factory: "0x792edade80af5fc680d96a2ed80a44247d2cf6fd", fromBlock: 400903, }, + linea: { factory: "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", fromBlock: 25247, }, }), filecoin: { tvl: filecoinTvl }, } From 63014f50724ac39506058a2fbcd276e1bc9e517d Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 22 Apr 2024 20:35:55 +0100 Subject: [PATCH 1321/2004] remove bad vault --- projects/orange-finance/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/orange-finance/index.js b/projects/orange-finance/index.js index 7e5528c5778..a342e569c15 100644 --- a/projects/orange-finance/index.js +++ b/projects/orange-finance/index.js @@ -6,7 +6,7 @@ const VAULTS = [ { address: "0x16F6617680333e90f18aA89a85817d347078b7b8", asset: ADDRESSES.arbitrum.USDC }, // UniswapV3 ETH-USDC.e DN Vault { address: "0x810fd69F58fF7Ff8553D43a5D3DCE3853960cAa6", asset: ADDRESSES.arbitrum.USDC }, // UniswapV3 ETH-USDC.e DN Vault { address: "0xb9c5425084671221d7d5a547dbf1bdcec26c8b7d", asset: ADDRESSES.arbitrum.USDC }, // Camelot ETH-USDC.e DN Vault - { address: "0xdB8a12EeC655748A74576BD8E0acAbdF8e622508", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-USDC.e Stable Vault + // broken { address: "0xdB8a12EeC655748A74576BD8E0acAbdF8e622508", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-USDC.e Stable Vault { address: "0x690633417eA231073c53f00D30f194489196dfaD", asset: ADDRESSES.arbitrum.USDC_CIRCLE }, // Camelot USDC-WETH DN Vault { address: "0x7B9d8c413ACE4008E22dcF08C3A79A9178682e13", asset: ADDRESSES.arbitrum.WETH }, // Camelot WETH-ARB DN Vault { address: "0x32790eAf83B52E53d54bFD4779832d6aDEAC880E", asset: ADDRESSES.arbitrum.WETH }, // UniswapV3 WETH-WBTC DN Vault @@ -30,7 +30,6 @@ async function tvl(api) { const totalAssets = await api.multiCall({ abi: "uint256:totalAssets", calls: VAULTS.map(v => v.address) }) VAULTS.forEach((v, i) => api.add(v.asset, totalAssets[i])) - // totalAssets.forEach((i) => api.add(ADDRESSES.arbitrum.WETH, i)) } module.exports = { From 5ad9580adb22cbe3bb8688cb727712bd2cd12e3e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 22 Apr 2024 21:44:00 +0100 Subject: [PATCH 1322/2004] fix fluid zircuit --- projects/fluid/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/fluid/index.js b/projects/fluid/index.js index 59a97118a81..9a05ff241da 100644 --- a/projects/fluid/index.js +++ b/projects/fluid/index.js @@ -3,6 +3,11 @@ module.exports={ ethereum:{ tvl: async (api) => { const tokens = await api.call({ target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", abi: "function listedTokens() public view returns (address[] memory listedTokens_)" }) + api.add("0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", await api.call({ + target: "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6", + abi: "function balance(address, address) public view returns (uint256 balance)", + params: ["0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", "0x52aa899454998be5b000ad077a46bbe360f4e497"] + })) return api.sumTokens({ owner: "0x52aa899454998be5b000ad077a46bbe360f4e497", tokens: [ ADDRESSES.null, ...tokens.filter(t=>t.toLowerCase()!=="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") From 410418545ce59add809d6cfec56d3585a4cac71f Mon Sep 17 00:00:00 2001 From: enkilsd <139135879+enkilsd@users.noreply.github.com> Date: Tue, 23 Apr 2024 05:11:32 +0800 Subject: [PATCH 1323/2004] Add ENKI Protocol tvl for listing (#9930) Co-authored-by: enki <> --- projects/enki/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/enki/index.js diff --git a/projects/enki/index.js b/projects/enki/index.js new file mode 100644 index 00000000000..4247056fa75 --- /dev/null +++ b/projects/enki/index.js @@ -0,0 +1,16 @@ +const ADDRESSES = require('../helper/coreAssets.json') +async function tvl(_, _1, _2, { api }) { + const stakedMetis = await api.call({ + abi: 'erc20:balanceOf', + target: ADDRESSES.metis.Metis, + params: ['0x810Ef8Aa1326FB1c5Ce57cD79d549CF9B2cC32aF'] + }); + + api.add(ADDRESSES.metis.Metis, stakedMetis); +} + +module.exports = { + metis: { + tvl + } +}; \ No newline at end of file From 72dc39948217fd1ac7d67a044f4ed773514b9684 Mon Sep 17 00:00:00 2001 From: allium-ricardo <114602305+allium-ricardo@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:17:56 +0100 Subject: [PATCH 1324/2004] fix eigenlayer TVL calculation (#9931) --- projects/eigenlayer/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/eigenlayer/index.js b/projects/eigenlayer/index.js index 3ed90f5bee8..a0d3c712495 100644 --- a/projects/eigenlayer/index.js +++ b/projects/eigenlayer/index.js @@ -25,7 +25,7 @@ async function getEigenPods(timestamp) { slot_timestamp from beacon.validator.balances where - status = 'active_ongoing' + status in ('active_ongoing', 'pending_queued', 'pending_initialized', 'withdrawal_possible') and slot_timestamp = '${new Date(timestamp * 1e3 - offset * 24 * 3600e3).toISOString().split('T')[0]}T23:59:59' ) beacon where pods.params['eigenPod'] = beacon.WITHDRAWAL_ADDRESS`) await setCache('eigenlayer', 'eigenpods-query', newQuery) @@ -72,4 +72,4 @@ module.exports = { ethereum: { tvl, }, -} \ No newline at end of file +} From 81aaa37a67ed2ede41dd7c90a816e0aba545bea9 Mon Sep 17 00:00:00 2001 From: powell-revoswap <167792029+powell-revoswap@users.noreply.github.com> Date: Tue, 23 Apr 2024 12:49:29 +0700 Subject: [PATCH 1325/2004] feat: revoswap (#9932) --- projects/revoswap/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/revoswap/index.js diff --git a/projects/revoswap/index.js b/projects/revoswap/index.js new file mode 100644 index 00000000000..bbbc2ac293a --- /dev/null +++ b/projects/revoswap/index.js @@ -0,0 +1,8 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + xlayer: { + tvl: getUniTVL({ factory: '0xa38498983e7b31DE851e36090bc9D1D8fB96BE5E', useDefaultCoreAssets: true, }), + } +} From 361608fee12b47eb44b37aab1800b58acdf52332 Mon Sep 17 00:00:00 2001 From: Francium-DeFi <84317711+Francium-DeFi@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:56:35 +0900 Subject: [PATCH 1326/2004] Update francium.js (#9934) fetch tvl data from aws data --- projects/francium.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/francium.js b/projects/francium.js index ffee9541589..fe7ef5c42b7 100644 --- a/projects/francium.js +++ b/projects/francium.js @@ -1,7 +1,7 @@ const { get } = require('./helper/http') async function fetch() { const response = ( - await get("https://francium.io/api/pools/liquidity") + await get("https://francium-data.s3-us-west-2.amazonaws.com/tvl/liquidity.json") ).data; const poolLiqArray = response.farm.map(pool => pool.liquidityLocked); From 34eaa0a678a629e514c22efce46f1084bf844acd Mon Sep 17 00:00:00 2001 From: PayProtocol-Network <146168303+PayProtocol-Network@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:25:48 +0800 Subject: [PATCH 1327/2004] add payprotocol TVL (#9935) Co-authored-by: zheyangyeyou <442879722@qq.com> --- projects/payprotocol/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/payprotocol/index.js diff --git a/projects/payprotocol/index.js b/projects/payprotocol/index.js new file mode 100644 index 00000000000..8909a1dad68 --- /dev/null +++ b/projects/payprotocol/index.js @@ -0,0 +1,15 @@ +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, 'TU7YFtc7NC4wJRybjkHhRf8DX9ZDSBhSdK'] + ], + }), + } +}; \ No newline at end of file From 33031130b275bb2dc7767033443fe9c55aceddc6 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 23 Apr 2024 07:29:14 +0100 Subject: [PATCH 1328/2004] add potatoswap --- projects/potatoswap/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/potatoswap/index.js diff --git a/projects/potatoswap/index.js b/projects/potatoswap/index.js new file mode 100644 index 00000000000..1f58526c079 --- /dev/null +++ b/projects/potatoswap/index.js @@ -0,0 +1,6 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + xlayer: { tvl: getUniTVL({ factory: "0x630db8e822805c82ca40a54dae02dd5ac31f7fcf", useDefaultCoreAssets: true, }), }, + misrepresentedTokens: true, +} \ No newline at end of file From 755217ee46abef44146da28c4c8610436465386e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 23 Apr 2024 08:50:06 +0100 Subject: [PATCH 1329/2004] fix --- projects/balanced/helper.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/balanced/helper.js b/projects/balanced/helper.js index ae4542f235e..bd68fe5d28a 100644 --- a/projects/balanced/helper.js +++ b/projects/balanced/helper.js @@ -139,7 +139,9 @@ async function computeTVL(chainName) { let TVL = 0 deposits.forEach((deposit) => { if (deposit.chain === chainName) { - TVL += deposit.tvlInUsd + if(deposit.tvlInUsd < 1e9){ + TVL += deposit.tvlInUsd + } } }) return { tether: TVL } From e593a0ebd873841dca7fd64b1afabf1d815bce45 Mon Sep 17 00:00:00 2001 From: Snail Finance <167850087+SnailFinance@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:15:47 +0800 Subject: [PATCH 1330/2004] Listing of Snail (#9938) --- projects/Snail Finance/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/Snail Finance/index.js diff --git a/projects/Snail Finance/index.js b/projects/Snail Finance/index.js new file mode 100644 index 00000000000..7d3c673897f --- /dev/null +++ b/projects/Snail Finance/index.js @@ -0,0 +1,6 @@ +const { methodology, compoundExports2 } = require("../helper/compound"); + +module.exports = { + base: compoundExports2({ comptroller: '0x784E1507193c060bC88e6699adC7c796Ebe0E14e', cether: '0x9649Eb0f03C7e85615cFDC7927c7E6B775Ef284d' }), + methodology, +} \ No newline at end of file From 5e412025df7c88d41aab762cc77d1b602ba18b44 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:40:44 +0200 Subject: [PATCH 1331/2004] track lachain --- projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 5 ++++- projects/mateswap-xyz/index.js | 3 +++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 projects/mateswap-xyz/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 1706a5742be..770b2dc269d 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -152,6 +152,7 @@ "kroma", "kujira", "kusama", + "lac", "lachain", "lamden", "lbry", diff --git a/projects/helper/env.js b/projects/helper/env.js index a7fee3285f5..ee658cce979 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -17,6 +17,7 @@ const DEFAULTS = { BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", FSC_RPC_MULTICALL: "0x18fA376d92511Dd04090566AB6144847c03557d8", XLAYER_RPC: "https://wallet.okex.org/fullnode/xlayer/discover/rpc/ro", + LAC_RPC: "https://rpc1.mainnet.lachain.network,https://rpc2.mainnet.lachain.network/", // Chain id : 274 XLAYER_RPC_MULTICALL: "0x398F92e15519B4F6F2D5cc42C17FC9ED15De53d8", } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d5ea36f5966..f4825f7349e 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -118,7 +118,10 @@ const fixBalancesTokens = { xlayer: { [ADDRESSES.xlayer.WETH]: { coingeckoId: "ethereum", decimals: 18, }, [ADDRESSES.xlayer.USDT]: { coingeckoId: "tether", decimals: 6, }, - } + }, + lac: { + '0x2911a1ab18546cb501628be8625c7503a2a7db54': { coingeckoId: "la-coin", decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/mateswap-xyz/index.js b/projects/mateswap-xyz/index.js new file mode 100644 index 00000000000..c5cf110cc36 --- /dev/null +++ b/projects/mateswap-xyz/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('lac', '0x12D9CC71b28B70d08f28CCf92d9Ab1D8400f97bD') \ No newline at end of file From dca8dd42ab168af2761cf58aa56e1027e8d62c88 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:52:55 +0200 Subject: [PATCH 1332/2004] track app.glowswap.io --- projects/glowswap-io/index.js | 5 +++++ projects/helper/tokenMapping.js | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 projects/glowswap-io/index.js diff --git a/projects/glowswap-io/index.js b/projects/glowswap-io/index.js new file mode 100644 index 00000000000..c456b179a39 --- /dev/null +++ b/projects/glowswap-io/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + bsquared: { factory: '0x02eAFbE9dE030f69aF02B7D3F2f69B28016f3C83', fromBlock: 1 }, +}) \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f4825f7349e..7f815b90142 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -111,6 +111,9 @@ const fixBalancesTokens = { }, bsquared: { '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, + '0x4200000000000000000000000000000000000006': { coingeckoId: "bitcoin", decimals: 18, }, + '0x681202351a488040fa4fdcc24188afb582c9dd62': { coingeckoId: "tether", decimals: 6, }, + '0xe544e8a38add9b1abf21922090445ba93f74b9e5': { coingeckoId: "usd-coin", decimals: 6, }, }, planq: { '0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a': { coingeckoId: "planq", decimals: 18, }, From 50967f62c667cb6e7bd7dcda8ffe6012a806ac8d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:55:55 +0200 Subject: [PATCH 1333/2004] update token mapping --- projects/helper/tokenMapping.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 7f815b90142..e49f489939f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -125,6 +125,10 @@ const fixBalancesTokens = { lac: { '0x2911a1ab18546cb501628be8625c7503a2a7db54': { coingeckoId: "la-coin", decimals: 18, }, }, + rpg: { + '0xdaa6a6919c9543d8787490f5e9ad532c4d7ce9e8': { coingeckoId: "deherogame-amazing-token", decimals: 18, }, + '0x36426b7bf5709e5c2160411c6e8b1832e3404fe1': { coingeckoId: "mixmarvel", decimals: 18, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From c41228f52c89051544ddf0ebbb33a453bfa8f781 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 23 Apr 2024 17:58:16 +0800 Subject: [PATCH 1334/2004] add new strategies on mode network (#9947) * add new strategies on mode network * fix: edit typo --- projects/airpuff/index.js | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 35846d2609a..241ed9cfe73 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -39,6 +39,69 @@ module.exports = { tokensAndOwners: [[ADDRESSES.mode.WETH, lendingMode.eth]], }); + const airPuff1XwETHMode = { + vault: "0xeAaD8f5F1901D2f92B747650c0f941Bfa3413dAF", + pendleAddress: "0x4200000000000000000000000000000000000006", + }; + + const airPuff1XUSDTMode = { + vault: "0xCEb6264CdCcDDd8c9631212Dc7112304F9393818", + pendleAddress: "0xf0F161fDA2712DB8b566946122a5af183995e2eD", + }; + + const airPuff1XUSDCMode = { + vault: "0x08ccF72358B44D9d45438Fc703962A0a2FD5c978", + pendleAddress: "0xd988097fb8612cc24eeC14542bC03424c656005f", + }; + + const airPuff1XwBTCMode = { + vault: "0xf9B484901BCA34A8615c90E8C4933f1Bd553B639", + pendleAddress: "0xcdd475325d6f564d27247d1dddbb0dac6fa0a5cf", + }; + + const airPuff1XwrsETHMode = { + vault: "0xEd487e254b1ED41Db4d1Ed457774827d01dfF56F", + pendleAddress: "0xe7903B1F75C534Dd8159b313d92cDCfbC62cB3Cd", + }; + + const airPuff1XankrETHMode = { + vault: "0x83886Af55Dac462Dc7840cdb0157bB3e7d8A6ac4", + pendleAddress: "0x12D8CE035c5DE3Ce39B1fDD4C1d5a745EAbA3b8C", + }; + + const airPuff1XpxETHMode = { + vault: "0xFf5C03ADf31865A4a8E6C0e59eDb4178C9BCC32E", + pendleAddress: "0x9E0d7D79735e1c63333128149c7b616a0dC0bBDb", + }; + + const airPuff1XstoneMode = { + vault: "0xaC9dAdf209F14f46Fe103C6E5C787130a6129205", + pendleAddress: "0x80137510979822322193FC997d400D5A6C747bf7", + }; + + 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, From 76c2c354a1556789bdf8e2461a2f911b6a75982e Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:23:29 +0100 Subject: [PATCH 1335/2004] fix adapter name (#9948) --- projects/{Snail Finance => snai-finance}/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename projects/{Snail Finance => snai-finance}/index.js (98%) diff --git a/projects/Snail Finance/index.js b/projects/snai-finance/index.js similarity index 98% rename from projects/Snail Finance/index.js rename to projects/snai-finance/index.js index 7d3c673897f..c24c61d4eec 100644 --- a/projects/Snail Finance/index.js +++ b/projects/snai-finance/index.js @@ -1,6 +1,6 @@ -const { methodology, compoundExports2 } = require("../helper/compound"); - -module.exports = { - base: compoundExports2({ comptroller: '0x784E1507193c060bC88e6699adC7c796Ebe0E14e', cether: '0x9649Eb0f03C7e85615cFDC7927c7E6B775Ef284d' }), - methodology, +const { methodology, compoundExports2 } = require("../helper/compound"); + +module.exports = { + base: compoundExports2({ comptroller: '0x784E1507193c060bC88e6699adC7c796Ebe0E14e', cether: '0x9649Eb0f03C7e85615cFDC7927c7E6B775Ef284d' }), + methodology, } \ No newline at end of file From 6400368bbb1e6e467f8ac928eb99c1a36a7e692a Mon Sep 17 00:00:00 2001 From: 0xYFLOW <139814596+0xYFLOW@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:05:09 +0400 Subject: [PATCH 1336/2004] Update range position managers (#9950) * update position managers * Update index.js --- projects/yieldflow/index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js index f1c3d6dc795..1515efc4287 100644 --- a/projects/yieldflow/index.js +++ b/projects/yieldflow/index.js @@ -24,7 +24,17 @@ const managers = [ '0x4142B8B00713CE9A441B8e3bd40D692BE56137C3', '0xa05b2b641A904292E4D835f882235AF4D3E34e7c', '0x3c3260a79a50ECD154d2e2F00C857A06dD0e5619', - '0x75346B1CF609d2FaCBb6e0b187e658869dd3aE83' + '0x75346B1CF609d2FaCBb6e0b187e658869dd3aE83', + + '0xa5E4A293E90fac283E24b2b6446b8d3bE377e52e', + '0xEc695B2F9e06A5647a51d733beC0186804cbA991', + '0x3501512Efc4E051A022c7c255D6f9c33b178E29f', + '0x2a5075229e02939d4b8888725DF01Cb7374970e8', + '0x0994b93ae05F904F98F59bb64d9266188543fda5', + '0x3bBA41A6069F539B7540141460584194De2154Ce', + '0x4664dc8E1710116ff46693FEB42f16CBe58f8237', + '0xCF49168017096dB97Eb14552bd0af6eE9a27e76A', + '0x899DF9d131D2276Db3c5f392ce2b396d9b1BFa8c' ] async function tvl(api) { From bf9912e05a740425e90b5df6408fc8a68239325e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:39:31 +0200 Subject: [PATCH 1337/2004] fix broken adapters --- projects/bril-finance/index.js | 3 ++- projects/scopuly/index.js | 1 + projects/shadeswap/index.js | 9 +++------ projects/sturdy/index.js | 10 +++------- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/projects/bril-finance/index.js b/projects/bril-finance/index.js index ed98f63aaab..faf565b1f2e 100644 --- a/projects/bril-finance/index.js +++ b/projects/bril-finance/index.js @@ -26,9 +26,10 @@ Object.keys(config).forEach(chain => { const enabledStrategies = strategies.filter((s, index) => areStrategiesEnabled[index]); const balances = await api.multiCall({ abi: abi.vaultAmounts, calls: enabledStrategies, }); - const summaries = await api.multiCall({ abi: abi.vaultSummary, calls: enabledStrategies, }); + const summaries = await api.multiCall({ abi: abi.vaultSummary, calls: enabledStrategies, permitFailure: true, }); for (let i = 0; i < balances.length; i++) { + if (!summaries[i]) continue; api.add(summaries[i].baseToken_, balances[i].baseTotal_); api.add(summaries[i].scarceToken_, balances[i].scarceTotal_); } diff --git a/projects/scopuly/index.js b/projects/scopuly/index.js index 8d33075be8e..7e58f01af99 100644 --- a/projects/scopuly/index.js +++ b/projects/scopuly/index.js @@ -2,6 +2,7 @@ const { get } = require('../helper/http'); async function tvl() { var response = await get('https://api.scopuly.com/api/liquidity_pools_tvl'); + throw new Error('This project is not returning the correct data'); // 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]; diff --git a/projects/shadeswap/index.js b/projects/shadeswap/index.js index 303d684b411..1110b183b55 100644 --- a/projects/shadeswap/index.js +++ b/projects/shadeswap/index.js @@ -1,11 +1,8 @@ -const { get } = require("../helper/http") +const { post } = require("../helper/http") async function tvl(api) { - const data = await get('https://na36v10ce3.execute-api.us-east-1.amazonaws.com/API-mainnet-STAGE/shadeswap/pairs') - return { - tether: data.map(i => +i.liquidity_usd).filter(i=>i<1e9).reduce((a, i) => a + i) - } - + 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) } } diff --git a/projects/sturdy/index.js b/projects/sturdy/index.js index 14f26051b2e..364d9ebbd62 100644 --- a/projects/sturdy/index.js +++ b/projects/sturdy/index.js @@ -1,15 +1,11 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { aaveV2Export, methodology, } = require('../helper/aave'); const { mergeExports, } = require('../helper/utils'); module.exports = mergeExports([ + { ethereum: aaveV2Export('0x9f72DC67ceC672bB99e3d02CbEA0a21536a2b657'), }, { - ethereum: aaveV2Export('0x9f72DC67ceC672bB99e3d02CbEA0a21536a2b657', { useOracle: true }), - }, - { - misrepresentedTokens: true, - ethereum: aaveV2Export('0xA422CA380bd70EeF876292839222159E41AAEe17', { useOracle: true }), - fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a', { useOracle: true, baseCurrency: ADDRESSES.fantom.DAI }), + ethereum: aaveV2Export('0xA422CA380bd70EeF876292839222159E41AAEe17'), + fantom: aaveV2Export('0x7ff2520cd7b76e8c49b5db51505b842d665f3e9a'), methodology, } ]) From 74ecfc42ab50157808cde00889580c4a63e7ab3c Mon Sep 17 00:00:00 2001 From: Teddy Not Bear <106410805+TeddyNotBear@users.noreply.github.com> Date: Tue, 23 Apr 2024 19:32:18 +0200 Subject: [PATCH 1338/2004] feat: add Bountive protocol (#9949) --- projects/bountive/abi.js | 20 +++++++++++++++++ projects/bountive/index.js | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 projects/bountive/abi.js create mode 100644 projects/bountive/index.js diff --git a/projects/bountive/abi.js b/projects/bountive/abi.js new file mode 100644 index 00000000000..3cc8c788420 --- /dev/null +++ b/projects/bountive/abi.js @@ -0,0 +1,20 @@ +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 new file mode 100644 index 00000000000..9bb66642cac --- /dev/null +++ b/projects/bountive/index.js @@ -0,0 +1,44 @@ +const { bountiveTokenAbi } = require("./abi"); +const { multiCall } = require('../helper/chain/starknet') + +const bountiveTokens = [ + // BoSTRK: Bountive STRK + "0x05a0fff20829d60a0cdae2da18a32bd3de5c32f8d0109d2a0b59a88a7a77176e", + // BoETH: Bountive ETH + "0x00d91e36ff68918b392c9cfc2e3f575526f69e04b97eb28142856fae3611fcf7", + // BoUSDC: Bountive USDC + "0x04ed6784fa5c11889851c2d13bbd80464e55605a90b5b664f9400df0fd6ef4a5", + // BoUSDT: Bountive USDT + "0x0753dc6f8fee7487fe3f32728c0f1af9df1f7a3d0443ef507eb79a974697be12", + // BoDAI: Bountive DAI + "0x06e32d47c49efb0243da8d456dc413f1dcf50ceea7be28ef520492eccfff2b43", +] + +const underlyingsTokens = [ + // STRK + "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + // ETH + "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + // USDC + "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", + // USDT + "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", + // DAI + "0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", +] + +async function tvl(api) { + const supplied = await multiCall({ + calls: bountiveTokens, + abi: bountiveTokenAbi.total_supply, + }); + api.addTokens(underlyingsTokens, supplied) + +} + +module.exports = { + methodology: 'TVL is the total tokens deposited on Bountive', + starknet: { + tvl, + } +}; \ No newline at end of file From fcbdff66f00dffeea07d85f6d2863ba1a7b2221e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 23 Apr 2024 20:09:24 +0200 Subject: [PATCH 1339/2004] fix broken adapters --- projects/hector/contracts.json | 19 +++----------- projects/klaystation/index.js | 33 +++++------------------- projects/lumin-finance/index.js | 2 +- projects/pangolin/index.js | 7 ++--- projects/vortexdao/index.js | 45 +++++---------------------------- 5 files changed, 21 insertions(+), 85 deletions(-) diff --git a/projects/hector/contracts.json b/projects/hector/contracts.json index 086be839c28..6335747ac56 100644 --- a/projects/hector/contracts.json +++ b/projects/hector/contracts.json @@ -1,11 +1,9 @@ { "tokenHolders": { "ethereum": { - "blacklistedTokens": [ - ], + "blacklistedTokens": [], "owners": [ - "0x4bfb33d65f4167ebe190145939479227e7bf2cb0", - "0x8a43e670619973944cb573bb23688c24cc0b5131" + "0x4bfb33d65f4167ebe190145939479227e7bf2cb0" ] }, "fantom": { @@ -13,13 +11,7 @@ "0x5C4FDfc5233f935f20D2aDbA572F770c2E377Ab0", "0x74e23df9110aa9ea0b6ff2faee01e740ca1c642e" ], - "owners": [ - "0xcb54ea94191b280c296e6ff0e37c7e76ad42dc6a", - "0x677d6ec74fa352d4ef9b1886f6155384acd70d90", - "0x8a43e670619973944cb573bb23688c24cc0b5131", - "0xbe4b73f5caff476ed0cdb4c043236fce81f4dc6c", - "0x35796ce4ed757075d346c1bc374d67628fadcbb1" - ] + "owners": [] }, "bsc": { "blacklistedTokens": [ @@ -28,10 +20,7 @@ "0x1d6cbdc6b29c6afbae65444a1f65ba9252b8ca83", "0x638eebe886b0e9e7c6929e69490064a6c94d204d" ], - "owners": [ - "0x3cdf52cc28d21c5b7b91d7065fd6dfe6d426fcc5", - "0x8a43e670619973944cb573bb23688c24cc0b5131" - ] + "owners": [] } } } \ No newline at end of file diff --git a/projects/klaystation/index.js b/projects/klaystation/index.js index 687534675cb..77e352a215e 100644 --- a/projects/klaystation/index.js +++ b/projects/klaystation/index.js @@ -1,30 +1,9 @@ -const { get } = require('../helper/http') -const BigNumber = require("bignumber.js"); - -////////// KLAYSTATION //////////////// -//// TVL = OZYS stakedKlay * priceKlay //// -////////////////////////////////////////// -async function fetch() { - const klaystationInfo = await get('https://s.klaystation.io/staking/status.json') - const stakingAmount = klaystationInfo.stakingAmount; - const priceKlay = klaystationInfo.priceUsd; - var totalLiquidity = new BigNumber('0'); - - const cnAddresses = ["0xe33337cb6fbb68954fe1c3fde2b21f56586632cd"]; - - for (const cn of cnAddresses) { - totalLiquidity = totalLiquidity.plus(stakingAmount[cn]); - } - - totalLiquidity = totalLiquidity.shiftedBy(-18); - totalLiquidity = totalLiquidity.multipliedBy(priceKlay); - - return totalLiquidity.toFixed(2); +async function tvl(api) { + const sKlay = '0xa323d7386b671e8799dca3582d6658fdcdcd940a' + const supply = await api.call({ abi: 'erc20:totalSupply', target: sKlay}) + api.add(sKlay, supply) } module.exports = { - methodology: `TVL is equal to the amount of KLAY staked in the Liquiidy Staking pool "OZYS".`, - timetravel: false, - misrepresentedTokens: true, - fetch -} //node test.js projects/klaystation/index.js \ No newline at end of file + klaytn: { tvl } +} \ No newline at end of file diff --git a/projects/lumin-finance/index.js b/projects/lumin-finance/index.js index 9dd59d8aaba..c39a9bc6ff9 100644 --- a/projects/lumin-finance/index.js +++ b/projects/lumin-finance/index.js @@ -1,6 +1,6 @@ const { nullAddress } = require("../helper/tokenMapping"); -const LUMIN_V1_CONTRACT_ASSET_MANAGER = "0x61c6b185fafd2727ddeac6247e6770f5eadd823a" +const LUMIN_V1_CONTRACT_ASSET_MANAGER = "0x7f9a5443c1938fCc7b5A0FffA94385CC867A9495" const LUMIN_V2_CONTRACT = "0x1F00009c0310A4804925695F44355dE5110EC074" const abi = { diff --git a/projects/pangolin/index.js b/projects/pangolin/index.js index c7125c9f32e..5bd5ebe240a 100644 --- a/projects/pangolin/index.js +++ b/projects/pangolin/index.js @@ -46,13 +46,14 @@ module.exports = { }, hedera: { tvl: async () => { - const block = await getCurrentBlock() + // const block = await getCurrentBlock() + // pangolinFactory(id: "1" block: { number: ${block - 1000} }) { const data = await graphQuery('https://graph-hedera-pangolin.canary.exchange/subgraphs/name/pangolin', `{ - pangolinFactory(id: "1" block: { number: ${block - 1000} }) { + pangolinFactory(id: "1") { totalLiquidityUSD } }`) - return toUSDTBalances(data.pangolinFactory.totalLiquidityUSD) + return toUSDTBalances(data.pangolinFactory.totalLiquidityUSD) } }, start: 1612715300, // 7th-Feb-2021 diff --git a/projects/vortexdao/index.js b/projects/vortexdao/index.js index 8fd1dca0df8..716c8d40150 100644 --- a/projects/vortexdao/index.js +++ b/projects/vortexdao/index.js @@ -9,51 +9,18 @@ const mim = "0x130966628846bfd36ff31a822705796e8cb8c18d"; const avai = "0x346a59146b9b4a77100d369a3d18e8007a9f46a6"; const spaceMimJLP = "0x5087706DD31962938c57a0fB3A3107ed3794c996"; -async function tvl(timestamp, block, chainBlocks) { - let balances = {}; - await sumTokensAndLPsSharedOwners( - balances, - [ - [mim, false], - [avai, false], - [spaceMimJLP, true], - ], - [treasury], - chainBlocks.avax, - "avax", - (addr) => `avax:${addr}` - ); - return balances; +async function tvl(api) { + return api.sumTokens({ owners: [treasury], tokens: [spaceMimJLP, avai, mim, ] }) } -async function staking(timestamp, block, chainBlocks) { - let balances = {}; - const stakingBalances = ( - await sdk.api.abi.multiCall({ - calls: [ - { - target: space, - params: stakingV1, - }, - { - target: space, - params: stakingV2, - }, - ], - abi: "erc20:balanceOf", - block: chainBlocks.avax, - chain: "avax", - }) - ).output; - stakingBalances.forEach((p) => { - sdk.util.sumSingleBalance(balances, `avax:${space}`, p.output); - }); - return balances; +async function staking(api) { + return api.sumTokens({ tokens: [space], owners: [stakingV1, stakingV2, ] }) } module.exports = { + deadFrom: "04-06-2023", avax:{ - tvl, + tvl: () => ({}), staking, }, }; From 7b4d8bec93cb429bf9146188ea93a3c70d16a0e5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 08:36:27 +0200 Subject: [PATCH 1340/2004] revert change --- projects/scopuly/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/scopuly/index.js b/projects/scopuly/index.js index 7e58f01af99..8d33075be8e 100644 --- a/projects/scopuly/index.js +++ b/projects/scopuly/index.js @@ -2,7 +2,6 @@ const { get } = require('../helper/http'); async function tvl() { var response = await get('https://api.scopuly.com/api/liquidity_pools_tvl'); - throw new Error('This project is not returning the correct data'); // 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]; From 30f4494b94d935446bb840f31aa0a72295091ae3 Mon Sep 17 00:00:00 2001 From: Egor Polyakov Date: Wed, 24 Apr 2024 15:02:14 +0800 Subject: [PATCH 1341/2004] Update Cega V2 Adapter (#9953) * Update CegaAdapter * fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cega-v2/index.js | 38 ++++++++++++++++++++++++--------- projects/helper/coreAssets.json | 6 ++++-- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/projects/cega-v2/index.js b/projects/cega-v2/index.js index 124e65cbf5f..1beaff4612d 100644 --- a/projects/cega-v2/index.js +++ b/projects/cega-v2/index.js @@ -1,17 +1,35 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs') +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], - owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"] - }) + tokens: [ + nullAddress, + ADDRESSES.ethereum.WSTETH, + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.USDe, + "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + ], + owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"], + }), }, arbitrum: { tvl: sumTokensExport({ - tokens:[nullAddress, ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.WBTC], - owners: ["0x475c4af369b28997b25bd756ef92797ad3f69593"] - }) - } -} \ No newline at end of file + tokens: [ + nullAddress, + ADDRESSES.arbitrum.WSTETH, + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.arbitrum.DAI, + ADDRESSES.arbitrum.USDe, + '0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2', + ], + owners: ["0x475c4af369b28997b25bd756ef92797ad3f69593"], + }), + }, +}; diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a175ce5dc1b..b5c83022218 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -48,7 +48,8 @@ "EETH": "0x35fa164735182de50811e8e2e824cfb9b6118ac2", "AEVO": "0xB528edBef013aff855ac3c50b381f253aF13b997", "STONE": "0x4d831e22f062b5327dfdb15f0b6a5df20e2e3dd0", - "USDM": "0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C" + "USDM": "0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C", + "USDe": "0x4c9edd5852cd905f086c759e8383e09bff1e68b3" }, "fantom": { "WFTM": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", @@ -268,7 +269,8 @@ "fGLP": "0x4e971a87900b931ff39d1aad67697f49835400b6", "GMX": "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", "WSTETH": "0x5979D7b546E38E414F7E9822514be443A4800529", - "plvGLP": "0x5326e71ff593ecc2cf7acae5fe57582d6e74cff1" + "plvGLP": "0x5326e71ff593ecc2cf7acae5fe57582d6e74cff1", + "USDe": "0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34" }, "fuse": { "WFUSE": "0x0be9e53fd7edac9f859882afdda116645287c629", From d07ab220afdbab88710b3c07a2ce065e067afcf5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:50:49 +0200 Subject: [PATCH 1342/2004] track 1intro tvl --- projects/1intro/idl.js | 83 ++++++++++++++++++++++++++++++++++++++++ projects/1intro/index.js | 16 ++++++++ 2 files changed, 99 insertions(+) create mode 100644 projects/1intro/idl.js create mode 100644 projects/1intro/index.js diff --git a/projects/1intro/idl.js b/projects/1intro/idl.js new file mode 100644 index 00000000000..79ea8a36f53 --- /dev/null +++ b/projects/1intro/idl.js @@ -0,0 +1,83 @@ +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 new file mode 100644 index 00000000000..e9e2023eed2 --- /dev/null +++ b/projects/1intro/index.js @@ -0,0 +1,16 @@ +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 From 95023c1224b9b3c2ca81e80606906aef3a8cfbda Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:38:53 +0200 Subject: [PATCH 1343/2004] fix for abstradex --- projects/helper/coreAssets.json | 1 + projects/helper/tokenMapping.js | 1 + 2 files changed, 2 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index b5c83022218..4e7c1c4ccb8 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1707,6 +1707,7 @@ "AXLUSDC": "0x80b5a32e4f032b2a058b4f29ec95eefeeb87adcd" }, "xlayer": { + "WOKB": "0xe538905cf8410324e03a5a23c1c177a474d59b2b", "WETH": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c", "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d" } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index e49f489939f..8f057658bd7 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -119,6 +119,7 @@ const fixBalancesTokens = { '0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a': { coingeckoId: "planq", decimals: 18, }, }, xlayer: { + [ADDRESSES.xlayer.WOKB]: { coingeckoId: "okb", decimals: 18, }, [ADDRESSES.xlayer.WETH]: { coingeckoId: "ethereum", decimals: 18, }, [ADDRESSES.xlayer.USDT]: { coingeckoId: "tether", decimals: 6, }, }, From df4248fe5f4dc290ec4e84232253dabc871c8f1a Mon Sep 17 00:00:00 2001 From: tobyColend <158278329+tobyColend@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:54:17 +0400 Subject: [PATCH 1344/2004] Add Colend Lending (#9957) * Create index.js * Update index.js --------- Co-authored-by: stancolend <158043050+stancolend@users.noreply.github.com> --- projects/colend/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/colend/index.js diff --git a/projects/colend/index.js b/projects/colend/index.js new file mode 100644 index 00000000000..52776684041 --- /dev/null +++ b/projects/colend/index.js @@ -0,0 +1,7 @@ +const { aaveExports } = require("../helper/aave"); +const methodologies = require("../helper/methodologies"); + +module.exports = { + methodology: methodologies.lendingMarket, + core: aaveExports('core', '0xC3F120f418f9541263eA3F4a5a4120eb3f28EfA1', undefined, ['0x567AF83d912C85c7a66d093e41D92676fA9076E3'], { v3: true, }), +}; From 84c4d0571f43a7cd8aa1bc514bb221f3a08d436a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:37:36 +0200 Subject: [PATCH 1345/2004] track xlayer in more projects --- projects/dackieswap-v2/index.js | 60 ++++++++++----------------------- projects/dackieswap/index.js | 1 + projects/dyorswap/index.js | 3 +- projects/helper/coreAssets.json | 1 + projects/helper/tokenMapping.js | 1 + projects/izumi-iziswap/index.js | 1 + projects/quickswap-v3/index.js | 1 + projects/satoriSwap/index.js | 24 ++++++------- 8 files changed, 36 insertions(+), 56 deletions(-) diff --git a/projects/dackieswap-v2/index.js b/projects/dackieswap-v2/index.js index dedc33d3220..5d17bd3771c 100644 --- a/projects/dackieswap-v2/index.js +++ b/projects/dackieswap-v2/index.js @@ -7,50 +7,24 @@ const stakingPools = [ // Lock & flexible pool "0x4Ad387bcb03B92a6e22A72391Cc37493Fc388B05", ]; +const config = { + xlayer: '0x757cd583004400ee67e5cc3c7a60c6a62e3f6d30', + optimism: '0xaedc38bd52b0380b2af4980948925734fd54fbf4', + arbitrum: '0x507940c2469e6e3b33032f1d4ff8d123bdde2f5c', + blast: '0xf5190e64db4cbf7ee5e72b55cc5b2297e20264c2', + inevm: '0x507940c2469e6e3b33032f1d4ff8d123bdde2f5c', + mode: '0x757cd583004400ee67e5cc3c7a60c6a62e3f6d30', + base: '0x591f122D1df761E616c13d265006fcbf4c6d6551', +} module.exports = { misrepresentedTokens: true, - base: { - tvl: getUniTVL({ - factory: "0x591f122D1df761E616c13d265006fcbf4c6d6551", - useDefaultCoreAssets: true, - fetchBalances: true - }), - staking: stakings(stakingPools, DACKIE) - }, - optimism: { - tvl: getUniTVL({ - factory: "0xaEdc38bD52b0380b2Af4980948925734fD54FbF4", - useDefaultCoreAssets: true, - fetchBalances: true - }) - }, - arbitrum: { - tvl: getUniTVL({ - factory: "0x507940c2469e6E3B33032F1d4FF8d123BDDe2f5C", - useDefaultCoreAssets: true, - fetchBalances: true - }) - }, - blast: { - tvl: getUniTVL({ - factory: "0xF5190E64dB4cbf7ee5E72B55cC5b2297e20264c2", - useDefaultCoreAssets: true, - fetchBalances: true - }) - }, - inevm: { - tvl: getUniTVL({ - factory: "0x507940c2469e6E3B33032F1d4FF8d123BDDe2f5C", - useDefaultCoreAssets: true, - fetchBalances: true - }) - }, - mode: { - tvl: getUniTVL({ - factory: "0x757cD583004400ee67e5cC3c7A60C6a62E3F6d30", - useDefaultCoreAssets: true, - fetchBalances: true - }) +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true }) } -}; \ No newline at end of file +}) + +module.exports.base.staking = stakings(stakingPools, DACKIE) diff --git a/projects/dackieswap/index.js b/projects/dackieswap/index.js index 78cca08f65a..d84e295906b 100644 --- a/projects/dackieswap/index.js +++ b/projects/dackieswap/index.js @@ -7,4 +7,5 @@ module.exports = uniV3Export({ blast: { factory: "0xd1575B2e0C82fba9Eddc3de9c9AAF923AFA670cC", fromBlock: 286237 }, inevm: { factory: "0xf79A36F6f440392C63AD61252a64d5d3C43F860D", fromBlock: 291933 }, mode: { factory: "0xc6f3966E5D08Ced98aC30f8B65BeAB5882Be54C7", fromBlock: 6102035 }, + xlayer: { factory: "0xc6f3966e5d08ced98ac30f8b65beab5882be54c7", fromBlock: 278971 }, }); \ No newline at end of file diff --git a/projects/dyorswap/index.js b/projects/dyorswap/index.js index 75b870fd96d..63dcb721644 100644 --- a/projects/dyorswap/index.js +++ b/projects/dyorswap/index.js @@ -6,6 +6,7 @@ const config = { merlin: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', zeta: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', degen: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', + xlayer: '0x2ccadb1e437aa9cdc741574bda154686b1f04c09', } module.exports = { @@ -14,6 +15,6 @@ module.exports = { Object.keys(config).forEach(chain => { module.exports[chain] = { - tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true}), + tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true }), } }) \ No newline at end of file diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 4e7c1c4ccb8..f09b709b32b 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1708,6 +1708,7 @@ }, "xlayer": { "WOKB": "0xe538905cf8410324e03a5a23c1c177a474d59b2b", + "WBTC": "0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1", "WETH": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c", "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d" } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8f057658bd7..1fdab999d1c 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -120,6 +120,7 @@ const fixBalancesTokens = { }, xlayer: { [ADDRESSES.xlayer.WOKB]: { coingeckoId: "okb", decimals: 18, }, + [ADDRESSES.xlayer.WBTC]: { coingeckoId: "wrapped-bitcoin", decimals: 8, }, [ADDRESSES.xlayer.WETH]: { coingeckoId: "ethereum", decimals: 18, }, [ADDRESSES.xlayer.USDT]: { coingeckoId: "tether", decimals: 6, }, }, diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index f316834f155..24bfb8a3569 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -31,6 +31,7 @@ const poolHelpers = { 'blast': ['0x5e7902aDf0Ea0ff827683Cc1d431F740CAD0731b'], 'zklink': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F'], 'mode': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], + 'xlayer': ['0xF42C48f971bDaA130573039B6c940212EeAb8496'], } // iziswap liquidityManager contracts const blacklistedTokens = [ diff --git a/projects/quickswap-v3/index.js b/projects/quickswap-v3/index.js index 5c6dcb3a2b6..f13190adcaa 100644 --- a/projects/quickswap-v3/index.js +++ b/projects/quickswap-v3/index.js @@ -7,6 +7,7 @@ module.exports = uniV3Export({ manta: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 357492, }, astrzk: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 93668, }, imx: { factory: '0x56c2162254b0E4417288786eE402c2B41d4e181e', fromBlock: 356091, }, + xlayer: { factory: '0xd2480162aa7f02ead7bf4c127465446150d58452', fromBlock: 277686, isAlgebra: true, }, }) async function tvl(api) { diff --git a/projects/satoriSwap/index.js b/projects/satoriSwap/index.js index 863705cb7a8..676e715f2fe 100644 --- a/projects/satoriSwap/index.js +++ b/projects/satoriSwap/index.js @@ -1,17 +1,17 @@ const { getUniTVL } = require('../helper/unknownTokens') +const config = { + base: '0x4858C605862A91A34d83C19a9704f837f64fa405', + linea: '0xfF5859B60BCb3F153431cA216B1b269EB66A2020', + xlayer: '0xd967A2A9B873ccD5a5Ede00869e353949F24c3dc', +} + module.exports = { misrepresentedTokens: true, - linea: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0xfF5859B60BCb3F153431cA216B1b269EB66A2020', - }) - }, - base: { - tvl: getUniTVL({ - useDefaultCoreAssets: true, - factory: '0x4858C605862A91A34d83C19a9704f837f64fa405', - }) +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: getUniTVL({ factory: config[chain], useDefaultCoreAssets: true }), } -} \ No newline at end of file +}) \ No newline at end of file From 23d3392ce6e620bd3e688f16ae4102fbb7581e80 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Wed, 24 Apr 2024 03:46:52 -0700 Subject: [PATCH 1346/2004] Update config.js (#9958) --- projects/visor/config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index e0cec17d04e..bf073d439c8 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -74,6 +74,7 @@ const HYPE_REGISTRY = { linea: [ ["0xA8E2fD481342976a3259591FBc08999369a43C5A", 3554431], // Uniswap ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 163300], // Lynex + ["0x9C3E0445559E6de1fe6391E8e018DcA02B480836", 3952143], // Nile ], base: [ ["0x829432679F69DBd8b2575f006EC0129894a39D86", 12465470], // Uniswap @@ -116,6 +117,10 @@ const HYPE_REGISTRY = { ["0xF44cECB1CF40ee12303E85Eb8651263c01812EaD", 1815717], // Thruster ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster ], + xlayer: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // Quickswap + ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 697096], // xtrade + ], }; Object.keys(HYPE_REGISTRY).forEach(chain => { From 539ef680a84d1e3046dc6fa0d7fbca1ab0c8846e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 15:34:33 +0200 Subject: [PATCH 1347/2004] update intentx --- projects/intentx.js | 77 +++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/projects/intentx.js b/projects/intentx.js index c5da05a9d19..9b82e7597d4 100644 --- a/projects/intentx.js +++ b/projects/intentx.js @@ -1,53 +1,54 @@ const ADDRESSES = require('./helper/coreAssets.json') -const { request, gql } = require("graphql-request"); +const { request, } = require("graphql-request"); -const BETA_START = 1700006400; // 2023-11-15T00:00:00+00:00 - -const query = gql` - query stats($from: String!, $to: String!) { - dailyHistories( - where: { - timestamp_gte: $from - timestamp_lte: $to - accountSource: "0x8Ab178C07184ffD44F0ADfF4eA2ce6cFc33F3b86" - } - ) { - timestamp - platformFee - accountSource - tradeVolume - deposit - withdraw - } - } -`; const config = { - blast: { token: ADDRESSES.blast.USDB, graphUrl: "https://api.studio.thegraph.com/query/62472/intentx-analytics_082_blast/version/latest", }, - base: { token: ADDRESSES.base.USDbC, graphUrl: "https://api.studio.thegraph.com/query/62472/intentx-analytics_082/version/latest", }, + blast: { token: ADDRESSES.blast.USDB, start: 1710115200, graphUrl: "https://api.studio.thegraph.com/query/62472/intentx-analytics_082_blast/version/latest", accountSource: '0x083267D20Dbe6C2b0A83Bd0E601dC2299eD99015'}, + base: { token: ADDRESSES.base.USDbC, start: 1700006400, graphUrl: "https://api.studio.thegraph.com/query/62472/intentx-analytics_082/version/latest", accountSource: '0x8Ab178C07184ffD44F0ADfF4eA2ce6cFc33F3b86'}, + mantle: { token: ADDRESSES.mantle.USDC, start: 1712966400, graphUrl: "https://subgraph-api.mantle.xyz/subgraphs/name/mantle_intentx-analytics_082", accountSource: '0xECbd0788bB5a72f9dFDAc1FFeAAF9B7c2B26E456' }, } -async function getTVL(api) { - const { token, graphUrl } = config[api.chain]; +async function tvl(api) { + const { token, graphUrl, start, accountSource } = config[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: BETA_START.toString(), + from: start.toString(), to: api.timestamp.toString(), }); - const total = dailyHistories.reduce((acc, cur) => acc + (Number(cur.deposit) - Number(cur.withdraw)), 0); + 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 = { - timetravel: false, - start: BETA_START, -}; - + 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"], + ], +} -module.exports = { - timetravel: false, - start: BETA_START, - // blast: { tvl: getTVL }, - base: { tvl: getTVL }, - hallmarks: [[1700006400, "Open Beta Start"], [1704200400, "0.8.2 Migration"]], -}; +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From 5afcd3dba4aaac201bea01b5ef72da2d3f96cfb0 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Wed, 24 Apr 2024 22:37:06 +0700 Subject: [PATCH 1348/2004] update metis network metis market (#9962) * add wemixChain * add manta-eth market * add manta stable market * fix mergeExport * add manta chain manta market * add mode eth market * add metis network metis market --- projects/shoebillFinance-v2/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index 6e5ee6ec896..fb78313086b 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -36,4 +36,11 @@ module.exports = mergeExports([ cether: "0xD13bE8b716b18265e294831FCb1330d170840BB3", }), }, + { + metis: compoundExports2({ + comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", + cether: "0x386adCa3c7D5C90523287933B05919aFcC2883dE", + }), + }, + ]); From 3bf11cc0aee85f934401dce525f80fb0a2790db0 Mon Sep 17 00:00:00 2001 From: blastnamedev <157948146+blastnamedev@users.noreply.github.com> Date: Wed, 24 Apr 2024 22:56:09 +0700 Subject: [PATCH 1349/2004] Update blastname (#9960) - Cleanup unused pools - Update new pools --- projects/blastname/index.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/projects/blastname/index.js b/projects/blastname/index.js index b6cc0b823af..7ffd2f20d99 100644 --- a/projects/blastname/index.js +++ b/projects/blastname/index.js @@ -1,19 +1,30 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unknownTokens') -const BNDPoolAddr1 = '0xe875B8D17973a306fd0727B6a578695CE136C2cA' -const BNDPoolAddr2 = '0x56C09e6d859477aF3863408Cf8BA3C427b61782c' 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.USDB, BNDPoolAddr1]] }), + tvl: sumTokensExport({ + tokensAndOwners: [ + [ADDRESSES.blast.WETH, BNSPoolAddr], + [ADDRESSES.blast.USDB, BNSPoolAddr], + [ADDRESSES.blast.WETH, BWETHAddr], + ] + }), pool2: sumTokensExport({ tokensAndOwners: [ - ['0xa21406a95195D449646EA97D550CC97BD62B4B7A', BNDPoolAddr1], - ['0xD80f694FB00215262169AFF73f8626f7989353A7', BNDPoolAddr2], - ['0x389daCE33EF8a7E020196F388cF107A881799872', BNSPoolAddr], - ['0xdD9B243A18Fb4e46AefFa26D42797f0Be9F9AfC8', BNSPoolAddr],], useDefaultCoreAssets: true, + [BNDUSDBAddr, BNSPoolAddr], + [BNSUSDBAddr, BNSPoolAddr], + [BNDJUICEAddr, BNSPoolAddr], + [BNDBNSAddr, BNSPoolAddr], + ], useDefaultCoreAssets: true, }), } } From b739089355069d5063675332a14c0decb3f279a7 Mon Sep 17 00:00:00 2001 From: neoiss <85328218+neoiss@users.noreply.github.com> Date: Thu, 25 Apr 2024 00:11:29 +0800 Subject: [PATCH 1350/2004] add token addresses supported by butter network (#9959) * add token addresses supported by butter network * add token addresses supported by butter network --- projects/butternetwork/index.js | 82 +++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/projects/butternetwork/index.js b/projects/butternetwork/index.js index 28ee4eb4264..6787b5e26f4 100644 --- a/projects/butternetwork/index.js +++ b/projects/butternetwork/index.js @@ -60,6 +60,88 @@ const config = { SolvBTC: "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", iUSD: ADDRESSES.bsc.iUSD } + }, + klaytn: { + mosContract: "0xfeB2b97e4Efce787c08086dC16Ab69E063911380", + tokens: { + WKLAY: ADDRESSES.klaytn.WKLAY, + oETH: ADDRESSES.klaytn.oETH, + KDAI: ADDRESSES.klaytn.KDAI, + oUSDC: ADDRESSES.klaytn.oUSDC, + oUSDT: ADDRESSES.klaytn.oUSDT, + AKLAY: "0x74ba03198fed2b15a51af242b9c63faf3c8f4d34", + BORA: ADDRESSES.klaytn.BORA, + BTRY: "0x6f818355f9a64692905291e9a3c8f960edcf117d", + cGAIAK: "0x198f05bfe227d22940629b28180d557bc9c9b785", + Cheeks: "0x3c2deab5934dec3648e2952d03c7f3c0e5e7dd65", + cKONGZ: "0x8160a0d5e6121fefbf245795079ba8551b6ae008", + CLA: "0xcf87f94fd8f6b6f0b479771f10df672f99eada63", + KBT: "0x946bc715501413b9454bb6a31412a21998763f2d", + KFI: "0xdb116e2dc96b4e69e3544f41b50550436579979a", + KLAP: "0xd109065ee17e2dc20b3472a4d4fb5907bd687d09", + KLEVA: "0x5fff3a6c16c2208103f318f4713d4d90601a7313", + KOKOS: "0xcd670d77f3dcab82d43dff9bd2c4b87339fb3560", + KSD: ADDRESSES.klaytn.KSD, + KSTA: "0xe7d3b78f032e70fabfdb8c0741ea74f775deb32d", + oORC: "0xfe41102f325deaa9f303fdd9484eb5911a7ba557", + oWBTC: ADDRESSES.klaytn.oWBTC, + oXRP: ADDRESSES.klaytn.oXRP, + SALT: "0x3247abb921c83f81b406e1a87fb7bfa6f79262d0", + SST: "0x338d7933c367e49905c06f3a819cd60d541c9067", + cMTDZ: "0x11ff36b8d7fd7762f95e0296a2139194b201a0f6" + } + }, + base: { + mosContract: "0xfeB2b97e4Efce787c08086dC16Ab69E063911380", + tokens: { + WETH: ADDRESSES.base.WETH, + USDbC: ADDRESSES.base.USDbC, + DAI: ADDRESSES.base.DAI, + BAL: "0x7c6b91d9be155a6db01f749217d76ff02a7227f2", + ERN: "0xa334884bf6b0a066d553d19e507315e839409e62", + BALD: "0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8", + BASIN: "0x4788de271f50ea6f5d5d2a5072b8d3c61d650326", + BSWAP: "0x78a087d713be963bf307b18f2ff8122ef9a63ae9", + cbETH: "0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22", + EDE: "0x0a074378461fb7ed3300ea638c6cc38246db4434", + TOSHI: "0x8544fe9d190fd7ec52860abbf45088e81ee24a8c", + COMP: "0x9e1028f5f1d5ede59748ffcee5532509976840e0", + "DAI+": "0x65a2508c429a6078a7bc2f7df81ab575bd9d9275", + FARM: "0xd08a2917653d4e460893203471f0000826fb4034", + HZN: "0x081ad949defe648774c3b8debe0e4f28a80716dc", + MIM: "0x4a3a6dd60a34bb2aba60d73b4c88315e9ceb6a3d", + MPX: "0xa5325a8ebbbdb12caf6b76218a7375a71f9f3b41", + OGRE: "0xab8a1c03b8e4e1d21c8ddd6edf9e07f26e843492", + "USD+": "0xb79dd08ea68a908a97220c76d19a6aa9cbde4376", + ZRX: "0x3bb4445d30ac020a84c1b5a8a2c6248ebc9779d0", + USDC: ADDRESSES.base.USDC + + } + }, + conflux: { + mosContract: "0xfeB2b97e4Efce787c08086dC16Ab69E063911380", + tokens: { + USDT: ADDRESSES.conflux.USDT, + USDC: ADDRESSES.conflux.USDC, + ETH: ADDRESSES.conflux.ETH, + BNB: "0x94bd7a37d2ce24cc597e158facaa8d601083ffec", + PPI: "0x22f41abf77905f50df398f21213290597e7414dd", + ABC: "0x905f2202003453006eaf975699545f2e909079b8", + HYT: "0x72952d09c19044059ce48007b289570b3320c8b6", + GOL: "0x19aae9e4269ab47ff291125b5c0c2f7296a635ab", + MIT: "0xd3cf900b0ec2194b418760e1494653449327692c", + NUT: "0xfe197e7968807b311d476915db585831b43a7e3b", + xCFX: "0x889138644274a7dc602f25a7e7d53ff40e6d0091" + } + }, + blast: { + mosContract: "0xfeB2b97e4Efce787c08086dC16Ab69E063911380", + tokens: { + MIM: "0x76DA31D7C9CbEAE102aff34D3398bC450c8374c1", + OMNI: "0x9e20461bc2c4c980f62f1B279D71734207a6A356", + USDB: ADDRESSES.blast.USDB, + WETH: ADDRESSES.blast.WETH + } } } From ba9918089ad0479cd5206a266e6ea7d0417b799f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 20:06:54 +0200 Subject: [PATCH 1351/2004] Add support for USDC token in coreAssets.json and tokenMapping.js --- projects/helper/coreAssets.json | 3 ++- projects/helper/tokenMapping.js | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index f09b709b32b..4f0156cb740 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1710,6 +1710,7 @@ "WOKB": "0xe538905cf8410324e03a5a23c1c177a474d59b2b", "WBTC": "0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1", "WETH": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c", - "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d" + "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d", + "USDC": "0x74b7f16337b8972027f6196a17a631ac6de26d22" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 1fdab999d1c..0b4d00dce53 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -123,6 +123,7 @@ const fixBalancesTokens = { [ADDRESSES.xlayer.WBTC]: { coingeckoId: "wrapped-bitcoin", decimals: 8, }, [ADDRESSES.xlayer.WETH]: { coingeckoId: "ethereum", decimals: 18, }, [ADDRESSES.xlayer.USDT]: { coingeckoId: "tether", decimals: 6, }, + [ADDRESSES.xlayer.USDC]: { coingeckoId: "usd-coin", decimals: 6, }, }, lac: { '0x2911a1ab18546cb501628be8625c7503a2a7db54': { coingeckoId: "la-coin", decimals: 18, }, From a7465b29e7f44a1049b719b2473675f04d05ccd3 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 24 Apr 2024 19:31:24 +0100 Subject: [PATCH 1352/2004] add hallmarks --- projects/timeswap-v2/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 1e7fdbd5e26..1a5e71c7b94 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -157,4 +157,8 @@ const config = { Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl }; + module.exports.hallmarks=[ + [1676851200, "Timeswap V2 launch"], + [1697760000, "Premine of $TIME"] + ] }); \ No newline at end of file From 39554b34d09404db0626c17e6000b05e6f2be322 Mon Sep 17 00:00:00 2001 From: Lim Yee Han Date: Thu, 25 Apr 2024 03:50:49 +0900 Subject: [PATCH 1353/2004] Update replHelper contract address --- projects/repl/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/repl/index.js b/projects/repl/index.js index 2d9fd0bc315..5a350506d4c 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -9,7 +9,7 @@ const WFIL_WPFIL_POOL_ADDRESS = '0x443A6243A36Ef0ae1C46523d563c15abD787F4E9'; const PFIL_CONTRACT = '0xAaa93ac72bECfbBc9149f293466bbdAa4b5Ef68C'; const WPFIL_CONTRACT = '0x57E3BB9F790185Cfe70Cc2C15Ed5d6B84dCf4aDb'; const WFIL_CONTRACT = '0x60E1773636CF5E4A227d9AC24F20fEca034ee25A'; -const REPL_HELPER_CONTRACT = '0x52d41C90ce592229F9fC0dA6Ef7b7cc26472B4E9'; +const REPL_HELPER_CONTRACT = '0x65846aECBF23385F76B73ef1EDD1ebdFf7Ac258D'; // Total Assets of Miners pledged to the protocol const getMinerAssets = (agents) => { From c4d9aaba00796eb83f558656b10853430bd7b6c5 Mon Sep 17 00:00:00 2001 From: Lim Yee Han Date: Thu, 25 Apr 2024 04:32:42 +0900 Subject: [PATCH 1354/2004] Update replHelper contract address (#9964) --- projects/repl/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/repl/index.js b/projects/repl/index.js index 2d9fd0bc315..5a350506d4c 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -9,7 +9,7 @@ const WFIL_WPFIL_POOL_ADDRESS = '0x443A6243A36Ef0ae1C46523d563c15abD787F4E9'; const PFIL_CONTRACT = '0xAaa93ac72bECfbBc9149f293466bbdAa4b5Ef68C'; const WPFIL_CONTRACT = '0x57E3BB9F790185Cfe70Cc2C15Ed5d6B84dCf4aDb'; const WFIL_CONTRACT = '0x60E1773636CF5E4A227d9AC24F20fEca034ee25A'; -const REPL_HELPER_CONTRACT = '0x52d41C90ce592229F9fC0dA6Ef7b7cc26472B4E9'; +const REPL_HELPER_CONTRACT = '0x65846aECBF23385F76B73ef1EDD1ebdFf7Ac258D'; // Total Assets of Miners pledged to the protocol const getMinerAssets = (agents) => { From 285460f645a19936df8145e71f970605cfc1bbc8 Mon Sep 17 00:00:00 2001 From: Yuanhang Luo Date: Thu, 25 Apr 2024 03:33:52 +0800 Subject: [PATCH 1355/2004] update arbitrum (#9963) --- projects/dvol/index.js | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/projects/dvol/index.js b/projects/dvol/index.js index 0355391cccb..5a56e697e56 100644 --- a/projects/dvol/index.js +++ b/projects/dvol/index.js @@ -1,9 +1,15 @@ const sdk = require('@defillama/sdk') -const vaults = [ - '0x54781C6aa884297369A55A79eF7Fd1FD7B3bBD32', - '0x6652f1B0531C4C75B523e74BCf5D0CD009b7BBB8' -] +const vaults = { + bsc: [ + '0x54781C6aa884297369A55A79eF7Fd1FD7B3bBD32', + '0x6652f1B0531C4C75B523e74BCf5D0CD009b7BBB8', + '0xC6553F147D418dFe3745EBa56514de13feF67eA2' + ], + arbitrum: [ + '0xce2C993406E86e0efd7D74A83a9fEfdB35bBE05c' + ] +} const abi = { "existingVaultAmount": "uint256:existingVaultAmount", @@ -17,22 +23,22 @@ let vaultsTvls = {} async function getVaultsTvl(api) { let key = api.chain + '_' + api.block if (!vaultsTvls[key]) - vaultsTvls[key] = vaultsTvlFn(api) + vaultsTvls[key] = vaultsTvlFn(api) return vaultsTvls[key] } async function vaultsTvlFn(api) { - const borrowApi = new sdk.ChainApi({ chain: api.chain, block: api.block}) + const borrowApi = new sdk.ChainApi({ chain: api.chain, block: api.block }) const ownerTokens = [] - for (const target of vaults) { - 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) + 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 })) @@ -56,4 +62,7 @@ module.exports = { bsc: { tvl, borrowed, }, + arbitrum: { + tvl, borrowed, + } } From e9cb9e64660a8ff65b171e54b6aa4dc745cd0aa3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 24 Apr 2024 23:16:43 +0200 Subject: [PATCH 1356/2004] fix broken adapters --- projects/brokkr/index.js | 7 +++++-- projects/ergodex.js | 12 +++--------- projects/muesliswap/index.js | 6 +++--- projects/quicksilver/index.js | 1 + projects/sienna/index.js | 7 ++++--- projects/spot/index.js | 23 ++++++++++++++++------- 6 files changed, 32 insertions(+), 24 deletions(-) diff --git a/projects/brokkr/index.js b/projects/brokkr/index.js index e78615b3ee6..8f7f5479971 100644 --- a/projects/brokkr/index.js +++ b/projects/brokkr/index.js @@ -53,11 +53,14 @@ async function tvl(api) { } async function addEquityValuationToBalances(address, api) { - var usdc_balance = await api.call({ + var [usdc_balance] = await api.multiCall({ target: address, abi: "function getEquityValuation(bool startIndex_, bool endIndex_) view returns (uint256)", - params: [true, false], + calls: [{ params: [true, false] }], + permitFailure: true, }) + if (!usdc_balance) + return api.add(USDC_TOKEN_CONTRACT, usdc_balance) } diff --git a/projects/ergodex.js b/projects/ergodex.js index 4d70c19c1ea..e7caf7509ae 100644 --- a/projects/ergodex.js +++ b/projects/ergodex.js @@ -1,17 +1,11 @@ const { sumTokensExport } = require('./helper/chain/ergo') const { sumTokensExport: steCardano } = require('./helper/chain/cardano') -const utils = require('./helper/utils'); +const { get } = require('./helper/http'); async function cardanoTVL() { - let response = await utils.fetchURL('https://analytics-balanced.spectrum.fi/cardano/pools/overview?after=0') - let data = response.data; - - let totalTvl = 0; - for(let i=0; i { if (ob.fromToken === ".") { @@ -59,7 +59,7 @@ async function adaTvl() { return (totalBuy * fromPrice + totalSell * toPrice) } }) - totalAda += vOrderbookV1.reduce((p, c) => p + c, 0) + totalAda += vOrderbookV1.reduce((p, c) => p + c, 0) */ // then accumulate over the orderbooks const orderbookV2 = (await fetchURL("https://onchain.muesliswap.com/all-orderbooks")).data @@ -101,7 +101,7 @@ module.exports = { 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 + // staking }, milkomeda: { tvl: getUniTVL({ factory: '0x57A8C24B2B0707478f91D3233A264eD77149D408', useDefaultCoreAssets: true }), diff --git a/projects/quicksilver/index.js b/projects/quicksilver/index.js index ebdac00359b..8e135e4c820 100644 --- a/projects/quicksilver/index.js +++ b/projects/quicksilver/index.js @@ -11,6 +11,7 @@ const coinGeckoIds = { ujuno: "juno-network", ustars: "stargaze", usaga: "saga-2", + ubld: "agoric", }; async function tvl() { diff --git a/projects/sienna/index.js b/projects/sienna/index.js index 2d81984793a..5713dd4b987 100644 --- a/projects/sienna/index.js +++ b/projects/sienna/index.js @@ -21,7 +21,7 @@ async function getExchanges(factory, data) { sdk.log(factory, exchanges.length, pools.length, hasMore) pools.push(...exchanges) - const { errors } = await PromisePool.withConcurrency(1) + const { errors } = await PromisePool.withConcurrency(10) .for(exchanges) .process(async (i) => { let { address, contract } = i @@ -36,8 +36,9 @@ async function getExchanges(factory, data) { await sleep(1000) }) - if (errors && errors.length) - throw errors[0] + console.log(errors, errors.length, factory, exchanges.length, pools.length, hasMore) + // if (errors && errors.length) + // throw errors[0] } while (hasMore) } diff --git a/projects/spot/index.js b/projects/spot/index.js index 42ca6e1684f..277fa83b538 100644 --- a/projects/spot/index.js +++ b/projects/spot/index.js @@ -1,9 +1,18 @@ -module.exports={ - ethereum:{ - tvl: async (_t, _b, _c, {api})=>{ - const tranches = await api.fetchList({ lengthAbi: 'deployedCount', itemAbi: 'deployedAt', target: "0x82a91a0d599a45d8e9af781d67f695d7c72869bd" }) - const bonds = await api.multiCall({ abi: 'address:bond', calls: tranches }) - return api.sumTokens({ tokens: ["0xd46ba6d942050d489dbd938a2c909a5d5039a161"], owners: [...bonds, "0x82A91a0D599A45d8E9Af781D67f695d7C72869Bd"] }) - } +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 From 095a206749cec63eca0ade79e48bea06e59848a3 Mon Sep 17 00:00:00 2001 From: Deadshot Ryker <151393124+deadshotryker@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:31:10 +0300 Subject: [PATCH 1357/2004] added xlayer for zerolend (#9971) --- projects/zerolend/index.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/projects/zerolend/index.js b/projects/zerolend/index.js index 92a769822b7..13d30abb226 100644 --- a/projects/zerolend/index.js +++ b/projects/zerolend/index.js @@ -5,9 +5,12 @@ const config = { manta: "0x67f93d36792c49a4493652B91ad4bD59f428AD15", blast: "0xc6DF4ddDBFaCb866e78Dcc01b813A41C15A08C10", linea: "0x67f93d36792c49a4493652B91ad4bD59f428AD15", + xlayer: "0x97e59722318F1324008484ACA9C343863792cBf6", ethereum: "0x47223D4eA966a93b2cC96FFB4D42c22651FADFcf", -} +}; -Object.keys(config).forEach(chain => { - module.exports[chain] = aaveExports(chain, undefined, undefined, [config[chain]]) -}) \ No newline at end of file +Object.keys(config).forEach((chain) => { + module.exports[chain] = aaveExports(chain, undefined, undefined, [ + config[chain], + ]); +}); From f48ed117036a139357d87c9b1551fa13a7cbea29 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Apr 2024 09:42:55 +0200 Subject: [PATCH 1358/2004] add support genesys --- projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 3 +++ projects/helper/tokenMapping.js | 3 +++ 3 files changed, 7 insertions(+) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 770b2dc269d..c1520b8f4da 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -113,6 +113,7 @@ "functionx", "fuse", "fusion", + "genesys", "genshiro", "gochain", "godwoken", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 4f0156cb740..39cc9877330 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1712,5 +1712,8 @@ "WETH": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c", "USDT": "0x1E4a5963aBFD975d8c9021ce480b42188849D41d", "USDC": "0x74b7f16337b8972027f6196a17a631ac6de26d22" + }, + "genesys": { + "WGSYS": "0xAa7aE83eb30DDdd14A017D4222121776317EA8Ba" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 0b4d00dce53..27ce0668945 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -132,6 +132,9 @@ const fixBalancesTokens = { '0xdaa6a6919c9543d8787490f5e9ad532c4d7ce9e8': { coingeckoId: "deherogame-amazing-token", decimals: 18, }, '0x36426b7bf5709e5c2160411c6e8b1832e3404fe1': { coingeckoId: "mixmarvel", decimals: 18, }, }, + genesys: { + [ADDRESSES.genesys.WGSYS]: { coingeckoId: "genesys", decimals: 18 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From f51017fd2649c58b21b66c1b889fda383ad5a5f0 Mon Sep 17 00:00:00 2001 From: 0x_danr Date: Thu, 25 Apr 2024 03:54:47 -0400 Subject: [PATCH 1359/2004] add TVL from Base network (#9968) --- projects/gammaswap-v2/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/gammaswap-v2/index.js b/projects/gammaswap-v2/index.js index 3d2f22647c6..4e50e9c1cbb 100644 --- a/projects/gammaswap-v2/index.js +++ b/projects/gammaswap-v2/index.js @@ -8,6 +8,11 @@ const config = { ], deltaswapFactory: '0xcb85e1222f715a81b8edaeb73b28182fa37cffa8' }, + base: { + factories: [ + { factory: '0xfd513630f697a9c1731f196185fb9eba6eaac20b', fromBlock: 12475877 }, + ], + }, } Object.keys(config).forEach(chain => { From 054336c27238e819a2cb5818dda77b57d9b1c766 Mon Sep 17 00:00:00 2001 From: particle-deployer <130306380+particle-deployer@users.noreply.github.com> Date: Thu, 25 Apr 2024 01:02:05 -0700 Subject: [PATCH 1360/2004] add v2 contract addresses (#9965) * add v2 contract addresses * correct for addresses --------- Co-authored-by: Wukong Particle --- projects/particle-trade-duo/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index 3d74dbf6d1c..d03ce701e13 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -2,6 +2,8 @@ const config = { blast: { weth90d: '0xc932317385fDc794633f612874BD687eA987B151', usdb90d: '0x57A6CcB2d5663eF874c29b161dD7907c7673feb0', + weth90dv2: '0xabF868bbe80550DC2EE4F8dFfcb06A5eb9B0760E', + dusd90dv2: '0xBc65c01680E09FE14F466B00Cc2A9248a022F101', }, } From 1c8769f7e5cee4a49228fc9b0bccbe4709b25168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Tri=E1=BA=BFt=20Khang?= Date: Thu, 25 Apr 2024 15:19:07 +0700 Subject: [PATCH 1361/2004] [zklite.io] Add defi project zkLite Exchange (#9967) --- projects/zklite/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/zklite/index.js diff --git a/projects/zklite/index.js b/projects/zklite/index.js new file mode 100644 index 00000000000..c6ece16575b --- /dev/null +++ b/projects/zklite/index.js @@ -0,0 +1,23 @@ +const { get } = require('../helper/http') +const { toUSDTBalances } = require('../helper/balances') + +async function offers() { + const markets = await get('https://api.zklite.io/api/v1/markets') + const marketInfos = await get('https://api.zklite.io/api/v1/marketinfos?chain_id=1&market=' + Object.keys(markets).join(',')) + let total = 0 + 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) +} + +module.exports = { + timetravel: false, + zksync: { + offers, + tvl: async () => ({}) + } +} From 88b6169647462ec39cfa398cf6317869abae6741 Mon Sep 17 00:00:00 2001 From: Bit-Genie <168055389+Bit-Genie@users.noreply.github.com> Date: Thu, 25 Apr 2024 16:30:45 +0800 Subject: [PATCH 1362/2004] Add project bitgenie (#9969) * Add project bitgenie * Add new contracts * code refactor --------- Co-authored-by: Your Name Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bitgenie/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/bitgenie/index.js diff --git a/projects/bitgenie/index.js b/projects/bitgenie/index.js new file mode 100644 index 00000000000..4d1bba4ec0e --- /dev/null +++ b/projects/bitgenie/index.js @@ -0,0 +1,21 @@ +const stakingContracts = [ + "0xd47477da78F6252b1029f3041aC4FC749439CD3F", + "0xe3F7194AB9cDa2E91bBf0AC7F450Ac7a60B40901", + "0x53Bd1b82363d93dc9344FfBB764d2713cd5628cC", + "0x2e1f9186912142341B2fc40b32b99Ea9fE1b730B", + "0x237826695a575D9Fd2FA7C184E5f37593aBc1529", + "0x63C8860e93697dB85716C9ee7F15D09EAC62136C" +]; + + +module.exports = { + merlin: { + tvl, + }, +} + +async function tvl(api) { + const tokens = await api.multiCall({ abi: 'address:stakeToken', calls: stakingContracts}) + return api.sumTokens({ tokensAndOwners2: [tokens, stakingContracts]}) + +} From ca0011fa05506ea7eaab7686d23d8b95e34610e3 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 25 Apr 2024 09:56:35 +0100 Subject: [PATCH 1363/2004] add fraxtal curve --- projects/curve/contracts.json | 5 +++++ projects/curve/index.js | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json index 2418ed6a379..e86ee42f55e 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -151,6 +151,11 @@ "wrapped": "0x4244eb811d6e0ef302326675207a95113db4e1f8", "metapoolBases": {} }, + "fraxtal": { + "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "metapoolBases": {}, + "CurveStableswapFactoryNG": "0xd2002373543ce3527023c75e7518c274a51ce712" + }, "kava": { "addressProvider": "0x0000000022D53366457F9d5E68Ec105046FC4383", "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", diff --git a/projects/curve/index.js b/projects/curve/index.js index 9ca4de4f05e..4844798d5e5 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -22,7 +22,8 @@ const chains = [ "moonbeam", "celo", "kava", - "base" + "base", + "fraxtal" ]; // Object.keys(contracts); const registryIds = { stableswap: 0, @@ -85,17 +86,19 @@ function getRegistryType(registryId) { } async function getPools(block, chain) { - let { registriesMapping } = contracts[chain] + let { registriesMapping, addressProvider } = contracts[chain] if (!registriesMapping) { registriesMapping = {}; - (await sdk.api.abi.multiCall({ - block, chain, - calls: Object.values(registryIds).map(r => ({ params: r })), - target: contracts[chain].addressProvider, - abi: abi.get_id_info - })).output - .filter(r => r.output.addr !== nullAddress) - .forEach(({ input: { params: [registryId] }, output: { addr } }) => registriesMapping[getRegistryType(registryId)] = addr) + 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 From 1e106a46b76bf79036f382541c59845ce9ddeb88 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:06:06 +0200 Subject: [PATCH 1364/2004] remove duplicate shadeswap --- projects/helper/tokenMapping.js | 3 +++ projects/shadeprotocol-swap/index.js | 17 ----------------- 2 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 projects/shadeprotocol-swap/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 27ce0668945..e1c2941cd44 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -135,6 +135,9 @@ const fixBalancesTokens = { genesys: { [ADDRESSES.genesys.WGSYS]: { coingeckoId: "genesys", decimals: 18 }, }, + core: { + '0x8034ab88c3512246bf7894f57c834dddbd1de01f': { coingeckoId: "bitcoin", decimals: 8 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/shadeprotocol-swap/index.js b/projects/shadeprotocol-swap/index.js deleted file mode 100644 index 303d684b411..00000000000 --- a/projects/shadeprotocol-swap/index.js +++ /dev/null @@ -1,17 +0,0 @@ -const { get } = require("../helper/http") - -async function tvl(api) { - const data = await get('https://na36v10ce3.execute-api.us-east-1.amazonaws.com/API-mainnet-STAGE/shadeswap/pairs') - return { - tether: data.map(i => +i.liquidity_usd).filter(i=>i<1e9).reduce((a, i) => a + i) - } - -} - - -module.exports = { - misrepresentedTokens: true, - secret: { - tvl - } -} \ No newline at end of file From 7bed93de3b9f725d328195368de922bad5f9dc3b Mon Sep 17 00:00:00 2001 From: mvp1983 <103922338+mvp1983@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:31:24 +0300 Subject: [PATCH 1365/2004] add new chain and vaults type (#9972) Co-authored-by: Valerii --- projects/clip-finance/index.js | 83 +++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 11 deletions(-) diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js index 82d65f0912a..94599e6c1f3 100644 --- a/projects/clip-finance/index.js +++ b/projects/clip-finance/index.js @@ -1,3 +1,5 @@ +const ethers = require("ethers"); + const config = { bsc: { vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", @@ -5,17 +7,37 @@ const config = { linea: { vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", }, + base: { + vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0" + } } -const tvl = async (api) => { - const { vaultRegistry } = config[api.chain]; - const vaultDatas = await api.call({ abi: abis.getVaults, target: vaultRegistry }) - const vaults = vaultDatas.map(i => i.vault) +const VaultType = { + PancakeV3: 1, + Stargate : 2, + MendiLending: 3, + Aero : 4, +}; +const typesDataInterfaces = { + any : ["uint256"], // has only vaultType + [VaultType.PancakeV3] : ["uint256", "address"], // vaultType, v3 pool address + [VaultType.Stargate] : ["uint256"], // vaultType + [VaultType.MendiLending]: ["uint256", "address"], //vaultType, mendiLeverage address + [VaultType.Aero] : ["uint256"] //vaultType +}; - const isAMMVaults = (await api.multiCall({ calls: vaults, abi: abis.getTotalAmounts, permitFailure: true, })).map(i => !!i) - const ammVaults = vaults.filter((_, i) => isAMMVaults[i]) - const ammPools = vaultDatas.filter((_, i) => isAMMVaults[i]).map(i => '0x' + i.data.slice(-40)) +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 ammVaults = vaults.filter(i => i.vaultType == VaultType.PancakeV3).map(i => i.vault); + const ammPools = vaults.filter(i => i.vaultType == VaultType.PancakeV3).map(i => '0x' + i.data.slice(-40)) 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 }) @@ -23,10 +45,50 @@ const tvl = async (api) => { api.add(ammToken0s[i], pool.total0) api.add(ammToken1s[i], pool.total1) }) + + //Aerodrom Vaults + let aerodromVaults = vaults.filter(i => i.vaultType == VaultType.Aero).map(i => i.vault) + const tokenAs = await api.multiCall({ abi: 'address:tokenA', calls: aerodromVaults }) + + const tokenBs = await api.multiCall({ abi: 'address:tokenB', calls: aerodromVaults }) + const farms = await api.multiCall({ abi: 'address:farm', calls: aerodromVaults }) + + const lpTokens = await api.multiCall({ abi: 'address:lpToken', calls: aerodromVaults }) + + const liquidities = await api.multiCall({ abi: abis.balanceOf, calls: farms.map((vault, i) => ({ + target: vault, + params: aerodromVaults[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: aerodromVaults[i] + }))}) + + const tokenBBalances = await api.multiCall({ abi: abis.balanceOf, calls: tokenBs.map((tokenB, i) => ({ + target: tokenB, + params: aerodromVaults[i] + }))}) + + aerodromVaults.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])) + } + }) - const isStargate = (await api.multiCall({ calls: vaults, abi: 'address:stargateFarm', permitFailure: true, })).map(i => !!i) - const stargateVaults = vaults.filter((_, i) => isStargate[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, }) }; @@ -46,9 +108,8 @@ Object.keys(config).forEach((chain) => { const abis = { getTotalAmounts: "function getTotalAmounts() public view returns (uint256 total0, uint256 total1, uint128 liquidity)", - token0: "address:token0", - token1: "address:token1", depositToken: "address:depositToken", totalTokens: "uint256:totalTokens", getVaults: "function getVaults() view returns ((address vault, bytes data)[])", + balanceOf: "function balanceOf(address) view returns (uint256)" }; From 727954a929be1f7b9405bffb4a33b1cc52dc8675 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 25 Apr 2024 17:03:53 +0100 Subject: [PATCH 1366/2004] add wrsETH on scroll --- projects/helper/tokenMapping.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index e1c2941cd44..f985f2f06a5 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -1,3 +1,4 @@ +const { decimals } = require('@defillama/sdk/build/erc20') let coreAssets = require('./coreAssets.json') const ADDRESSES = coreAssets const nullAddress = ADDRESSES.null @@ -71,6 +72,7 @@ const fixBalancesTokens = { }, scroll: { "0x80137510979822322193fc997d400d5a6c747bf7": { coingeckoId: "ethereum:0x7122985656e38bdc0302db86685bb972b145bd3c", decimals: 0 }, + "0xa25b25548B4C98B0c7d3d27dcA5D5ca743d68b7F": { coingeckoId: "kelp-dao-restaked-eth", decimals: 18 } }, velas: { '0xaadbaa6758fc00dec9b43a0364a372605d8f1883': { coingeckoId: "staked-vlx", decimals: 18, }, From 5b3b9f8d692eb58bd83a5294e29855b804c6a247 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Apr 2024 18:38:08 +0200 Subject: [PATCH 1367/2004] track https://www.opendollar.com/ --- projects/opendollar/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/opendollar/index.js diff --git a/projects/opendollar/index.js b/projects/opendollar/index.js new file mode 100644 index 00000000000..e89d7808483 --- /dev/null +++ b/projects/opendollar/index.js @@ -0,0 +1,16 @@ +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 From cd553aea6a150613a5d2eb736d017c19d8333e1e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 25 Apr 2024 18:55:34 +0200 Subject: [PATCH 1368/2004] lint fix --- projects/helper/tokenMapping.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f985f2f06a5..89c9b9042e4 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -57,6 +57,7 @@ const fixBalancesTokens = { }, core: { '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, + '0x8034ab88c3512246bf7894f57c834dddbd1de01f': { coingeckoId: "bitcoin", decimals: 8 }, }, bsc: { '0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB': { coingeckoId: "zeepr", decimals: 18, }, @@ -137,9 +138,6 @@ const fixBalancesTokens = { genesys: { [ADDRESSES.genesys.WGSYS]: { coingeckoId: "genesys", decimals: 18 }, }, - core: { - '0x8034ab88c3512246bf7894f57c834dddbd1de01f': { coingeckoId: "bitcoin", decimals: 8 }, - } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From ea28d324184a472696099f6b73e699e698da50f7 Mon Sep 17 00:00:00 2001 From: Yuanhang Luo Date: Fri, 26 Apr 2024 00:56:02 +0800 Subject: [PATCH 1369/2004] add new vault (#9977) --- projects/dvol/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/dvol/index.js b/projects/dvol/index.js index 5a56e697e56..b0186cea59c 100644 --- a/projects/dvol/index.js +++ b/projects/dvol/index.js @@ -7,7 +7,8 @@ const vaults = { '0xC6553F147D418dFe3745EBa56514de13feF67eA2' ], arbitrum: [ - '0xce2C993406E86e0efd7D74A83a9fEfdB35bBE05c' + '0xce2C993406E86e0efd7D74A83a9fEfdB35bBE05c', + '0x37874743E42684dfE7beF6a345C8426402538688' ] } From b7dc7486975f7d40a054f001c77cf9b1b664ddd1 Mon Sep 17 00:00:00 2001 From: Ivan <36043679+Blahdieblah@users.noreply.github.com> Date: Thu, 25 Apr 2024 18:56:27 +0200 Subject: [PATCH 1370/2004] added cold wallet (#9973) --- projects/puzzle-lend/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/puzzle-lend/index.js b/projects/puzzle-lend/index.js index 11ece22dcc3..1ad132dbca3 100644 --- a/projects/puzzle-lend/index.js +++ b/projects/puzzle-lend/index.js @@ -1,5 +1,5 @@ const { sumTokens, dataSearch } = require('../helper/chain/waves') -const markets = ['3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH', '3P8Df2b7ywHtLBHBe8PBVQYd3A5MdEEJAou', '3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X', '3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH', '3PAd9Aqg3cQSzu26MFYWQYcjSXPVCJtuf5V'] +const markets = ['3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH', '3P8Df2b7ywHtLBHBe8PBVQYd3A5MdEEJAou', '3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X', '3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH', '3PAd9Aqg3cQSzu26MFYWQYcjSXPVCJtuf5V', '3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'] module.exports = { timetravel: false, @@ -16,4 +16,4 @@ async function borrowed(api) { api.add(key.replace('total_borrowed_', ''), value) } } -} \ No newline at end of file +} From 6ae5f484c924243ff31cf65eb71450adc64b0dc1 Mon Sep 17 00:00:00 2001 From: mvp1983 <103922338+mvp1983@users.noreply.github.com> Date: Thu, 25 Apr 2024 19:57:48 +0300 Subject: [PATCH 1371/2004] Clip.finance: added a new vault type (#9974) * Clip.finance: added a new vault type * restart github action --------- Co-authored-by: Valerii --- projects/clip-finance/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js index 94599e6c1f3..7f50e4f7e81 100644 --- a/projects/clip-finance/index.js +++ b/projects/clip-finance/index.js @@ -47,7 +47,7 @@ const tvl = async (api) => { }) //Aerodrom Vaults - let aerodromVaults = vaults.filter(i => i.vaultType == VaultType.Aero).map(i => i.vault) + const aerodromVaults = vaults.filter(i => i.vaultType == VaultType.Aero).map(i => i.vault) const tokenAs = await api.multiCall({ abi: 'address:tokenA', calls: aerodromVaults }) const tokenBs = await api.multiCall({ abi: 'address:tokenB', calls: aerodromVaults }) @@ -87,6 +87,14 @@ const tvl = async (api) => { } }) + //Mendi Vaults + const mendiVaults = vaults.filter(i => i.vaultType == VaultType.MendiLending).map(i => i.vault) + const depositTokens = await api.multiCall({abi: 'address:depositToken', calls: mendiVaults}) + const TVLs = await api.multiCall({abi: 'uint256:TVL', calls: mendiVaults}) + mendiVaults.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, }) From cb1d9b6f3d1b84166a1c6a505c827f96cd95970b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20Ayd=C4=B1nl=C4=B1k?= <46279260+waliair@users.noreply.github.com> Date: Thu, 25 Apr 2024 19:58:31 +0300 Subject: [PATCH 1372/2004] feat: add herculesdex treasury info (#9975) --- projects/treasury/hercules.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/treasury/hercules.js diff --git a/projects/treasury/hercules.js b/projects/treasury/hercules.js new file mode 100644 index 00000000000..614151603b0 --- /dev/null +++ b/projects/treasury/hercules.js @@ -0,0 +1,14 @@ + +const { treasuryExports } = require("../helper/treasury"); + +const treasury = "0x5c24bA2eA12f94E9F3476eaBDf10373dC2913605"; + +module.exports = treasuryExports({ + metis: { + owners: [treasury], + ownTokens: [ + '0xbB1676046C36BCd2F6fD08d8f60672c7087d9aDF', + ], + tokens: [] + }, +}); \ No newline at end of file From c90c52b3d7c463c37efa46f80ae7c98bf290bc6c Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 26 Apr 2024 00:34:30 +0100 Subject: [PATCH 1373/2004] add aerodrome slipstream --- projects/aerodrome-CL/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/aerodrome-CL/index.js diff --git a/projects/aerodrome-CL/index.js b/projects/aerodrome-CL/index.js new file mode 100644 index 00000000000..02d16ca6cbf --- /dev/null +++ b/projects/aerodrome-CL/index.js @@ -0,0 +1,14 @@ +const {getUniTVL} = require('../helper/unknownTokens.js') +const config = { + base: { factory: '0x9592CD9B267748cbfBDe90Ac9F7DF3c437A6d51B'}, +} + +Object.keys(config).forEach(chain => { + const { factory } = config[chain] + module.exports[chain] = { + tvl: getUniTVL({ factory, fetchBalances: true, abis: { + allPairsLength: 'uint256:allPoolsLength', + allPairs: "function allPools(uint) view returns (address)", + } }) + } +}) \ No newline at end of file From e957541887c8f82019441295ec2517f9e6a8be30 Mon Sep 17 00:00:00 2001 From: Keref Date: Fri, 26 Apr 2024 16:01:04 +0800 Subject: [PATCH 1374/2004] MonroeProtocol: new chains deployments (#9985) * feat: monroeprotocol * feat: Monroe prod * MonroeProtocol: new chains deployments --- projects/monroeprotocol/index.js | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/projects/monroeprotocol/index.js b/projects/monroeprotocol/index.js index c8db34e5d7f..ae9ce664015 100644 --- a/projects/monroeprotocol/index.js +++ b/projects/monroeprotocol/index.js @@ -1,33 +1,33 @@ const { createIncrementArray } = require("../helper/utils"); const { getLogs } = require('../helper/cache/getLogs') -// Controllers[chain] -const CONTROLLERS = { - manta: "0xb2E609ef662889a32452598F0131863035974878", -} +const CHAINS = ["ethereum", "manta", "avax", "iotex"] +// Where possible contracts are deployed using deterministic addresses +const DEFAULT_ADDRESSES = { + controller: "0xb2E609ef662889a32452598F0131863035974878", + monusd: "0xDf3d57c3480951958Cef19905E4cf7FC1bA9ad42" +} +const SPECIAL_ADDRESSES = { + zklink: { + controller: "0xD620b0613568406F427a6f5d4ecA301870a1A3d5", + monusd: "0x051baaA86328Fc7F522431932B8010F66f260A6a" + } +} async function tvl(api) { - const logs = await getLogs({ - api, - target: CONTROLLERS[api.chain], - eventAbi: "event CreatedSynth(address newSynth, string name, address oracle)", - onlyArgs: true, - fromBlock: 1548740 - }); - const synthAddresses = logs.map(log => log.newSynth); - - const vaultLength = await api.call({ abi: "uint:getVaultsLength", target: CONTROLLERS[api.chain] }) + const addresses = SPECIAL_ADDRESSES.hasOwnProperty(api.chain) ? SPECIAL_ADDRESSES[api.chain] : DEFAULT_ADDRESSES + const vaultLength = await api.call({ abi: "uint:getVaultsLength", target: addresses.controller }) const vaultCalls = createIncrementArray(vaultLength) const owners = [] const tokens = [] - await Promise.all(synthAddresses.map(async (synth) => { - const vaults = await api.multiCall({ abi: "function mintVaults(uint vaultId) view returns (address)", calls: vaultCalls, target: synth}) - const _tokens = await api.multiCall({ abi: 'address:collateralAsset', calls: vaults}) - tokens.push(..._tokens) - owners.push(...vaults) - })) + + 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) + return api.sumTokens({ tokensAndOwners2: [tokens, owners]}) } @@ -39,6 +39,6 @@ module.exports = { start: 1710288000, // March 13, 2024 00:00 GMT }; -Object.keys(CONTROLLERS).forEach((chain) => { +CHAINS.forEach((chain) => { module.exports[chain] = { tvl }; }); \ No newline at end of file From 79e790e31e3c4464711d73cdaaeedc87e37d02a3 Mon Sep 17 00:00:00 2001 From: Nico Szerman Date: Fri, 26 Apr 2024 05:19:21 -0300 Subject: [PATCH 1375/2004] Fixed adapter (#9980) * added new tickers * parallelized execution * fixed adapter * changes --- projects/sailingprotocol/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/sailingprotocol/index.js b/projects/sailingprotocol/index.js index 4ba64d84b1c..91480426240 100644 --- a/projects/sailingprotocol/index.js +++ b/projects/sailingprotocol/index.js @@ -68,11 +68,11 @@ const tokens = [ "ticker": "QQQ", "sufficientLiquidityForDefiLlamaIndexer": false, }, - // { - // "address": "0xBa5c32915e2303EA41d1986f5B3AAd0a98B4Fd80", - // "ticker": "ETHE", - // "sufficientLiquidityForDefiLlamaIndexer": false, - // }, + { + "address": "0xBa5c32915e2303EA41d1986f5B3AAd0a98B4Fd80", + "ticker": "ETHE", + "sufficientLiquidityForDefiLlamaIndexer": false, + }, { "address": "0xA78Fb2b64Ce2Fb8bBe46968cf961C5Be6eB12924", "ticker": "AAAU", @@ -102,7 +102,7 @@ async function tvl(api) { ticker: token.ticker } ); - const tickerPrice = tickerPricing.data.at(-1)[1]; + const tickerPrice = Object.values(tickerPricing.data).pop(); // latest price api.add( ADDRESSES.kava.USDt, // usdtKavaAddress tokenTotalSupply * tickerPrice * (1e6 / 1e18) From e8000c1192df7867200d34a9acc3ff1a6598229c Mon Sep 17 00:00:00 2001 From: zeepr <140408317+Zeeprlabs@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:19:36 +0800 Subject: [PATCH 1376/2004] add wcore for zeepr (#9987) * Update index.js add wcore * Update tokenMapping.js add wcore token --- projects/helper/tokenMapping.js | 1 + projects/zeepr/index.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 89c9b9042e4..4660a2a9321 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -58,6 +58,7 @@ const fixBalancesTokens = { core: { '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, '0x8034ab88c3512246bf7894f57c834dddbd1de01f': { coingeckoId: "bitcoin", decimals: 8 }, + '0x40375C92d9FAf44d2f9db9Bd9ba41a3317a2404f': { coingeckoId: "wcore", decimals: 18} }, bsc: { '0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB': { coingeckoId: "zeepr", decimals: 18, }, diff --git a/projects/zeepr/index.js b/projects/zeepr/index.js index d876af723fb..dabab7b7dc2 100644 --- a/projects/zeepr/index.js +++ b/projects/zeepr/index.js @@ -7,7 +7,7 @@ module.exports = { }, core: { tvl: () => ({}), - staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", "0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223"), + staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", ["0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223","0x40375C92d9FAf44d2f9db9Bd9ba41a3317a2404f"]), }, bsc: { tvl: () => ({}), From 7a7ee2fa6487290173e794ea643e164364e577fc Mon Sep 17 00:00:00 2001 From: Bit-Genie <168055389+Bit-Genie@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:19:50 +0800 Subject: [PATCH 1377/2004] Add new contracts (#9986) * Add project bitgenie * Add new contracts * code refactor * Add new contracts --------- Co-authored-by: Your Name Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bitgenie/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/bitgenie/index.js b/projects/bitgenie/index.js index 4d1bba4ec0e..22c779a3c81 100644 --- a/projects/bitgenie/index.js +++ b/projects/bitgenie/index.js @@ -4,7 +4,9 @@ const stakingContracts = [ "0x53Bd1b82363d93dc9344FfBB764d2713cd5628cC", "0x2e1f9186912142341B2fc40b32b99Ea9fE1b730B", "0x237826695a575D9Fd2FA7C184E5f37593aBc1529", - "0x63C8860e93697dB85716C9ee7F15D09EAC62136C" + "0x63C8860e93697dB85716C9ee7F15D09EAC62136C", + "0x19a0D0b1734bdB167D393e7BB7a57418e3a8cCA8", + "0x1DBa95577DFe76d8e86af00aEB614479cb7917D2" ]; From 2733b81c46a6ccecc4a97fcdc181a4e60988c775 Mon Sep 17 00:00:00 2001 From: zkDX-OliverRichards <130122950+zkDX-OliverRichards@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:21:15 +0800 Subject: [PATCH 1378/2004] zkdx - add zklink staking addresses (#9983) --- projects/zkdx/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/zkdx/index.js b/projects/zkdx/index.js index 7c071d7f54b..93436c0f084 100644 --- a/projects/zkdx/index.js +++ b/projects/zkdx/index.js @@ -18,5 +18,9 @@ module.exports = { "0x3a85b87e81cD99D4A6670f95A4F0dEdAaC207Da0"], [ADDRESSES.linea.WETH, ADDRESSES.linea.USDC] ) + }, + zklink:{ + tvl: staking(["0xb5e635f2cB9eAC385D679069f8e0d1740436b355", "0xa6DbD1bdB1DC4339Df51d90Ce306CCE6edFbbbb1"], + ["0x0000000000000000000000000000000000000000", "0x1a1A3b2ff016332e866787B311fcB63928464509"]) } }; From a27de388f6226379e78858ad8ff93f97af4c2e82 Mon Sep 17 00:00:00 2001 From: saj <25463788+sajanrajdev@users.noreply.github.com> Date: Fri, 26 Apr 2024 01:25:46 -0700 Subject: [PATCH 1379/2004] feat: ebtc tvl adapter (#9982) --- projects/ebtc/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/ebtc/index.js diff --git a/projects/ebtc/index.js b/projects/ebtc/index.js new file mode 100644 index 00000000000..58a35bf87a4 --- /dev/null +++ b/projects/ebtc/index.js @@ -0,0 +1,19 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') + +const COLLATERAL_ADDRESS = "0xae7ab96520de3a18e5e111b5eaab095312d7fe84"; // 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: 1710492719, + ethereum: { + tvl, + } + }; From 1c61a656b9f8357daf1ed9bc780c934cbfd9d9c7 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 26 Apr 2024 11:07:14 +0100 Subject: [PATCH 1380/2004] sandclock staking --- projects/sandclock/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/sandclock/index.js b/projects/sandclock/index.js index 2a69557f98e..985f49fa9cf 100644 --- a/projects/sandclock/index.js +++ b/projects/sandclock/index.js @@ -1,6 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2 } = require('../helper/unwrapLPs'); +const { staking } = require('../helper/staking'); const LUSD = ADDRESSES.ethereum.LUSD; const WETH = ADDRESSES.ethereum.WETH; @@ -64,5 +65,6 @@ module.exports = { start: 15308000, // The first vault YEARN_VAULT was deployed ethereum: { tvl, + staking: staking("0x0a36f9565c6fb862509ad8d148941968344a55d8", "0xba8a621b4a54e61c442f5ec623687e2a942225ef") } }; \ No newline at end of file From 944feb1aee846bf2e684335827191a83bef1ceca Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 26 Apr 2024 11:39:08 +0100 Subject: [PATCH 1381/2004] add defiway treasury + tokens to cex helper (#9989) --- projects/helper/cex.js | 7 +++++++ projects/treasury/defiway.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 projects/treasury/defiway.js diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 12e3cf32ab9..1db1ae8708f 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -233,6 +233,13 @@ const defaultTokens = { ADDRESSES.kava.USDt, ADDRESSES.kava.USDC ], + cronos: [ + nullAddress, + ADDRESSES.cronos.USDC, + ADDRESSES.cronos.USDT, + ADDRESSES.cronos.WBTC, + "0xe44fd7fcb2b1581822d0c862b68222998a0c299a" //weth + ], } function cexExports(config) { diff --git a/projects/treasury/defiway.js b/projects/treasury/defiway.js new file mode 100644 index 00000000000..612d79cfacd --- /dev/null +++ b/projects/treasury/defiway.js @@ -0,0 +1,31 @@ +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 From 0366aad7744d3d1fecb349de31b6c52bf5f7a9b9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:29:36 +0200 Subject: [PATCH 1382/2004] tweak test script --- package-lock.json | 6 +++--- projects/helper/env.js | 6 ------ test.js | 16 +++++++++------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 729926c6f85..e93eb515f65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.53", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.53.tgz", - "integrity": "sha512-FhrgVni9TNEdOHV+7NHHTvfzHCkejI/1dG6Jj4TlK3vIGEgsgIlFxZzXImhnXf2SBxBMKvye9WF95Sk5RO6riQ==", + "version": "5.0.54", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.54.tgz", + "integrity": "sha512-0akwrfkgtD8/Fk+vHM3N8nMUBW+vdndc8GfQXU40VQrEXnDm24tmlOZwnfmf0Cb+PL2ts24ll00lLR5HgdP5Gw==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/env.js b/projects/helper/env.js index ee658cce979..f52892d0f6e 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,13 +12,7 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", - KARAK_RPC: "https://rpc.karak.network", - FSC_RPC: "https://fsc-dataseed1.fonscan.io,https://fsc-dataseed2.fonscan.io,https://fonscan.io/api/eth-rpc", BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", - FSC_RPC_MULTICALL: "0x18fA376d92511Dd04090566AB6144847c03557d8", - XLAYER_RPC: "https://wallet.okex.org/fullnode/xlayer/discover/rpc/ro", - LAC_RPC: "https://rpc1.mainnet.lachain.network,https://rpc2.mainnet.lachain.network/", // Chain id : 274 - XLAYER_RPC_MULTICALL: "0x398F92e15519B4F6F2D5cc42C17FC9ED15De53d8", } const ENV_KEYS = [ diff --git a/test.js b/test.js index 05aef5f0dd8..c77936d29d5 100644 --- a/test.js +++ b/test.js @@ -1,5 +1,6 @@ #!/usr/bin/env node + const handleError = require('./utils/handleError') const INTERNAL_CACHE_FILE = 'tvl-adapter-repo/sdkInternalCache.json' process.on('unhandledRejection', handleError) @@ -29,6 +30,7 @@ if (process.env.LLAMA_SANITIZE) if (['TVL_LOCAL_CACHE_ROOT_FOLDER', 'LLAMA_DEBUG_MODE', ...ENV_KEYS].includes(key) || key.includes('SDK')) return; delete process.env[key] }) +process.env.SKIP_RPC_CHECK = 'true' async function getTvl( @@ -108,7 +110,7 @@ sdk.api.abi.call = async (...args) => { } catch (e) { console.log(e) } - await initCache() + // await initCache() const chains = Object.keys(module).filter(item => typeof module[item] === 'object' && !Array.isArray(module[item])); checkExportKeys(module, passedFile, chains) const unixTimestamp = Math.round(Date.now() / 1000) - 60; @@ -442,10 +444,10 @@ async function saveSdkInternalCache() { } async function preExit() { - try { - await saveSdkInternalCache() // save sdk cache to r2 - } catch (e) { - if (process.env.NO_EXIT_ON_LONG_RUN_RPC) - sdk.error(e) - } + // try { + // await saveSdkInternalCache() // save sdk cache to r2 + // } catch (e) { + // if (process.env.NO_EXIT_ON_LONG_RUN_RPC) + // sdk.error(e) + // } } \ No newline at end of file From 06fce2b5919a4390b41bce49456b19c2bc85b758 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:39:14 +0200 Subject: [PATCH 1383/2004] lineabank: add new market --- projects/lineabank/index.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index c700c8633a4..604b4eaf571 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -1,4 +1,5 @@ -const { compoundExports2 } = require("../helper/compound"); +const { compoundExports2 } = require("../helper/compound") +const { mergeExports } = require("../helper/utils") const config = { linea: '0x009a0b7C38B542208936F1179151CD08E2943833', scroll: '0xEC53c830f4444a8A56455c6836b5D2aA794289Aa', @@ -8,12 +9,17 @@ const config = { bsquared: '0x72f7a8eb9F83dE366AE166DC50F16074076C3Ea6', } +const abis = { + getAllMarkets: "address[]:allMarkets", + totalBorrows: "uint256:totalBorrow", +} + + Object.keys(config).forEach(chain => { const comptroller = config[chain] - module.exports[chain] = compoundExports2({ - comptroller, fetchBalances: true, abis: { - getAllMarkets: "address[]:allMarkets", - totalBorrows: "uint256:totalBorrow", - }, - }) + module.exports[chain] = compoundExports2({ comptroller, fetchBalances: true, abis, }) }) + +module.exports = mergeExports([module.exports, { + linea: compoundExports2({ comptroller: '0x43Eac5BFEa14531B8DE0B334E123eA98325de866', fetchBalances: true, abis, }), +}]) \ No newline at end of file From c293b7f74f17976392ddc23cee19fc1859abd78c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:56:28 +0200 Subject: [PATCH 1384/2004] update horizon dex --- projects/horizondex/index.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/projects/horizondex/index.js b/projects/horizondex/index.js index 3ae6099763e..372bdb75b19 100644 --- a/projects/horizondex/index.js +++ b/projects/horizondex/index.js @@ -1,6 +1,7 @@ const { uniV3Export } = require("../helper/uniswapV3"); +const { mergeExports } = require("../helper/utils"); -module.exports = uniV3Export({ +const uniExport = uniV3Export({ linea: { factory: "0x9Fe607e5dCd0Ea318dBB4D8a7B04fa553d6cB2c5", fromBlock: 1150, @@ -10,3 +11,14 @@ module.exports = uniV3Export({ fromBlock: 2053334, }, }); + + +const algebraExport = uniV3Export({ + linea: { + factory: "0xec4f2937e57a6F39087187816eCc83191E6dB1aB", + fromBlock: 3395601, + isAlgebra: true, + }, +}); + +module.exports = mergeExports([uniExport, algebraExport]); \ No newline at end of file From ef465a628f06dcc5dbe2ecfb9555db1825b37bda Mon Sep 17 00:00:00 2001 From: NeptuneX-Aggregator <162133565+NeptuneX-Aggregator@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:57:20 +0400 Subject: [PATCH 1385/2004] add neptunex dex (#9991) --- projects/neptunex/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/neptunex/index.js diff --git a/projects/neptunex/index.js b/projects/neptunex/index.js new file mode 100644 index 00000000000..76fc382d2cc --- /dev/null +++ b/projects/neptunex/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require('../helper/unknownTokens'); + +const factory = "0x922FeCbE8dbFDfe85FfF4734046347B8E2ee7c82" + +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: getUniTVL({ factory, useDefaultCoreAssets: true, }) + }, +} From b37cc1249105b423fef685289247f519d5d26954 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 27 Apr 2024 15:09:37 +0200 Subject: [PATCH 1386/2004] fix core issue --- projects/helper/tokenMapping.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4660a2a9321..89c9b9042e4 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -58,7 +58,6 @@ const fixBalancesTokens = { core: { '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, '0x8034ab88c3512246bf7894f57c834dddbd1de01f': { coingeckoId: "bitcoin", decimals: 8 }, - '0x40375C92d9FAf44d2f9db9Bd9ba41a3317a2404f': { coingeckoId: "wcore", decimals: 18} }, bsc: { '0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB': { coingeckoId: "zeepr", decimals: 18, }, From d35a4c339b4211767151991aa8927bd79252b3f8 Mon Sep 17 00:00:00 2001 From: primeapeseismictoss <166023551+primeapeseismictoss@users.noreply.github.com> Date: Sat, 27 Apr 2024 18:28:00 +0400 Subject: [PATCH 1387/2004] Add seismic sdk (#9995) --- projects/seismic/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/seismic/index.js diff --git a/projects/seismic/index.js b/projects/seismic/index.js new file mode 100644 index 00000000000..4e1501c3f55 --- /dev/null +++ b/projects/seismic/index.js @@ -0,0 +1,6 @@ +const { aaveExports, methodology } = require("../helper/aave"); + +module.exports = { + methodology, + blast: aaveExports("blast", "0xEEcA436A6d4AfF6f0d55d71e9B1C271AbF511Cd0"), +}; From 8e686bf7deaf5bb3fcdc32dfeec4b8e32f85f1dd Mon Sep 17 00:00:00 2001 From: Agiex <156308169+agiex@users.noreply.github.com> Date: Sat, 27 Apr 2024 22:35:28 +0800 Subject: [PATCH 1388/2004] add openex on core (#9999) Co-authored-by: agiex --- projects/openex/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/openex/index.js diff --git a/projects/openex/index.js b/projects/openex/index.js new file mode 100644 index 00000000000..f66f1a1a3db --- /dev/null +++ b/projects/openex/index.js @@ -0,0 +1,11 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + core: { + tvl: getUniTVL({ + useDefaultCoreAssets: true, + factory: "0x6Edf8aecAA888896385d7fA19D2AA4eaff3C10D8", + }), + }, +}; From 82085052b15584d327fcecaf8f20fdda6e2ecfb1 Mon Sep 17 00:00:00 2001 From: Cody Butz Date: Sat, 27 Apr 2024 10:44:23 -0400 Subject: [PATCH 1389/2004] Update address to v2 address (#9992) --- projects/indigo/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/indigo/index.js b/projects/indigo/index.js index 07d952bc2b0..ed0e1050959 100644 --- a/projects/indigo/index.js +++ b/projects/indigo/index.js @@ -10,6 +10,6 @@ module.exports = { cardano: data.reduce((a, i) => a + (i.collateralAmount/1e6), 0) } }, - staking: sumTokensExport({ owner: 'addr1w92w34pys9h4h02zxdfsp8lhcvdd5t9aaln9z96szsgh73scty4aj', tokens: ['533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459']}) + staking: sumTokensExport({ owner: 'addr1wx3r0yl49yteuzwwlv7r0lr2uzq7p6v7nxl9ek645qy5rfgwwzxw6', tokens: ['533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459']}) }, } \ No newline at end of file From 342886fe5807945cc2b274276e41a90fe3bf8e89 Mon Sep 17 00:00:00 2001 From: jan-magpie <155635960+jan-magpie@users.noreply.github.com> Date: Sat, 27 Apr 2024 22:18:03 +0530 Subject: [PATCH 1390/2004] eigenpie - added tvl for native restaking (#10002) * added tvl for native staking and enterprise * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/eigenpie/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/eigenpie/index.js b/projects/eigenpie/index.js index 664b4d614ab..a19b6d398d7 100644 --- a/projects/eigenpie/index.js +++ b/projects/eigenpie/index.js @@ -1,11 +1,14 @@ const config = require("./config"); +const ADDRESSES = require('../helper/coreAssets.json') async function tvl(api) { const { eigenConfig, eigenStaking } = config[api.chain]; - const tokens = await api.call({ abi: 'address[]:getSupportedAssetList', target: eigenConfig, }); - const bals = await api.multiCall({ abi: 'function getTotalAssetDeposits(address) view returns (uint256)', calls: tokens, target: eigenStaking }) - api.add(tokens, bals) + let tokens = await api.call({ abi: 'address[]:getSupportedAssetList', target: eigenConfig, }); + const mlrttokens = await api.multiCall({ abi: 'function mLRTReceiptByAsset(address) view returns (address)', calls: tokens, target: eigenConfig }) + const tokenSupplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: mlrttokens}) + tokens = tokens.map(token => token.toLowerCase() === '0xeFEfeFEfeFeFEFEFEfefeFeFefEfEfEfeFEFEFEf'.toLowerCase() ? ADDRESSES.null : token) + api.add(tokens, tokenSupplies) } Object.keys(config).forEach((chain) => { From 77ceb6daba774e0ef59083455c2893515813755d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 27 Apr 2024 22:26:28 +0530 Subject: [PATCH 1391/2004] Add TVL calculation for ISC token (#10005) * Adapter with TVL for ISC * code refactor --------- Co-authored-by: Adwit Mittal --- .../international-stable-currency/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/international-stable-currency/index.js diff --git a/projects/international-stable-currency/index.js b/projects/international-stable-currency/index.js new file mode 100644 index 00000000000..13bafc09b15 --- /dev/null +++ b/projects/international-stable-currency/index.js @@ -0,0 +1,18 @@ +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 From 5881a7280026f2678808f71219a5e12faa59be9d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 27 Apr 2024 22:39:46 +0530 Subject: [PATCH 1392/2004] Add FeeFree tvl adapter and refactor code (#10006) * feat: added FeeFree tvl adapter * code refactor --------- Co-authored-by: GaussETH --- projects/FeeFree/index.js | 27 +++++++++++++++++++++++++++ projects/helper/coreAssets.json | 3 +++ projects/helper/tokenMapping.js | 4 ++++ 3 files changed, 34 insertions(+) create mode 100644 projects/FeeFree/index.js diff --git a/projects/FeeFree/index.js b/projects/FeeFree/index.js new file mode 100644 index 00000000000..12b79f55547 --- /dev/null +++ b/projects/FeeFree/index.js @@ -0,0 +1,27 @@ +const { getLogs2 } = require('../helper/cache/getLogs') +const { sumTokens2 } = require('../helper/unwrapLPs') + +const EVENT_ABI = 'event Initialize(bytes32 id, address indexed currency0, address indexed currency1, uint24 fee, int24 tickSpacing, address hooks)' + +const config = { + zora: { + pool: "0xB43287b2106BC044F07aE674794f5492E851d3dC", + router: "0x0Fee97363deEFBE4De038D437D805A98dbEbA400", + fromBlock: 13704184, + }, +} + +module.exports = { + start: 1714060800, // Apr 26 2024 +} + +Object.keys(config).forEach(chain => { + const { pool, fromBlock, } = config[chain] + module.exports[chain] = { + tvl: async (api) => { + 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/helper/coreAssets.json b/projects/helper/coreAssets.json index 39cc9877330..232e51d9ff3 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1715,5 +1715,8 @@ }, "genesys": { "WGSYS": "0xAa7aE83eb30DDdd14A017D4222121776317EA8Ba" + }, + "zora": { + "USDzC": "0xcccccccc7021b32ebb4e8c08314bd62f7c653ec4" } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 89c9b9042e4..352b06ef306 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -138,6 +138,10 @@ const fixBalancesTokens = { genesys: { [ADDRESSES.genesys.WGSYS]: { coingeckoId: "genesys", decimals: 18 }, }, + zora: { + [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, + [ADDRESSES.zora.USDzC]: { coingeckoId: "usd-coin", decimals: 6, }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 70f008b367353a0cbcc6519ed05ad99f1dfaf9c5 Mon Sep 17 00:00:00 2001 From: Dan Hsu Date: Sun, 28 Apr 2024 01:19:42 +0800 Subject: [PATCH 1393/2004] Add new bucketus vault to tvl (#10003) * feature: add strater project * feature: set the package-lock.json to the same version of original repo * feature: replace decimal.js to bignumber.js * feature: change bucketus vault id * feature: 1. add new bucketus pair ID 2. modified code of add bucketus pair value --- projects/strater/index.js | 85 ++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/projects/strater/index.js b/projects/strater/index.js index d6ed56ed58a..5e92b64b026 100644 --- a/projects/strater/index.js +++ b/projects/strater/index.js @@ -2,15 +2,29 @@ const ADDRESSES = require("../helper/coreAssets.json"); const sui = require("../helper/chain/sui"); const { addUniV3LikePosition } = require("../helper/unwrapLPs"); -const BUCKETUS_VAULT_ID = - "0x1a0b93fd2965ce3ceb4039c90b232ddee7b0e79015cab0ca10528bb5f4285188"; -const BUCK_USDC_POOL_ID = - "0x6ecf6d01120f5f055f9a605b56fd661412a81ec7c8b035255e333c664a0c12e7"; - -const FEE_RATE_BUCKETUS_VAULT_ID = - "0x6edfc992f6e775fe926a5e850661c151ad01e6149e9b34792a2102e1721065fc"; -const FEE_RATE_BUCK_USDC_POOL_ID = - "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5"; +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"; @@ -27,42 +41,23 @@ function asIntN(int, bits = 32) { } async function tvl(api) { - const bucketusVaultObjs = await sui.getObject(BUCKETUS_VAULT_ID); - const bucketusPoolObjs = await sui.getObject(BUCK_USDC_POOL_ID); - - const bucketusPool = bucketusPoolObjs.fields; - const bucketusPosition = bucketusVaultObjs.fields.position.fields; - - addUniV3LikePosition({ - api, - tickLower: asIntN(bucketusPosition.tick_lower_index.fields.bits), - tickUpper: asIntN(bucketusPosition.tick_upper_index.fields.bits), - tick: asIntN(bucketusPool.current_tick_index.fields.bits), - liquidity: bucketusPosition.liquidity, - token0: ADDRESSES.sui.BUCK, - token1: ADDRESSES.sui.USDC, - }); - - const feeRateBucketusVaultObjs = await sui.getObject( - FEE_RATE_BUCKETUS_VAULT_ID - ); - const feeRateBucketusPoolObjs = await sui.getObject( - FEE_RATE_BUCK_USDC_POOL_ID - ); - - const feeRateBucketusPool = feeRateBucketusPoolObjs.fields; - const feeRateBucketusPosition = - feeRateBucketusVaultObjs.fields.position.fields; - - addUniV3LikePosition({ - api, - tickLower: asIntN(feeRateBucketusPosition.tick_lower_index.fields.bits), - tickUpper: asIntN(feeRateBucketusPosition.tick_upper_index.fields.bits), - tick: asIntN(feeRateBucketusPool.current_tick_index.fields.bits), - liquidity: feeRateBucketusPosition.liquidity, - token0: ADDRESSES.sui.BUCK, - token1: ADDRESSES.sui.USDC, - }); + 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); From f60818bf0da48b55474fa89e7a5f551abef80f49 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 27 Apr 2024 23:27:14 +0530 Subject: [PATCH 1394/2004] Add Defi Llama adapter (#10007) * add: defi llama adapter * code refactor --------- Co-authored-by: Dashan McCain Co-authored-by: Dashan McCain --- projects/ion-protocol/index.js | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/ion-protocol/index.js diff --git a/projects/ion-protocol/index.js b/projects/ion-protocol/index.js new file mode 100644 index 00000000000..26510eaa0d7 --- /dev/null +++ b/projects/ion-protocol/index.js @@ -0,0 +1,41 @@ + +const { lendingMarket } = require("../helper/methodologies"); +const abi = { + debt: "uint256:debt", + totalCollateral: "uint256:totalGem", + totalSupply: "uint256:totalSupply", + underlyingLender: "address:underlying", + underlyingCollateral: "address:GEM", +}; + +module.exports = { + methodology: lendingMarket, +} + +const config = { + ethereum: { + gems: [ + "0x3f6119B0328C27190bE39597213ea1729f061876", // weETH/wstETH GemJoin + "0x3bC3AC09d1ee05393F2848d82cb420f347954432", // rsETH/wstETH GemJoin + "0xD696f9EA3299113324B9065ab19b70758256cf16", // rswETH/wstETH GemJoin + ] + }, +} + +Object.keys(config).forEach(chain => { + const { gems } = config[chain] + module.exports[chain] = { + tvl: async (api) => { + 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({ tokens: tokens.concat(gemUnderlyings), owners: pools.concat(gems) }) + }, + borrowed: async (api) => { + const pools = await api.multiCall({ abi: 'address:POOL', calls: gems }) + const tokens = await api.multiCall({ abi: abi.underlyingLender, calls: pools }) + const debt = await api.multiCall({ abi: abi.debt, calls: pools }) + api.add(tokens, debt.map(b => b / 1e27)) + } + } +}) \ No newline at end of file From 42ffc98c17c9ca36cb4ea2fc994e3d4c33021ab8 Mon Sep 17 00:00:00 2001 From: surf <147225412+surf-exchange@users.noreply.github.com> Date: Sun, 28 Apr 2024 02:09:04 +0800 Subject: [PATCH 1395/2004] Count all liquidity (#9997) * Adding TVL from the Merlin chain * Add SolvBTC * Count all liquidity * minor fix --------- Co-authored-by: surf-rd Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/surfone/index.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/surfone/index.js b/projects/surfone/index.js index d7465716ace..39b3a29b31e 100644 --- a/projects/surfone/index.js +++ b/projects/surfone/index.js @@ -2,6 +2,7 @@ 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) { @@ -12,15 +13,18 @@ async function tvlBase(api) { } async function merlinTvl(api) { - return api.sumTokens({ owners:[merlinPoolContract,merlinPositionContract], tokens: [ADDRESSES.merlin.WBTC, ADDRESSES.merlin.WBTC_1]}) + 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 fee pools for all trading pairs.", + 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)[])" + "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)[])" } From fda103278479680ffaae7f9660413a95a47bdc60 Mon Sep 17 00:00:00 2001 From: Othernet Global <125950061+othernet-global@users.noreply.github.com> Date: Sat, 27 Apr 2024 10:44:57 -0800 Subject: [PATCH 1396/2004] Added saltyio adapter (#9996) * Added saltyio adapter * code refactor --------- Co-authored-by: othernet-global <125950061+salty-io@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/saltyio/abi.json | 8 ++++++++ projects/saltyio/index.js | 32 ++++++++++++++++++++++++++++++++ projects/treasury/saltyio.js | 10 ++++++++++ 3 files changed, 50 insertions(+) create mode 100644 projects/saltyio/abi.json create mode 100644 projects/saltyio/index.js create mode 100644 projects/treasury/saltyio.js diff --git a/projects/saltyio/abi.json b/projects/saltyio/abi.json new file mode 100644 index 00000000000..965aa705fd6 --- /dev/null +++ b/projects/saltyio/abi.json @@ -0,0 +1,8 @@ +{ + "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 new file mode 100644 index 00000000000..5e93dfba868 --- /dev/null +++ b/projects/saltyio/index.js @@ -0,0 +1,32 @@ + + +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: 1713700739, +} + +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/treasury/saltyio.js b/projects/treasury/saltyio.js new file mode 100644 index 00000000000..1d63b743eb3 --- /dev/null +++ b/projects/treasury/saltyio.js @@ -0,0 +1,10 @@ +const { treasuryExports } = require("../helper/treasury"); + +const treasury = "0x35fdBd5b52D131629EA5403FF1bc7ff6A1869D60" // + +module.exports = treasuryExports({ + ethereum: { + owners: [treasury], + ownTokens: ['0x0110B0c3391584Ba24Dbf8017Bf462e9f78A6d9F'] + }, +}) \ No newline at end of file From c1f10c4776e4aab918d7e6de0d3d911a0598426e Mon Sep 17 00:00:00 2001 From: Kacper Bak Date: Sat, 27 Apr 2024 14:02:58 -0700 Subject: [PATCH 1397/2004] added etETH (#9993) --- projects/zircuit/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js index fb3cb2730b1..c476e06d4c5 100644 --- a/projects/zircuit/index.js +++ b/projects/zircuit/index.js @@ -18,7 +18,8 @@ const TOKEN_CONTRACTS = [ '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3', // USDe ADDRESSES.ethereum.STONE, // cSTONE '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa', // mETH - '0xD9A442856C234a39a81a089C06451EBAa4306a72' // pufETH + '0xD9A442856C234a39a81a089C06451EBAa4306a72', // pufETH + '0x18f313Fc6Afc9b5FD6f0908c1b3D476E3feA1DD9' // egETH ]; module.exports = { From 758d60d22e7a524058718719b00910c698c7c262 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 29 Apr 2024 04:01:19 +0100 Subject: [PATCH 1398/2004] add metis and telos --- projects/zkdx-finance/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/zkdx-finance/index.js b/projects/zkdx-finance/index.js index 8e2cb1eaf12..eb628362b88 100644 --- a/projects/zkdx-finance/index.js +++ b/projects/zkdx-finance/index.js @@ -9,4 +9,12 @@ module.exports = { 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 From b672114e275f756c06a7c13dddef477864e9338e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 13:18:57 +0530 Subject: [PATCH 1399/2004] Add Bitlen finance adapter and refactor code (#10017) * add bitlen finance adapter * code refactor --------- Co-authored-by: libaice --- projects/bitlen/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/bitlen/index.js diff --git a/projects/bitlen/index.js b/projects/bitlen/index.js new file mode 100644 index 00000000000..5a72e520a44 --- /dev/null +++ b/projects/bitlen/index.js @@ -0,0 +1,27 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const WBTC_POOL = '0x6996c446b1bfb8cc2ef7a4bc32979de613bcefe1'; +const USDT_POOL = '0xad9b8b6c60ca112ab10670d87d53e6ff86ec3c2a'; +const USDC_POOL = '0x779bddc3cBc62617093CB1E27436C78DA015508E' + +const config = { + bsquared: { + pools: [WBTC_POOL, USDT_POOL, USDC_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 From 773d9f19e24f58404af5034bb817161f2e3fc7ea Mon Sep 17 00:00:00 2001 From: ezoia-com <53337996+ezoia-com@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:53:00 +0700 Subject: [PATCH 1400/2004] Add Boosted Asset Tracking (using PTUSDe, PT*ETH) on Mainnet and Arbitrum (#10015) --- projects/thetanuts/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/projects/thetanuts/index.js b/projects/thetanuts/index.js index 2a4c2d3bad3..68f8d3a3e39 100644 --- a/projects/thetanuts/index.js +++ b/projects/thetanuts/index.js @@ -36,6 +36,9 @@ const indexBTC_BiWeekly_B = "0xB1105529305f166531b7d857B1d6f28000278aff" const PTeETH_27JUN24 = '0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966' const aPTeETH_27JUN24 = '0xE6A9465B9DA25Ddacc55AF5F2a111Db4E80Ba20D' const aWETH = '0xE41645Db7C6813993eEA1cBA83912cE07d8a6d29' +const PTUSDe_25JUL24 = '0xa0021EF8970104c2d008F38D92f115ad56a9B8e1' +const aPTUSDe_25JUL24 = '0xCe51Ca8D61dAb1f84bD95329218b87E95054aB22' +const aUSDC = '0xFB3CbdA3145Fac86040bE8501e0750cd1ddDA0Af' // Avalanche Vaults const avaxCallVault = '0xd06Bd68d58eD40CC2031238A3993b99172ea37cA' @@ -93,6 +96,13 @@ 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' // Polygon zkEVM vaults const stMaticCallVault = '0x7bF3c7C23501EA3E09B237D6F8AdcB7Ea3CeF41C' @@ -192,6 +202,9 @@ const config = { [PTeETH_27JUN24, aPTeETH_27JUN24,], [weth, aWETH,], + [PTUSDe_25JUL24, aPTUSDe_25JUL24,], + [usdc, aUSDC,], + ] }, avax: { @@ -208,6 +221,10 @@ const config = { [usdc_arb, ethPutVaultArb,], [arb, aArb,], [usdc_arb, aUsdc,], + + [PTezETH_27JUN24, aPTezETH_27JUN24,], + [PTrsETH_27JUN24, aPTrsETH_27JUN24,], + [PTweETH_27JUN24, aPTweETH_27JUN24,], ], LLVOwners: [ [univ3nft_arb, arbC_LLV,], From ff0c8de61e02c1a33416416563330cdcda3a1068 Mon Sep 17 00:00:00 2001 From: linchuan Date: Mon, 29 Apr 2024 16:02:46 +0800 Subject: [PATCH 1401/2004] roguex v1 and v2 (#10013) * add roguex * code refactor * add roguex v2 * add roguex v2 --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/roguex/index.js | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/projects/roguex/index.js b/projects/roguex/index.js index 0690d8af218..d5c311393ec 100644 --- a/projects/roguex/index.js +++ b/projects/roguex/index.js @@ -3,16 +3,36 @@ 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, }, + blast: [ + {factory: '0x5B0b4b97edb7377888E2c37268c46E28f5BD81d0', fromBlock: 202321,}, + {factory: '0xbd9215e002E4344c8333fc0bf4F5ECEd62BF9B85', fromBlock: 2525118,} + ], } Object.keys(config).forEach(chain => { - const { factory, fromBlock, } = config[chain] + const [v1, v2] = config[chain] module.exports[chain] = { - tvl: async (api) => { - const logs = await getLogs({ api, target: factory, eventAbi: 'event PoolCreated (address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool, address tradePool)', onlyArgs: true, fromBlock, }) - const ownerTokens = logs.map(i => [[[i.token0, i.token1], i.pool], [[i.token0, i.token1], i.tradePool]]).flat() - return api.sumTokens({ ownerTokens }) + 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}) } } }) From 293756ea43451c61d26c9eefa40656c62676c537 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:05:08 +0800 Subject: [PATCH 1402/2004] add new pools on eth and arb mainnet (#10012) --- projects/airpuff/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 241ed9cfe73..b56adab404f 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -310,6 +310,11 @@ module.exports = { pendleAddress: "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa", }; + const pTEzETHDEC30 = { + vault: "0xebdaDFC590393938b601a9738C3107460838e880", + pendleAddress: "0xf7906F274c174A52d444175729E3fa98f9bde285", + }; + const tokensAndOwners2 = [ pTweETH, pTezETH, @@ -320,6 +325,7 @@ module.exports = { bptzrsETH1x, bptzUSDe1x, bptrswETH1x, + pTEzETHDEC30, ].map((i) => [i.pendleAddress, i.vault]); tokensAndOwners.push(...tokensAndOwners2); await api.sumTokens({ tokensAndOwners }); @@ -345,6 +351,11 @@ module.exports = { pendleAddress: "0xad853EB4fB3Fe4a66CdFCD7b75922a0494955292", }; + const bsolvBTC1X = { + vault: "0x43D10bfB9f1625827Ee8EE7A461eDE28340bdBb5", + tokenAddress: "0x3647c54c4c2C65bC7a2D63c0Da2809B399DBBDC0", + }; + await api.sumTokens({ tokensAndOwners: [ [ADDRESSES.arbitrum.USDC, lendingArb.usdc_e], @@ -354,6 +365,7 @@ module.exports = { [ADDRESSES.arbitrum.ARB, lendingArb.arb], [ADDRESSES.arbitrum.USDC_CIRCLE, lendingArb.usdc], [bptUSDe1x.pendleAddress, bptUSDe1x.vault], + [bsolvBTC1X.tokenAddress, bsolvBTC1X.vault], ], }); From a843fe5ee9c06a4370ef5e332b703e4c8fc8d809 Mon Sep 17 00:00:00 2001 From: fiftyeightandeight Date: Mon, 29 Apr 2024 16:08:41 +0800 Subject: [PATCH 1403/2004] feat: project-lisa (#10011) --- projects/lisa/api.js | 14 ++++++++++++++ projects/lisa/index.js | 6 ++++++ 2 files changed, 20 insertions(+) create mode 100644 projects/lisa/api.js create mode 100644 projects/lisa/index.js diff --git a/projects/lisa/api.js b/projects/lisa/api.js new file mode 100644 index 00000000000..73d6f54fcd5 --- /dev/null +++ b/projects/lisa/api.js @@ -0,0 +1,14 @@ +const { call } = require('../helper/chain/stacks-api') + +module.exports = { + timetravel: false, + stacks: { tvl } +} + +async function tvl() { + const target = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.token-lqstx' + const currentCycle = await call({ target, abi: 'get-reserve' }) + return { + blockstack: currentCycle.value / 1e6 + } +} \ No newline at end of file diff --git a/projects/lisa/index.js b/projects/lisa/index.js new file mode 100644 index 00000000000..f9255ff2d9f --- /dev/null +++ b/projects/lisa/index.js @@ -0,0 +1,6 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + ...getExports("lisa", ['stacks']), +} From 88fefec91ff764cc84684f5db309cdf6011bab66 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:50:11 +0200 Subject: [PATCH 1404/2004] reduce logging --- projects/helper/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/utils.js b/projects/helper/utils.js index b5855a7314f..8ac2743cccd 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -110,8 +110,8 @@ function isLP(symbol, token, chain) { 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) + // if (isLPRes && !['UNI-V2', 'Cake-LP'].includes(symbol)) + // sdk.log(chain, symbol, token) return isLPRes } From 4928d7dcb6ec202dd6d92f586df292a82e264242 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 13:58:16 +0200 Subject: [PATCH 1405/2004] refactor acala apps --- projects/helper/acala/api.js | 70 +++++--------------------- projects/helper/acala/dex-staking.js | 30 ----------- projects/helper/acala/dex.js | 28 +++++++---- projects/helper/acala/lcdot.js | 8 +-- projects/helper/acala/lending.js | 5 +- projects/helper/acala/liquidStaking.js | 26 ++++------ projects/helper/tokenMapping.js | 14 ++++++ projects/taiga/api.js | 10 ++-- projects/tapio/api.js | 8 ++- 9 files changed, 71 insertions(+), 128 deletions(-) delete mode 100644 projects/helper/acala/dex-staking.js diff --git a/projects/helper/acala/api.js b/projects/helper/acala/api.js index f0d5323e48b..80f6e225ece 100644 --- a/projects/helper/acala/api.js +++ b/projects/helper/acala/api.js @@ -1,10 +1,9 @@ const { ApiPromise, WsProvider } = require("@polkadot/api") -const { Wallet } = require("@acala-network/sdk/wallet") -const { FixedPointNumber, forceToCurrencyName } = require("@acala-network/sdk-core"); const { options } = require("@acala-network/api") const sdk = require('@defillama/sdk') +const { getCoreAssets } = require("../tokenMapping") const api = {} @@ -63,16 +62,6 @@ async function getAPI(chain) { return api[chain] } -async function getWallet(chain) { - const api = await getAPI(chain) - const wallet = new Wallet(api, { - supportAUSD: true, - }) - - await wallet.isReady - return wallet -} - const fixMapping = { parallel: { 101: { geckoId: 'polkadot', decimals: 10, }, @@ -199,58 +188,25 @@ async function getTokenPrices({ api, chain = '' }) { } } -const geckoMappings = { - acala: { - token: { - ACA: 'acala', - DOT: 'polkadot', - // AUSD: 'acala-dollar', - // LDOT: 'liquid-staking-dot', // coingecko delisted it - }, - liquidCrowdloan: { - // 13: 'liquid-crowdloan-dot', // coingecko delisted it - } - }, - karura: { - token: { - KSM: 'kusama', - LKSM: 'liquid-ksm', - KAR: 'karura', - BNC: 'bifrost-native-coin', - KINT: 'kintsugi', - KBTC: 'kintsugi-btc', - }, - liquidCrowdloan: { - } - }, +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, '') } -async function addTokenBalance({ balances, amount, chain, tokenArg, api, wallet, }) { - if (!api) api = await getAPI(chain) - if (!wallet) wallet = await getWallet(chain) - const geckoMapping = geckoMappings[chain] - const tokenJson = tokenArg.toJSON() - const token = await wallet.getToken(forceToCurrencyName(tokenArg)); - amount = FixedPointNumber.fromInner(amount.toString(), token.decimals) - - if (tokenJson.token && geckoMapping.token[tokenJson.token]) - return sdk.util.sumSingleBalance(balances, geckoMapping.token[tokenJson.token], amount.toNumber()) - - if (tokenJson.liquidCrowdloan && geckoMapping.liquidCrowdloan[tokenJson.liquidCrowdloan]) - return sdk.util.sumSingleBalance(balances, geckoMapping.liquidCrowdloan[tokenJson.liquidCrowdloan], amount.toNumber()) - - if (chain === 'acala' && tokenJson.foreignAsset === 3) return; - - const price = await wallet.getPrice(token) - if (price) { - sdk.log('Adding token value in USD (in millions), amount: ', forceToCurrencyName(tokenArg), amount.times(price).toNumber() / 1e6, amount.toNumber()/1e6,) - sdk.util.sumSingleBalance(balances, 'tether', amount.times(price).toNumber()) +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.toString(), chain) } module.exports = { getAPI, - getWallet, + getTokenName, getTokenPrices, addTokenBalance, } diff --git a/projects/helper/acala/dex-staking.js b/projects/helper/acala/dex-staking.js deleted file mode 100644 index c73626dfb96..00000000000 --- a/projects/helper/acala/dex-staking.js +++ /dev/null @@ -1,30 +0,0 @@ -const { FixedPointNumber, forceToCurrencyName } = require("@acala-network/sdk-core"); -const { getAPI, getWallet } = require('./api') - -async function dexStaking(chain){ - const api = await getAPI(chain) - const wallet = await getWallet(chain) - const data = await api.query.rewards.poolInfos.entries(); - let total = FixedPointNumber.ZERO; - const filterData = data.filter(([token]) => { - return token.toHuman()[0].Dex - }); - - for (let i = 0; i < filterData.length; i++) { - const [token, amount] = filterData[i]; - - const lpToken = await wallet.getToken(forceToCurrencyName(token.args[0].asDex)); - const totalShares = FixedPointNumber.fromInner(amount.totalShares.toString(), lpToken.decimals); - const price = await wallet.getPrice(lpToken.name); - - total = total.add(totalShares.times(price)); - } - - return { - tether: total.toNumber() - } -} - -module.exports = { - dexStaking -} diff --git a/projects/helper/acala/dex.js b/projects/helper/acala/dex.js index c24b5f52d3b..6a422b62983 100644 --- a/projects/helper/acala/dex.js +++ b/projects/helper/acala/dex.js @@ -1,21 +1,31 @@ -const { getAPI, addTokenBalance } = require('./api') +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 balances = {} - const promises = [] + const coreAssets = getCoreAssets(chain) + const dexData = [] - for (let i = 0; i < data.length; i++) { - const [token, amount] = data[i]; - promises.push(addTokenBalance({ balances, chain, amount: amount[0], tokenArg: token.args[0][0], })) - promises.push(addTokenBalance({ balances, chain, amount: amount[1], tokenArg: token.args[0][1], })) + 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], + }) + }) - await Promise.all(promises) - return balances + return transformDexBalances({ chain, data: dexData }) } module.exports = { diff --git a/projects/helper/acala/lcdot.js b/projects/helper/acala/lcdot.js index 12812989e55..279e927c008 100644 --- a/projects/helper/acala/lcdot.js +++ b/projects/helper/acala/lcdot.js @@ -1,12 +1,12 @@ -const { getWallet } = require('./api') +const { getAPI } = require('./api') async function staking(chain) { - const wallet = await getWallet(chain) - const supply = await wallet.getIssuance('lc://13') + const api = await getAPI(chain) + const data = await api.query.tokens.totalIssuance( { LiquidCrowdLoan: '13' } ) return { - polkadot: supply.toNumber() + polkadot: data/1e10 } } diff --git a/projects/helper/acala/lending.js b/projects/helper/acala/lending.js index 964767999a2..9b087ed6d6f 100644 --- a/projects/helper/acala/lending.js +++ b/projects/helper/acala/lending.js @@ -1,3 +1,4 @@ +const { transformBalances } = require('../portedTokens'); const { getAPI, addTokenBalance } = require('./api') async function lending(chain){ @@ -8,10 +9,10 @@ async function lending(chain){ for (let i = 0; i < data.length; i++) { const [_token, amount] = data[i]; - await addTokenBalance({ balances, chain, tokenArg: _token.args[0], amount: amount.collateral }) + addTokenBalance({ balances, chain, tokenArg: _token.args[0], amount: amount.collateral }) } - return balances + return transformBalances(chain, balances) } module.exports = { diff --git a/projects/helper/acala/liquidStaking.js b/projects/helper/acala/liquidStaking.js index 3f534b5b8f2..011916cfbc1 100644 --- a/projects/helper/acala/liquidStaking.js +++ b/projects/helper/acala/liquidStaking.js @@ -1,33 +1,29 @@ -const { FixedPointNumber } = require("@acala-network/sdk-core") -const { getAPI, getWallet } = require('./api') +const { getAPI, } = require('./api') -const getTotalStaking = async (api, token) => { +const getTotalStaking = async (api) => { const toBond = await api.query.homa.toBondPool(); const stakingLedgers = await api.query.homa.stakingLedgers.entries(); - let totalInSubAccount = FixedPointNumber.ZERO; + let totalInSubAccount = 0; stakingLedgers.map(item => { const ledge = item[1].unwrapOrDefault(); - totalInSubAccount = totalInSubAccount.add(FixedPointNumber.fromInner(ledge.bonded.unwrap().toString(), token.decimals)); + totalInSubAccount += +ledge.bonded.unwrap() }) - const total = FixedPointNumber.fromInner(toBond.toString(), token.decimals).add(totalInSubAccount); - - return total; + return +toBond + +totalInSubAccount } async function staking(chain) { const api = await getAPI(chain) - const wallet = await getWallet(chain) - const getStakingCurrencyId = api.consts.prices.getStakingCurrencyId; - const stakingToken = await wallet.getToken(getStakingCurrencyId); - const price = await wallet.getPrice(stakingToken); - - const total = await getTotalStaking(api, stakingToken) + const total = await getTotalStaking(api) + if (chain === 'acala') + return { + polkadot: +total / 1e10, + } return { - tether: total.times(price).toNumber(), + kusama: +total / 1e12, } } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 352b06ef306..f13cd69e359 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -142,6 +142,20 @@ const fixBalancesTokens = { [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, [ADDRESSES.zora.USDzC]: { coingeckoId: "usd-coin", decimals: 6, }, }, + acala: { + ACA: { coingeckoId: "acala", decimals: 12 }, + LDOT: { coingeckoId: "liquid-staking-dot", decimals: 10 }, + DOT: { coingeckoId: "polkadot", decimals: 10 }, + }, + karura: { + KSM: { coingeckoId: "kusama", decimals: 12 }, + LKSM: { coingeckoId: "liquid-ksm", decimals: 12 }, + KAR: { coingeckoId: "karura", decimals: 12 }, + BNC: { coingeckoId: "bifrost-native-coin", decimals: 12 }, + PHA: { coingeckoId: "pha", decimals: 12 }, + KINT: { coingeckoId: "kintsugi", decimals: 12 }, + KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/taiga/api.js b/projects/taiga/api.js index b81c9410b12..0de42573039 100644 --- a/projects/taiga/api.js +++ b/projects/taiga/api.js @@ -1,5 +1,4 @@ const { getAPI } = require('../helper/acala/api') -const { forceToCurrencyId } = require("@acala-network/sdk-core"); const sdk = require('@defillama/sdk') module.exports = { @@ -18,19 +17,18 @@ module.exports = { const usdcBalance = usdcRes / 1e6 return { - kusama: (await balanceOf(api, account, 'KSM')) / 1e12, - 'liquid-ksm': (await balanceOf(api, account, 'LKSM')) / 1e12, + 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, 'fa://7')) / 1e6, + tether: (await balanceOf(api, account_3USD, { ForeignAsset: '7'})) / 1e6, } } }, }; async function balanceOf(api, account, token) { - const currencyId = await forceToCurrencyId(api, token) - const tokenRes = await api.query.tokens.accounts(account, currencyId) + const tokenRes = await api.query.tokens.accounts(account, token) return +tokenRes.toHuman().free.replace(/,/g, '') } diff --git a/projects/tapio/api.js b/projects/tapio/api.js index 483cd71f557..56b8478308f 100644 --- a/projects/tapio/api.js +++ b/projects/tapio/api.js @@ -1,5 +1,4 @@ const { getAPI } = require('../helper/acala/api') -const { forceToCurrencyId } = require("@acala-network/sdk-core"); module.exports = { acala: { @@ -8,15 +7,14 @@ module.exports = { const api = await getAPI(chain) const account = '23M5ttkp2zdM8qa6LFak4BySWZDsAVByjepAfr7kt929S1U9' return { - polkadot: (await balanceOf(api, account, 'DOT')) / 1e10, - 'liquid-staking-dot': (await balanceOf(api, account, 'LDOT')) / 1e10, + 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 currencyId = await forceToCurrencyId(api, token) - const tokenRes = await api.query.tokens.accounts(account, currencyId) + const tokenRes = await api.query.tokens.accounts(account, token) return +tokenRes.toHuman().free.replace(/,/g, '') } From 3978546fc9ec95a6e4e2ed35a4735051a9b0d277 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:11:59 +0200 Subject: [PATCH 1406/2004] refactor acala apps --- projects/helper/acala/api.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/projects/helper/acala/api.js b/projects/helper/acala/api.js index 80f6e225ece..c8effb9675b 100644 --- a/projects/helper/acala/api.js +++ b/projects/helper/acala/api.js @@ -1,10 +1,13 @@ - - const { ApiPromise, WsProvider } = require("@polkadot/api") -const { options } = require("@acala-network/api") +const aTypes = require("@acala-network/types") const sdk = require('@defillama/sdk') const { getCoreAssets } = require("../tokenMapping") +const options = ({ provider }) => ({ + provider, + typesBundle: aTypes.acalaTypesBundle +}) + const api = {} const providers = { @@ -194,14 +197,14 @@ const getTokenName = tokenJson => { return chain + ':' + JSON.stringify(tokenJson).replace(/(\{|\}|\s|")/g, '') } -function addTokenBalance({ balances, amount, chain, tokenArg, api, wallet, }) { +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.toString(), chain) + sdk.util.sumSingleBalance(balances, getTokenName(tokenArg), amount) } module.exports = { From 02eedfc88c0a3f4f6f31290ef63380cad461aa82 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:32:37 +0200 Subject: [PATCH 1407/2004] fix broken adapters --- projects/helper/acala/api.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/projects/helper/acala/api.js b/projects/helper/acala/api.js index c8effb9675b..612a49e728e 100644 --- a/projects/helper/acala/api.js +++ b/projects/helper/acala/api.js @@ -1,12 +1,7 @@ const { ApiPromise, WsProvider } = require("@polkadot/api") -const aTypes = require("@acala-network/types") const sdk = require('@defillama/sdk') const { getCoreAssets } = require("../tokenMapping") -const options = ({ provider }) => ({ - provider, - typesBundle: aTypes.acalaTypesBundle -}) const api = {} @@ -58,7 +53,7 @@ const providers = { async function getAPI(chain) { if (!api[chain]) { const provider = new WsProvider(providers[chain]); - api[chain] = ApiPromise.create(options({ provider })) + api[chain] = ApiPromise.create({ provider }) } await api[chain].isReady From 79831173d8bd305bebac9be6ecd7e1197aaf66df Mon Sep 17 00:00:00 2001 From: enkilsd <139135879+enkilsd@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:32:20 +0800 Subject: [PATCH 1408/2004] Update enki tvl (#10019) Co-authored-by: enki <> --- projects/enki/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/enki/index.js b/projects/enki/index.js index 4247056fa75..8d99d5e7b5e 100644 --- a/projects/enki/index.js +++ b/projects/enki/index.js @@ -1,9 +1,8 @@ const ADDRESSES = require('../helper/coreAssets.json') async function tvl(_, _1, _2, { api }) { const stakedMetis = await api.call({ - abi: 'erc20:balanceOf', - target: ADDRESSES.metis.Metis, - params: ['0x810Ef8Aa1326FB1c5Ce57cD79d549CF9B2cC32aF'] + abi: 'erc20:totalSupply', + target: '0x97a2de3A09F4A4229369ee82c7F76be1a5564661', }); api.add(ADDRESSES.metis.Metis, stakedMetis); From 1392ee6536ffdd5e7d1256034e0d6a9b5ed8676e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 15:34:06 +0200 Subject: [PATCH 1409/2004] bugfix --- projects/helper/acala/api.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/projects/helper/acala/api.js b/projects/helper/acala/api.js index 612a49e728e..7ba0d16c0cf 100644 --- a/projects/helper/acala/api.js +++ b/projects/helper/acala/api.js @@ -186,11 +186,6 @@ async function getTokenPrices({ api, 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, '') -} async function addTokenBalance({ balances, amount, chain, tokenArg, api, wallet, }) { const coreAssets = getCoreAssets(chain) @@ -204,7 +199,6 @@ async function addTokenBalance({ balances, amount, chain, tokenArg, api, wallet, module.exports = { getAPI, - getTokenName, getTokenPrices, addTokenBalance, } From 57f53641c3a32071fb1dd33ec556750c5b2f13c1 Mon Sep 17 00:00:00 2001 From: cerraio <147749662+cerraio@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:37:28 -0700 Subject: [PATCH 1410/2004] add AMM TVL (#10018) --- projects/cerra/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/cerra/index.js b/projects/cerra/index.js index 077d116cc0f..1361646e699 100644 --- a/projects/cerra/index.js +++ b/projects/cerra/index.js @@ -1,9 +1,10 @@ const { sumTokens2 } = require("../helper/chain/cardano"); const LENDING_SCRIPT = "addr1z878lgw0676mfkusf0f2h9wl3w5q2zu0klrlcamv6g2werc0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhqfmh5zc"; +const AMM_SCRIPT = "addr1zyl8u7cw93g99g2e68cq3k27ad7rd8p6yy3yg9vesgahrus0pqnxu0fg7wvwgjtgzvg6lg6avzczmwf84aclygrvlkhq2a0paj"; async function tvl() { - return sumTokens2({ scripts: [LENDING_SCRIPT] }) + return sumTokens2({ scripts: [LENDING_SCRIPT, AMM_SCRIPT] }) } module.exports = { From 9f5b58755c6aba87a347381acfc1179ba878600f Mon Sep 17 00:00:00 2001 From: VensonLiou <48060449+VensonLiou@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:40:06 +0800 Subject: [PATCH 1411/2004] teahouse: 1. consider double counting issue and aave aToken, 2. support starknet pair vaults (#10010) Co-authored-by: Venson --- projects/teahouse-v3/abi.js | 23 ++++++++++ projects/teahouse-v3/abi.json | 7 --- projects/teahouse-v3/index.js | 81 +++++++++++++++++++++++++++-------- 3 files changed, 86 insertions(+), 25 deletions(-) create mode 100644 projects/teahouse-v3/abi.js delete mode 100644 projects/teahouse-v3/abi.json diff --git a/projects/teahouse-v3/abi.js b/projects/teahouse-v3/abi.js new file mode 100644 index 00000000000..f286f9420cd --- /dev/null +++ b/projects/teahouse-v3/abi.js @@ -0,0 +1,23 @@ +module.exports = { + assetToken1: "function assetToken1() view returns (address)", + estimatedValueIntoken1: "function estimatedValueInToken1() view returns (uint256 value1)", + 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", + }, + estimated_value_in_token0: { + type: "function", + state_mutability: "view", + name: "estimated_value_in_token0", + inputs: [], + outputs: [{ name: "value", type: "Uint256" }], + }, +}; diff --git a/projects/teahouse-v3/abi.json b/projects/teahouse-v3/abi.json deleted file mode 100644 index eb53597a085..00000000000 --- a/projects/teahouse-v3/abi.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "decimals": "function decimals() view returns (uint8)", - "assetToken1": "function assetToken1() view returns (address)", - "estimatedValueIntoken1": "function estimatedValueInToken1() view returns (uint256 value1)", - "assets": "function assets(uint256) view returns (address)", - "calculateTotalValue": "function calculateTotalValue() view returns (uint256)" -} diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 8b05f41d08d..53240386c1e 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -1,4 +1,5 @@ -const abi = require("./abi.json"); +const abi = require("./abi.js") +const starknet = require("../helper/chain/starknet"); const { getConfig } = require("../helper/cache"); // teahouse public api for vault @@ -7,34 +8,44 @@ const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; // get vault contract addresses from teahouse api async function getVaultContractsAddress(chain) { let pairVault = []; - let portVault = [] + let portVault = []; + let starknetPairVault = []; const { vaults } = await getConfig("teahouse/v3", teahouseVaultAPI); vaults.forEach((element) => { // permissionless vaults if (element.isDeFi == true && element.isActive == true) { if (element.chain === chain) { - const type = element.type.toLowerCase(); - if (type === 'v3pair') { - pairVault.push(element.share.address); - } else if (type === 'v3port') { - portVault.push(element.share.address); + // 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 + port: portVault, + starknetPair: starknetPairVault, }; } -const chains = ["ethereum", "optimism", "arbitrum", 'polygon', 'boba', 'mantle']; +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); + // EVM pair vault let tokens = await api.multiCall({ abi: abi.assetToken1, calls: vaults.pair, @@ -45,15 +56,49 @@ chains.forEach((chain) => { }); api.addTokens(tokens, bals); - tokens = await api.multiCall({ abi: "address[]:getAssets", calls: vaults.port }) - const allTokens = [...new Set(tokens.flat())] - const symbols = await api.multiCall({ abi: 'string:symbol', calls: allTokens }) - const sMap = Object.fromEntries(allTokens.map((address, i) => [address, symbols[i]])) - const ownerTokens = vaults.port.map((v, i) => { - const tokenList = tokens[i].filter(t => !sMap[t].startsWith('TEA-')) - return [tokenList, v] - }) - return api.sumTokens({ ownerTokens}) + // EVM portfolio vault + 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 + tokens = await starknet.multiCall({ + abi: abi.asset_token0, + calls: vaults.starknetPair, + }); + bals = await starknet.multiCall({ + abi: abi.estimated_value_in_token0, + calls: vaults.starknetPair, + }); + api.addTokens(tokens, bals); + + return api.getBalances(); }, }; }); From 264f5c80d5f280835f7aa70ff16b5deabb16cb74 Mon Sep 17 00:00:00 2001 From: LeviathanYou <168118002+LeviathanYou@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:20:35 +0800 Subject: [PATCH 1412/2004] feat: add meson tvl (#10009) * feat: add meson tvl * meson: track more chains --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 3 + projects/meson/index.js | 124 ++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 projects/meson/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f13cd69e359..2b808093ec6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -35,6 +35,9 @@ const ibcMappings = { } const fixBalancesTokens = { + ancient8: { + [ADDRESSES.nul]: { coingeckoId: "ethereum", decimals: 18, }, + }, area: { '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf': { coingeckoId: 'areon-network', decimals: 18, }, }, diff --git a/projects/meson/index.js b/projects/meson/index.js new file mode 100644 index 00000000000..730166f6487 --- /dev/null +++ b/projects/meson/index.js @@ -0,0 +1,124 @@ +const { sumToken2, nullAddress, sumTokens2 } = require('../helper/unwrapLPs'); +const { getConfig } = require('../helper/cache') +const defaultOwner = '0x25aB3Efd52e6470681CE037cD546Dc60726948D3' + +const config = { + merlin: { + tokens: [ + '0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D', + '0x480E158395cC5b41e5584347c495584cA2cAf78d', + '0x6b4eCAdA640F1B30dBdB68f77821A03A5f282EbE', + '0x967aEC3276b63c5E2262da9641DB9dbeBB07dC0d', + '0x9bd60d6FC99843207B8149f9190438C1F81BDdcD', + '0xB5d8b1e73c79483d7750C5b8DF8db45A0d24e2cf', + '0xB880fd278198bd590252621d4CD071b1842E9Bcd', + '0xc21d5dEB02248bEa5aC3Ea51695bF2Cd36A4Ad2b', + '0xd5534269e027bCb81d319e4213f665fab011038e', + ], + }, + bsquared: { + tokens: [ + '0x681202351a488040Fa4FdCc24188AfB582c9DD62', + '0x7537C1F80c9E157ED7AFD93a494be3e1f04f1462', + '0xa793740863F1710A87070a5918820976ff32B758', + '0xC2Fe4f673455Ef92299770a09CDB5E8756A525D5', + '0xD48d3A551757ac47655fCe25BDE1B0B6b1Cb2a5A', + '0xE544e8a38aDD9B1ABF21922090445Ba93f74B9E5', + ], + id: 'b2', + }, + zkfair: { + tokens: [ + '0x4b21b980d0Dc7D3C0C6175b0A412694F3A1c7c6b', + ], + }, + xlayer: { + tokens: [ + '0x1e4a5963abfd975d8c9021ce480b42188849d41d', + '0x5a77f1443d16ee5761d310e38b62f77f726bc71c', + '0x74b7f16337b8972027f6196a17a631ac6de26d22', + '0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1', + ], + }, + blast: { + tokens: [ + '0x4300000000000000000000000000000000000003', + '0x58ef828c7b11dbed86291d328beb08f050738c37', + '0x01593B8AaaDc5238F2f5C8597bC1402eB7a48c5f', + '0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d', + ], + }, + tron: { + owner: 'TKWqpzNucNNBMpfaE47F8CLhA8vzfNndH4', + tokens: [ + 'TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq', + 'TE2RzoSV3wFK99w6J9UnnZ4vLfXYoxvRwP', + 'TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', + 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7', + 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', + 'TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9', + 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', + 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', + 'TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn', + 'TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT', + 'TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', + ], + }, + ancient8: { id: 'ancient8' }, + arbitrum: { id: 'arb' }, + aurora: {}, + avax: {}, + base: {}, + blast: {}, + core: {}, + celo: {}, + cronos: {}, + inevm: {}, + kava: {}, + linea: {}, + manta: {}, + map: {}, + metis: {}, + mode: {}, + polygon: {}, + scroll: {}, + xlayer: {}, + zeta: {}, + zkfair: {}, + zklink: {}, + // naut: {}, + 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'}, +} + +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 From 056aa7ad6b37e669626ba9e79d53ebdd4e0bde4e Mon Sep 17 00:00:00 2001 From: 0xMemoryGrinder <35138272+0xMemoryGrinder@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:21:20 -0400 Subject: [PATCH 1413/2004] feat(tholgar): added v2 vault (#10008) --- projects/tholgar/index.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/projects/tholgar/index.js b/projects/tholgar/index.js index 327db58d126..e79f638b014 100644 --- a/projects/tholgar/index.js +++ b/projects/tholgar/index.js @@ -3,6 +3,7 @@ const abi = require("./abi.json"); const WAR_CONTROLLER = "0xFDeac9F9e4a5A7340Ac57B47C67d383fb4f13DBb"; const WAR_REDEEMER = "0x4787Ef084c1d57ED87D58a716d991F8A9CD3828C"; +const VAULT_V2 = '0x2fc1E74BC8A6D15fE768c10C2EDe7D6d95ec27e9'; const VAULT = '0x188cA46Aa2c7ae10C14A931512B62991D5901453'; const WAR = '0xa8258deE2a677874a48F5320670A869D74f0cbC1'; @@ -25,7 +26,7 @@ async function getLockers(api) { return lockers; } -async function ethTvl(api,) { +async function warlordTvl(api, vaultAddress) { const balances = {}; const lockers = await getLockers(api); @@ -35,17 +36,25 @@ async function ethTvl(api,) { 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: VAULT, abi: abi['totalAssets']}); + const vaultBalance = await api.call({ target: vaultAddress, abi: abi['totalAssets']}); const ratio = vaultBalance / totalSupply; bals.forEach((v, i) => { - // console.log(balances, tokens[i], (v - tokensQueued[i]) * ratio, Math.floor((v - tokensQueued[i]) * ratio).toString(), BigInt(1.731174581703269e+21.)) 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: { From 547778d2074e15814b981f495a44e7a47b57bcbc Mon Sep 17 00:00:00 2001 From: fiftyeightandeight Date: Mon, 29 Apr 2024 22:22:49 +0800 Subject: [PATCH 1414/2004] fix: project-lisa (#10020) * feat: project-lisa * fix: pending added --- projects/lisa/api.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/lisa/api.js b/projects/lisa/api.js index 73d6f54fcd5..0b9030e3362 100644 --- a/projects/lisa/api.js +++ b/projects/lisa/api.js @@ -6,9 +6,11 @@ module.exports = { } async function tvl() { - const target = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.token-lqstx' - const currentCycle = await call({ target, abi: 'get-reserve' }) + const reserveAddr = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.token-lqstx'; + const registryAddr = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.lqstx-mint-registry'; + const reserve = await call({ reserveAddr, abi: 'get-reserve' }); + const pending = await call({ registryAddr, abi: 'get-mint-requests-pending-amount'}); return { - blockstack: currentCycle.value / 1e6 + blockstack: (reserve.value + pending.value) / 1e6 } } \ No newline at end of file From 1308f41c9f60f66660c1325bba54733c64e25ea2 Mon Sep 17 00:00:00 2001 From: "Web3.World" <165679484+web3world@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:51:22 +0700 Subject: [PATCH 1415/2004] feat: added venomstake tvl adapter (#10001) --- projects/venomstake/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/venomstake/index.js diff --git a/projects/venomstake/index.js b/projects/venomstake/index.js new file mode 100644 index 00000000000..138e22c36a1 --- /dev/null +++ b/projects/venomstake/index.js @@ -0,0 +1,14 @@ +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 + } +}; From 38947d52c5c06bf4500dd637aad8444a5b4671de Mon Sep 17 00:00:00 2001 From: Evan | zkLink Labs Date: Mon, 29 Apr 2024 23:47:04 +0800 Subject: [PATCH 1416/2004] Update the tvl calculation logic for zkLink nova on Ethereum (#9976) * fix: supoort nETH for zkLink Nova * Added neth. * updaste convertToAsserts * Added rneth, neth, mmeth. * remove unused code * remove test token * fix the duplicate calculation of mmeth. * code refactor --------- Co-authored-by: robert-zklink Co-authored-by: robert-zklink <165130159+robert-zklink@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkLink/index.js | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 3d217bfd4e9..c50e98ef49a 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -1,6 +1,5 @@ -const { sumTokensExport } = require("../helper/unwrapLPs"); +const { sumTokens2 } = require("../helper/unwrapLPs"); const ADDRESSES = require("../helper/coreAssets.json"); -const ERA_ETH_ADDRESS = "0x000000000000000000000000000000000000800A"; const config = { ethereum: { @@ -9,11 +8,13 @@ const config = { "0xAd16eDCF7DEB7e90096A259c81269d811544B6B6", ], tokens: [ + ADDRESSES.null, "0x8a053350ca5F9352a16deD26ab333e2D251DAd7c", // mmETH "0xE46a5E19B19711332e33F33c2DB3eA143e86Bc10", // mwBETH "0x32bd822d615A3658A68b6fDD30c2fcb2C996D678", // mswETH "0x49446A0874197839D15395B908328a74ccc96Bc0", // mstETH "0xC6572019548dfeBA782bA5a2093C836626C7789A", // nETH + "0x9Dc7e196092DaC94f0c76CFB020b60FA75B97C5b", // rnETH "0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812", // wUSDM ] }, @@ -24,8 +25,7 @@ const config = { ], tokens: [ "0x4186BFC76E2E237523CBC30FD220FE055156b41F", // rsETH - "0x3082CC23568eA640225c2467653dB90e9250AaA0", // RDNT - "0x3abb0E23618a042ef55a624b903E9873F8756881", // ZKT + "0x3082CC23568eA640225c2467653dB90e9250AaA0", // RDNT ], }, linea: { @@ -36,8 +36,7 @@ const config = { tokens: [ "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", // WBTC ADDRESSES.blast.ezETH, // ezETH - "0xB5beDd42000b71FddE22D3eE8a79Bd49A568fC8F", // wstETH - "0x531e4901EB141a71e111Cc23Fc4fBD4B7dB788d5", // ZKT + "0xB5beDd42000b71FddE22D3eE8a79Bd49A568fC8F", // wstETH ADDRESSES.linea.USDT, // USDT ADDRESSES.linea.DAI, // DAI ADDRESSES.linea.USDC, // USDC @@ -65,7 +64,6 @@ const config = { "0xCAbAE6f6Ea1ecaB08Ad02fE02ce9A44F09aebfA2", // WBTC "0xcDA86A272531e8640cD7F1a92c01839911B90bb0", // meth "0x779f4E5fB773E17Bc8E809F4ef1aBb140861159a", // KTC - "0x531e4901EB141a71e111Cc23Fc4fBD4B7dB788d5", // zkt ], }, manta: { @@ -80,7 +78,6 @@ const config = { "0xEc901DA9c68E90798BbBb74c11406A32A70652C3", //STONE "0xbdAd407F77f44F7Da6684B416b1951ECa461FB07", //WUSDM "0x34c7Ad65E4163306f8745996688b476914201cE0", //uniETH - "0x9Af5CC797695717A20eCF3E258D6303316277A55", //ZKT ], }, blast: { @@ -91,7 +88,6 @@ const config = { tokens: [ ADDRESSES.null, ADDRESSES.blast.ezETH, // ezeth - "0x8cDe337D4D39f692f867c9FFA696f555EdaB4BeD", // zkt "0x038f1C6ED5FccF690A920a27b39366eeeF27eFCe", // rich "0x5FE8534a6F96cb01261Bd96e98c17C2c1Cab3204", // BAJA "0xf782E172A14Ee1c85cD980C15375bA0E87957028", // CACA @@ -104,7 +100,6 @@ const config = { ], tokens: [ "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", // wstETH - "0x60F6659f92Db201670c39CC51D3630eD32cEdBb5", // ZKT ], }, optimism: { @@ -112,15 +107,14 @@ const config = { "0x46C8D02E93d5a03899dFa7Cf8A40A07589A3fA1b", "0x5Bd51296423A9079b931414C1De65e7057326EaA", ], - tokens: [ - "0x7d685a13eaFd76c12Dc6a9E9340778381Eef6bd7", // ZKT - ], }, } -Object.keys(config).forEach(chain => { - const fetchCoValentTokens = !['manta'].includes(chain) - module.exports[chain] = { - tvl: sumTokensExport({ ...config[chain], fetchCoValentTokens, }) - } +async function tvl(api) { + const fetchCoValentTokens = !['manta', 'mantle', 'blast'].includes(api.chain) + return sumTokens2({ api, ...config[api.chain], fetchCoValentTokens, }) +} + +Object.keys(config).forEach(async chain => { + module.exports[chain] = { tvl } }) From 99e21719b1f446f344b9f598ba08576e86eb5f5d Mon Sep 17 00:00:00 2001 From: D <105202131+dmitrykarpushkin@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:02:24 +0400 Subject: [PATCH 1417/2004] Update TVL and borrowed with USDC (#9990) --- projects/banx/index.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/projects/banx/index.js b/projects/banx/index.js index aa58548820b..2f87f287ba1 100644 --- a/projects/banx/index.js +++ b/projects/banx/index.js @@ -16,33 +16,44 @@ async function getData() { const idl = await getConfig('banx-idl', 'https://raw.githubusercontent.com/frakt-solana/banx-public-sdk/master/src/fbond-protocol/idl/bonds.json') const program = new Program(idl, programId, provider) - const fraktBondsOffset = 8; const bondOfferOffset = 32 + 8; + const bondTradeTxnOffset = 8; const [ - fraktBonds, bondOffers, + bondTradeTxn, ] = await Promise.all([ - getFilteredAccounts(program, 'fraktBond', fraktBondsOffset, [5,]), getFilteredAccounts(program, 'bondOfferV2', bondOfferOffset, [5, 7,]), - + getFilteredAccounts(program, 'bondTradeTransactionV3', bondTradeTxnOffset, [2, 6, 9]), ]) // OffersSum is sum of sol in pools not yet lent out. The borrowedSum is the sum of SOL which has been borrowed and overcollaterized by the value of locked NFTs - const offersSum = bondOffers.reduce((acc, offer) => acc + (+offer.account.fundsSolOrTokenBalance) + Math.max(0, +offer.account.bidSettlement), 0) + const { offersSum, offersSumUsdc } = bondOffers.reduce(({ offersSum, offersSumUsdc }, offer) => { + if (offer.account.bondingCurve.bondingType.linearUsdc || offer.account.bondingCurve.bondingType.exponentialUsdc) { + return { offersSumUsdc: offersSumUsdc + (+offer.account.fundsSolOrTokenBalance) + Math.max(0, +offer.account.bidSettlement), offersSum }; + } + return { offersSum: offersSum + (+offer.account.fundsSolOrTokenBalance) + Math.max(0, +offer.account.bidSettlement), offersSumUsdc }; + }, { offersSum: 0, offersSumUsdc: 0 }); - const borrowedSum = fraktBonds.reduce((acc, bond) => acc + bond.account.borrowedAmount.toNumber(), 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: offersSum, borrowed: borrowedSum } + return { tvl: offersSum, tvlUsdc: offersSumUsdc, borrowed: borrowedSum, borrowedUsdc: borrowedSumUsdc } } } const tvl = async () => { - return { ['solana:' + ADDRESSES.solana.SOL]: (await getData()).tvl } + const { tvl, tvlUsdc } = await getData(); + return { ['solana:' + ADDRESSES.solana.SOL]: tvl, ['solana:' + ADDRESSES.solana.USDC]: tvlUsdc } }; const borrowed = async () => { - return { ['solana:' + ADDRESSES.solana.SOL]: (await getData()).borrowed } + const { borrowed, borrowedUsdc } = await getData(); + return { ['solana:' + ADDRESSES.solana.SOL]: borrowed, ['solana:' + ADDRESSES.solana.USDC]: borrowedUsdc } }; const getFilteredAccounts = async (program, accountName, offset, indexes) => { From ed93bfb930eadb086aeba556d7f114d9761796de Mon Sep 17 00:00:00 2001 From: Pod Finance <167991598+podfinance@users.noreply.github.com> Date: Mon, 29 Apr 2024 13:24:20 -0300 Subject: [PATCH 1418/2004] Add /pod-finance project folder. Calculates all tokens locked, including staking and pool2 (#10021) * add /pod-finance project folder. calculates tvl, pool2 and staking tokens * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/pod-finance/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/pod-finance/index.js diff --git a/projects/pod-finance/index.js b/projects/pod-finance/index.js new file mode 100644 index 00000000000..51bc831fb50 --- /dev/null +++ b/projects/pod-finance/index.js @@ -0,0 +1,32 @@ +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 From 4a0110475ad86f68e96c7e57dc0e0a9b29f27b14 Mon Sep 17 00:00:00 2001 From: bergben Date: Mon, 29 Apr 2024 20:12:19 +0300 Subject: [PATCH 1419/2004] Instadapp Fluid: add borrowed amounts (#9979) * add Fluid borrowed amounts * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/fluid/index.js | 51 ++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/projects/fluid/index.js b/projects/fluid/index.js index 9a05ff241da..e4505e99cbf 100644 --- a/projects/fluid/index.js +++ b/projects/fluid/index.js @@ -1,17 +1,36 @@ const ADDRESSES = require('../helper/coreAssets.json') -module.exports={ - ethereum:{ - tvl: async (api) => { - const tokens = await api.call({ target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", abi: "function listedTokens() public view returns (address[] memory listedTokens_)" }) - api.add("0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", await api.call({ - target: "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6", - abi: "function balance(address, address) public view returns (uint256 balance)", - params: ["0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", "0x52aa899454998be5b000ad077a46bbe360f4e497"] - })) - return api.sumTokens({ owner: "0x52aa899454998be5b000ad077a46bbe360f4e497", tokens: [ - ADDRESSES.null, - ...tokens.filter(t=>t.toLowerCase()!=="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") - ] }) - }, - } -} \ No newline at end of file +const methodologies = require("../helper/methodologies") +const abi = { + "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 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_)" +} + +module.exports = { + methodology: methodologies.lendingMarket, + ethereum: { + tvl: async (api) => { + const tokens = await api.call({ target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", abi: "function listedTokens() public view returns (address[] memory listedTokens_)" }) + api.add("0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", await api.call({ + target: "0xF047ab4c75cebf0eB9ed34Ae2c186f3611aEAfa6", + abi: "function balance(address, address) public view returns (uint256 balance)", + params: ["0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", "0x52aa899454998be5b000ad077a46bbe360f4e497"] + })) + return api.sumTokens({ + owner: "0x52aa899454998be5b000ad077a46bbe360f4e497", tokens: [ + ADDRESSES.null, + ...tokens.filter(t => t.toLowerCase() !== "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") + ] + }) + }, + borrowed: async (api) => { + const fluidLiquidityResolver = "0x645C84DeA082328e456892D2E68d434b61AD7dBF"; + const tokens = await api.call({ + target: "0x741c2Cd25f053a55fd94afF1afAEf146523E1249", + abi: "function listedTokens() public view returns (address[] memory listedTokens_)", + }); + + const borrowed = await api.call({ target: fluidLiquidityResolver, abi: abi.getOverallTokensData, params: [tokens], }) + api.add(tokens, borrowed.map(x => x.totalBorrow)); + }, + } +} +// node test.js projects/fluid/index.js \ No newline at end of file From 5460dc484ba8612f970850e6f7420115b779e795 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:02:34 +0530 Subject: [PATCH 1420/2004] Add staking TVL calculation and pool2 support (#10022) * chore(arcade-staking-tvl): add staking contracts tvl calcs * chore(arcade-staking-tvl): index.js running * chore(arcade-staking-tvl): pr comments progress * chore(arcade-staking-tvl): hardcode blocknumber in index.js * chore(arcade-staking-tvl): add stakingrewards arcd balance to balances * chore(arcade-staking-tvl): nits for consistency * chore(arcade-staking-tvl): add arcd reserve amount in uniswapv2 lp pair pool * chore(arcade-staking-tvl): cleanup per comments and add staking and pool2 to module exports properties * chore(arcade-staking-tvl): remove arcdweth pair, arcd balance from staking tvl becoz handled by pool2 property * code refactor --------- Co-authored-by: Mouzayan Delbourgo --- projects/arcade-xyz/constants.js | 15 +++++++++++++-- projects/arcade-xyz/index.js | 29 +++++++++++++++++------------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/projects/arcade-xyz/constants.js b/projects/arcade-xyz/constants.js index fc07a6d76c6..dad1f632001 100644 --- a/projects/arcade-xyz/constants.js +++ b/projects/arcade-xyz/constants.js @@ -11,6 +11,13 @@ const VAULT_FACTORY_SUPER_RARE = '0x7594916540e60fc8d6e9ba5c3c83632f7001cf53'; 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 = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; + const VAULT_FACTORIES = new Set(); VAULT_FACTORIES.add(VAULT_FACTORY_A); VAULT_FACTORIES.add(VAULT_FACTORY_APE_STAKING_A); @@ -34,5 +41,9 @@ module.exports = { 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 index 2316eeca675..6164d7156d1 100644 --- a/projects/arcade-xyz/index.js +++ b/projects/arcade-xyz/index.js @@ -2,21 +2,22 @@ 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, -} = require('./constants'); +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(api.block) + const vaults = await fetchVaults(block) const balances = {} const artBlockOwners = [] @@ -30,11 +31,12 @@ async function tvl(api) { artBlockOwners.push(vault.address) continue; } - sdk.util.sumSingleBalance(balances,collectionAddress,amount, api.chain) + 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, @@ -46,7 +48,7 @@ async function tvl(api) { // Fetches all active loans, their payable curency and amount borrowed then sums it up. async function borrowed(api) { - const loans = await fetchLoans(api.block); + const loans = await fetchLoans(await api.getBlock()); // Iterate over each loan to sum up principal by currency for (const loan of loans) { @@ -55,14 +57,17 @@ async function borrowed(api) { const interest = principal * interestRate / 1e21 api.add(payableCurrency, interest) } - - return api.getBalances(); } 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, borrowed }, + 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'], From 8218e949cd8b935b578f83ec7bb79e440aa988ca Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 21:24:07 +0200 Subject: [PATCH 1421/2004] bugfix --- projects/helper/tokenMapping.js | 4 +--- projects/meson/index.js | 4 ---- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2b808093ec6..3e97c14e3e9 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -37,6 +37,7 @@ const ibcMappings = { const fixBalancesTokens = { ancient8: { [ADDRESSES.nul]: { coingeckoId: "ethereum", decimals: 18, }, + '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, }, area: { '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf': { coingeckoId: 'areon-network', decimals: 18, }, @@ -103,9 +104,6 @@ const fixBalancesTokens = { "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb": { decimals: 18, coingeckoId: "binancecoin" }, "0x13A0c5930C028511Dc02665E7285134B6d11A5f4": { decimals: 18, coingeckoId: "bitcoin" } }, - ancient8: { - '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, - }, mode: { '0x80137510979822322193fc997d400d5a6c747bf7': { coingeckoId: "stakestone-ether", decimals: 18 }, }, diff --git a/projects/meson/index.js b/projects/meson/index.js index 730166f6487..1a45d0c8810 100644 --- a/projects/meson/index.js +++ b/projects/meson/index.js @@ -69,7 +69,6 @@ const config = { aurora: {}, avax: {}, base: {}, - blast: {}, core: {}, celo: {}, cronos: {}, @@ -82,11 +81,8 @@ const config = { mode: {}, polygon: {}, scroll: {}, - xlayer: {}, zeta: {}, - zkfair: {}, zklink: {}, - // naut: {}, moonbeam: { id: 'beam'}, bevm: { id: 'bevm2'}, bsc: { id: 'bnb'}, From 9246170d93ed3c07f8594297455423ba6fa1538d Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 00:59:21 +0530 Subject: [PATCH 1422/2004] Update D8X exchange TVL calculation (#10026) * d8x: track xlayer (#2) Co-authored-by: m66260 * minor refactor --------- Co-authored-by: c40003141 <117669273+c40003141@users.noreply.github.com> Co-authored-by: m66260 Co-authored-by: m66260 <117136064+m66260@users.noreply.github.com> --- projects/d8x/index.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/projects/d8x/index.js b/projects/d8x/index.js index 4acc89d80f5..0c891e74978 100644 --- a/projects/d8x/index.js +++ b/projects/d8x/index.js @@ -1,23 +1,27 @@ const abi = require("./abi-poolInfo.json"); +const { sumTokens2 } = require('../helper/unwrapLPs') -const D8X_PERPETUALS_CONTRACT = "0xaB7794EcD2c8e9Decc6B577864b40eBf9204720f"; +const config = { + polygon_zkevm: { factory: "0xaB7794EcD2c8e9Decc6B577864b40eBf9204720f", }, + xlayer: { factory: "0xb24dB543749277E8625a59C061aE7574C8235475", }, +}; async function tvl(api) { + const { factory } = config[api.chain]; const exchangeInfo = await api.call({ abi: abi.getPoolStaticInfo, - target: D8X_PERPETUALS_CONTRACT, + target: factory, params: [1, 255], }); const marginTokens = exchangeInfo[2]; - return api.sumTokens({ owner: D8X_PERPETUALS_CONTRACT, tokens: marginTokens }); + return sumTokens2({ api, owner: factory, tokens: marginTokens, }); } module.exports = { - methodology: - "adds up the balances of all liquidity pools in the D8X exchange", - start: 6182628, - polygon_zkevm: { - tvl, - }, + methodology: "adds up the balances of all liquidity pools in the D8X exchange", }; + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl }; +}); \ No newline at end of file From 1bec5adc4c1b662361ae2df89a2b96dabe3d9ff1 Mon Sep 17 00:00:00 2001 From: 0xIvan <83612730+0xIvan@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:33:36 +0400 Subject: [PATCH 1423/2004] Jones DAO - new jUSDC (#10024) * Change file name * Remove unused * Refactor * Add stip farm tvl * Remove double counting * Update addreess * Add new staking contract * Add new jusdc --- projects/jones-dao/addresses.js | 5 ++- projects/jones-dao/index.js | 56 ++++++++++++++++----------------- projects/treasury/jonesdao.js | 41 ++++++++++++------------ 3 files changed, 53 insertions(+), 49 deletions(-) diff --git a/projects/jones-dao/addresses.js b/projects/jones-dao/addresses.js index de15ef171b6..95ed4ed2e94 100644 --- a/projects/jones-dao/addresses.js +++ b/projects/jones-dao/addresses.js @@ -9,6 +9,9 @@ module.exports = { router: "0x2F43c6475f1ecBD051cE486A9f3Ccc4b03F3d713", stableRewardTracker: "0xEB23C7e19DB72F9a728fD64E1CAA459E457cfaca", }, + jusdc: { + underlyingVault: "0xB0BDE111812EAC913b392D80D51966eC977bE3A2", + }, lpStaking: [ "0x360a766F30F0Ba57d2865eFb32502FB800b14dD3", // JONES-ETH staking rewards "0x13f6A63867046107780Bc3fEBdeE90E7AfCdfd99", // JONES-USDC staking rewards @@ -51,9 +54,9 @@ module.exports = { gohm: "0x8D9bA570D6cb60C7e3e0F31343Efe75AB8E65FB1", jones: "0x10393c20975cf177a3513071bc110f7962cd67da", jglp: "0x7241bC8035b65865156DDb5EdEf3eB32874a3AF6", - jusdc: "0xe66998533a1992ecE9eA99cDf47686F4fc8458E0", rdpx: "0x32Eb7902D4134bf98A28b963D26de779AF92A212", rdpx_eth: "0x7418F5A2621E13c05d1EFBd71ec922070794b90a", + usdc: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", uvrt: "0xa485a0bc44988B95245D5F20497CCaFF58a73E99", weth: ADDRESSES.arbitrum.WETH, wjaura: "0xcB9295ac65De60373A25C18d2044D517ed5da8A9", diff --git a/projects/jones-dao/index.js b/projects/jones-dao/index.js index 0af8146becd..c12392bb0fe 100644 --- a/projects/jones-dao/index.js +++ b/projects/jones-dao/index.js @@ -15,32 +15,36 @@ const jAssetToAsset = { }; async function tvl(api) { - const [ - metavaultTokens, - metavaultBalances, - optionVaultTokens, - optionVaultBalances, - ] = 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, - }), - ]); + 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, + }), + sdk.api.abi.call({ + abi: "uint256:totalAssets", + target: addresses.jusdc.underlyingVault, + chain: "arbitrum", + }), + ]); + + console.log({ jusdcTvl }); api.addTokens(metavaultTokens, metavaultBalances); api.addTokens(optionVaultTokens, optionVaultBalances); + api.addTokens(addresses.tokens.usdc, jusdcTvl.output); const tokensAndOwners = [ [addresses.tokens.uvrt, addresses.glp.stableRewardTracker], @@ -81,11 +85,7 @@ module.exports = { addr = addr.toLowerCase(); return `arbitrum:${jAssetToAsset[addr] ?? addr}`; }), - staking: stakings( - addresses.stakingContracts, - addresses.tokens.jones, - "arbitrum" - ), + staking: stakings(addresses.stakingContracts, addresses.tokens.jones, "arbitrum"), }, ethereum: { diff --git a/projects/treasury/jonesdao.js b/projects/treasury/jonesdao.js index 087866e55b9..7d630dd1b82 100644 --- a/projects/treasury/jonesdao.js +++ b/projects/treasury/jonesdao.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require("../helper/coreAssets.json"); const { nullAddress, treasuryExports } = require("../helper/treasury"); const treasury = "0xFa82f1bA00b0697227E2Ad6c668abb4C50CA0b1F"; @@ -6,27 +6,28 @@ 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 - "0xd2D1162512F927a7e282Ef43a362659E4F2a728F", // sbfGMX - ], - owners: [treasury,], + 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,], + tokens: [ + nullAddress, + ADDRESSES.ethereum.USDC, // USDC + ], + owners: [treasury], ownTokens: [], }, -}) +}); From eb838916dcd688a803b55da03f36cb690db2a6b6 Mon Sep 17 00:00:00 2001 From: Yieldfarming24 <165474414+Yieldfarming24@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:15:57 +0200 Subject: [PATCH 1424/2004] add pulsegun adapter (#10027) Co-authored-by: Yieldfarming24 --- projects/PulseGun-farm/index.js | 10 ++++++++++ projects/PulseGun/index.js | 3 +++ 2 files changed, 13 insertions(+) create mode 100644 projects/PulseGun-farm/index.js create mode 100644 projects/PulseGun/index.js diff --git a/projects/PulseGun-farm/index.js b/projects/PulseGun-farm/index.js new file mode 100644 index 00000000000..4b569352e8f --- /dev/null +++ b/projects/PulseGun-farm/index.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 00000000000..2ba3883b6eb --- /dev/null +++ b/projects/PulseGun/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('pulse', '0x5c92d17f52987DED8D2c0Fa0d5fbfcD68A09B074') \ No newline at end of file From 344b8eccc1a0fb41532fd916bf9121282fe1b748 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 01:51:33 +0530 Subject: [PATCH 1425/2004] Add Ridotto TVL adapter (#10029) * adding ridotto tvl adapter * code refactor --------- Co-authored-by: skimo1337 --- projects/ridotto/index.js | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 projects/ridotto/index.js diff --git a/projects/ridotto/index.js b/projects/ridotto/index.js new file mode 100644 index 00000000000..c756dda1c4a --- /dev/null +++ b/projects/ridotto/index.js @@ -0,0 +1,47 @@ +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: [ + [ + "0x55d398326f99059fF775485246999027B3197955", + "0x2c5B04F5744724ccEaAdA451f81b6E6a98D53fde", + ], // BANKROLL/BUSD + ], + }), + }, +}; From 4d8345b4b596328090854770043305ddbe8ef13f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:51:14 +0200 Subject: [PATCH 1426/2004] move from render --- projects/helper/heroku-api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/heroku-api.js b/projects/helper/heroku-api.js index eb59199392a..aecb1ec9a41 100644 --- a/projects/helper/heroku-api.js +++ b/projects/helper/heroku-api.js @@ -1,5 +1,5 @@ const { get } = require('./http') -const endpoint = "https://sushi-analytics.onrender.com" +const endpoint = "https://sushi-analytics.llama.fi" function getTvl(protocol, chain) { return async (timestamp) => { From 2c8a52709b07519f08bb4bf24f683520c552e64d Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 30 Apr 2024 05:36:38 +0100 Subject: [PATCH 1427/2004] update --- projects/truefeedback/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/truefeedback/index.js b/projects/truefeedback/index.js index b8df3732208..3034ea70c7d 100644 --- a/projects/truefeedback/index.js +++ b/projects/truefeedback/index.js @@ -3,10 +3,10 @@ const { staking } = require('../helper/staking') module.exports = { celo: { tvl: () => 0, - staking: staking('0x588069878442856b683ab39f410ed96b72fb542a', '0xbdd31effb9e9f7509feaac5b4091b31645a47e4b', undefined, 'truefeedbackchain', 18), + staking: staking('0x588069878442856b683ab39f410ed96b72fb542a', '0xbDd31EFfb9E9f7509fEaAc5B4091b31645A47e4b', "celo", undefined, undefined), }, - kava: { - staking: staking('0x067543c3D97753dDA22A2cF6a806f47BD6A17B6A', '0xbd10F04B8b5027761fCAAd42421aD5d0787211Ee', undefined, 'truefeedbackchain', 18), + kava: { + staking: staking('0x067543c3D97753dDA22A2cF6a806f47BD6A17B6A', '0xbd10f04b8b5027761fcaad42421ad5d0787211ee', "kava",undefined, undefined), }, }; From 2edc2c6d92b07d389c50b4273a1fa5047c8bdc8f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 07:16:49 +0200 Subject: [PATCH 1428/2004] fix lisa --- projects/lisa/api.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/lisa/api.js b/projects/lisa/api.js index 0b9030e3362..e4f81d80244 100644 --- a/projects/lisa/api.js +++ b/projects/lisa/api.js @@ -8,9 +8,9 @@ module.exports = { async function tvl() { const reserveAddr = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.token-lqstx'; const registryAddr = 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.lqstx-mint-registry'; - const reserve = await call({ reserveAddr, abi: 'get-reserve' }); - const pending = await call({ registryAddr, abi: 'get-mint-requests-pending-amount'}); + 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.value) / 1e6 + blockstack: (+reserve.value + +pending.toString()) / 1e6 } } \ No newline at end of file From 1ecfc8453aef365c4fd91d6e84452b85dceba209 Mon Sep 17 00:00:00 2001 From: "Guillermo M. Narvaja" Date: Tue, 30 Apr 2024 02:29:18 -0300 Subject: [PATCH 1429/2004] Ensuro: adds multistrategy vault and Compound USDC reserves (#10030) * Ensuro: new pools and Premiums accounts Adds new eTokens (liquidity pool) and Premiums Accounts for recently onboarded risks. * Ensuro: new pools and Premiums accounts + remove v1 Adds new eTokens (liquidity pool) and Premiums Accounts for recently onboarded risks. Also, I'm removing the code for v1 since is no longer in use. * Ensuro: adds multistrategy vault and Compound USDC reserves Adds the multistrategy vault as one of the contract that holds the assets of Ensuro and also Compound USDC as one form those reserves can take (previously was USDC and AAVE USDC). --- projects/ensuro/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/ensuro/index.js b/projects/ensuro/index.js index d83f3663ffa..e6c1a9a1add 100644 --- a/projects/ensuro/index.js +++ b/projects/ensuro/index.js @@ -6,6 +6,7 @@ const addressBook = { usdc: ADDRESSES.polygon.USDC, aave_v3_usdc: "0x625E7708f30cA75bfd92586e17077590C60eb4cD", // aPolUSDC aave_v2_usdc: "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F", // amUSDC + compound_v3_usdc: "0xF25212E676D1F7F89Cd72fFEe66158f541246445", // Compound USDC reserves: [ // eTokens {name: "eToken Junior Koala", address: "0x8d2Ee82c4172B2138B06b8037d769cBfAf9C0274"}, @@ -31,13 +32,15 @@ const addressBook = { {name: "PremiumsAccount DLT", address: "0x8908d99a4E2fF6b7Bf4563593B02AcBc7bBfaBC1"}, {name: "PremiumsAccount Otonomi", address: "0xE43587386E6e8FA127dd008770cdC07dE2Df91E9"}, {name: "PremiumsAccount Bliss", address: "0x11b490292799a0edFE37797592F77151C4483442"}, + // MultiStrategy Vault - Vault that aggregates assets of several reserves + {name: "MultiStrategy Vault", address: "0x1EE585dcea25cbDa16BE8cfeFa381A1F32acA418"}, ], } }; async function tvl(api) { const addresses = addressBook[api.chain]; - const ownerTokens = addresses.reserves.map(i => [[addresses.usdc, addresses.aave_v3_usdc], i.address]) + const ownerTokens = addresses.reserves.map(i => [[addresses.usdc, addresses.aave_v3_usdc, addresses.compound_v3_usdc], i.address]) return sumTokens2({ api, ownerTokens, }); } From 9f06a9222a8eb93dea539b1a2d4e02f5b25b8e8d Mon Sep 17 00:00:00 2001 From: particle-deployer <130306380+particle-deployer@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:30:33 -0700 Subject: [PATCH 1430/2004] update addresses (#10033) Co-authored-by: Wukong Particle --- projects/particle-trade-duo/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index d03ce701e13..fdcd88a8a87 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -2,8 +2,10 @@ const config = { blast: { weth90d: '0xc932317385fDc794633f612874BD687eA987B151', usdb90d: '0x57A6CcB2d5663eF874c29b161dD7907c7673feb0', - weth90dv2: '0xabF868bbe80550DC2EE4F8dFfcb06A5eb9B0760E', - dusd90dv2: '0xBc65c01680E09FE14F466B00Cc2A9248a022F101', + weth90dv2: '0x08B939da28C97aFa6664eC49aD5bE51805ebbb36', + dusd90dv2: '0xa625B1e6686E8ceADd88aFAC8E44365005C3dbc4', + wethPointYieldSwap: '0x22597493C61c6d766f78F50A98fBd83f7DE9F6B1', + dusdPointYieldSwap: '0x1a540c1A1a67bB7dEe573a1BafD30007862bA02b', }, } From b7e4876cdae8853a640676ed770b09998e330e9f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:30:15 +0530 Subject: [PATCH 1431/2004] Update TVL calculation and optimize code (#10038) * update TVL with new LP on polygon and base * remove unused imports and light optimisation * code refactor --------- Co-authored-by: Pato --- projects/luchadores/index.js | 57 +++++++-------------------------- projects/treasury/luchadores.js | 25 +++++++++++++++ 2 files changed, 37 insertions(+), 45 deletions(-) create mode 100644 projects/treasury/luchadores.js diff --git a/projects/luchadores/index.js b/projects/luchadores/index.js index e37047fe2de..589b1a20931 100644 --- a/projects/luchadores/index.js +++ b/projects/luchadores/index.js @@ -1,60 +1,27 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require('../helper/staking'); -const { pool2s } = require('../helper/pool2'); -const {sumTokensAndLPsSharedOwners} = require('../helper/unwrapLPs'); // multisigs -const treasury = "0x0Cb11b92Fa5C30eAfe4aE84B7BB4dF3034C38b9d"; -const rewardPool = "0x72104d619BaEDf632936d9dcE38C089CA3bf12Dc"; +const rewardPool_polygon = "0x72104d619BaEDf632936d9dcE38C089CA3bf12Dc"; + +//Contrat de staking, balancer, retro (matic/cash), aero, balanceof de la treso // LPs -const LUCHA_MATIC_comethLp = "0x5e1cd1b923674e99df95ce0f910dcf5a58a3ca2d"; -const LUCHA_MUST_comethLp = "0x98503d87aa4e9c84ff5d2e558295a0967fbbbeff"; -const LUCHA_MATIC_satinLp = "0x989e0df932e742ac52f82f5da1b0b70bdce3ed5f"; -const LUCHA_CASH_satinLp = "0x55f70935f4e8dd194bc2d56fb1c4d25db599cbc5"; +const WMATIC_LUCHA_Balancer_polygon = "0x924EC7ed38080E40396c46F6206A6d77D0B9f72d"; // staking const luchaStk = "0xC5E9E8574c27747B4D537ef94e2448a3A0525dF4"; -const luchaMaticStk = "0x0d008974359e5aD1B64c4edc4de3C46ED662b6D8"; -const luchaMustStk = "0xe11f861dD5cE8407bb24dFD13b9710c0295276D6"; +const luchaMaticBalancerStk = "0x1F0ee42D005b89814a01f050416b28c3142ac900"; // ERC20 const LUCHA_polygon = "0x6749441Fdc8650b5b5a854ed255C82EF361f1596"; -const MATIC_polygon = ADDRESSES.polygon.WMATIC_1; -const QI_polygon = "0x580A84C73811E1839F75d86d75d88cCa0c241fF4"; -const MUST_polygon = "0x9C78EE466D6Cb57A4d01Fd887D2b5dFb2D46288f"; -const PSP_polygon = "0x42d61D766B85431666B39B89C43011f24451bFf6"; -const LINK_polygon = "0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39"; -const WETH_polygon = ADDRESSES.polygon.WETH_1; -const WMATIC_LUCHA_Balancer_polygon = "0x924EC7ed38080E40396c46F6206A6d77D0B9f72d"; - -async function tvl(time, ethBlock, chainBlocks){ - const balances = {}; - const transform = i => `polygon:${i}`; - await sumTokensAndLPsSharedOwners(balances, [ - // [LUCHA_polygon, false], - [MATIC_polygon, false], - [QI_polygon, false], - [MUST_polygon, false], - [PSP_polygon, false], - [LINK_polygon, false], - [WETH_polygon, false], - [WMATIC_LUCHA_Balancer_polygon, false], - [LUCHA_MATIC_comethLp, true], - [LUCHA_MUST_comethLp, true], - [LUCHA_MATIC_satinLp, true], - [LUCHA_CASH_satinLp, true] - ], [treasury, luchaStk, rewardPool, luchaMaticStk, luchaMustStk, LUCHA_MATIC_satinLp, LUCHA_CASH_satinLp], chainBlocks.polygon, "polygon", transform); - return balances; -} -module.exports={ - polygon:{ - tvl, - staking: staking(luchaStk, LUCHA_polygon), - pool2: pool2s([luchaMaticStk, luchaMustStk], [LUCHA_MATIC_comethLp, LUCHA_MUST_comethLp, LUCHA_MATIC_satinLp, LUCHA_CASH_satinLp]) - }, - methodology: `- Staking : Players can stake their $LUCHA to earn $MASK and access in-game services or equipment.\r +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/treasury/luchadores.js b/projects/treasury/luchadores.js new file mode 100644 index 00000000000..6062e056d54 --- /dev/null +++ b/projects/treasury/luchadores.js @@ -0,0 +1,25 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + polygon: { + tokens: [ + nullAddress, + '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + '0x5D066D022EDE10eFa2717eD3D79f22F949F8C175', + ], + owners: ['0x0Cb11b92Fa5C30eAfe4aE84B7BB4dF3034C38b9d'], + ownTokens: ['0x6749441Fdc8650b5b5a854ed255C82EF361f1596'], + uniV3nftsAndOwners: [['0x8aac493fd8c78536ef193882aeffeaa3e0b8b5c5', '0x0Cb11b92Fa5C30eAfe4aE84B7BB4dF3034C38b9d']] + }, + base: { + tokens: [ + ADDRESSES.base.WETH, + '0x0D4953d2BDe145D316296CC72cCE509D899a5529' + ], + owners: ['0xa715c8b17268f140D76494c12ec07B48218549C4'], + ownTokens: ['0xF4435cC8b478d54313F04c956882BE3D9aCf9F6F'], + resolveLP: true, + } +}) + From bfa691d068c90cf860c4a254bc401b2e5d682b33 Mon Sep 17 00:00:00 2001 From: stephen-lumi <153438053+stephen-lumi@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:21:56 +0800 Subject: [PATCH 1432/2004] Upgrade: Lumi-Finance v2 (#9832) * add lumi-finance staking Co-authored-by: stephen * fix: lumi-finance tvl * feat: Update lumi-finance v2 * fix: lumi finance tvl count * fix: lumi finance v2 tvl count * fix: lumi finance v2 tvl count --- projects/lumi-finance/index.js | 78 +++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/projects/lumi-finance/index.js b/projects/lumi-finance/index.js index c174cccec03..4f0615dec9a 100644 --- a/projects/lumi-finance/index.js +++ b/projects/lumi-finance/index.js @@ -1,16 +1,82 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') +const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs') +const sdk = require("@defillama/sdk"); -const AMMContract = "0x71E66919Fdc2e8687909c8dfe7A451dCf313A332"; const StakeContract = "0xD621813a8C1FA039A66DF647908053D1b4CE1428"; + +const ArbLUAUSD2CRV = "0xd2239b95890018a8f52ffd17d7f94c3a82f05389"; +const Arb2CRV = "0x7f90122bf0700f9e7e1f688fe926940e8839f353"; +const Arb2CRVOldGauge = "0xbF7E49483881C76487b0989CD7d9A8239B20CA41"; + const Arb2CRVGauge = "0xCE5F24B7A95e9cBa7df4B54E911B4A3Dc8CDAf6f"; const Arb2CRVLUAUSDLP = "0xD2239B95890018a8f52fFD17d7F94C3A82f05389"; +const ArbLUAUSDMetaPoolGauge = "0x721cac0f4715a29acd76752408636e8a49222c11"; + +const USDCBridged = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; +const USDT = "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"; +const WBTC = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; +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 add2CRV(api, balances) { + return sumTokens2({ + balances, api, owner: ARB_2CRV, tokens: [], + }) +} + +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 = {}; -const staking = sumTokensExport({ ownerTokens: [[[Arb2CRVGauge, Arb2CRVLUAUSDLP], StakeContract]] }); + await Promise.all([ + addUniswapPools(api, balances), + addyLUAUSD2CRV(api, balances), + ]) + return balances +}; module.exports = { - methodology: `We count the 2CRV and 2CRVLUAUSD-LP on ${AMMContract}, ${StakeContract}`, + methodology: `We count the TVL on the protocol valuts`, arbitrum: { staking: staking, - tvl: sumTokensExport({ ownerTokens: [[[Arb2CRVGauge, Arb2CRVLUAUSDLP], AMMContract]] }) - } + tvl: arb1Tvl, + }, } \ No newline at end of file From 1e9286ac1623739bbd988e6b1149bbd34c749748 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:05:43 +0530 Subject: [PATCH 1433/2004] Add NXD Protocol staking functionality (#10039) * add nxd protocol * code refactor --------- Co-authored-by: = --- projects/nxd-protocol/index.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 projects/nxd-protocol/index.js diff --git a/projects/nxd-protocol/index.js b/projects/nxd-protocol/index.js new file mode 100644 index 00000000000..fb688c690b1 --- /dev/null +++ b/projects/nxd-protocol/index.js @@ -0,0 +1,33 @@ +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, + }, +}; From 38daa88ce028244154b1812a7414d37f2bd5c337 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:48:18 +0530 Subject: [PATCH 1434/2004] Add FortiFi Avalanche MultiYields and refactor code (#10049) * Add FortiFi Avalanche MultiYields * code refactor --------- Co-authored-by: Anthony Bautista --- projects/fortifi/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/fortifi/index.js diff --git a/projects/fortifi/index.js b/projects/fortifi/index.js new file mode 100644 index 00000000000..86eb8750a81 --- /dev/null +++ b/projects/fortifi/index.js @@ -0,0 +1,24 @@ +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 From f95083b230e52f9c837f22ae74399eb78d4af103 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:24:12 +0200 Subject: [PATCH 1435/2004] lint fix --- projects/lumi-finance/index.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/projects/lumi-finance/index.js b/projects/lumi-finance/index.js index 4f0615dec9a..1d153bdbda0 100644 --- a/projects/lumi-finance/index.js +++ b/projects/lumi-finance/index.js @@ -51,12 +51,6 @@ async function addUniswapPools(api, balances) { }); } -async function add2CRV(api, balances) { - return sumTokens2({ - balances, api, owner: ARB_2CRV, tokens: [], - }) -} - 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) From 525281df01295ffc385952db74c26af7b0191a9b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:51:17 +0200 Subject: [PATCH 1436/2004] elektrik: fix graph --- projects/elektrik/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/elektrik/index.js b/projects/elektrik/index.js index d368d52a3a2..bd364174a3e 100644 --- a/projects/elektrik/index.js +++ b/projects/elektrik/index.js @@ -10,7 +10,7 @@ const query = `{ }` async function tvl(api) { - const { pools } = await cachedGraphQuery('elektrik/test-2', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH', query) + const { pools } = await cachedGraphQuery('elektrik', '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, }) } From dcf3b6c5f78fd0ca625a11322f3bf35c398e3180 Mon Sep 17 00:00:00 2001 From: penpad-dev <168410560+penpad-dev@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:05:35 +0800 Subject: [PATCH 1437/2004] add PenPad adapter (#10042) * Create penpad/index.js * Update index.js * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/penpad/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/penpad/index.js diff --git a/projects/penpad/index.js b/projects/penpad/index.js new file mode 100644 index 00000000000..e6a6e4e6284 --- /dev/null +++ b/projects/penpad/index.js @@ -0,0 +1,10 @@ + +const ADDRESSES = require('../helper/coreAssets.json'); +const { staking } = require('../helper/staking'); + +module.exports = { + methodology: 'Counts liquidty on the staking', + scroll: { + tvl: staking('0x8F53fA7928305Fd4f78c12BA9d9DE6B2420A2188, ADDRESSES.null), + }, +} From 5627d2d84c73431c2bbd12f2ab341236845c9d23 Mon Sep 17 00:00:00 2001 From: jan-magpie <155635960+jan-magpie@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:46:04 +0530 Subject: [PATCH 1438/2004] Update index.js (#10040) adding mpendle sv --- projects/penpie/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/penpie/index.js b/projects/penpie/index.js index df71b0d3b3f..cfee75dd765 100644 --- a/projects/penpie/index.js +++ b/projects/penpie/index.js @@ -13,7 +13,7 @@ async function tvl(api) { const poolInfos = await api.multiCall({ abi: 'function getPoolInfo(address) view returns ( uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint)', calls: poolTokens, target: masterPenpie, }) const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: poolTokens, }) poolTokens.forEach((token, i) => { - if (symbols[i] === 'vlPenpie' || symbols[i] === 'mPendle' || symbols[i] === 'mPendleOFT') { + if (symbols[i] === 'vlPenpie' || symbols[i] === 'mPendle' || symbols[i] === 'mPendleOFT' || symbols[i] === 'mPendleSV') { token = PENDLE } api.add(token, poolInfos[i].sizeOfPool) @@ -29,4 +29,4 @@ Object.keys(config).forEach((chain) => { if (PNP && vlPNP) module.exports[chain].staking = staking(vlPNP, PNP) }); -module.exports.doublecounted = true \ No newline at end of file +module.exports.doublecounted = true From a904ea30866cc4605aa3f10b35cb39b88c584490 Mon Sep 17 00:00:00 2001 From: Kumar Satyarth <47723310+ksatyarth2@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:47:54 +0530 Subject: [PATCH 1439/2004] feat: add x-layer chain: TimeswapV2 (#10043) --- projects/timeswap-v2/index.js | 313 ++++++++++++++++++---------------- 1 file changed, 163 insertions(+), 150 deletions(-) diff --git a/projects/timeswap-v2/index.js b/projects/timeswap-v2/index.js index 1a5e71c7b94..9378ad722a4 100644 --- a/projects/timeswap-v2/index.js +++ b/projects/timeswap-v2/index.js @@ -2,163 +2,176 @@ 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, - }); + 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) { + 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, - }); + 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]; - } + 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, - }); + 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, - }, + 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, + }, }; Object.keys(config).forEach((chain) => { - module.exports[chain] = { tvl }; - module.exports.hallmarks=[ - [1676851200, "Timeswap V2 launch"], - [1697760000, "Premine of $TIME"] - ] -}); \ No newline at end of file + module.exports[chain] = { tvl }; + module.exports.hallmarks = [ + [1676851200, "Timeswap V2 launch"], + [1697760000, "Premine of $TIME"], + ]; +}); From 6b8123825a4dcd436cf771fff1a45fbe4bf2eebb Mon Sep 17 00:00:00 2001 From: biest <93846276+1biest@users.noreply.github.com> Date: Tue, 30 Apr 2024 05:23:57 -0600 Subject: [PATCH 1440/2004] Add CW20 (hINJ) to Neptune Finance adapter (#10034) * Fixed methodology description for Neptune Finance * add CW20 lookup Neptune Finance adapter * token factory address --------- Co-authored-by: Francisco Inacio --- projects/neptune-finance/index.js | 56 ++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/projects/neptune-finance/index.js b/projects/neptune-finance/index.js index 9dc972d37d3..e78da555f83 100644 --- a/projects/neptune-finance/index.js +++ b/projects/neptune-finance/index.js @@ -1,14 +1,62 @@ -const { queryContract, getToken, sumTokens } = require('../helper/chain/cosmos') +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) { - return sumTokens({ chain: api.chain, owner: MARKET_ADDR}) + 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 + }); + + /* console.log("balances", balances) */ + return balances } async function borrowed(api) { // query market-state - const { markets, } = await queryContract({ chain: api.chain, contract: MARKET_ADDR, data: { get_state: {} } }) + const { markets, } = await queryContract({ + chain: api.chain, + contract: MARKET_ADDR, + data: { + get_state: {} + } + }) // get all borrowed markets.map(market => { @@ -22,4 +70,4 @@ module.exports = { injective: { tvl, borrowed } -}; +}; \ No newline at end of file From e1aec800927fc21d1f5b67708a5a29fd2de9e377 Mon Sep 17 00:00:00 2001 From: Brendon Votteler Date: Tue, 30 Apr 2024 21:27:21 +1000 Subject: [PATCH 1441/2004] Add BOB chain (#10041) * add BOB project * bob: add wstETH and USDC specific bridge addresses --- projects/bob/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/bob/index.js diff --git a/projects/bob/index.js b/projects/bob/index.js new file mode 100644 index 00000000000..4639d756a3f --- /dev/null +++ b/projects/bob/index.js @@ -0,0 +1,34 @@ +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, + "0x7122985656e38BDC0302Db86685bb972b145bD3C", // STONE + "0xbdBb63F938c8961AF31eaD3deBa5C96e6A323DD1", // eDLLR + "0xbdab72602e9AD40FC6a6852CAf43258113B8F7a5", // eSOV + "0xe7c3755482d0dA522678Af05945062d4427e0923", // ALEX +]; + +module.exports = { + ethereum: { + tvl: (api) => + sumTokens2({ + api, + tokens, + owners: [ + "0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7", + "0x091dF5E1284E49fA682407096aD34cfD42B95B72", + "0x450D55a4B4136805B0e5A6BB59377c71FC4FaCBb" + ], + fetchCoValentTokens: true, + }), + }, +}; + From 816287c88687fe9df509ee222ab5ea6b2233b2a6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:49:25 +0200 Subject: [PATCH 1442/2004] fix boringdao --- projects/boringdao/index.js | 39 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/projects/boringdao/index.js b/projects/boringdao/index.js index 0d7294520b4..8a2556e1d45 100644 --- a/projects/boringdao/index.js +++ b/projects/boringdao/index.js @@ -1,39 +1,20 @@ -const { getBalance } = require("../helper/utils"); -const { sumTokens } = require("../helper/unwrapLPs") +const { sumTokensExport } = require("../helper/sumTokens") const contracts = require("./contracts.json"); const sdk = require("@defillama/sdk"); +const { staking } = require('../helper/staking') function chainTvl(chain) { - const exports = { - tvl: async (timestamp, _, { [chain]: block }) => { - const toa = [] - const holders = Object.values(contracts[chain].contracts) - const tokens = Object.values(contracts[chain].tokens) - holders.forEach(o => tokens.forEach(t => toa.push([t, o]))) - return sumTokens({}, toa, block, chain) - }, + const owners = Object.values(contracts[chain].contracts) + const tokens = Object.values(contracts[chain].tokens) + module.exports[chain] = { + tvl: sumTokensExport({ owners, tokens }), } - if (chain === 'ethereum') - exports.staking = async (_, block) => { - return sumTokens({}, [ - ["0xbc19712feb3a26080ebf6f2f7849b417fdd792ca", "0x204c87CDA5DAAC87b2Fc562bFb5371a0B066229C"], - ], block) - } - return exports } -const chainTVLObject = Object.keys(contracts) - .reduce((agg, chain) => ({ ...agg, [chain]: chainTvl(chain) }), {}); - module.exports = { - ...chainTVLObject, timetravel: false, bitcoin: { - tvl: async () => { - return { - bitcoin: await getBalance('bitcoin', '33ZibwpiZe4bM5pwpAdQNqqs2RthLkpJer') - } - } + tvl: sumTokensExport({ owner: '33ZibwpiZe4bM5pwpAdQNqqs2RthLkpJer'}) }, litecoin: { tvl: async (_, block) => { @@ -49,4 +30,8 @@ module.exports = { } } } -}; \ No newline at end of file +}; + +Object.keys(contracts).forEach(chainTvl) + +module.exports.ethereum.staking = staking('0x204c87CDA5DAAC87b2Fc562bFb5371a0B066229C', '0xbc19712feb3a26080ebf6f2f7849b417fdd792ca') \ No newline at end of file From 952bc81cb28035eda68ccef47df5609c3ab8c0bb Mon Sep 17 00:00:00 2001 From: Leven Date: Tue, 30 Apr 2024 19:52:13 +0800 Subject: [PATCH 1443/2004] List XRGB into DefiLlama (#9941) * add xrgb project into DefiLlama * add xrgb * add multi chain * list xrgb project in defillama * update code --------- Co-authored-by: Leven Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/xrgb/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/xrgb/index.js diff --git a/projects/xrgb/index.js b/projects/xrgb/index.js new file mode 100644 index 00000000000..d1070836a29 --- /dev/null +++ b/projects/xrgb/index.js @@ -0,0 +1,9 @@ +const { sumTokensExport } = require("../helper/chain/brc20"); +const owner = 'bc1ptm05s4f6f8j78zhx62lzx0dep07f2597nlgeltmm4sjn5stdu6gq4sxg2w' + +module.exports = { + methodology: "XRGB as bridge,Unlock ERC404 on all chains", + bitcoin: { + tvl: sumTokensExport({ owner, blacklistedTokens: ['XRGB'] }), + } +}; \ No newline at end of file From 8a0a99113e646e855adcbaf4a2dec5e739eda2c0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:32:32 +0200 Subject: [PATCH 1444/2004] track dlc link --- projects/dlc-link/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/dlc-link/index.js diff --git a/projects/dlc-link/index.js b/projects/dlc-link/index.js new file mode 100644 index 00000000000..b5169892b4f --- /dev/null +++ b/projects/dlc-link/index.js @@ -0,0 +1,13 @@ +const sdk = require('@defillama/sdk') +async function tvl({ timestamp }) { + const api = new sdk.ChainApi({ chain: 'arbitrum', timestamp }) + await api.getBlock() + const dlcBTC = '0x050C24dBf1eEc17babE5fc585F06116A259CC77A' + api.add(dlcBTC, await api.call({ target: dlcBTC, abi: 'erc20:totalSupply' })) + return api.getBalances() +} + +module.exports = { + bitcoin: { tvl }, + methodology: `TVL for dlcBTC consists of the total supply of dlcBTC tokens minted.`, +}; From 52902803022453257ca3e412491ce82046c528e8 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:21:31 +0100 Subject: [PATCH 1445/2004] git push origin fix-penpad-server (#10052) --- projects/penpad/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/penpad/index.js b/projects/penpad/index.js index e6a6e4e6284..39973ca3ca9 100644 --- a/projects/penpad/index.js +++ b/projects/penpad/index.js @@ -5,6 +5,6 @@ const { staking } = require('../helper/staking'); module.exports = { methodology: 'Counts liquidty on the staking', scroll: { - tvl: staking('0x8F53fA7928305Fd4f78c12BA9d9DE6B2420A2188, ADDRESSES.null), + tvl: staking('0x8F53fA7928305Fd4f78c12BA9d9DE6B2420A2188', ADDRESSES.null), }, } From 93b18e3248755155f41a7aec069a896be53854d4 Mon Sep 17 00:00:00 2001 From: LowPolyDuck <97544154+LowPolyDuck@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:50:29 -0400 Subject: [PATCH 1446/2004] Adding Mezo (#10056) * Create index.js Adding Mezo tvl * Update index.js --- projects/Mezo/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/Mezo/index.js diff --git a/projects/Mezo/index.js b/projects/Mezo/index.js new file mode 100644 index 00000000000..6dc6965e967 --- /dev/null +++ b/projects/Mezo/index.js @@ -0,0 +1,19 @@ +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokens } = require('../helper/sumTokens'); + +const bridge = "0xAB13B8eecf5AA2460841d75da5d5D861fD5B8A39"; + +async function tvl(api) { + const balances = {}; + await sumTokens({ + api, + balances, + owners: [bridge], + tokens: [ADDRESSES.ethereum.tBTC, ADDRESSES.ethereum.WBTC] + }) + return balances +} + +module.exports = { + ethereum: { tvl } +} From 3f6c0f1b243024594ff4def7d27fbc8e460ed3fc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 1 May 2024 02:28:22 +0530 Subject: [PATCH 1447/2004] Add Tenderswap adapter and refactor code (#10059) * feat: add tenderswap adapter * code refactor --------- Co-authored-by: kyriediculous --- projects/tenderswap/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/tenderswap/index.js diff --git a/projects/tenderswap/index.js b/projects/tenderswap/index.js new file mode 100644 index 00000000000..659fcc34b63 --- /dev/null +++ b/projects/tenderswap/index.js @@ -0,0 +1,17 @@ +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 From b02daac1a44fca59189e6603a70e051f06ae93e2 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Tue, 30 Apr 2024 22:00:45 +0100 Subject: [PATCH 1448/2004] symbiosis adds Core chain support and some new tokens on portals (#10054) --- projects/helper/coreAssets.json | 6 ++++-- projects/symbiosis-finance/config.js | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 232e51d9ff3..fcc966edf4a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -510,7 +510,8 @@ "USDC": "0x818ec0a7fe18ff94269904fced6ae3dae6d6dc0b", "USDT": "0xefaeee334f0fd1712f9a8cc375f427d9cdd40d73", "STLOS": "0xb4b01216a5bc8f1c8a33cd990a1239030e60c905", - "sBUSD": "0x017043607270ecbb440e20b0f0bc5e760818b3d8" + "sBUSD": "0x017043607270ecbb440e20b0f0bc5e760818b3d8", + "syUSDC": "0xe6E5f3d264117E030C21920356641DbD5B3d660c" }, "reichain": { "BNB": "0xf8ab4aaf70cef3f3659d3f466e35dc7ea10d4a5d", @@ -1296,7 +1297,8 @@ "WCORE": "0x40375c92d9faf44d2f9db9bd9ba41a3317a2404f", "WCORE_1": "0x191e94fa59739e188dce837f7f6978d84727ad01", "USDT": "0x900101d06a7426441ae63e9ab3b9b0f63be145f1", - "USDC": "0xa4151b2b3e269645181dccf2d426ce75fcbdeca9" + "USDC": "0xa4151b2b3e269645181dccf2d426ce75fcbdeca9", + "coreBTC": "0x8034aB88C3512246Bf7894f57C834DdDBd1De01F" }, "crab": { "WCRAB": "0x2d2b97ea380b0185e9fdf8271d1afb5d2bf18329" diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index 1045a417e64..fb87780cda4 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -11,6 +11,7 @@ module.exports = { ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.WBTC, XDAO, + '0x12970E6868f88f6557B76120662c1B3E50A646bf', // LADYS ], holders: [ '0xb80fDAA74dDA763a8A158ba85798d373A5E84d84', // portal v1 @@ -66,7 +67,7 @@ module.exports = { { name: 'telos', tokens: [ - ADDRESSES.telos.USDC, + ADDRESSES.telos.syUSDC, ], holders: [ '0x17A0E3234f00b9D7028e2c78dB2caa777F11490F', // portal v1 @@ -145,6 +146,7 @@ module.exports = { ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.WETH, XDAO, + '0x3b60FF35D3f7F62d636b067dD0dC0dFdAd670E4E', // LADYS ], holders: [ '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9', // portal v2 @@ -175,6 +177,7 @@ module.exports = { name: 'polygon_zkevm', tokens: [ ADDRESSES.polygon_zkevm.USDC, + ADDRESSES.polygon_zkevm.USDC_CIRCLE, ADDRESSES.polygon_zkevm.WETH, ], holders: [ @@ -219,7 +222,7 @@ module.exports = { ADDRESSES.tron.USDT, ], holders: [ - 'TSzujXog95iHUoYBHCJtXK1XFKYjJwN7Vr', // portal v2 + 'TVgY3ayqTGUoe7th84ZNL5peVfRNdLFDjf', // portal v2 ] }, { @@ -307,5 +310,14 @@ module.exports = { '0x8Dc71561414CDcA6DcA7C1dED1ABd04AF474D189', // portal v2 ] }, + { + name: 'core', + tokens: [ + ADDRESSES.core.coreBTC, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From ef7e073dbe4ab3f7ebcb43c293dc438de3973b34 Mon Sep 17 00:00:00 2001 From: merchantFi <167061514+merchantFi@users.noreply.github.com> Date: Wed, 1 May 2024 05:20:44 +0800 Subject: [PATCH 1449/2004] Create index.js (#10053) --- projects/merchant/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/merchant/index.js diff --git a/projects/merchant/index.js b/projects/merchant/index.js new file mode 100644 index 00000000000..7eecdc199a6 --- /dev/null +++ b/projects/merchant/index.js @@ -0,0 +1,9 @@ +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", + merlin: { + ...compoundExports2({ comptroller: '0x1F2Aa5598f6543090C4c61A90917909fb5560A43'}), + }, +}; From 389f1645b62ea921bb023765809524f1d5453e98 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 30 Apr 2024 22:54:58 +0100 Subject: [PATCH 1450/2004] add new etherfi vault --- projects/etherfi-liquid/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js index b9bc25daedb..cf3396e3258 100644 --- a/projects/etherfi-liquid/index.js +++ b/projects/etherfi-liquid/index.js @@ -1,10 +1,15 @@ const ADDRESSES = require('../helper/coreAssets.json') async function tvl(api) { - const bal = await api.call({ + const balETH = await api.call({ abi: "uint256:totalAssets", target: '0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221', }); - api.add(ADDRESSES.ethereum.EETH, bal); + api.add(ADDRESSES.ethereum.EETH, balETH); + const balUSD = await api.call({ + abi: "uint256:totalSupply", + target: '0x08c6f91e2b681faf5e17227f2a44c307b3c1364c', + }); + api.add(ADDRESSES.ethereum.USDC, balUSD); } module.exports = { From cc657c1dd2f0adb97600a15c0ce71969e3234358 Mon Sep 17 00:00:00 2001 From: 0xYFLOW <139814596+0xYFLOW@users.noreply.github.com> Date: Wed, 1 May 2024 12:35:25 +0400 Subject: [PATCH 1451/2004] added new position managers (#10060) --- projects/yieldflow/index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js index 1515efc4287..acc7a926197 100644 --- a/projects/yieldflow/index.js +++ b/projects/yieldflow/index.js @@ -34,7 +34,17 @@ const managers = [ '0x3bBA41A6069F539B7540141460584194De2154Ce', '0x4664dc8E1710116ff46693FEB42f16CBe58f8237', '0xCF49168017096dB97Eb14552bd0af6eE9a27e76A', - '0x899DF9d131D2276Db3c5f392ce2b396d9b1BFa8c' + '0x899DF9d131D2276Db3c5f392ce2b396d9b1BFa8c', + + '0xC3ec6F076fE7395B0C263f7E37B084EC4Fd06eaF', + '0x034a5fC7518d2D1b6a8C9CaccD273ee37C669E95', + '0xE0D19D57BAFF656d2910BFFBec81E33f1368A0Ee', + '0x2de0b61a2778169f095A8a7DAD7B566A9973E977', + '0x440b228411a4D83820e0c63cD71E769a6660E037', + '0x717FADe04FF819a58128Be591caC8C801F28Cd5b', + '0x1655cfD162b4148E1715B6302DA4EF075Fa72ADf', + '0x604Ef6Dc8c7abf78008749b57a4135C87d69fc35', + '0xa63fa8FE58A5E197f092742619D8F4C7fE4924e8' ] async function tvl(api) { From 04a97d87b691ddd0549dc47d280c39ee9159a8b6 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Wed, 1 May 2024 17:40:27 +0900 Subject: [PATCH 1452/2004] add b2 markets (btc, eth) (#10064) * add wemixChain * add manta-eth market * add manta stable market * fix mergeExport * add manta chain manta market * add mode eth market * add metis network metis market * add b2 markets (btc, eth) --- projects/shoebillFinance-v2/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index fb78313086b..b51e313affc 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -42,5 +42,16 @@ module.exports = mergeExports([ cether: "0x386adCa3c7D5C90523287933B05919aFcC2883dE", }), }, + { + bsquared: compoundExports2({ + comptroller: "0x80E81348D9386Eb4d10c2A32A7458638cD3308dF", + cether: "0x8dbf84c93727c85DB09478C83a8621e765D20eC2", + }), + }, + { + bsquared: compoundExports2({ + comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", + }), + }, ]); From c3976d62a561f4028aff904d03badd8d39da0b75 Mon Sep 17 00:00:00 2001 From: Oliv <59149194+olivblad@users.noreply.github.com> Date: Wed, 1 May 2024 10:51:14 +0200 Subject: [PATCH 1453/2004] New adapter for v2 of Atlendis protocol (#10051) * new adapter for Atlendis protocol to monitor v2 * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/atlendis-v2/index.js | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 projects/atlendis-v2/index.js diff --git a/projects/atlendis-v2/index.js b/projects/atlendis-v2/index.js new file mode 100644 index 00000000000..4572c23c8ee --- /dev/null +++ b/projects/atlendis-v2/index.js @@ -0,0 +1,67 @@ +const { GraphQLClient, } = require("graphql-request"); +const query = ` + query tvl($chainId: Int!) { + rcls(chainId: $chainId) { + id + address + tvl + token { + address + } + currentLoan {accruedInterests borrowedAmount } + } + bulletLoans(chainId: $chainId) { + id + address + tvl + token { + address + } + } + } +` + +// 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, } = await graphQLClient.request(query, { chainId }); + const tokensAndOwners = rcls.map(rcl => [rcl.token.address, rcl.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) { + api.add(rcl.token.address, rcl.currentLoan.borrowedAmount) + } + } + + for (let loan of bulletLoans) { + if (loan.issuedLoan) { + api.add(loan.token.address, loan.tvl) + } + } +} + +module.exports = { + start: 1686642643, + 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 } +}) \ No newline at end of file From 3b05561b4e14818bb9c02bc5f2a5137c1b9f4c02 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 1 May 2024 16:06:09 +0530 Subject: [PATCH 1454/2004] Add TVL adapter for Yearn Gauge tokens in Cove boosties (#10067) * feat: add tvl adapter for yearn gauge tokens in Cove boosties * feat: unwrap yearn gauge tokens manually * code refactor --------- Co-authored-by: Jongseung Lim --- projects/cove-boosties/index.js | 69 +++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 projects/cove-boosties/index.js diff --git a/projects/cove-boosties/index.js b/projects/cove-boosties/index.js new file mode 100644 index 00000000000..53ce8a0a5db --- /dev/null +++ b/projects/cove-boosties/index.js @@ -0,0 +1,69 @@ +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 }, +}; From f10f30ef8bbbf7affa136f1faa5f0d9871bc6daf Mon Sep 17 00:00:00 2001 From: antonb <130487593+antonbosss@users.noreply.github.com> Date: Wed, 1 May 2024 13:52:38 +0300 Subject: [PATCH 1455/2004] Create index.js (#10065) --- projects/MorpheusAI/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/MorpheusAI/index.js diff --git a/projects/MorpheusAI/index.js b/projects/MorpheusAI/index.js new file mode 100644 index 00000000000..39ad32d3095 --- /dev/null +++ b/projects/MorpheusAI/index.js @@ -0,0 +1,21 @@ +const STETH_CONTRACT = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; +const PROJECT_CONTRACT = '0x47176B2Af9885dC6C4575d4eFd63895f7Aaa4790'; + +async function tvl(_, __, ___, { api }) { + const stEthBalance = await api.call({ + abi: 'erc20:balanceOf', + target: STETH_CONTRACT, + params: [PROJECT_CONTRACT], + }); + + api.add(STETH_CONTRACT, stEthBalance); +} + +module.exports = { + timetravel: true, + misrepresentedTokens: false, + methodology: 'Calculates TVL based on stETH deposits in the project contract.', + ethereum: { + tvl, + }, +}; From 8706afa99d076e7dd4db5fbb84fc9d9381faf61b Mon Sep 17 00:00:00 2001 From: Rishabh Shukla <38362547+0xrishabh@users.noreply.github.com> Date: Wed, 1 May 2024 16:23:33 +0530 Subject: [PATCH 1456/2004] Update Lila Provider (#10066) * Update Lila Provider * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lila-finance/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/lila-finance/index.js b/projects/lila-finance/index.js index d9063eaffe4..5a081745704 100644 --- a/projects/lila-finance/index.js +++ b/projects/lila-finance/index.js @@ -1,8 +1,12 @@ const ADDRESSES = require('../helper/coreAssets.json') -const pools_provider = "0xE4534d76Cc512a14F288453F06F8961740Ae2a1E" +const pools_providers = ["0xE4534d76Cc512a14F288453F06F8961740Ae2a1E", '0x993e06adeb3050a1Df385E05a2deb4b15a0DBCBF'] async function tvl(api) { - let 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}) + 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]) From f8dd238f6e4281791e7d1bdd8b097efd61b2ee12 Mon Sep 17 00:00:00 2001 From: saimdev <60602690+salimdev04@users.noreply.github.com> Date: Wed, 1 May 2024 11:55:13 +0100 Subject: [PATCH 1457/2004] dirac finance tvl infos (#10057) * dirac finance tvl infos * dirac finance dirac + keom + cygnus infos --------- Co-authored-by: salime soulemane --- projects/dirac-finance/index.js | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/dirac-finance/index.js diff --git a/projects/dirac-finance/index.js b/projects/dirac-finance/index.js new file mode 100644 index 00000000000..03272e090f6 --- /dev/null +++ b/projects/dirac-finance/index.js @@ -0,0 +1,41 @@ +const DIRAC_VAULT_1_CONTRACT = '0xa9154A433E879fa0E948eA208Aa359271Dc40469'; +const USDCE_CONTRACT = '0x37eaa0ef3549a5bb7d431be78a3d99bd360d19e5'; +const USDC_CONTRACT = '0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035'; + +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.', + start: 11251616, + polygon_zkevm: { + tvl, + } +}; \ No newline at end of file From f5e327e07641f53bd3f930065d7dcec8d6dc5cae Mon Sep 17 00:00:00 2001 From: pauljpritz-temp <107891923+pauljpritz-temp@users.noreply.github.com> Date: Wed, 1 May 2024 12:11:32 +0100 Subject: [PATCH 1458/2004] Adapter for TLX protocol (#10058) * Adapter for TLX protocol added * Adapter for TLX protocol updated --- projects/tlx/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/tlx/index.js diff --git a/projects/tlx/index.js b/projects/tlx/index.js new file mode 100644 index 00000000000..1eaf0292005 --- /dev/null +++ b/projects/tlx/index.js @@ -0,0 +1,23 @@ +const contracts = { + tlx: "0xD9cC3D70E730503E7f28c1B407389198c4B75FA2", + locker: "0xc068c3261522c97ff719dc97c98c63a1356fef0f", +}; + +async function staking(_, _1, _2, { api }) { + const lockedTlxBalance = await api.call({ + abi: "uint256:totalStaked", + target: contracts.locker, + }); + + api.addToken(contracts.tlx, lockedTlxBalance); +} +module.exports = { + timetravel: true, + misrepresentedTokens: false, + start: 1712731500, + methodology: "Total TLX locked in the genesis locker contract.", + optimism: { + tvl: () => ({}), + staking: staking, + }, +}; From 38268785be75bc2bd5a682c6e851e8edc9ff6461 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 1 May 2024 13:14:35 +0200 Subject: [PATCH 1459/2004] minor fix --- projects/helper/tokenMapping.js | 3 +++ projects/tlx/index.js | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3e97c14e3e9..d21935f0338 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -35,6 +35,9 @@ const ibcMappings = { } const fixBalancesTokens = { + optimism: { + '0xD9cC3D70E730503E7f28c1B407389198c4B75FA2': { coingeckoId: "tlx", decimals: 18, }, + }, ancient8: { [ADDRESSES.nul]: { coingeckoId: "ethereum", decimals: 18, }, '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, diff --git a/projects/tlx/index.js b/projects/tlx/index.js index 1eaf0292005..fd11ed7196c 100644 --- a/projects/tlx/index.js +++ b/projects/tlx/index.js @@ -1,19 +1,21 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + const contracts = { tlx: "0xD9cC3D70E730503E7f28c1B407389198c4B75FA2", locker: "0xc068c3261522c97ff719dc97c98c63a1356fef0f", -}; +} -async function staking(_, _1, _2, { api }) { +async function staking(api) { const lockedTlxBalance = await api.call({ abi: "uint256:totalStaked", target: contracts.locker, }); - api.addToken(contracts.tlx, lockedTlxBalance); + api.addToken(contracts.tlx, lockedTlxBalance) + return sumTokens2({ api }) } + module.exports = { - timetravel: true, - misrepresentedTokens: false, start: 1712731500, methodology: "Total TLX locked in the genesis locker contract.", optimism: { From b19aa7c0485bbc67b5f56c05f0b2daaf040b262b Mon Sep 17 00:00:00 2001 From: particle-deployer <130306380+particle-deployer@users.noreply.github.com> Date: Wed, 1 May 2024 04:58:18 -0700 Subject: [PATCH 1460/2004] when native token is locked, wrapped token is generated for tvl tracking (#10062) * when native token is locked, wrapped token is generated for tvl tracking * minor fix --------- Co-authored-by: Wukong Particle Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/particle-trade-duo/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index fdcd88a8a87..cbb49332e83 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -9,6 +9,20 @@ const config = { }, } +const wrappedToken = { + blast: { + duoEth: '0x1Da40C742F32bBEe81694051c0eE07485fC630f6', + duoUsd: '0x1A3D9B2fa5c6522c8c071dC07125cE55dF90b253', + } +} + +const wrappedNativeTokenMap = { + blast: { + '0x1Da40C742F32bBEe81694051c0eE07485fC630f6': '0x66714DB8F3397c767d0A602458B5b4E3C0FE7dd1', + '0x1A3D9B2fa5c6522c8c071dC07125cE55dF90b253': '0x866f2C06B83Df2ed7Ca9C2D044940E7CD55a06d6', + } +} + Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: async (api) => { @@ -20,6 +34,12 @@ Object.keys(config).forEach(chain => { 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); } } }) \ No newline at end of file From d40a4ff672d57481b732cedce959fcd16831ce97 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Thu, 2 May 2024 00:14:09 +0900 Subject: [PATCH 1461/2004] add BOB chain btc, eth market & BOB chain config (#10068) * add wemixChain * add manta-eth market * add manta stable market * fix mergeExport * add manta chain manta market * add mode eth market * add metis network metis market * add b2 markets (btc, eth) * add bob chain (bob chain config not added) * add bob chain? * track bob --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dyorswap/index.js | 1 + projects/helper/chains.json | 1 + projects/helper/env.js | 2 ++ projects/helper/tokenMapping.js | 8 ++++++++ projects/icecreamswap/index.js | 1 + projects/lineabank/index.js | 1 + projects/segment-finance/index.js | 12 ++++-------- projects/shoebillFinance-v2/index.js | 11 +++++++++++ 8 files changed, 29 insertions(+), 8 deletions(-) diff --git a/projects/dyorswap/index.js b/projects/dyorswap/index.js index 63dcb721644..4f8b31d9f77 100644 --- a/projects/dyorswap/index.js +++ b/projects/dyorswap/index.js @@ -7,6 +7,7 @@ const config = { zeta: '0xA1da7a7eB5A858da410dE8FBC5092c2079B58413', degen: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', xlayer: '0x2ccadb1e437aa9cdc741574bda154686b1f04c09', + bob: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', } module.exports = { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index c1520b8f4da..f15afddabf4 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -31,6 +31,7 @@ "bittorrent", "bitkub", "blast", + "bob", "boba", "boba_avax", "boba_bnb", diff --git a/projects/helper/env.js b/projects/helper/env.js index f52892d0f6e..24b4e5395ce 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -13,6 +13,8 @@ const DEFAULTS = { ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", + BOB_RPC: "https://rpc.gobob.xyz/", + BOB_RPC_MULTICALL: "0xcA11bde05977b3631167028862bE2a173976CA11", } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d21935f0338..3672c730a26 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -159,6 +159,14 @@ const fixBalancesTokens = { PHA: { coingeckoId: "pha", decimals: 12 }, KINT: { coingeckoId: "kintsugi", decimals: 12 }, KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, + }, + bob: { + '0x0000000000000000000000000000000000000000': { coingeckoId: "ethereum", decimals: 18, }, + '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, + '0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3': { coingeckoId: "wrapped-bitcoin", decimals: 8, }, + '0x05d032ac25d322df992303dca074ee7392c117b9': { coingeckoId: "tether", decimals: 6, }, + '0xe75d0fb2c24a55ca1e3f96781a2bcc7bdba058f0': { coingeckoId: "usd-coin", decimals: 6, }, + '0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2': { coingeckoId: "tbtc", decimals: 18, }, } } diff --git a/projects/icecreamswap/index.js b/projects/icecreamswap/index.js index 10b1d621bb1..e660e4e1588 100644 --- a/projects/icecreamswap/index.js +++ b/projects/icecreamswap/index.js @@ -2,6 +2,7 @@ const { getUniTVL, } = require('../helper/unknownTokens') const config = { shimmer_evm: '0x24cb308a4e2F3a4352F513681Bd0c31a0bd3BA31', + bob: '0x7b2a5C88AB9367147F6ac384F857CbaDF5aA70a7', } const chains = [...Object.keys(config), 'base', 'telos', 'core', 'dogechain', 'fuse', 'xdc', 'bitgert', 'scroll', 'neon_evm', 'blast' ] diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index 604b4eaf571..5000524af09 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -7,6 +7,7 @@ const config = { mode: '0x80980869D90A737aff47aBA6FbaA923012C1FF50', zklink: '0x4Ac518DbF0CC730A1c880739CFa98fe0bB284959', bsquared: '0x72f7a8eb9F83dE366AE166DC50F16074076C3Ea6', + bob: '0x77cabFd057Bd7C81c011059F1bf74eC1fBeDa971', } const abis = { diff --git a/projects/segment-finance/index.js b/projects/segment-finance/index.js index 4ec7f91a6a7..e2c25c3dad8 100644 --- a/projects/segment-finance/index.js +++ b/projects/segment-finance/index.js @@ -3,16 +3,11 @@ 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", - op_bnb: { - ...compoundExports2({ - comptroller: "0x71ac0e9A7113130280040d0189d0556f45a8CBB5", - cether: "0x7e844423510A5081DE839e600F7960C7cE84eb82", - }), - }, + op_bnb: compoundExports2({ comptroller: "0x71ac0e9A7113130280040d0189d0556f45a8CBB5", cether: "0x7e844423510A5081DE839e600F7960C7cE84eb82", }), bsc: { ...compoundExports2({ - comptroller: "0x57E09c96DAEE58B77dc771B017de015C38060173", - cether: "0x5fcea94b96858048433359bb5278a402363328c3", + comptroller: "0x57E09c96DAEE58B77dc771B017de015C38060173", + cether: "0x5fcea94b96858048433359bb5278a402363328c3", }), staking: staking( [ @@ -22,4 +17,5 @@ module.exports = { "bsc", ), }, + bob: compoundExports2({ comptroller: "0xcD7C4F508652f33295F0aEd075936Cd95A4D2911", cether: '0xd7c6cc5aef7396182c5d7ebdac66ff674f3ddcf4' }) }; diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index b51e313affc..bd4d3d92eb7 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -53,5 +53,16 @@ module.exports = mergeExports([ comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", }), }, + { + bob: compoundExports2({ + comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", + cether: "0xb4255533Ad74A25A83d17154cB48A287E8f6A811", + }), + }, + { + bob: compoundExports2({ + comptroller: "0xB7ed6c062caAaCb1A13f317E0A751289280FC306", + }), + }, ]); From 6c76d3107661fee4f70d5871dc733aed38807afd Mon Sep 17 00:00:00 2001 From: BitGonzi Date: Wed, 1 May 2024 17:57:31 +0200 Subject: [PATCH 1462/2004] helix markets tvl adapter (#10050) --- projects/helix-markets/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/helix-markets/index.js diff --git a/projects/helix-markets/index.js b/projects/helix-markets/index.js new file mode 100644 index 00000000000..e5c1206e4a2 --- /dev/null +++ b/projects/helix-markets/index.js @@ -0,0 +1,22 @@ +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 From 3dc4da7ce3409f1fe6a4785fbab59972add3eb86 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Wed, 1 May 2024 17:22:05 +0100 Subject: [PATCH 1463/2004] blur on blast --- projects/blur/index.js | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/projects/blur/index.js b/projects/blur/index.js index 7bd7c2cdf49..b5f02687841 100644 --- a/projects/blur/index.js +++ b/projects/blur/index.js @@ -1,13 +1,11 @@ const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const {staking} = require('../helper/staking') - +const { staking } = require('../helper/staking') +const { sumTokensExport } = require('../helper/unwrapLPs') const blurBiddingAddr = "0x0000000000A39bb272e79075ade125fd351887Ac" - async function ethtvl(timestamp, block) { - const ethBalance = await sdk.api.eth.getBalance({ target: blurBiddingAddr, block @@ -15,18 +13,19 @@ async function ethtvl(timestamp, block) { return { [ADDRESSES.null]: ethBalance.output, - } } module.exports = { - hallmarks: [ - [1676376000,"BLUR token launch"] + hallmarks: [ + [1676376000, "BLUR token launch"] ], - methodology: 'TVL counts ETH tokens in the Blur Bidding address:0x0000000000A39bb272e79075ade125fd351887Ac', - - ethereum: { - staking: staking("0xeC2432a227440139DDF1044c3feA7Ae03203933E", "0x5283d291dbcf85356a21ba090e6db59121208b44"), - tvl: ethtvl - } + methodology: `TVL counts ETH tokens in the Blur Bidding address:${blurBiddingAddr}`, + ethereum: { + staking: staking("0xeC2432a227440139DDF1044c3feA7Ae03203933E", "0x5283d291dbcf85356a21ba090e6db59121208b44"), + tvl: ethtvl + }, + blast:{ + tvl: sumTokensExport({tokensAndOwners: [[ADDRESSES.null, "0xB772d5C5F4A2Eef67dfbc89AA658D2711341b8E5"]]}) + } } From 72897014bb7645b2de0ef452bcda7ef049677764 Mon Sep 17 00:00:00 2001 From: Carrey <100190915+BingoCarry@users.noreply.github.com> Date: Thu, 2 May 2024 01:03:49 +0800 Subject: [PATCH 1464/2004] Updated bridge contract, revised TVL calculation method. (#10063) * Create BridgemMantaLock * Delete projects/BridgemMantaLock * Create bridgem manta tvl * Create bridgem ethereum tvl * Update index.js * merge adapters --------- Co-authored-by: jiangxiaop <87347972+jiangxiaop@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bridgem/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/bridgem/index.js diff --git a/projects/bridgem/index.js b/projects/bridgem/index.js new file mode 100644 index 00000000000..2d23247a7f7 --- /dev/null +++ b/projects/bridgem/index.js @@ -0,0 +1,18 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const STONE = '0xEc901DA9c68E90798BbBb74c11406A32A70652C3'; +const AtomicLockContract = '0x19727db22Cba70B1feE40337Aba69D83c6741caF'; + +const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +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] }), + } +}; From 509a506f21e4807bd40dfff627650277c12d1415 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 1 May 2024 20:37:33 +0100 Subject: [PATCH 1465/2004] add hallmark --- projects/pike/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/pike/index.js b/projects/pike/index.js index 12deedc9893..2d25d29d94e 100644 --- a/projects/pike/index.js +++ b/projects/pike/index.js @@ -20,6 +20,8 @@ const config = { ]} } +module.exports.hallmarks=[[1714435200, "Protocol exploit"]] + Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: sumTokensExport(config[chain]) From 0f57ce9763e9e3ee66b2a053ed5c3ffd1f3e3a48 Mon Sep 17 00:00:00 2001 From: Mouzayan <42501101+Mouzayan@users.noreply.github.com> Date: Wed, 1 May 2024 16:18:31 -0400 Subject: [PATCH 1466/2004] Arcade Treasury TVL (#10069) * chore(arcade-treasury-tvl): add treasury tvl to index.js * chore(arcade-treasury-tvl): move file to treasury folder * chore(arcade-treasury-tvl): remove index.js updates --- projects/treasury/arcade-xyz.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/treasury/arcade-xyz.js diff --git a/projects/treasury/arcade-xyz.js b/projects/treasury/arcade-xyz.js new file mode 100644 index 00000000000..77b57a7c629 --- /dev/null +++ b/projects/treasury/arcade-xyz.js @@ -0,0 +1,14 @@ +const { treasuryExports } = require("../helper/treasury"); + +// node test.js projects/treasury/arcade-xyz.js + +const ARCADE_TREASURY = '0xac2b57b372E198F09d4bF5F445CA1228771C12c5'; +const ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'; +const ARCD_TOKEN = '0xe020B01B6fbD83066aa2e8ee0CCD1eB8d9Cc70bF'; + +module.exports = treasuryExports({ + ethereum: { + owners: [ARCADE_TREASURY], + ownTokens: [ARCD_TOKEN, ETH_ADDRESS] + } +}) \ No newline at end of file From ed33f4c853d277b1bf76de0d9f8e2039ceceef71 Mon Sep 17 00:00:00 2001 From: Michael Otis <34221002+michaelotis@users.noreply.github.com> Date: Wed, 1 May 2024 15:19:46 -0500 Subject: [PATCH 1467/2004] Update Vela TVL to use native USDC instead of bridged (#10070) * Update Vela TVL/Staking * Remove async-retry * Update index.js * Add Base launch to Vela Exchange * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/vela-exchange/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js index 791db2f4720..89124b09399 100644 --- a/projects/vela-exchange/index.js +++ b/projects/vela-exchange/index.js @@ -45,7 +45,7 @@ async function staking_base_(api) { 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), + tvl: staking('0xC4ABADE3a15064F9E3596943c699032748b13352', [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDC]), staking: staking_arbitrum_ }, base: { From 7658a065f9419de55c3652be5d5a41506198affb Mon Sep 17 00:00:00 2001 From: Hayden Shively <17186559+haydenshively@users.noreply.github.com> Date: Wed, 1 May 2024 15:20:13 -0500 Subject: [PATCH 1468/2004] Add linea data to Aloe adapter (#10071) --- projects/aloe/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/aloe/index.js b/projects/aloe/index.js index 6748e3f8c32..0bd29e603bd 100644 --- a/projects/aloe/index.js +++ b/projects/aloe/index.js @@ -6,6 +6,7 @@ const config = { optimism: { fromBlock: 113464669, }, base: { fromBlock: 7869252, }, arbitrum: { fromBlock: 159919891, }, + linea: { factory: '0x00000000333288eBA83426245D144B966Fd7e82E', fromBlock: 3982456 }, }; async function getVaults(api) { From 4cc3b6257509427191b095c609001f25c41a9a80 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 1 May 2024 22:28:22 +0200 Subject: [PATCH 1469/2004] track lama staking --- projects/LamaMiner/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/projects/LamaMiner/index.js b/projects/LamaMiner/index.js index 79c0e9072ac..0c13ec936a8 100644 --- a/projects/LamaMiner/index.js +++ b/projects/LamaMiner/index.js @@ -2,11 +2,16 @@ 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: 1711962980, avax: { - tvl: sumTokensExport({ owner: LAMA_MINER_CONTRACT, tokens: [LAMA_TOKEN_CONTRACT], lps: [LP_LAMA_WAVAX], useDefaultCoreAssets: true, }) + 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 From 2a89031a1ee0611d224b898dd7e494d35795b638 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 1 May 2024 22:31:04 +0200 Subject: [PATCH 1470/2004] use token labels --- projects/MorpheusAI/index.js | 3 ++- projects/airpuff/index.js | 8 +++---- projects/arcade-xyz/constants.js | 3 ++- projects/bountive/index.js | 11 +++++----- projects/breadchain/index.js | 2 +- projects/bridgem/index.js | 3 ++- projects/butternetwork/index.js | 2 +- projects/cega-v2/index.js | 2 +- projects/dirac-finance/index.js | 5 +++-- projects/ebtc/index.js | 3 ++- projects/ethena/index.js | 3 ++- projects/helper/tokenMapping.js | 16 +++++++------- projects/jones-dao/addresses.js | 2 +- projects/lumi-finance/index.js | 7 ++++--- projects/meson/index.js | 31 ++++++++++++++-------------- projects/mountain-protocol/index.js | 4 ++-- projects/particle-trade-duo/index.js | 5 +++-- projects/plur/index.js | 3 ++- projects/ridotto/index.js | 2 +- projects/treasury/luchadores.js | 2 +- projects/zeepr/index.js | 3 ++- projects/zircuit/index.js | 2 +- projects/zkdx/index.js | 2 +- 23 files changed, 68 insertions(+), 56 deletions(-) diff --git a/projects/MorpheusAI/index.js b/projects/MorpheusAI/index.js index 39ad32d3095..5df8e268426 100644 --- a/projects/MorpheusAI/index.js +++ b/projects/MorpheusAI/index.js @@ -1,4 +1,5 @@ -const STETH_CONTRACT = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; +const ADDRESSES = require('../helper/coreAssets.json') +const STETH_CONTRACT = ADDRESSES.ethereum.STETH; const PROJECT_CONTRACT = '0x47176B2Af9885dC6C4575d4eFd63895f7Aaa4790'; async function tvl(_, __, ___, { api }) { diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index b56adab404f..4bc721b3723 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -41,22 +41,22 @@ module.exports = { const airPuff1XwETHMode = { vault: "0xeAaD8f5F1901D2f92B747650c0f941Bfa3413dAF", - pendleAddress: "0x4200000000000000000000000000000000000006", + pendleAddress: ADDRESSES.optimism.WETH_1, }; const airPuff1XUSDTMode = { vault: "0xCEb6264CdCcDDd8c9631212Dc7112304F9393818", - pendleAddress: "0xf0F161fDA2712DB8b566946122a5af183995e2eD", + pendleAddress: ADDRESSES.mode.USDT, }; const airPuff1XUSDCMode = { vault: "0x08ccF72358B44D9d45438Fc703962A0a2FD5c978", - pendleAddress: "0xd988097fb8612cc24eeC14542bC03424c656005f", + pendleAddress: ADDRESSES.mode.USDC, }; const airPuff1XwBTCMode = { vault: "0xf9B484901BCA34A8615c90E8C4933f1Bd553B639", - pendleAddress: "0xcdd475325d6f564d27247d1dddbb0dac6fa0a5cf", + pendleAddress: ADDRESSES.mode.WBTC, }; const airPuff1XwrsETHMode = { diff --git a/projects/arcade-xyz/constants.js b/projects/arcade-xyz/constants.js index dad1f632001..d4d34ddf6cf 100644 --- a/projects/arcade-xyz/constants.js +++ b/projects/arcade-xyz/constants.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const SUBGRAPH_URL = 'https://subgraph.satsuma-prod.com/c59d37e827d0/non-fungible-technologies/protocol/api'; const CHAIN = 'ethereum'; @@ -16,7 +17,7 @@ const STAKING_REWARDS = "0x80bDdd56b947c547Ab8964D80E98E42Ff77a5793"; const SINGLE_SIDED_STAKING = "0x72854FBb44d3dd87109D46a9298AEB0d018740f0"; const ARCD = "0xe020B01B6fbD83066aa2e8ee0CCD1eB8d9Cc70bF"; const ARCD_WETH_LP = "0x06af8C358c0787640588734E4733A779961a2bca"; -const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const WETH = ADDRESSES.ethereum.WETH; const VAULT_FACTORIES = new Set(); VAULT_FACTORIES.add(VAULT_FACTORY_A); diff --git a/projects/bountive/index.js b/projects/bountive/index.js index 9bb66642cac..134cab63885 100644 --- a/projects/bountive/index.js +++ b/projects/bountive/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { bountiveTokenAbi } = require("./abi"); const { multiCall } = require('../helper/chain/starknet') @@ -16,15 +17,15 @@ const bountiveTokens = [ const underlyingsTokens = [ // STRK - "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d", + ADDRESSES.starknet.STRK, // ETH - "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + ADDRESSES.starknet.ETH, // USDC - "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", + ADDRESSES.starknet.USDC, // USDT - "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", + ADDRESSES.starknet.USDT, // DAI - "0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", + ADDRESSES.starknet.DAI, ] async function tvl(api) { diff --git a/projects/breadchain/index.js b/projects/breadchain/index.js index 6d4a567ea1f..885d13f34dd 100644 --- a/projects/breadchain/index.js +++ b/projects/breadchain/index.js @@ -3,6 +3,6 @@ const ADDRESSES = require('../helper/coreAssets.json') module.exports = { xdai: { - tvl: sumTokensExport({ owner: '0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3', tokens: [ADDRESSES.xdai.DAI, '0xaf204776c7245bf4147c2612bf6e5972ee483701']}) + tvl: sumTokensExport({ owner: '0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3', tokens: [ADDRESSES.xdai.DAI, ADDRESSES.xdai.SDAI]}) }, } \ No newline at end of file diff --git a/projects/bridgem/index.js b/projects/bridgem/index.js index 2d23247a7f7..56044e7c158 100644 --- a/projects/bridgem/index.js +++ b/projects/bridgem/index.js @@ -1,9 +1,10 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const STONE = '0xEc901DA9c68E90798BbBb74c11406A32A70652C3'; const AtomicLockContract = '0x19727db22Cba70B1feE40337Aba69D83c6741caF'; -const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; +const USDC = ADDRESSES.ethereum.USDC; const ESTONE = '0x7122985656e38BDC0302Db86685bb972b145bD3C'; const LOCK_CONTRACT = '0xD6572c7Cd671ECF75d920aDcd200B00343959600'; diff --git a/projects/butternetwork/index.js b/projects/butternetwork/index.js index 6787b5e26f4..047c6b2eba4 100644 --- a/projects/butternetwork/index.js +++ b/projects/butternetwork/index.js @@ -97,7 +97,7 @@ const config = { WETH: ADDRESSES.base.WETH, USDbC: ADDRESSES.base.USDbC, DAI: ADDRESSES.base.DAI, - BAL: "0x7c6b91d9be155a6db01f749217d76ff02a7227f2", + BAL: ADDRESSES.defiverse.USDC, ERN: "0xa334884bf6b0a066d553d19e507315e839409e62", BALD: "0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8", BASIN: "0x4788de271f50ea6f5d5d2a5072b8d3c61d650326", diff --git a/projects/cega-v2/index.js b/projects/cega-v2/index.js index 1beaff4612d..4a8f77f9625 100644 --- a/projects/cega-v2/index.js +++ b/projects/cega-v2/index.js @@ -12,7 +12,7 @@ module.exports = { ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.DAI, ADDRESSES.ethereum.USDe, - "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + ADDRESSES.ethereum.sUSDe, ], owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"], }), diff --git a/projects/dirac-finance/index.js b/projects/dirac-finance/index.js index 03272e090f6..b1131cc4e14 100644 --- a/projects/dirac-finance/index.js +++ b/projects/dirac-finance/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const DIRAC_VAULT_1_CONTRACT = '0xa9154A433E879fa0E948eA208Aa359271Dc40469'; -const USDCE_CONTRACT = '0x37eaa0ef3549a5bb7d431be78a3d99bd360d19e5'; -const USDC_CONTRACT = '0xA8CE8aee21bC2A48a5EF670afCc9274C7bbbC035'; +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'; diff --git a/projects/ebtc/index.js b/projects/ebtc/index.js index 58a35bf87a4..37a7cf00dfd 100644 --- a/projects/ebtc/index.js +++ b/projects/ebtc/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs') -const COLLATERAL_ADDRESS = "0xae7ab96520de3a18e5e111b5eaab095312d7fe84"; // stETH +const COLLATERAL_ADDRESS = ADDRESSES.ethereum.STETH; // stETH const ACTIVE_POOL_ADDRESS = "0x6dBDB6D420c110290431E863A1A978AE53F69ebC"; const COLL_SURPLUSS_POOL = "0x335982DaE827049d35f09D5ec927De2bc38df3De"; diff --git a/projects/ethena/index.js b/projects/ethena/index.js index b74a15594f3..0bbd95f0626 100644 --- a/projects/ethena/index.js +++ b/projects/ethena/index.js @@ -1,4 +1,5 @@ -const USDe = "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3" +const ADDRESSES = require('../helper/coreAssets.json') +const USDe = ADDRESSES.ethereum.USDe module.exports = { ethereum: { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3672c730a26..6ae1dc13fcf 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -40,7 +40,7 @@ const fixBalancesTokens = { }, ancient8: { [ADDRESSES.nul]: { coingeckoId: "ethereum", decimals: 18, }, - '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: "ethereum", decimals: 18, }, }, area: { '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf': { coingeckoId: 'areon-network', decimals: 18, }, @@ -64,7 +64,7 @@ const fixBalancesTokens = { }, core: { '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, - '0x8034ab88c3512246bf7894f57c834dddbd1de01f': { coingeckoId: "bitcoin", decimals: 8 }, + [ADDRESSES.core.coreBTC]: { coingeckoId: "bitcoin", decimals: 8 }, }, bsc: { '0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB': { coingeckoId: "zeepr", decimals: 18, }, @@ -92,7 +92,7 @@ const fixBalancesTokens = { '0x4dcb91cc19aadfe5a6672781eb09abad00c19e4c': { coingeckoId: "sats-ordinals", decimals: 18, }, '0x69181a1f082ea83a152621e4fa527c936abfa501': { coingeckoId: "rats", decimals: 18, }, '0x0726523eba12edad467c55a962842ef358865559': { coingeckoId: "ordinals", decimals: 18, }, - '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, + [ADDRESSES.null]: { coingeckoId: "bitcoin", decimals: 18, }, '0x967aec3276b63c5e2262da9641db9dbebb07dc0d': { coingeckoId: "tether", decimals: 6, }, '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, }, @@ -111,14 +111,14 @@ const fixBalancesTokens = { '0x80137510979822322193fc997d400d5a6c747bf7': { coingeckoId: "stakestone-ether", decimals: 18 }, }, zklink: { - '0x0000000000000000000000000000000000000000': { coingeckoId: "ethereum", decimals: 18, }, + [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, '0xda4aaed3a53962c83b35697cd138cc6df43af71f': { coingeckoId: "wrapped-bitcoin", decimals: 8, }, '0x2f8a25ac62179b31d62d7f80884ae57464699059': { coingeckoId: "tether", decimals: 6, }, '0x1a1a3b2ff016332e866787b311fcb63928464509': { coingeckoId: "usd-coin", decimals: 6, }, }, bsquared: { - '0x0000000000000000000000000000000000000000': { coingeckoId: "bitcoin", decimals: 18, }, - '0x4200000000000000000000000000000000000006': { coingeckoId: "bitcoin", decimals: 18, }, + [ADDRESSES.null]: { coingeckoId: "bitcoin", decimals: 18, }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: "bitcoin", decimals: 18, }, '0x681202351a488040fa4fdcc24188afb582c9dd62': { coingeckoId: "tether", decimals: 6, }, '0xe544e8a38add9b1abf21922090445ba93f74b9e5': { coingeckoId: "usd-coin", decimals: 6, }, }, @@ -161,8 +161,8 @@ const fixBalancesTokens = { KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, bob: { - '0x0000000000000000000000000000000000000000': { coingeckoId: "ethereum", decimals: 18, }, - '0x4200000000000000000000000000000000000006': { coingeckoId: "ethereum", decimals: 18, }, + [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: "ethereum", decimals: 18, }, '0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3': { coingeckoId: "wrapped-bitcoin", decimals: 8, }, '0x05d032ac25d322df992303dca074ee7392c117b9': { coingeckoId: "tether", decimals: 6, }, '0xe75d0fb2c24a55ca1e3f96781a2bcc7bdba058f0': { coingeckoId: "usd-coin", decimals: 6, }, diff --git a/projects/jones-dao/addresses.js b/projects/jones-dao/addresses.js index 95ed4ed2e94..6bcdf633baf 100644 --- a/projects/jones-dao/addresses.js +++ b/projects/jones-dao/addresses.js @@ -56,7 +56,7 @@ module.exports = { jglp: "0x7241bC8035b65865156DDb5EdEf3eB32874a3AF6", rdpx: "0x32Eb7902D4134bf98A28b963D26de779AF92A212", rdpx_eth: "0x7418F5A2621E13c05d1EFBd71ec922070794b90a", - usdc: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + usdc: ADDRESSES.arbitrum.USDC_CIRCLE, uvrt: "0xa485a0bc44988B95245D5F20497CCaFF58a73E99", weth: ADDRESSES.arbitrum.WETH, wjaura: "0xcB9295ac65De60373A25C18d2044D517ed5da8A9", diff --git a/projects/lumi-finance/index.js b/projects/lumi-finance/index.js index 1d153bdbda0..717d27ea473 100644 --- a/projects/lumi-finance/index.js +++ b/projects/lumi-finance/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, sumTokens2 } = require('../helper/unwrapLPs') const sdk = require("@defillama/sdk"); @@ -11,9 +12,9 @@ const Arb2CRVGauge = "0xCE5F24B7A95e9cBa7df4B54E911B4A3Dc8CDAf6f"; const Arb2CRVLUAUSDLP = "0xD2239B95890018a8f52fFD17d7F94C3A82f05389"; const ArbLUAUSDMetaPoolGauge = "0x721cac0f4715a29acd76752408636e8a49222c11"; -const USDCBridged = "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8"; -const USDT = "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"; -const WBTC = "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"; +const USDCBridged = ADDRESSES.arbitrum.USDC; +const USDT = ADDRESSES.arbitrum.USDT; +const WBTC = ADDRESSES.arbitrum.WBTC; const LUA = "0xc3aBC47863524ced8DAf3ef98d74dd881E131C38"; const LUAUSD = "0x1DD6b5F9281c6B4f043c02A83a46c2772024636c"; diff --git a/projects/meson/index.js b/projects/meson/index.js index 1a45d0c8810..3059a7fb3e1 100644 --- a/projects/meson/index.js +++ b/projects/meson/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumToken2, nullAddress, sumTokens2 } = require('../helper/unwrapLPs'); const { getConfig } = require('../helper/cache') const defaultOwner = '0x25aB3Efd52e6470681CE037cD546Dc60726948D3' @@ -5,13 +6,13 @@ const defaultOwner = '0x25aB3Efd52e6470681CE037cD546Dc60726948D3' const config = { merlin: { tokens: [ - '0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D', + ADDRESSES.bsc.iUSD, '0x480E158395cC5b41e5584347c495584cA2cAf78d', '0x6b4eCAdA640F1B30dBdB68f77821A03A5f282EbE', '0x967aEC3276b63c5E2262da9641DB9dbeBB07dC0d', '0x9bd60d6FC99843207B8149f9190438C1F81BDdcD', '0xB5d8b1e73c79483d7750C5b8DF8db45A0d24e2cf', - '0xB880fd278198bd590252621d4CD071b1842E9Bcd', + ADDRESSES.merlin.WBTC_1, '0xc21d5dEB02248bEa5aC3Ea51695bF2Cd36A4Ad2b', '0xd5534269e027bCb81d319e4213f665fab011038e', ], @@ -34,18 +35,18 @@ const config = { }, xlayer: { tokens: [ - '0x1e4a5963abfd975d8c9021ce480b42188849d41d', - '0x5a77f1443d16ee5761d310e38b62f77f726bc71c', - '0x74b7f16337b8972027f6196a17a631ac6de26d22', - '0xea034fb02eb1808c2cc3adbc15f447b93cbe08e1', + ADDRESSES.astarzk.USDT, + ADDRESSES.xlayer.WETH, + ADDRESSES.xlayer.USDC, + ADDRESSES.astarzk.WBTC, ], }, blast: { tokens: [ - '0x4300000000000000000000000000000000000003', + ADDRESSES.blast.USDB, '0x58ef828c7b11dbed86291d328beb08f050738c37', '0x01593B8AaaDc5238F2f5C8597bC1402eB7a48c5f', - '0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d', + ADDRESSES.bsc.iUSD, ], }, tron: { @@ -53,15 +54,15 @@ const config = { tokens: [ 'TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq', 'TE2RzoSV3wFK99w6J9UnnZ4vLfXYoxvRwP', - 'TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', + ADDRESSES.tron.BTT, 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7', - 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', - 'TCFLL5dx5ZJdKnWuesXxi1VPwjLVmWZZy9', + ADDRESSES.tron.USDT, + ADDRESSES.tron.JST, 'TVj7RNVHy6thbM7BWdSe9G6gXwKhjhdNZS', - 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', - 'TPYmHEhy5n8TCEfYGqW2rPxsghSfzghPDn', - 'TMwFHYXLJaRUPeW6421aqXL4ZEzPRFGkGT', - 'TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR', + ADDRESSES.tron.USDC, + ADDRESSES.tron.USDD, + ADDRESSES.tron.USDJ, + ADDRESSES.tron.WTRX, ], }, ancient8: { id: 'ancient8' }, diff --git a/projects/mountain-protocol/index.js b/projects/mountain-protocol/index.js index 316b0b4f8fe..c17297e731a 100644 --- a/projects/mountain-protocol/index.js +++ b/projects/mountain-protocol/index.js @@ -1,5 +1,5 @@ -const sdk = require("@defillama/sdk"); -const MOUNTAIN_PROTOCOL_CONTRACT = "0x59d9356e565ab3a36dd77763fc0d87feaf85508c"; +const ADDRESSES = require('../helper/coreAssets.json') +const MOUNTAIN_PROTOCOL_CONTRACT = ADDRESSES.ethereum.USDM; async function tvl(api) { const totalSupply = await api.call({ diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index cbb49332e83..e8087e409c7 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const config = { blast: { weth90d: '0xc932317385fDc794633f612874BD687eA987B151', @@ -18,8 +19,8 @@ const wrappedToken = { const wrappedNativeTokenMap = { blast: { - '0x1Da40C742F32bBEe81694051c0eE07485fC630f6': '0x66714DB8F3397c767d0A602458B5b4E3C0FE7dd1', - '0x1A3D9B2fa5c6522c8c071dC07125cE55dF90b253': '0x866f2C06B83Df2ed7Ca9C2D044940E7CD55a06d6', + '0x1Da40C742F32bBEe81694051c0eE07485fC630f6': ADDRESSES.blast.fwWETH, + '0x1A3D9B2fa5c6522c8c071dC07125cE55dF90b253': ADDRESSES.blast.fwUSDB, } } diff --git a/projects/plur/index.js b/projects/plur/index.js index d3a280ef1af..77cd501f9c6 100644 --- a/projects/plur/index.js +++ b/projects/plur/index.js @@ -1,8 +1,9 @@ +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 = "0x4300000000000000000000000000000000000004" +const WETH_ADDRESS = ADDRESSES.blast.WETH async function tvl(_, _1, _2, { api }) { const createPoolLogs = await getLogs({ diff --git a/projects/ridotto/index.js b/projects/ridotto/index.js index c756dda1c4a..98f6a229ac4 100644 --- a/projects/ridotto/index.js +++ b/projects/ridotto/index.js @@ -38,7 +38,7 @@ module.exports = { tvl: sumTokensExport({ tokensAndOwners: [ [ - "0x55d398326f99059fF775485246999027B3197955", + ADDRESSES.bsc.USDT, "0x2c5B04F5744724ccEaAdA451f81b6E6a98D53fde", ], // BANKROLL/BUSD ], diff --git a/projects/treasury/luchadores.js b/projects/treasury/luchadores.js index 6062e056d54..4d55111cbfa 100644 --- a/projects/treasury/luchadores.js +++ b/projects/treasury/luchadores.js @@ -5,7 +5,7 @@ module.exports = treasuryExports({ polygon: { tokens: [ nullAddress, - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + ADDRESSES.polygon.WMATIC_2, '0x5D066D022EDE10eFa2717eD3D79f22F949F8C175', ], owners: ['0x0Cb11b92Fa5C30eAfe4aE84B7BB4dF3034C38b9d'], diff --git a/projects/zeepr/index.js b/projects/zeepr/index.js index dabab7b7dc2..1a826524989 100644 --- a/projects/zeepr/index.js +++ b/projects/zeepr/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { staking } = require("../helper/staking"); module.exports = { @@ -7,7 +8,7 @@ module.exports = { }, core: { tvl: () => ({}), - staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", ["0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223","0x40375C92d9FAf44d2f9db9Bd9ba41a3317a2404f"]), + staking: staking("0x60101E4388D1c2B389d78daC29d37Ee2DAc88e07", ["0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223",ADDRESSES.core.WCORE]), }, bsc: { tvl: () => ({}), diff --git a/projects/zircuit/index.js b/projects/zircuit/index.js index c476e06d4c5..cab942cebb5 100644 --- a/projects/zircuit/index.js +++ b/projects/zircuit/index.js @@ -15,7 +15,7 @@ const TOKEN_CONTRACTS = [ ADDRESSES.ethereum.WSTETH, // wstETH '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', // weETH '0xf951E335afb289353dc249e82926178EaC7DEd78', // swETH - '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3', // USDe + ADDRESSES.ethereum.USDe, // USDe ADDRESSES.ethereum.STONE, // cSTONE '0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa', // mETH '0xD9A442856C234a39a81a089C06451EBAa4306a72', // pufETH diff --git a/projects/zkdx/index.js b/projects/zkdx/index.js index 93436c0f084..55d44dc8b15 100644 --- a/projects/zkdx/index.js +++ b/projects/zkdx/index.js @@ -21,6 +21,6 @@ module.exports = { }, zklink:{ tvl: staking(["0xb5e635f2cB9eAC385D679069f8e0d1740436b355", "0xa6DbD1bdB1DC4339Df51d90Ce306CCE6edFbbbb1"], - ["0x0000000000000000000000000000000000000000", "0x1a1A3b2ff016332e866787B311fcB63928464509"]) + [ADDRESSES.null, "0x1a1A3b2ff016332e866787B311fcB63928464509"]) } }; From 1fbdbf6dce88ad40089b181957acc34f61142a65 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 2 May 2024 08:27:34 +0200 Subject: [PATCH 1471/2004] prePo: track blast --- projects/prePo/index.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/projects/prePo/index.js b/projects/prePo/index.js index f436e369483..52322d42815 100644 --- a/projects/prePo/index.js +++ b/projects/prePo/index.js @@ -5,7 +5,9 @@ const config = { arbitrum: { factory: '0x6f889e3fce9b13fe8cefa068a48f4074292e663c', fromBlock: 70478558 }, } -module.exports = {} +const config2 = { + blast: { factory: '0xB40DBBb7931Cfef8Be73AEEC6c67d3809bD4600B', fromBlock: 309120 }, +} Object.keys(config).forEach(chain => { const { fromBlock, factory, } = config[chain] @@ -14,7 +16,6 @@ Object.keys(config).forEach(chain => { const logs = await getLogs({ api, target: factory, - topics: ['0xe56f19ada061bf6161817694d647d94134afe9d3e877db1d8118b3012b744635'], eventAbi: 'event MarketCreation(address, address, address, uint256, uint256, uint256, uint256, uint256 expiryTime)', onlyArgs: true, fromBlock: fromBlock, @@ -32,3 +33,22 @@ Object.keys(config).forEach(chain => { } }) + + +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 }) + } + } +}) + From 211fcbb2c966eff54aaed0f1a87eb4b932c921d8 Mon Sep 17 00:00:00 2001 From: fico23 Date: Thu, 2 May 2024 10:06:44 +0200 Subject: [PATCH 1472/2004] aera - add arbitrum and base deployments (#10075) * added arbitrum & base * remove graphurl --- projects/aera/index.js | 119 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 105 insertions(+), 14 deletions(-) diff --git a/projects/aera/index.js b/projects/aera/index.js index 68431abbbd1..993d30f9efe 100644 --- a/projects/aera/index.js +++ b/projects/aera/index.js @@ -1,13 +1,12 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { cachedGraphQuery } = require("../helper/cache"); const { sumTokens2, } = require('../helper/unwrapLPs') +const { getLogs } = require('../helper/cache/getLogs') const COMPOUND_ORACLE_NAME = 'CompoundV3PositionOracle' const AAVE_ORACLE_NAME = 'AaveV3PositionOracle' const config = { polygon: { - graphUrl: 'https://api.thegraph.com/subgraphs/name/fico23/aera-subgraph-polygon', aavePool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD', aavePoolDataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654', comets: [ @@ -16,10 +15,27 @@ const config = { baseToken: ADDRESSES.polygon.USDC } ], - cometReward: '0x45939657d1CA34A8FA39A924B71D28Fe8431e581' + cometReward: '0x45939657d1CA34A8FA39A924B71D28Fe8431e581', + vaultFactories: [ + { + address: "0xfa6295a04f99815e8fa65240ed2cf9ad383c50ba", + fromBlock: 42027977 + }, + { + address: "0x3c14801dc6402e0560d69083f2b238b4c4b4dafe", + fromBlock: 42835719 + }, + { + address: "0x49b428ea1cd536e7d103e9729ea14400785e30ec", + fromBlock: 54062542 + }, + { + address: "0xa1c908cf7371047649dfca9ece01327dc6db3094", + fromBlock: 48024333 + } + ] }, ethereum: { - graphUrl: 'https://api.thegraph.com/subgraphs/name/fico23/aera-subgraph', aavePool: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', aavePoolDataProvider: '0x7B4EB56E7CD4b454BA8ff71E4518426369a138a3', comets: [ @@ -32,28 +48,103 @@ const config = { baseToken: ADDRESSES.ethereum.USDC } ], - cometReward: '0x1B0e765F6224C21223AeA2af16c1C46E38885a40' - } + cometReward: '0x1B0e765F6224C21223AeA2af16c1C46E38885a40', + 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', + comets: [ + { + address: '0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA', + baseToken: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + }, + { + address: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', + baseToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', + }, + ], + cometReward: '0x88730d254A2f7e6AC8388c3198aFd694bA9f7fae', + vaultFactories: [ + { + address: "0xaF2762E1F75DeCdb8d240576e7A2CEc1A365cD46", + fromBlock: 203397910 + } + ] + }, + base: { + aavePool: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', + aavePoolDataProvider: '0x2d8A3C5677189723C4cB8873CfC9C8976FDF38Ac', + comets: [ + { + address: '0x46e6b214b524310239732D51387075E0e70970bf', + baseToken: '0x4200000000000000000000000000000000000006', + }, + { + address: '0xb125E6687d4313864e53df431d5425969c15Eb2F', + baseToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', + }, + { + address: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', + baseToken: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', + }, + ], + cometReward: '0x123964802e6ABabBE1Bc9547D72Ef1B69B00A6b1', + vaultFactories: [ + { + address: "0x5CD0Cb0DcDEF98a8d07a8D44054a13F2c35C53E1", + fromBlock: 13582859 + } + ] + }, } -const graphQuery = `query MyQuery($block: Int) {vaultCreateds(block: {number: $block}){ id vault assetRegistry }}` - module.exports.methodology = 'Counts tokens held directly in vaults, as well as aave and compound positions.' module.exports.start = 1682619377 Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: async (api) => { - const GRAPH_URL = config[chain].graphUrl const AAVE_POOL = config[chain].aavePool const AAVE_POOL_DATA_PROVIDER = config[chain].aavePoolDataProvider const COMETS = config[chain].comets const COMET_REWARD = config[chain].cometReward - const cacheKey = `aera/${chain}` - - const block = (await api.getBlock()) - 100 // polygon subgraph sync lags - - const { vaultCreateds } = await cachedGraphQuery(cacheKey, GRAPH_URL, graphQuery, { api, variables: { block } }) + const vaultFactories = config[chain].vaultFactories + + 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}))) + } + console.log(vaultCreateds, chain) const vaults = [] const assetRegistries = [] From 7740fd8093bc6fe18b938915be934a0c25528247 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 2 May 2024 10:26:06 +0200 Subject: [PATCH 1473/2004] minor fix --- projects/aera/index.js | 1 - projects/blindex/index.js | 1 - projects/helper/chain/starknet.js | 1 - projects/helper/utils.js | 4 +-- projects/jones-dao/index.js | 2 -- projects/maker-rwa/index.js | 1 - projects/neptune-finance/index.js | 1 - projects/nns/index.js | 1 - projects/savvy/index.js | 4 --- projects/sovryn-dex/index.js | 1 - speedTest.js | 51 ------------------------------- 11 files changed, 2 insertions(+), 66 deletions(-) delete mode 100644 speedTest.js diff --git a/projects/aera/index.js b/projects/aera/index.js index 993d30f9efe..48c0172f072 100644 --- a/projects/aera/index.js +++ b/projects/aera/index.js @@ -144,7 +144,6 @@ Object.keys(config).forEach(chain => { }) vaultCreateds.push(...logs.map(x => ({vault: x.vault, assetRegistry: x.assetRegistry}))) } - console.log(vaultCreateds, chain) const vaults = [] const assetRegistries = [] diff --git a/projects/blindex/index.js b/projects/blindex/index.js index a75d4ea8a06..05b6979a8b3 100644 --- a/projects/blindex/index.js +++ b/projects/blindex/index.js @@ -10,7 +10,6 @@ const chains = { async function tvl(api) { const bdstables = await api.fetchList({ lengthAbi: abi.getBdStablesLength, itemAbi: abi.getBDStable, target: chains.rsk.bdxTokenAddress }) - console.log(bdstables) 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}) diff --git a/projects/helper/chain/starknet.js b/projects/helper/chain/starknet.js index 8c3e770832d..5a0bff1a0e2 100644 --- a/projects/helper/chain/starknet.js +++ b/projects/helper/chain/starknet.js @@ -183,7 +183,6 @@ async function getLogs({ fromBlock, topic, target }) { const body = { jsonrpc: "2.0", id: 1, method: "starknet_getEvents", params } const { data } = await axios.post(STARKNET_RPC, body) - console.log(data) } api.call = module.exports.call diff --git a/projects/helper/utils.js b/projects/helper/utils.js index 8ac2743cccd..e4c8cbda8cb 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -65,7 +65,6 @@ function isLP(symbol, token, chain) { 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 === 'polygon' && ['WLP', 'FLP'].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 @@ -73,7 +72,8 @@ function isLP(symbol, token, chain) { 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',].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 diff --git a/projects/jones-dao/index.js b/projects/jones-dao/index.js index c12392bb0fe..15c9d215786 100644 --- a/projects/jones-dao/index.js +++ b/projects/jones-dao/index.js @@ -40,8 +40,6 @@ async function tvl(api) { }), ]); - console.log({ jusdcTvl }); - api.addTokens(metavaultTokens, metavaultBalances); api.addTokens(optionVaultTokens, optionVaultBalances); api.addTokens(addresses.tokens.usdc, jusdcTvl.output); diff --git a/projects/maker-rwa/index.js b/projects/maker-rwa/index.js index 83be4d590c6..d25b128706f 100644 --- a/projects/maker-rwa/index.js +++ b/projects/maker-rwa/index.js @@ -91,7 +91,6 @@ async function tvl(api) { const owners = [] toa.map((_, i) => { if (!symbols[i].startsWith('RWA')) return; - // console.log(symbols[i], toa[i]) owners.push(toa[i][1]) }) const ilks = await api.multiCall({ abi: 'function ilk() view returns (bytes32)', calls: owners }) diff --git a/projects/neptune-finance/index.js b/projects/neptune-finance/index.js index e78da555f83..2e11efcb281 100644 --- a/projects/neptune-finance/index.js +++ b/projects/neptune-finance/index.js @@ -44,7 +44,6 @@ async function tvl(api) { owner: MARKET_ADDR }); - /* console.log("balances", balances) */ return balances } diff --git a/projects/nns/index.js b/projects/nns/index.js index 642aa298784..4eb4e0fc37a 100644 --- a/projects/nns/index.js +++ b/projects/nns/index.js @@ -5,7 +5,6 @@ const NEURON_FUND_URL = "https://ic-api.internetcomputer.org/api/v3/metrics/comm async function tvl(api) { var data = await get(NEURON_FUND_URL); let neuron_fund_balance = parseInt(data.community_fund_total_staked[0][1]); - console.log(neuron_fund_balance) api.addCGToken('internet-computer', neuron_fund_balance / 1e8) } diff --git a/projects/savvy/index.js b/projects/savvy/index.js index 583ea231bcc..1eb0112067b 100644 --- a/projects/savvy/index.js +++ b/projects/savvy/index.js @@ -3,9 +3,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); async function tvl(api) { const savvyPositionManagers = await api.call({ abi: 'address[]:getSavvyPositionManagers', target: contracts.infoAggregator, }) - console.log(savvyPositionManagers) const yieldStrategyManagers = await api.multiCall({ abi: 'address:yieldStrategyManager', calls: savvyPositionManagers, }) - console.log(yieldStrategyManagers) const savvySages = await api.multiCall({ abi: 'address:savvySage', calls: savvyPositionManagers, }) const registeredBaseTokensCalls = (await api.multiCall({ abi: 'address[]:getRegisteredBaseTokens', calls: savvySages, })).flatMap((r, i) => { @@ -16,7 +14,6 @@ async function tvl(api) { 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) - console.log(passThroughAMOs) 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) @@ -24,7 +21,6 @@ async function tvl(api) { 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) - console.log(aTokens) 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() diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js index 827fc1761b5..55d3973860c 100644 --- a/projects/sovryn-dex/index.js +++ b/projects/sovryn-dex/index.js @@ -7,7 +7,6 @@ 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' }) - // console.log(impl) const protocolContract = '0x5a0d867e0d70fcc6ade25c3f1b89d618b5b4eaa7' const res = await getConfig('sovryn', 'https://backend.sovryn.app/tvl') diff --git a/speedTest.js b/speedTest.js deleted file mode 100644 index e1bebf9ed28..00000000000 --- a/speedTest.js +++ /dev/null @@ -1,51 +0,0 @@ - - -const { ethers } = require('ethers'); -const allNetworks = []; - -function createProvider(name, url, chainId) { - allNetworks.push([ - name.toUpperCase() + '_RPC', - url - ].join('=')); - - return new ethers.providers.JsonRpcProvider(url, - { - name: name, - chainId: chainId, - } - ); -} -(async () => { - - const providers = { - ethereum: createProvider("ethereum", "https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161", 1), - bsc: createProvider("bsc", "https://bsc-dataseed4.binance.org", 56), - polygon: createProvider("polygon", "https://rpc-mainnet.maticvigil.com/", 137), - heco: createProvider("heco", "https://http-mainnet.hecochain.com", 128), - fantom: createProvider("fantom", "https://rpc.ftm.tools", 250), - rsk: createProvider("rsk", "https://public-node.rsk.co", 30), - tomochain: createProvider("tomochain", "https://rpc.tomochain.com", 88), - xdai: createProvider("xdai", "https://xdai.poanetwork.dev", 100), - avax: createProvider("avax", "https://api.avax.network/ext/bc/C/rpc", 43114), - wan: createProvider("wan", "https://gwan-ssl.wandevs.org:56891", 888), - harmony: createProvider("harmony", "https://api.s0.t.hmny.io", 1666600000), - thundercore: createProvider("thundercore", "https://mainnet-rpc.thundercore.com", 108), - okexchain: createProvider("okexchain", "https://exchainrpc.okex.org", 66), - optimism: createProvider("optimism", "https://mainnet.optimism.io/", 10), - arbitrum: createProvider("arbitrum", "https://arb1.arbitrum.io/rpc", 42161), - kcc: createProvider("kcc", "https://rpc-mainnet.kcc.network", 321), - celo: createProvider("celo", "https://forno.celo.org", 42220), - } - - for (var name in providers) { - const provider = providers[name]; - const start = Date.now(); - const lastBlockNumber = await provider.getBlockNumber(); - const spend = Date.now() - start - console.log(name, "spend", spend / 1000, "s", "block", lastBlockNumber); - } - - console.log('.env') - console.log(allNetworks.join("\n")) -})(); From 26b69dcb29a3e72e54fe73bdfa8da5a892d0c412 Mon Sep 17 00:00:00 2001 From: Oliv <59149194+olivblad@users.noreply.github.com> Date: Thu, 2 May 2024 15:08:29 +0200 Subject: [PATCH 1474/2004] Changes for Atlendis v2 adapter (#10076) * new adapter for Atlendis protocol to monitor v2 * changed after refacto * using DefiLlama sdk (refacto) and on chain calls for tvl computation for consistency --- projects/atlendis-v2/index.js | 50 ++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/projects/atlendis-v2/index.js b/projects/atlendis-v2/index.js index 4572c23c8ee..fadb6463c4d 100644 --- a/projects/atlendis-v2/index.js +++ b/projects/atlendis-v2/index.js @@ -1,25 +1,28 @@ -const { GraphQLClient, } = require("graphql-request"); +const { GraphQLClient } = require("graphql-request"); const query = ` - query tvl($chainId: Int!) { + query tvlAndBorrow($chainId: Int!) { rcls(chainId: $chainId) { - id - address + address tvl token { address } - currentLoan {accruedInterests borrowedAmount } + currentLoan { + borrowedAmount + } } bulletLoans(chainId: $chainId) { - id - address + address tvl token { address } + issuedLoan { + borrowedAmount + } } } -` +`; // Atlendis' indexer url const atlendisUrl = "https://atlendis.herokuapp.com/graphql"; @@ -27,29 +30,34 @@ const atlendisUrl = "https://atlendis.herokuapp.com/graphql"; const supportedChains = { polygon: 137, mode: 34443 }; async function tvl(api) { - const chain = api.chain + const chain = api.chain; const graphQLClient = new GraphQLClient(atlendisUrl); const chainId = supportedChains[chain]; - const { rcls, } = await graphQLClient.request(query, { chainId }); - const tokensAndOwners = rcls.map(rcl => [rcl.token.address, rcl.address]) - return api.sumTokens({ tokensAndOwners }) + 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 chain = api.chain; const graphQLClient = new GraphQLClient(atlendisUrl); const chainId = supportedChains[chain]; - const { rcls, bulletLoans } = await graphQLClient.request(query, { chainId }); - + const { rcls, bulletLoans } = await graphQLClient.request(query, { + chainId, + }); for (let rcl of rcls) { if (rcl.currentLoan) { - api.add(rcl.token.address, rcl.currentLoan.borrowedAmount) + const { borrowedAmount } = rcl.currentLoan; + api.add(rcl.token.address, borrowedAmount); } } - for (let loan of bulletLoans) { if (loan.issuedLoan) { - api.add(loan.token.address, loan.tvl) + const { borrowedAmount } = loan.issuedLoan; + api.add(loan.token.address, borrowedAmount); } } } @@ -62,6 +70,6 @@ module.exports = { ], }; -Object.keys(supportedChains).forEach(chain => { - module.exports[chain] = { tvl, borrowed } -}) \ No newline at end of file +Object.keys(supportedChains).forEach((chain) => { + module.exports[chain] = { tvl, borrowed }; +}); From 41b258a2488a5a3f4132fcc839ea987d6a08b03f Mon Sep 17 00:00:00 2001 From: ramenforbreakfast Date: Fri, 3 May 2024 03:02:47 -0700 Subject: [PATCH 1475/2004] feat: include FT Marketplace on Base in TVL calculations (#10081) * feat: include FT Marketplace on Base in TVL calculations * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/prePo/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/projects/prePo/index.js b/projects/prePo/index.js index 52322d42815..c2a1fefbae9 100644 --- a/projects/prePo/index.js +++ b/projects/prePo/index.js @@ -1,6 +1,8 @@ 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 }, } @@ -9,6 +11,10 @@ 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] = { @@ -52,3 +58,12 @@ Object.keys(config2).forEach(chain => { } }) +Object.keys(config3).forEach(chain => { + const { factory, tokens } = config3[chain] + module.exports[chain] = { + tvl: async (api) => { + return api.sumTokens({ owner: factory, tokens }) + } + } +}) + From a7edd616bf689f1f9d24de5cb16f20714c2c429c Mon Sep 17 00:00:00 2001 From: Bit-Genie <168055389+Bit-Genie@users.noreply.github.com> Date: Fri, 3 May 2024 18:04:13 +0800 Subject: [PATCH 1476/2004] Add new contracts (#10080) * Add project bitgenie * Add new contracts * code refactor * Add new contracts * Add new contarcts --------- Co-authored-by: Your Name Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bitgenie/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/bitgenie/index.js b/projects/bitgenie/index.js index 22c779a3c81..51a3b3f2787 100644 --- a/projects/bitgenie/index.js +++ b/projects/bitgenie/index.js @@ -6,7 +6,8 @@ const stakingContracts = [ "0x237826695a575D9Fd2FA7C184E5f37593aBc1529", "0x63C8860e93697dB85716C9ee7F15D09EAC62136C", "0x19a0D0b1734bdB167D393e7BB7a57418e3a8cCA8", - "0x1DBa95577DFe76d8e86af00aEB614479cb7917D2" + "0x1DBa95577DFe76d8e86af00aEB614479cb7917D2", + "0xC795A8D5f83F5A172f606AC2516276Ee7DF63407" ]; From fdeb3684e0f9b01085d21b91452188675322070b Mon Sep 17 00:00:00 2001 From: Ewan Sheldon Date: Fri, 3 May 2024 12:05:23 +0200 Subject: [PATCH 1477/2004] add sushi to standard smart vaults collateral tvl (#10079) --- projects/standard-smart-vaults/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/standard-smart-vaults/index.js b/projects/standard-smart-vaults/index.js index c5e839887dc..3f97934d9a1 100644 --- a/projects/standard-smart-vaults/index.js +++ b/projects/standard-smart-vaults/index.js @@ -10,8 +10,9 @@ const tokens = [ ADDRESSES.arbitrum.ARB, ADDRESSES.arbitrum.LINK, ADDRESSES.arbitrum.GMX, + '0xfEb4DfC8C4Cf7Ed305bb08065D08eC6ee6728429', '0x3082CC23568eA640225c2467653dB90e9250AaA0', - '0xfEb4DfC8C4Cf7Ed305bb08065D08eC6ee6728429' + '0xd4d42F0b6DEF4CE0383636770eF773390d85c61A' ] async function getOwners(api) { From 191287413712aa3a373107d674c5916efda4d4dc Mon Sep 17 00:00:00 2001 From: Stone <125890624+Stonepapa@users.noreply.github.com> Date: Fri, 3 May 2024 18:10:06 +0800 Subject: [PATCH 1478/2004] Add Hive Protocol TVL (#10078) * Update index.js * Create index.js hive protocol * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/hive-protocol/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/hive-protocol/index.js diff --git a/projects/hive-protocol/index.js b/projects/hive-protocol/index.js new file mode 100644 index 00000000000..a0b947f9f9f --- /dev/null +++ b/projects/hive-protocol/index.js @@ -0,0 +1,5 @@ +const { sumTokensExport, nullAddress } = require("../helper/sumTokens"); + +module.exports = { + bsquared: { tvl: sumTokensExport({ owner: '0xd5B5f1CA0fa5636ac54b0a0007BA374A1513346e', tokens: [nullAddress] }) }, +} \ No newline at end of file From 3d8e80fb109673d8fdf17b5e2523bda595eda9ae Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 3 May 2024 15:51:44 +0530 Subject: [PATCH 1479/2004] Fix linting issue in package.json (#10086) * Fix linting issue in package.json * rabbitx: staking --- package.json | 4 ++-- projects/rabbitx/index.js | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8ca12aa6db0..ab06da450e6 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "test": "echo \"Error: no test specified\" && exit 1", "weeklyChanges": "git pull && git diff $(git log -1 --before=@{7.days.ago} --format=%H) --stat | grep -E \"projects/\" | cut -d / -f 2 | cut -d \" \" -f 1 | uniq | wc -l", "dev": "babel-watch curve.js", - "lint": "eslint .", - "eslint:github-action": "eslint .", + "lint": "eslint -c .eslintrc.js .", + "eslint:github-action": "eslint -c .eslintrc.js .", "test-interactive": "node utils/testInteractive", "tvl": "cd utils;npm i; cd ..; node utils/testInteractive", "treasury": "cd utils;npm i; cd ..; node utils/testInteractive treasury", diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js index 6391347eecd..bc4b8a50983 100644 --- a/projects/rabbitx/index.js +++ b/projects/rabbitx/index.js @@ -1,8 +1,13 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport } = require("../helper/unwrapLPs"); +const { sumTokensExport } = require("../helper/unwrapLPs") +const { staking } = require('../helper/staking') module.exports = { ethereum: { - tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4', '0x7fAb440A0251dA67B316d2c0431E3Ccf4520Cd42',], tokens: [ADDRESSES.ethereum.USDT]}) + tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4', '0x7fAb440A0251dA67B316d2c0431E3Ccf4520Cd42',], tokens: [ADDRESSES.ethereum.USDT]}), + staking: staking('0x0c378FB17E87B180256a87e3f671cd83Bf3236DB', '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e'), + }, + blast: { + staking: staking('0x67dBA61709D78806395acDBa3EF9Df686aF5dc24', '0x236bb48fcF61ce996B2C8C196a9258c176100c7d'), } } From 7095781361394d2e3d515e85d951d1e1a7599864 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 3 May 2024 13:45:51 +0100 Subject: [PATCH 1480/2004] weekly tokens move 1-MAY (#10085) * weekly tokens move 1-MAY * add coreAssets --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 51 +++++++++++++- projects/helper/tokenMapping.js | 116 ++------------------------------ 2 files changed, 54 insertions(+), 113 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index fcc966edf4a..a7b284960ee 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -500,6 +500,10 @@ "SWAPZ": "0x9b6fbf0ea23faf0d77b94d5699b44062e5e747ac", "DAI": "0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d", "SCAR": "0x8d9fb713587174ee97e91866050c383b5cee6209", + "sVLX": "0xaadbaa6758fc00dec9b43a0364a372605d8f1883", + "VLX": "0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39", + "ETH_1": "0x380f73bad5e7396b260f737291ae5a8100baabcd", + "USDT_1": "0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f", "ADA": "0x3611fbfb06ffbcef9afb210f6ace86742e6c14a4" }, "telos": { @@ -1585,6 +1589,7 @@ "MEER_2": "0x457dE4e275A6b3C0D3750519221dD1dF19d54f01" }, "mode": { + "STONE": "0x80137510979822322193fc997d400d5a6c747bf7", "WETH": "0x4200000000000000000000000000000000000006", "USDC": "0xd988097fb8612cc24eeC14542bC03424c656005f", "USDT": "0xf0F161fDA2712DB8b566946122a5af183995e2eD", @@ -1629,6 +1634,13 @@ "NEW": "0xf4905b9bc02ce21c98eac1803693a9357d5253bf" }, "zeta": { + "USDC": "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0", + "USDC_1": "0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a", + "USDT": "0x7c8dDa80bbBE1254a7aACf3219EBe1481c6E01d7", + "USDT_1": "0x91d4F0D54090Df2D81e834c3c8CE71C6c865e79F", + "ETH": "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891", + "BNB": "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb", + "BTC": "0x13A0c5930C028511Dc02665E7285134B6d11A5f4", "WZETA": "0x5f0b1a82749cb4e2278ec87f8bf6b618dc71a8bf" }, "blast": { @@ -1649,7 +1661,8 @@ "BTN": "0x8148b71232162ea7a0b1c8bfe2b8f023934bfb58" }, "area": { - "AREA": "0x298b6a733cd34e41ca87b264d968c8ca7b0b9931" + "AREA": "0x298b6a733cd34e41ca87b264d968c8ca7b0b9931", + "WAREA": "0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf" }, "defiverse": { "OAS": "0x5a89E11Cb554E00c2f51C4bb7F05bc7Ab0Fa6351", @@ -1662,6 +1675,11 @@ "USDC": "0x300a7b57dc85b6a9776e249614abf0fe5c9905fb" }, "merlin": { + "SATS": "0x4dcb91cc19aadfe5a6672781eb09abad00c19e4c", + "RATS": "0x69181a1f082ea83a152621e4fa527c936abfa501", + "ORDI": "0x0726523eba12edad467c55a962842ef358865559", + "USDT": "0x967aec3276b63c5e2262da9641db9dbebb07dc0d", + "USDC": "0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe", "WBTC": "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA", "WBTC_1": "0xB880fd278198bd590252621d4CD071b1842E9Bcd" }, @@ -1674,6 +1692,9 @@ "WUSDC": "0x79Cb92a2806BF4f82B614A84b6805963b8b1D8BB" }, "zklink": { + "WBTC": "0xda4aaed3a53962c83b35697cd138cc6df43af71f", + "USDT": "0x2f8a25ac62179b31d62d7f80884ae57464699059", + "USDC": "0x1a1a3b2ff016332e866787b311fcb63928464509", "WETH": "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169" }, "kinto": { @@ -1720,5 +1741,31 @@ }, "zora": { "USDzC": "0xcccccccc7021b32ebb4e8c08314bd62f7c653ec4" + }, + "ancient8": { + "WETH": "0x4200000000000000000000000000000000000006" + }, + "karak": { + "USDC": "0xa415021bc5c4c3b5b989116dc35ae95d9c962c8d", + "rsETH": "0xf948aacec00289fc33d8226391f7e04bb457ad49", + "WETH": "0x4200000000000000000000000000000000000006" + }, + "bsquared": { + "WBTC": "0x4200000000000000000000000000000000000006", + "USDT": "0x681202351a488040fa4fdcc24188afb582c9dd62", + "USDC": "0xe544e8a38add9b1abf21922090445ba93f74b9e5" + }, + "planq": { + "WPLANQ": "0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a" + }, + "lac": { + "LAC": "0x2911a1ab18546cb501628be8625c7503a2a7db54" + }, + "bob": { + "WETH": "0x4200000000000000000000000000000000000006", + "WBTC": "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3", + "USDT": "0x05d032ac25d322df992303dca074ee7392c117b9", + "USDC": "0xe75d0fb2c24a55ca1e3f96781a2bcc7bdba058f0", + "TBTC": "0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2" } -} +} \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6ae1dc13fcf..9ca80a118d7 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -35,117 +35,19 @@ const ibcMappings = { } const fixBalancesTokens = { - optimism: { - '0xD9cC3D70E730503E7f28c1B407389198c4B75FA2': { coingeckoId: "tlx", decimals: 18, }, - }, - ancient8: { - [ADDRESSES.nul]: { coingeckoId: "ethereum", decimals: 18, }, - [ADDRESSES.optimism.WETH_1]: { coingeckoId: "ethereum", decimals: 18, }, - }, - area: { - '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf': { coingeckoId: 'areon-network', decimals: 18, }, - }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, - - karak: { - '0xa415021bc5c4c3b5b989116dc35ae95d9c962c8d': { coingeckoId: 'usd-coin', decimals: 6, }, - '0xf948aacec00289fc33d8226391f7e04bb457ad49': { coingeckoId: 'restaked-swell-eth', decimals: 18, }, - [ADDRESSES.optimism.WETH_1]: { coingeckoId: 'ethereum', decimals: 18, }, - }, - linea: { - '0x894134a25a5fac1c2c26f1d8fbf05111a3cb9487': { coingeckoId: 'grai', decimals: 18, }, - '0x023617babed6cef5da825bea8363a5a9862e120f': { coingeckoId: "savings-dai", decimals: 18, }, - }, - arbitrum: { - '0xe46C5eA6Da584507eAF8dB2F3F57d7F578192e13': { coingeckoId: 'zeepr', decimals: 18, }, - }, - core: { - '0x1281E326C6e4413A98DafBd0D174a4Ae07ff4223': { coingeckoId: "zeepr", decimals: 18, }, - [ADDRESSES.core.coreBTC]: { coingeckoId: "bitcoin", decimals: 8 }, - }, - bsc: { - '0x55CBAC75C1af769eB7FD37d27A5cb6437EB29abB': { coingeckoId: "zeepr", decimals: 18, }, - }, - manta: { - '0x0863C7BcdB6Cf6edd5dc4bbd181A8D555AedbfBd': { coingeckoId: "zeepr", decimals: 18, }, - }, - polygon: { - '0x49fdEA2192b04e54E6D1cB5E3B3b996BAA6f621F': { coingeckoId: "zeepr", decimals: 18, }, - }, - zkfair: { - '0x5d26DeA980716e4aBa19F5B73Eb3DCcE1889F042': { coingeckoId: "zeepr", decimals: 18, }, - }, scroll: { "0x80137510979822322193fc997d400d5a6c747bf7": { coingeckoId: "ethereum:0x7122985656e38bdc0302db86685bb972b145bd3c", decimals: 0 }, - "0xa25b25548B4C98B0c7d3d27dcA5D5ca743d68b7F": { coingeckoId: "kelp-dao-restaked-eth", decimals: 18 } - }, - velas: { - '0xaadbaa6758fc00dec9b43a0364a372605d8f1883': { coingeckoId: "staked-vlx", decimals: 18, }, - '0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39': { coingeckoId: "velas", decimals: 18, }, - '0x380f73bad5e7396b260f737291ae5a8100baabcd': { coingeckoId: "ethereum", decimals: 18, }, - '0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f': { coingeckoId: "tether", decimals: 6, }, - }, - merlin: { - '0x4dcb91cc19aadfe5a6672781eb09abad00c19e4c': { coingeckoId: "sats-ordinals", decimals: 18, }, - '0x69181a1f082ea83a152621e4fa527c936abfa501': { coingeckoId: "rats", decimals: 18, }, - '0x0726523eba12edad467c55a962842ef358865559': { coingeckoId: "ordinals", decimals: 18, }, - [ADDRESSES.null]: { coingeckoId: "bitcoin", decimals: 18, }, - '0x967aec3276b63c5e2262da9641db9dbebb07dc0d': { coingeckoId: "tether", decimals: 6, }, - '0x6b4ecada640f1b30dbdb68f77821a03a5f282ebe': { coingeckoId: "usd-coin", decimals: 6, }, - }, - zeta: { - [ADDRESSES.zeta.WZETA]: { decimals: 18, coingeckoId: "zetachain" }, - [ADDRESSES.null]: { decimals: 18, coingeckoId: "zetachain" }, - "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0": { decimals: 18, coingeckoId: "usd-coin" }, - "0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a": { decimals: 18, coingeckoId: "usd-coin" }, - "0x7c8dDa80bbBE1254a7aACf3219EBe1481c6E01d7": { decimals: 18, coingeckoId: "tether" }, - "0x91d4F0D54090Df2D81e834c3c8CE71C6c865e79F": { decimals: 18, coingeckoId: "tether" }, - "0xd97b1de3619ed2c6beb3860147e30ca8a7dc9891": { decimals: 18, coingeckoId: "ethereum" }, - "0x48f80608b672dc30dc7e3dbbd0343c5f02c738eb": { decimals: 18, coingeckoId: "binancecoin" }, - "0x13A0c5930C028511Dc02665E7285134B6d11A5f4": { decimals: 18, coingeckoId: "bitcoin" } - }, - mode: { - '0x80137510979822322193fc997d400d5a6c747bf7': { coingeckoId: "stakestone-ether", decimals: 18 }, - }, - zklink: { - [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, - '0xda4aaed3a53962c83b35697cd138cc6df43af71f': { coingeckoId: "wrapped-bitcoin", decimals: 8, }, - '0x2f8a25ac62179b31d62d7f80884ae57464699059': { coingeckoId: "tether", decimals: 6, }, - '0x1a1a3b2ff016332e866787b311fcb63928464509': { coingeckoId: "usd-coin", decimals: 6, }, - }, - bsquared: { - [ADDRESSES.null]: { coingeckoId: "bitcoin", decimals: 18, }, - [ADDRESSES.optimism.WETH_1]: { coingeckoId: "bitcoin", decimals: 18, }, - '0x681202351a488040fa4fdcc24188afb582c9dd62': { coingeckoId: "tether", decimals: 6, }, - '0xe544e8a38add9b1abf21922090445ba93f74b9e5': { coingeckoId: "usd-coin", decimals: 6, }, - }, - planq: { - '0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a': { coingeckoId: "planq", decimals: 18, }, - }, - xlayer: { - [ADDRESSES.xlayer.WOKB]: { coingeckoId: "okb", decimals: 18, }, - [ADDRESSES.xlayer.WBTC]: { coingeckoId: "wrapped-bitcoin", decimals: 8, }, - [ADDRESSES.xlayer.WETH]: { coingeckoId: "ethereum", decimals: 18, }, - [ADDRESSES.xlayer.USDT]: { coingeckoId: "tether", decimals: 6, }, - [ADDRESSES.xlayer.USDC]: { coingeckoId: "usd-coin", decimals: 6, }, - }, - lac: { - '0x2911a1ab18546cb501628be8625c7503a2a7db54': { coingeckoId: "la-coin", decimals: 18, }, - }, - rpg: { - '0xdaa6a6919c9543d8787490f5e9ad532c4d7ce9e8': { coingeckoId: "deherogame-amazing-token", decimals: 18, }, - '0x36426b7bf5709e5c2160411c6e8b1832e3404fe1': { coingeckoId: "mixmarvel", decimals: 18, }, - }, - genesys: { - [ADDRESSES.genesys.WGSYS]: { coingeckoId: "genesys", decimals: 18 }, }, - zora: { - [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, - [ADDRESSES.zora.USDzC]: { coingeckoId: "usd-coin", decimals: 6, }, + tezos: { + "KT1PnUZCp3u2KzWr93pn4DD7HAJnm3rWVrgn": { coingeckoId: "tezos", decimals: 6 }, + "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17": { coingeckoId: "usd-coin", decimals: 6 }, + "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18": { coingeckoId: "tether", decimals: 6 }, }, + acala: { ACA: { coingeckoId: "acala", decimals: 12 }, LDOT: { coingeckoId: "liquid-staking-dot", decimals: 10 }, @@ -160,14 +62,6 @@ const fixBalancesTokens = { KINT: { coingeckoId: "kintsugi", decimals: 12 }, KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, - bob: { - [ADDRESSES.null]: { coingeckoId: "ethereum", decimals: 18, }, - [ADDRESSES.optimism.WETH_1]: { coingeckoId: "ethereum", decimals: 18, }, - '0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3': { coingeckoId: "wrapped-bitcoin", decimals: 8, }, - '0x05d032ac25d322df992303dca074ee7392c117b9': { coingeckoId: "tether", decimals: 6, }, - '0xe75d0fb2c24a55ca1e3f96781a2bcc7bdba058f0': { coingeckoId: "usd-coin", decimals: 6, }, - '0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2': { coingeckoId: "tbtc", decimals: 18, }, - } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 62b37a53bd6dbc8424e93c407ff49acc1cec2fca Mon Sep 17 00:00:00 2001 From: Jarekkkkk <86938582+Jarekkkkk@users.noreply.github.com> Date: Fri, 3 May 2024 20:59:38 +0800 Subject: [PATCH 1481/2004] aded sparkling adapter (#10047) --- projects/sparkling/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/sparkling/index.js diff --git a/projects/sparkling/index.js b/projects/sparkling/index.js new file mode 100644 index 00000000000..67bd7be456f --- /dev/null +++ b/projects/sparkling/index.js @@ -0,0 +1,18 @@ +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, + }, +}; From 51c1139f5ee34b1457d35a1f042d2c72a7b85b72 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 3 May 2024 15:22:35 +0200 Subject: [PATCH 1482/2004] use token labels --- projects/aera/index.js | 10 +++++----- projects/airpuff/index.js | 2 +- projects/helper/cache/uniswap.js | 5 +++-- projects/helper/coreAssets.json | 3 +++ projects/helper/tokenMapping.js | 2 +- projects/meson/index.js | 8 ++++---- projects/symblox.js | 9 +++++---- projects/zkdx/index.js | 2 +- 8 files changed, 23 insertions(+), 18 deletions(-) diff --git a/projects/aera/index.js b/projects/aera/index.js index 48c0172f072..762598907b9 100644 --- a/projects/aera/index.js +++ b/projects/aera/index.js @@ -78,11 +78,11 @@ const config = { comets: [ { address: '0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA', - baseToken: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + baseToken: ADDRESSES.arbitrum.USDC, }, { address: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', - baseToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', + baseToken: ADDRESSES.arbitrum.USDC_CIRCLE, }, ], cometReward: '0x88730d254A2f7e6AC8388c3198aFd694bA9f7fae', @@ -99,15 +99,15 @@ const config = { comets: [ { address: '0x46e6b214b524310239732D51387075E0e70970bf', - baseToken: '0x4200000000000000000000000000000000000006', + baseToken: ADDRESSES.optimism.WETH_1, }, { address: '0xb125E6687d4313864e53df431d5425969c15Eb2F', - baseToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', + baseToken: ADDRESSES.base.USDC, }, { address: '0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf', - baseToken: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', + baseToken: ADDRESSES.base.USDbC, }, ], cometReward: '0x123964802e6ABabBE1Bc9547D72Ef1B69B00A6b1', diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index 4bc721b3723..ab58f104ba5 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -76,7 +76,7 @@ module.exports = { const airPuff1XstoneMode = { vault: "0xaC9dAdf209F14f46Fe103C6E5C787130a6129205", - pendleAddress: "0x80137510979822322193FC997d400D5A6C747bf7", + pendleAddress: ADDRESSES.mode.STONE, }; const airPuff1XMerlinBTCMode = { diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index 5cce3b6740f..fb804fa65e7 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../coreAssets.json') const uniswapAbi = require('../abis/uniswap') const { getCache, setCache, } = require('../cache'); @@ -28,8 +29,8 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, let chain = api?.chain if (!chain) chain = _chain - // const supply = await api.call({ abi: 'erc20:totalSupply', target: '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf' }) - // console.log(await sdk.api.eth.getBalance({ target: '0x1d1bc800e71576a59f9ef88bb679fa13c2e10abf', chain: api.chain }), supply) + // const supply = await api.call({ abi: 'erc20:totalSupply', target: ADDRESSES.area.WAREA }) + // console.log(await sdk.api.eth.getBalance({ target: ADDRESSES.area.WAREA, chain: api.chain }), supply) factory = normalizeAddress(factory, chain) blacklist = (blacklistedTokens || blacklist).map(i => normalizeAddress(i, chain)) const key = `${factory}-${chain}` diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a7b284960ee..c2845628915 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1766,6 +1766,9 @@ "WBTC": "0x03c7054bcb39f7b2e5b2c7acb37583e32d70cfa3", "USDT": "0x05d032ac25d322df992303dca074ee7392c117b9", "USDC": "0xe75d0fb2c24a55ca1e3f96781a2bcc7bdba058f0", + "STETH": "0x85008aE6198BC91aC0735CB5497CF125ddAAc528", + "STONE": "0x96147a9ae9a42d7da551fd2322ca15b71032f342", + "RETH": "0xb5686c4f60904ec2bda6277d6fe1f7caa8d1b41a", "TBTC": "0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2" } } \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 9ca80a118d7..c67bfb7750f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -40,7 +40,7 @@ const fixBalancesTokens = { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain }, scroll: { - "0x80137510979822322193fc997d400d5a6c747bf7": { coingeckoId: "ethereum:0x7122985656e38bdc0302db86685bb972b145bd3c", decimals: 0 }, + [ADDRESSES.mode.STONE]: { coingeckoId: "ethereum:0x7122985656e38bdc0302db86685bb972b145bd3c", decimals: 0 }, }, tezos: { "KT1PnUZCp3u2KzWr93pn4DD7HAJnm3rWVrgn": { coingeckoId: "tezos", decimals: 6 }, diff --git a/projects/meson/index.js b/projects/meson/index.js index 3059a7fb3e1..4081fc3fecf 100644 --- a/projects/meson/index.js +++ b/projects/meson/index.js @@ -8,8 +8,8 @@ const config = { tokens: [ ADDRESSES.bsc.iUSD, '0x480E158395cC5b41e5584347c495584cA2cAf78d', - '0x6b4eCAdA640F1B30dBdB68f77821A03A5f282EbE', - '0x967aEC3276b63c5E2262da9641DB9dbeBB07dC0d', + ADDRESSES.merlin.USDC, + ADDRESSES.merlin.USDT, '0x9bd60d6FC99843207B8149f9190438C1F81BDdcD', '0xB5d8b1e73c79483d7750C5b8DF8db45A0d24e2cf', ADDRESSES.merlin.WBTC_1, @@ -19,12 +19,12 @@ const config = { }, bsquared: { tokens: [ - '0x681202351a488040Fa4FdCc24188AfB582c9DD62', + ADDRESSES.bsquared.USDT, '0x7537C1F80c9E157ED7AFD93a494be3e1f04f1462', '0xa793740863F1710A87070a5918820976ff32B758', '0xC2Fe4f673455Ef92299770a09CDB5E8756A525D5', '0xD48d3A551757ac47655fCe25BDE1B0B6b1Cb2a5A', - '0xE544e8a38aDD9B1ABF21922090445Ba93f74B9E5', + ADDRESSES.bsquared.USDC, ], id: 'b2', }, diff --git a/projects/symblox.js b/projects/symblox.js index ff2e8dc2f4f..431fa4c1457 100644 --- a/projects/symblox.js +++ b/projects/symblox.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('helper/coreAssets.json') const { sumTokens2 } = require("./helper/unwrapLPs"); const symblox = "0xD0CB9244844F3E11061fb3Ea136Aab3a6ACAC017"; const pools = { - "0x2af1fea48018fe9f1266d67d45b388935df1c14d": "0xaadbaa6758fc00dec9b43a0364a372605d8f1883", - "0x720b92ef8ee928c5cbe9ca787321802610bcbf6e": "0x2b1abeb48f875465bf0d3a262a2080ab1c7a3e39", - "0x974d24a6bce9e0a0a27228e627c9ca1437fe0286": "0x380f73bad5e7396b260f737291ae5a8100baabcd", - "0xe7557efbe705e425de6a57e90447ba5ad70e9de5": "0x4b773e1ae1baa4894e51cc1d1faf485c91b1012f", + "0x2af1fea48018fe9f1266d67d45b388935df1c14d": ADDRESSES.velas.sVLX, + "0x720b92ef8ee928c5cbe9ca787321802610bcbf6e": ADDRESSES.velas.VLX, + "0x974d24a6bce9e0a0a27228e627c9ca1437fe0286": ADDRESSES.velas.ETH_1, + "0xe7557efbe705e425de6a57e90447ba5ad70e9de5": ADDRESSES.velas.USDT_1, }; async function tvl(api) { diff --git a/projects/zkdx/index.js b/projects/zkdx/index.js index 55d44dc8b15..2b75c223b56 100644 --- a/projects/zkdx/index.js +++ b/projects/zkdx/index.js @@ -21,6 +21,6 @@ module.exports = { }, zklink:{ tvl: staking(["0xb5e635f2cB9eAC385D679069f8e0d1740436b355", "0xa6DbD1bdB1DC4339Df51d90Ce306CCE6edFbbbb1"], - [ADDRESSES.null, "0x1a1A3b2ff016332e866787B311fcB63928464509"]) + [ADDRESSES.null, ADDRESSES.zklink.USDC]) } }; From 87a6923f0d23a9150f1be3d846fdaded2d204355 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 3 May 2024 15:12:14 +0100 Subject: [PATCH 1483/2004] fix route --- projects/symblox.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/symblox.js b/projects/symblox.js index 431fa4c1457..266fa8eae04 100644 --- a/projects/symblox.js +++ b/projects/symblox.js @@ -1,4 +1,4 @@ -const ADDRESSES = require('helper/coreAssets.json') +const ADDRESSES = require('./helper/coreAssets.json') const { sumTokens2 } = require("./helper/unwrapLPs"); const symblox = "0xD0CB9244844F3E11061fb3Ea136Aab3a6ACAC017"; From 69a1848cd62a50760c18ff7e5a6f68117e9f8a57 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 3 May 2024 17:49:18 +0100 Subject: [PATCH 1484/2004] add bunnyswap --- projects/bunnyswap/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/bunnyswap/index.js diff --git a/projects/bunnyswap/index.js b/projects/bunnyswap/index.js new file mode 100644 index 00000000000..f86a7b0de5d --- /dev/null +++ b/projects/bunnyswap/index.js @@ -0,0 +1,15 @@ +const { sumTokensExport } = require("../helper/unwrapLPs") + +module.exports={ + base: { + tvl: sumTokensExport({ + tokens:[ + "0x4200000000000000000000000000000000000006", + "0x0bD4887f7D41B35CD75DFF9FfeE2856106f86670" + ], + owners:[ + "0x7cfc830448484cdf830625373820241e61ef4acf" + ] + }) + }, +} \ No newline at end of file From fd9cca4b8b6dfe55225f1f4b347abd82f6687400 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 3 May 2024 20:17:39 +0100 Subject: [PATCH 1485/2004] apply #10090 --- projects/glif/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/glif/index.js b/projects/glif/index.js index fa3a77302a9..e1d515b90a5 100644 --- a/projects/glif/index.js +++ b/projects/glif/index.js @@ -7,11 +7,9 @@ module.exports = { methodology: "The GLIF Pools protocol is a liquid leasing protocol for Filecoin that requires borrowers to collateralize FIL in order to borrow for their storage providing operation. This TVL calculation adds the total amount of FIL deposited into the protocol, and the total amount of locked FIL collateral by borrowers, to arrive at TVL.", filecoin: { - tvl: async (_, height, _1, { api }) => { + tvl: async (api) => { let url = INDEXER_API; - if (!!height && height >= 0) { - url += `?height=${height}`; - } + 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 From ecf8bd8819290645b6894be900884bdc172e2ec6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 4 May 2024 10:46:01 +0200 Subject: [PATCH 1486/2004] update sdk --- package-lock.json | 6 +++--- projects/helper/env.js | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e93eb515f65..507493f26c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.54", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.54.tgz", - "integrity": "sha512-0akwrfkgtD8/Fk+vHM3N8nMUBW+vdndc8GfQXU40VQrEXnDm24tmlOZwnfmf0Cb+PL2ts24ll00lLR5HgdP5Gw==", + "version": "5.0.55", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.55.tgz", + "integrity": "sha512-IYY14D7wSR/lHP3adExvBahynnpcbYubHQKKzmirNq1LVSGaLMtYdPKaf9cwlvZk0hejNwTjP1HF0yF0CehIDA==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/helper/env.js b/projects/helper/env.js index 24b4e5395ce..8af0628556a 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -12,9 +12,7 @@ const DEFAULTS = { MULTIVERSX_RPC: 'https://api.multiversx.com', ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", - BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", - BOB_RPC: "https://rpc.gobob.xyz/", - BOB_RPC_MULTICALL: "0xcA11bde05977b3631167028862bE2a173976CA11", + BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", // add manually, short name is b2-mainnet } const ENV_KEYS = [ From e60ca421a260124a77225d3712865cc3974248a8 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Sat, 4 May 2024 07:59:19 -0700 Subject: [PATCH 1487/2004] add fenix/blast (#10095) --- projects/visor/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index bf073d439c8..7653281a914 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -116,6 +116,7 @@ const HYPE_REGISTRY = { ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 1727054], // Uniswap ["0xF44cECB1CF40ee12303E85Eb8651263c01812EaD", 1815717], // Thruster ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 1005700], // Blaster + ["0x6c509511672f3cDC0440C219169e4367425870a8", 2891439], // Fenix ], xlayer: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // Quickswap From 4d77c85378c3aa5859fddec0b97371d47f5a0740 Mon Sep 17 00:00:00 2001 From: Tors Date: Sat, 4 May 2024 17:03:30 +0200 Subject: [PATCH 1488/2004] add ebisu.finance tvl (#10089) --- projects/ebisu-finance/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/ebisu-finance/index.js diff --git a/projects/ebisu-finance/index.js b/projects/ebisu-finance/index.js new file mode 100644 index 00000000000..5979a4bd431 --- /dev/null +++ b/projects/ebisu-finance/index.js @@ -0,0 +1,25 @@ +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] }) + } + } +}) From 6c9ee714875cde16b51afa3bc94085e47d7ac899 Mon Sep 17 00:00:00 2001 From: Evan | zkLink Labs Date: Sun, 5 May 2024 19:12:55 +0800 Subject: [PATCH 1489/2004] Add two bridge contract addresses for zklink nova (#10097) * add external bridge(tron,merlin) to zklink-nova * Update index.js --------- Co-authored-by: Define101 <93603962+Define101@users.noreply.github.com> --- projects/zkLink/index.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index c50e98ef49a..5dde9d4146c 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -108,10 +108,26 @@ const config = { "0x5Bd51296423A9079b931414C1De65e7057326EaA", ], }, + tron: { + owners: [ + "TXZFj3Eo7xLArr32SYea2GtWmG1BekdpDq", // nova bridge address + ], + tokens: [ADDRESSES.tron.BTC], + }, + merlin: { + owners: [ + "0xf5b90fE755Aa2e3CcC69d9548cbeB7b38c661D73", // nova bridge address + ], + tokens: [ + "0xB880fd278198bd590252621d4CD071b1842E9Bcd", //MBTC + "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", //Solv BTC + ], + + }, } async function tvl(api) { - const fetchCoValentTokens = !['manta', 'mantle', 'blast'].includes(api.chain) + const fetchCoValentTokens = !['manta', 'mantle', 'blast', 'tron', 'merlin'].includes(api.chain) return sumTokens2({ api, ...config[api.chain], fetchCoValentTokens, }) } From dafd0673fde145665fb8bb348bbd9ab4139d7f6f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 6 May 2024 09:05:38 +0200 Subject: [PATCH 1490/2004] track doge balances --- projects/21-co/index.js | 3 +-- projects/binance/config.js | 7 ++++--- projects/bitfinex/index.js | 2 -- projects/coinsquare/index.js | 2 -- projects/helper/chain/doge.js | 30 ++++++++++++++++++++++++++++++ projects/helper/sumTokens.js | 1 + projects/helper/tokenMapping.js | 2 +- projects/solidly-v3/index.js | 4 ++-- 8 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 projects/helper/chain/doge.js diff --git a/projects/21-co/index.js b/projects/21-co/index.js index 602313dd083..7dcd5740a2b 100644 --- a/projects/21-co/index.js +++ b/projects/21-co/index.js @@ -31,12 +31,11 @@ const config = { 'addr1q976xcl3r2vt6he4q3rq6lyq8832v5mgpdds0e84z7vn0hma5d3lzx5ch40n2pzxp47gqw0z5efksz6mqlj029uexl0snqdsul' ], }, - /* doge: { owners: [ 'DMbNFKqJpr9B9XPfZL5zbgMTvzpN7h7sfz' ], - }, */ + }, bep2: { owners: [ 'bnb1k3ulpgw4wzl0e8qx80u87aq9w7ekfygruzs4dg' diff --git a/projects/binance/config.js b/projects/binance/config.js index fad58324bbf..abdbd461a89 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -174,7 +174,6 @@ const assetList = [ ['DOGE', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], - /* ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], ['DOGE', 'DOGE', 'D7BrtudMAdwz2U7vSGumVDuxZsZNibJuzw'], ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], @@ -211,7 +210,6 @@ const assetList = [ ['DOGE', 'DOGE', 'DTGrjpvJXQU2zSpUDsnk9b4PAQW5Pwtg4K'], ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], - */ ['DOT', 'BEP2', 'bnb17jky4rwhu9rzgrx7exrfc3pcd5z290ga8qfm0j'], ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], @@ -619,7 +617,7 @@ function getAddresses(chain) { return assetList.filter(i => i[1] === chain).map(i => i[2]) } function getOwners(chain) { - const isCaseSensitive = ['BTC', 'TRX', 'SOL', 'XRP', 'LTC', 'DOT', 'ALGO'].includes(chain) + const isCaseSensitive = ['BTC', 'TRX', 'SOL', 'XRP', 'LTC', 'DOT', 'ALGO', 'DOGE'].includes(chain) return getUniqueAddresses(assetList.filter(i => i[1] === chain).map(i => i[2]), isCaseSensitive) } @@ -699,4 +697,7 @@ module.exports = { near: { owners: getOwners('NEAR') }, + doge: { + owners: getOwners('DOGE') + }, } \ No newline at end of file diff --git a/projects/bitfinex/index.js b/projects/bitfinex/index.js index b18ae24c3cf..ae30d0f51c0 100644 --- a/projects/bitfinex/index.js +++ b/projects/bitfinex/index.js @@ -123,11 +123,9 @@ const config = { 'zil184u2al6n0nrks06xjgq080hc95f77ttd7rkqvn', // Zilliqa cold wallet ] }, -/* doge: { owners: ['DQQckuSMsiFjaAdGiNjvDyswcz9RWQU2xe'] } -*/ } module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/coinsquare/index.js b/projects/coinsquare/index.js index 3c2bbd95505..e38efba56df 100644 --- a/projects/coinsquare/index.js +++ b/projects/coinsquare/index.js @@ -71,7 +71,6 @@ const config = { ] }, - /* doge: { owners: [ 'D9uH999MANKyNkzfb8XwRmQhHEBNLBh9sA', @@ -81,7 +80,6 @@ const config = { 'DAd1JWwtwx1paUuWG71ePNLU3WJUFaMJoh' ] } - */ } module.exports = cexExports(config) \ No newline at end of file diff --git a/projects/helper/chain/doge.js b/projects/helper/chain/doge.js new file mode 100644 index 00000000000..c26c16ffdba --- /dev/null +++ b/projects/helper/chain/doge.js @@ -0,0 +1,30 @@ +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/sumTokens.js b/projects/helper/sumTokens.js index 7fba8db3f26..c973223ba47 100644 --- a/projects/helper/sumTokens.js +++ b/projects/helper/sumTokens.js @@ -23,6 +23,7 @@ const helpers = { "stacks": require("./chain/stacks"), "starknet": require("./chain/starknet"), "brc20": require("./chain/brc20"), + "doge": require("./chain/doge"), } const geckoMapping = { diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index c67bfb7750f..646e5628228 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -18,7 +18,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret', 'aura', 'xpla', 'bostrom'] -const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc', 'renec',] +const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc', 'renec', 'doge'] const transformTokens = { // Sample Code diff --git a/projects/solidly-v3/index.js b/projects/solidly-v3/index.js index 58bc1c3f84e..e496cca3105 100644 --- a/projects/solidly-v3/index.js +++ b/projects/solidly-v3/index.js @@ -5,9 +5,9 @@ module.exports = uniV3Export({ ethereum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 18044650, }, optimism: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 115235065, }, base: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 9672720, }, - arbitrum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 173576189, }, + arbitrum: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 173576189, permitFailure: true, }, fantom: { factory: "0x70fe4a44ea505cfa3a57b95cf2862d4fd5f0f687", fromBlock: 73057898, permitFailure: true, }, }); -module.exports.hallmarks=[ +module.exports.hallmarks = [ [1693699200, "Solidly V3 launch"], ] \ No newline at end of file From e4c34a33cc77cf6f52fbca1d2c88d291215ed5ac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 6 May 2024 09:23:49 +0200 Subject: [PATCH 1491/2004] minor fix --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 646e5628228..4854a753466 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -62,6 +62,9 @@ const fixBalancesTokens = { KINT: { coingeckoId: "kintsugi", decimals: 12 }, KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, + blast: { + '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From c7d97605b9fef306598cc038f9d0860180d3ac66 Mon Sep 17 00:00:00 2001 From: 0xSather <163465970+0xSather@users.noreply.github.com> Date: Mon, 6 May 2024 09:24:02 +0200 Subject: [PATCH 1492/2004] Add Fenix Finance Dex (#10105) --- projects/fenix-finance/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/fenix-finance/index.js diff --git a/projects/fenix-finance/index.js b/projects/fenix-finance/index.js new file mode 100644 index 00000000000..2ef4c35f169 --- /dev/null +++ b/projects/fenix-finance/index.js @@ -0,0 +1,9 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + blast: { + factory: "0x7a44CD060afC1B6F4c80A2B9b37f4473E74E25Df", + fromBlock: 1586090, + isAlgebra: true, + }, +}); From 2c830964dd96b314790cccae4eace84a2705fbbb Mon Sep 17 00:00:00 2001 From: Gornutz <90406700+Gornutz@users.noreply.github.com> Date: Mon, 6 May 2024 02:27:25 -0500 Subject: [PATCH 1493/2004] Blueberry update (#10104) * Update contract addresses * comptroller -> unitroller --- projects/blueberry/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/blueberry/index.js b/projects/blueberry/index.js index 0e7cd4cff78..f0bc883cd0a 100644 --- a/projects/blueberry/index.js +++ b/projects/blueberry/index.js @@ -5,7 +5,7 @@ const abi = { } const sdk = require('@defillama/sdk'); -const BANK = '0x9b06eA9Fbc912845DF1302FE1641BEF9639009F7'; +const BANK = '0xa34F59F634d48E2c3606048f2367326c46a4B5fA'; async function tvl(timestamp, block, chainBlocks, {api}) { const positionValues = await api.fetchList({ lengthAbi: abi.getNextPositionId, itemAbi: abi.getPositionValue, target: BANK}) @@ -15,7 +15,7 @@ async function tvl(timestamp, block, chainBlocks, {api}) { module.exports = { methodology: 'Gets the total value locked in the Blueberry Lending Market and Blueberry Earn', - ethereum: compoundExports2({ comptroller: '0xfFadB0bbA4379dFAbFB20CA6823F6EC439429ec2'}), + ethereum: compoundExports2({ comptroller: '0xcb0D9Ff5BDD34521c6f8CDbeAf15e1A76Fa4dd5D'}), } module.exports.ethereum.tvl = sdk.util.sumChainTvls([module.exports.ethereum.tvl, tvl]) \ No newline at end of file From 93b8e3773ee52558fa81b182b3f67ca9880fd6ee Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Mon, 6 May 2024 08:30:12 +0100 Subject: [PATCH 1494/2004] add nuri-exchange (#10103) --- projects/nuri-exchange-v1/index.js | 10 ++++++++++ projects/nuri-exchange/index.js | 5 +++++ 2 files changed, 15 insertions(+) create mode 100644 projects/nuri-exchange-v1/index.js create mode 100644 projects/nuri-exchange/index.js diff --git a/projects/nuri-exchange-v1/index.js b/projects/nuri-exchange-v1/index.js new file mode 100644 index 00000000000..313899d92f5 --- /dev/null +++ b/projects/nuri-exchange-v1/index.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 00000000000..0c97c674e4d --- /dev/null +++ b/projects/nuri-exchange/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + scroll: { factory: '0xAAA32926fcE6bE95ea2c51cB4Fcb60836D320C42', fromBlock: 5300905 }, +}) \ No newline at end of file From d949e17335128e43d5a0b397db358a75aabb4993 Mon Sep 17 00:00:00 2001 From: Blinkswap <159650127+Blinkswap@users.noreply.github.com> Date: Mon, 6 May 2024 10:31:11 +0300 Subject: [PATCH 1495/2004] Create index.js (#10101) --- projects/Blinkswap/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/Blinkswap/index.js diff --git a/projects/Blinkswap/index.js b/projects/Blinkswap/index.js new file mode 100644 index 00000000000..a65ce1beb56 --- /dev/null +++ b/projects/Blinkswap/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require("../helper/unknownTokens"); +module.exports = { + misrepresentedTokens: true, + blast: { + tvl: getUniTVL({ + factory: "0xFfbDb302f29B29ee45D650DF44889450d252d868", + useDefaultCoreAssets: true, + }), + }, +}; From 2798b2e12279303841dac9980da7ef9ef58e1ff4 Mon Sep 17 00:00:00 2001 From: robin yang Date: Mon, 6 May 2024 15:44:50 +0800 Subject: [PATCH 1496/2004] Adjust zkex DEX adapter (#10108) * Add zkex DEX adapter * code refactor * Adjust zkex DEX adapter --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkex/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/projects/zkex/index.js b/projects/zkex/index.js index 4824471ce34..03bd8d86839 100644 --- a/projects/zkex/index.js +++ b/projects/zkex/index.js @@ -2,15 +2,15 @@ const ADDRESSES = require("../helper/coreAssets.json") const { sumTokensExport } = require('../helper/unwrapLPs') const config = { - polygon: { owners: ["0x3C7c0ebFCD5786ef48df5ed127cdDEb806db976c"], tokens: [ADDRESSES.polygon.USDC, ADDRESSES.polygon.DAI, ADDRESSES.polygon.USDT, ADDRESSES.polygon.WMATIC_1] }, - avax: { owners: ["0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585"], tokens: [ADDRESSES.avax.USDC, ADDRESSES.avax.USDt] }, - bsc: { owners: ["0x7bd79DEd935B542fb22c74305a4d2A293C18483a"], tokens: ['0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3'] }, - arbitrum: { owners: ["0xe469c1330ceecc375fe17e7d649ea270186d344f"], tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT, ADDRESSES.arbitrum.ARB], }, - optimism: { owners: ["0xa194fb4eab262ec9886a119609bbb2800bdd3a2e"], tokens: [ADDRESSES.optimism.USDC, ADDRESSES.optimism.USDT, ADDRESSES.optimism.OP], }, - era: { owners: ["0x3E3C7c1DCbAf343d14da4F0A0CD7E3c4b9765A4c"], tokens: [ADDRESSES.era.USDC], }, - linea: { owners: ["0x2Fad6cB2A9Db68395Ba4f87ff05768485C7fa6Fd"], tokens: [ADDRESSES.linea.USDC, ADDRESSES.linea.USDT], }, - base: { owners: ["0xaa46d98049cd895e980b60abc4af18cae681865a"], }, - op_bnb: { owners: ["0x85079cb83b6cadba34e64bc0f24493f49d8b1f4e"], }, + 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 => { From cfad50cc82b53a63f00fd3c6ff0bea35af8a42c9 Mon Sep 17 00:00:00 2001 From: des0lation <72014077+des0lation@users.noreply.github.com> Date: Mon, 6 May 2024 17:45:49 +1000 Subject: [PATCH 1497/2004] Update index.js (#10098) Adding USDe,FRAX,sFRAX,frxETH,sfrxETH,egETH,PT-ezETH-26DEC2024 --- projects/swell-l2-farm/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js index 8a830358df4..3a11be5fa56 100644 --- a/projects/swell-l2-farm/index.js +++ b/projects/swell-l2-farm/index.js @@ -26,7 +26,14 @@ module.exports = { "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", "0x6ee2b5E19ECBa773a352E5B21415Dc419A700d1d", "0xac440d0eE23FA69632Aa731322C2a480dD1376e4", - "0x330c4DD05dB16db6323505262C57CFdE5f0A78Ea" + "0x330c4DD05dB16db6323505262C57CFdE5f0A78Ea", + "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + "0x853d955aCEf822Db058eb8505911ED77F175b99e", + "0xA663B02CF0a4b149d2aD41910CB81e23e1c41c32", + "0x5E8422345238F34275888049021821E8E08CAa1f", + "0xac3E018457B222d93114458476f3E3416Abbe38F", + "0x18f313Fc6Afc9b5FD6f0908c1b3D476E3feA1DD9", + "0xf7906F274c174A52d444175729E3fa98f9bde285" ] }) } From ccd54a9621ce0ae882c18c7c6f866dee030a4872 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 6 May 2024 09:47:45 +0200 Subject: [PATCH 1498/2004] update alienbase --- projects/alienbase/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/alienbase/index.js b/projects/alienbase/index.js index 3f1509f395f..c6e3dde2b8d 100644 --- a/projects/alienbase/index.js +++ b/projects/alienbase/index.js @@ -8,7 +8,7 @@ module.exports = { misrepresentedTokens: true, methodology: `Uses Uniswap-style factory address to find and price liquidity pairs.`, base: { - staking: staking("0x52eaecac2402633d98b95213d0b473e069d86590", ALB), + staking: staking(["0x52eaecac2402633d98b95213d0b473e069d86590", '0x365c6d588e8611125De3bEA5B9280C304FA54113'], ALB), tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: true, }), } }; From 02e4f4bb8e0fa77f37005a47affafd652a79e4ca Mon Sep 17 00:00:00 2001 From: tgcasinocc Date: Mon, 6 May 2024 12:35:08 +0300 Subject: [PATCH 1499/2004] add tgcasino sdk adapter (#10109) --- projects/tgcasino/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/tgcasino/index.js diff --git a/projects/tgcasino/index.js b/projects/tgcasino/index.js new file mode 100644 index 00000000000..a3ee625a3ff --- /dev/null +++ b/projects/tgcasino/index.js @@ -0,0 +1,14 @@ +const { staking } = require("../helper/staking"); + +module.exports = { + ethereum: { + tvl: () => ({}), + staking: staking( + [ + "0x0916568854Fc53B720186052d8013D62A0409b47", + "0x258C3104388f8cd72c8b4336fc536033E6dB764E", + ], + ["0x25B4f5D4C314bCD5d7962734936C957B947cb7CF"] + ), + }, +}; From d671963d160326659ec1a17138116bb49d9568e0 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Mon, 6 May 2024 18:16:26 +0800 Subject: [PATCH 1500/2004] [izumi] add bob chain config (#10088) --- projects/izumi-iziswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 24bfb8a3569..063b4623903 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -32,6 +32,7 @@ const poolHelpers = { 'zklink': ['0x936c9A1B8f88BFDbd5066ad08e5d773BC82EB15F'], 'mode': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], 'xlayer': ['0xF42C48f971bDaA130573039B6c940212EeAb8496'], + 'bob': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], } // iziswap liquidityManager contracts const blacklistedTokens = [ From ab43709d9b456446a04c4c2367bcbd1b3bdba103 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 6 May 2024 12:18:45 +0200 Subject: [PATCH 1501/2004] a51: track manta --- projects/a51-finance-v3/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/a51-finance-v3/index.js b/projects/a51-finance-v3/index.js index 660f1c4c12c..a79f04a4ab4 100644 --- a/projects/a51-finance-v3/index.js +++ b/projects/a51-finance-v3/index.js @@ -38,6 +38,10 @@ const ADDRESSES = { CLTBASE: "0xA8Dc31c8C9F93dB2e42A5472F580689794639576", HELPER: "0x965356eb2C208Ce4130E267342cA720042Cce7b2", }, + manta: { + CLTBASE: "0x69317029384c3305fC04670c68a2b434e2D8C44C", + HELPER: "0xa1d8180f4482359ceb7eb7437fcf4a2616830f81", + }, } const DEFAULT_STRATEGY_CREATION_TOPIC = "StrategyCreated(bytes32)" @@ -64,6 +68,9 @@ const START_BLOCKS = { scroll: { CLTBASE: 4846051, }, + manta: { + CLTBASE: 1834975, + }, } async function getStrategiesLogs(strategies, factoryType, api) { From be416243648157901f241c054170dd5f137db5ff Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 6 May 2024 13:13:18 +0100 Subject: [PATCH 1502/2004] hallmark swell (#10111) --- projects/swell-l2-farm/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js index 3a11be5fa56..815a7d4baa2 100644 --- a/projects/swell-l2-farm/index.js +++ b/projects/swell-l2-farm/index.js @@ -3,6 +3,9 @@ const { nullAddress } = require("../helper/tokenMapping"); const { sumTokensExport } = require("../helper/unwrapLPs"); module.exports = { + hallmarks: [ + [1714867303,"justin sun depo"] + ], ethereum: { tvl: sumTokensExport({ owners: ["0x38D43a6Cb8DA0E855A42fB6b0733A0498531d774"], From ef5c123ad102e0d07c6b25cd6bebe60f18d20ed1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 6 May 2024 18:25:22 +0530 Subject: [PATCH 1503/2004] Add support for NLX protocol (#10112) * add nlx protocol... * refactor nlx --------- Co-authored-by: nlx-morpheus --- projects/nlx/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/nlx/index.js diff --git a/projects/nlx/index.js b/projects/nlx/index.js new file mode 100644 index 00000000000..c0df865ae0d --- /dev/null +++ b/projects/nlx/index.js @@ -0,0 +1,7 @@ +const { gmxExportsV2 } = require('../helper/gmx') + +module.exports = { + core: { + tvl: gmxExportsV2({ eventEmitter: '0x29792F84224c77e2c672213c4d942fE280D596ef', fromBlock: 13558258, }), + }, +} \ No newline at end of file From d6433422933ab6f12011ac5e646181ae3326ec60 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 6 May 2024 15:36:12 +0100 Subject: [PATCH 1504/2004] update factory --- projects/aerodrome-CL/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/aerodrome-CL/index.js b/projects/aerodrome-CL/index.js index 02d16ca6cbf..c38ea54b9f2 100644 --- a/projects/aerodrome-CL/index.js +++ b/projects/aerodrome-CL/index.js @@ -1,6 +1,6 @@ const {getUniTVL} = require('../helper/unknownTokens.js') const config = { - base: { factory: '0x9592CD9B267748cbfBDe90Ac9F7DF3c437A6d51B'}, + base: { factory: '0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809A'}, } Object.keys(config).forEach(chain => { From 28c5c810929218c41289fc8cd8339f564ce48eb5 Mon Sep 17 00:00:00 2001 From: larkloss Date: Mon, 6 May 2024 22:47:41 +0800 Subject: [PATCH 1505/2004] Add more info of SHUI (#10094) * Added more info for SHUI * Revert "Added more info for SHUI" This reverts commit 6966ad38132566bf467a300a9a9280bf36b60d8a. * Added more info for SHUI * Added and more info for SHUI (fixed previous pr) * Fixed pool2 function, now the contract should be right --- projects/shui/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/shui/index.js b/projects/shui/index.js index 5dcf760928c..dfade6235e9 100644 --- a/projects/shui/index.js +++ b/projects/shui/index.js @@ -1,7 +1,11 @@ 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: { @@ -17,6 +21,7 @@ module.exports = { return { ["conflux:" + WCFX]: totalDeposited * ratioDepositedBySupply / 1e9 }; - } + }, + pool2: sumTokensExport({ owner: SHUI2CFX, coreAssets: [WCFX], tokens: [CFX_SHUI_LP_TokenAddress, CFX_SCFX_LP_TokenAddress] }), } -}; \ No newline at end of file +}; From c05f4152c7f63e4e9c1ebd95414f5a8e80119a9a Mon Sep 17 00:00:00 2001 From: KevinMoll-ls <35275573+KevinMoll-ls@users.noreply.github.com> Date: Mon, 6 May 2024 11:18:27 -0400 Subject: [PATCH 1506/2004] Add Reserve Treasury (#10113) * Add Reserve Treasury Making another PR to reference this treasury from data.ts in DefiLlama-Server repository * Update coreAssets.json * Update reserve.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 2 +- projects/treasury/reserve.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 projects/treasury/reserve.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index c2845628915..2975bccf25c 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1771,4 +1771,4 @@ "RETH": "0xb5686c4f60904ec2bda6277d6fe1f7caa8d1b41a", "TBTC": "0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2" } -} \ No newline at end of file +} diff --git a/projects/treasury/reserve.js b/projects/treasury/reserve.js new file mode 100644 index 00000000000..3994de82a9e --- /dev/null +++ b/projects/treasury/reserve.js @@ -0,0 +1,11 @@ +const { nullAddress,treasuryExports } = require("../helper/treasury"); + +const reserveTreasury = "0xC6625129C9df3314a4dd604845488f4bA62F9dB8"; + +module.exports = treasuryExports({ + ethereum: { + tokens: [nullAddress], + owners: [reserveTreasury], + ownTokens: ['0x320623b8e4ff03373931769a31fc52a4e78b5d70'], + }, +}) From 4f11d8c4ee327ab983ca1454b8a6cd9f0e3db67b Mon Sep 17 00:00:00 2001 From: OreSwap <165940398+oreswap@users.noreply.github.com> Date: Mon, 6 May 2024 22:22:53 +0700 Subject: [PATCH 1507/2004] Create index.js (#10114) --- projects/OreSwap/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/OreSwap/index.js diff --git a/projects/OreSwap/index.js b/projects/OreSwap/index.js new file mode 100644 index 00000000000..f2bd8b4d59f --- /dev/null +++ b/projects/OreSwap/index.js @@ -0,0 +1,8 @@ +const { getUniTVL, } = require('../helper/unknownTokens') + +module.exports = { + misrepresentedTokens: true, + core: { + tvl: getUniTVL({ factory: '0xbA862e0B955c612EEd514E722c84F1E70962457e', useDefaultCoreAssets: true, fetchBalances: true, }), + }, +}; From 8b3a61e18814ba437e55601b3277efaafbc71bc1 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 6 May 2024 16:54:51 +0100 Subject: [PATCH 1508/2004] add polymarket address --- projects/polymarket.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/polymarket.js b/projects/polymarket.js index 611e1ed923f..c1eed79613e 100644 --- a/projects/polymarket.js +++ b/projects/polymarket.js @@ -3,7 +3,10 @@ const { sumTokensExport } = require('./helper/unwrapLPs'); module.exports = { polygon: { - tvl: sumTokensExport({ owner: '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045', tokens: [ADDRESSES.polygon.USDC]}) + tvl: sumTokensExport({ owners: [ + '0x4D97DCd97eC945f40cF65F87097ACe5EA0476045', + '0x3A3BD7bb9528E159577F7C2e685CC81A765002E2' + ], tokens: [ADDRESSES.polygon.USDC]}) }, 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.` } From 9662cdcf83d29a3a4de84d4b7b7cec81f10a4a0f Mon Sep 17 00:00:00 2001 From: Antoine <67124021+antoineborg@users.noreply.github.com> Date: Mon, 6 May 2024 19:54:58 +0200 Subject: [PATCH 1509/2004] Add new ETH wallet (#10116) --- projects/swissborg/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/swissborg/index.js b/projects/swissborg/index.js index 0b9711c32e1..77d068e1efb 100644 --- a/projects/swissborg/index.js +++ b/projects/swissborg/index.js @@ -15,6 +15,7 @@ const config = { '0x22bF0A4C4eff418b3306AbFeE20813D0b6E8Dc74', '0x11444C6389A26C8E41d7FD5CafBfCC511303b7d3', '0x67FE3293FC4e877F3CDc3F0ed93721a600f72BdE', + '0x178Fb204c1ff2Ed7d0651C522A3a5B15480Eb76d', ], }, bitcoin: { @@ -109,4 +110,4 @@ const config = { } 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.' \ No newline at end of file +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.' From 9d26cf6a0f23c14731ba6fdacdcd1ea1fdc51076 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 6 May 2024 20:04:35 +0100 Subject: [PATCH 1510/2004] ft clubs --- projects/friendtech/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/friendtech/index.js b/projects/friendtech/index.js index 7fb68a73090..0b9e3f6880d 100644 --- a/projects/friendtech/index.js +++ b/projects/friendtech/index.js @@ -1,13 +1,20 @@ const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') const contract = "0xcf205808ed36593aa40a44f10c7f7c2f67d4a4d4" +const clubs = "0x201e95f275f39a5890c976dc8a3e1b4af114e635" -async function tvl(time, ethBlock, _b, {api}) { - return sumTokens2({ tokens: [nullAddress], owner: contract, api }) +async function tvl(api) { + return sumTokens2({ tokens: [ + nullAddress, + "0x0bD4887f7D41B35CD75DFF9FfeE2856106f86670" + ], owners: [ + contract, + clubs + ], api }) } module.exports = { - methodology: `We count the ETH on ${contract}`, + methodology: `We count the ETH on ${contract} and FRIEND on ${clubs}`, base: { tvl } From c45e31de3285e434b6df8229f36f7d68f51e99f6 Mon Sep 17 00:00:00 2001 From: 0xBluePingu <156801910+0xBluePingu@users.noreply.github.com> Date: Tue, 7 May 2024 09:31:08 +0200 Subject: [PATCH 1511/2004] Update token (#10117) --- projects/pingu/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/pingu/index.js b/projects/pingu/index.js index f38d74d3ca8..a766ef060ef 100644 --- a/projects/pingu/index.js +++ b/projects/pingu/index.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') const fundStore = "0x7Cc41ee3Cba9a1D2C978c37A18A0d6b59c340224"; // FundStore -const PINGU = "0x964CBf436Ddb782d09465930ce8b431311Cb54f4"; // PINGU +const PINGU = "0x83E60B9F7f4DB5cDb0877659b1740E73c662c55B"; // PINGU const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC module.exports = { From 029c9a8f85198fc25bc855941cb852c7a44209c2 Mon Sep 17 00:00:00 2001 From: GUACamole <132798006+Guacgg@users.noreply.github.com> Date: Tue, 7 May 2024 10:46:01 +0200 Subject: [PATCH 1512/2004] Add Support For Guacamole's "GuacSwap" (#10119) * Add Support For Guacamole's "GuacSwap" This change adds TVL tracking support for Guacamole's new solana-based AMM, GuacSwap - featured on guacamole.gg * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/guacswap/index.js | 212 ++++++++++++++++++++++++++++++++ projects/helper/tokenMapping.js | 3 + 2 files changed, 215 insertions(+) create mode 100644 projects/guacswap/index.js diff --git a/projects/guacswap/index.js b/projects/guacswap/index.js new file mode 100644 index 00000000000..aa0775ef62f --- /dev/null +++ b/projects/guacswap/index.js @@ -0,0 +1,212 @@ +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/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4854a753466..60918100e69 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -65,6 +65,9 @@ const fixBalancesTokens = { blast: { '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, }, + solana: { + 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 46a180e70ebb709a8e7d486e6abb7996b7860dc1 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 7 May 2024 11:29:38 +0100 Subject: [PATCH 1513/2004] Move staking BFX (#10121) --- projects/blastfutures/index.js | 2 ++ projects/rabbitx/index.js | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/blastfutures/index.js b/projects/blastfutures/index.js index d90ee126fa0..291de172054 100644 --- a/projects/blastfutures/index.js +++ b/projects/blastfutures/index.js @@ -1,8 +1,10 @@ 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'), }, } diff --git a/projects/rabbitx/index.js b/projects/rabbitx/index.js index bc4b8a50983..85f877326d7 100644 --- a/projects/rabbitx/index.js +++ b/projects/rabbitx/index.js @@ -7,7 +7,4 @@ module.exports = { tvl: sumTokensExport({ owners: ['0xFc7f884DE22a59c0009C91733196b012Aecb8F41', '0x3b8F6D6970a24A58b52374C539297ae02A3c4Ae4', '0x7fAb440A0251dA67B316d2c0431E3Ccf4520Cd42',], tokens: [ADDRESSES.ethereum.USDT]}), staking: staking('0x0c378FB17E87B180256a87e3f671cd83Bf3236DB', '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e'), }, - blast: { - staking: staking('0x67dBA61709D78806395acDBa3EF9Df686aF5dc24', '0x236bb48fcF61ce996B2C8C196a9258c176100c7d'), - } } From 152841aab69a63f697631a0f78fae11208b72e02 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 7 May 2024 14:51:40 +0100 Subject: [PATCH 1514/2004] add guacswap treasury --- projects/treasury/guacswap.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/treasury/guacswap.js diff --git a/projects/treasury/guacswap.js b/projects/treasury/guacswap.js new file mode 100644 index 00000000000..fefa840d7ab --- /dev/null +++ b/projects/treasury/guacswap.js @@ -0,0 +1,12 @@ +const { treasuryExports } = require("../helper/treasury"); + +module.exports = treasuryExports({ + solana: { + owners: [ + 'FSKHkZutHAyjcYcqSanE9rLqvEyKrX91BcZmALSznYck', + ], + ownTokens: [ + 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR', // guac + ] + }, +}) \ No newline at end of file From ed371554b72a681e91df8d5f424912b1d6afe1e4 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 7 May 2024 15:04:30 +0100 Subject: [PATCH 1515/2004] swapbase new factory (#10124) --- projects/swapbased-cl/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/swapbased-cl/index.js b/projects/swapbased-cl/index.js index bcab4fee1be..8f0a92f7bcd 100644 --- a/projects/swapbased-cl/index.js +++ b/projects/swapbased-cl/index.js @@ -2,8 +2,10 @@ const { uniV3Export } = require("../helper/uniswapV3"); module.exports = uniV3Export({ base: { - factory: "0xC207628E5e2b59E9C690071e68c7C1c4193b0252", - fromBlock: 2435487, - isAlgebra: true, + hallmarks: [ + [1714957200,"change contracts"] + ], + factory: "0xb5620F90e803C7F957A9EF351B8DB3C746021BEa", //replace factory , from algebra dex to pancake v3 (univ3) + fromBlock: 13766585, }, }); \ No newline at end of file From 4462f20ec5c0ef0a5240508724bbe6972c78a0c3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 7 May 2024 21:25:15 +0200 Subject: [PATCH 1516/2004] fix marinade adapter --- projects/helper/solana.js | 68 ++++++++++--------- .../utils/solana/layouts/raydium-layout.js | 7 +- projects/marinade-native/index.js | 28 ++++---- 3 files changed, 57 insertions(+), 46 deletions(-) diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 853aa915b37..909acd71c6c 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -1,5 +1,4 @@ const ADDRESSES = require('./coreAssets.json') -const axios = require("axios"); const http = require('./http') const { getEnv } = require('./env') const { transformBalances: transformBalancesOrig, transformDexBalances, } = require('./portedTokens.js') @@ -55,8 +54,8 @@ async function getSolBalances(accounts) { const tokenBalances = [] const chunks = sliceIntoChunks(accounts, 99) for (let chunk of chunks) { - const bal = await axios.post(endpoint(), chunk.map(formBody)) - tokenBalances.push(...bal.data) + const bal = await http.post(endpoint(), chunk.map(formBody)) + tokenBalances.push(...bal) } return tokenBalances.reduce((a, i) => a + i.result.value, 0) } @@ -68,13 +67,13 @@ async function getSolBalance(account) { const TOKEN_LIST_URL = "https://cdn.jsdelivr.net/gh/solana-labs/token-list@main/src/tokens/solana.tokenlist.json" async function getTokenSupply(token) { - const tokenSupply = await axios.post(endpoint(), { + const tokenSupply = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method: "getTokenSupply", params: [token], }); - return tokenSupply.data.result.value.uiAmount; + return tokenSupply.result.value.uiAmount; } async function getGeckoSolTokens() { @@ -97,8 +96,8 @@ async function getTokenDecimals(tokens) { const res = {} const chunks = sliceIntoChunks(tokens, 99) for (const chunk of chunks) { - const tokenSupply = await axios.post(endpoint(), calls(chunk)) - tokenSupply.data.forEach(({ id, result }) => res[id] = result.value.decimals) + const tokenSupply = await http.post(endpoint(), calls(chunk)) + tokenSupply.forEach(({ id, result }) => res[id] = result.value.decimals) } return res } @@ -116,8 +115,8 @@ function formOwnerBalanceQuery(owner, programId = TOKEN_PROGRAM_ID) { } } async function getOwnerAllAccount(owner) { - const tokenBalance = await axios.post(endpoint(), formOwnerBalanceQuery(owner)); - return tokenBalance.data.result.value.map(i => ({ + const tokenBalance = await http.post(endpoint(), formOwnerBalanceQuery(owner)); + return tokenBalance.result.value.map(i => ({ account: i.pubkey, mint: i.account.data.parsed.info.mint, amount: i.account.data.parsed.info.tokenAmount.amount, @@ -126,10 +125,10 @@ async function getOwnerAllAccount(owner) { })) } -function formTokenBalanceQuery(token, account) { +function formTokenBalanceQuery(token, account, id = 1) { return { jsonrpc: "2.0", - id: 1, + id, method: "getTokenAccountsByOwner", params: [ account, @@ -139,8 +138,8 @@ function formTokenBalanceQuery(token, account) { } } async function getTokenBalance(token, account) { - const tokenBalance = await axios.post(endpoint(), formTokenBalanceQuery(token, account)); - return tokenBalance.data.result.value.reduce( + const tokenBalance = await http.post(endpoint(), formTokenBalanceQuery(token, account)); + return tokenBalance.result.value.reduce( (total, account) => total + account.account.data.parsed?.info.tokenAmount.uiAmount ?? 0, 0 @@ -148,13 +147,18 @@ async function getTokenBalance(token, account) { } async function getTokenBalances(tokensAndAccounts) { - const body = tokensAndAccounts.map(([token, account]) => formTokenBalanceQuery(token, account)) - const tokenBalances = await axios.post(endpoint(), body); + const body = tokensAndAccounts.map(([token, account], i) => formTokenBalanceQuery(token, account, i)) + const tokenBalances = await http.post(endpoint(), body); const balances = {} - // tokenBalances.data.forEach((v, i )=> { - // if (!v.result) sdk.log(v, tokensAndAccounts[i]) + // if (!tokenBalances) { + // sdk.log('missing response', tokenBalances, tokensAndAccounts) + // return balances + // } + // tokenBalances.forEach((v, i )=> { + // if (!v.result) sdk.log('missing response', v, tokensAndAccounts[i]) // } ) - tokenBalances.data.forEach(({ result: { value } }) => { + tokenBalances.forEach(({ result: { value } = {} } = {}) => { + if (!value) return; value.forEach(({ account: { data: { parsed: { info: { mint, tokenAmount: { amount } } } } } }) => { sdk.util.sumSingleBalance(balances, mint, amount) }) @@ -170,11 +174,11 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun const chunks = sliceIntoChunks(tokenAccounts, chunkSize) for (const chunk of chunks) { const body = chunk.map(formBody) - const data = await axios.post(endpointMap[chain](), body); - if(data.data.length !== chunk.length){ + const data = await http.post(endpointMap[chain](), body); + if (data.length !== chunk.length) { throw new Error(`Mismatched returned for getTokenAccountBalances()`) } - data.data.forEach(({ result: { value } }, i) => { + data.forEach(({ result: { value } }, i) => { if (!value || !value.data?.parsed) { if (tokenAccounts[i].toString() === '11111111111111111111111111111111') { log('Null account: skipping it') @@ -188,8 +192,8 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun balancesIndividual.push({ mint, amount }) }) if (chunks.length > 4) { - log('waiting before more calls') - await sleep(300) + // log('waiting before more calls') + await sleep(400) } } if (individual) return balancesIndividual @@ -198,7 +202,7 @@ async function getTokenAccountBalances(tokenAccounts, { individual = false, chun async function getTokenAccountBalance(account) { - const tokenBalance = await axios.post( + const tokenBalance = await http.post( endpoint(), { jsonrpc: "2.0", @@ -210,7 +214,7 @@ async function getTokenAccountBalance(account) { headers: { "Content-Type": "application/json" }, } ); - return tokenBalance.data.result?.value?.uiAmount; + return tokenBalance.result?.value?.uiAmount; } let tokenList @@ -245,13 +249,13 @@ async function getMultipleAccountsRaw(accountsArray) { const res = [] const chunks = sliceIntoChunks(accountsArray, 99) for (const chunk of chunks) { - const accountsInfo = await axios.post(endpoint(), { + const accountsInfo = await http.post(endpoint(), { jsonrpc: "2.0", id: 1, method: "getMultipleAccounts", params: [chunk], }) - res.push(...accountsInfo.data.result.value) + res.push(...accountsInfo.result.value) } return res; @@ -287,7 +291,7 @@ async function getMultipleAccountBuffers(labeledAddresses) { async function sumOrcaLPs(tokensAndAccounts) { const [tokenlist, orcaPools] = await Promise.all([ getTokenList(), - axios.get("https://api.orca.so/pools").then((r) => r.data), + http.get("https://api.orca.so/pools"), ]); let totalUsdValue = 0; await Promise.all( @@ -324,7 +328,7 @@ function exportDexTVL(DEX_PROGRAM_ID, getTokenAccounts, chain = 'solana') { } const coreTokens = chain === 'solana' ? await getGeckoSolTokens() : null - return transformDexBalances({ chain, data, blacklistedTokens: blacklistedTokens_default, coreTokens, }) + return transformDexBalances({ chain, data, blacklistedTokens: blacklistedTokens_default, coreTokens, }) } async function _getTokenAccounts() { @@ -382,8 +386,8 @@ async function sumTokens2({ for (const chunk of chunks) { await _sumTokens(chunk) if (chunks.length > 2) { - log('waiting before more calls') - await sleep(300) + // log('waiting before more calls') + await sleep(400) } } } @@ -399,7 +403,7 @@ async function sumTokens2({ sdk.util.sumSingleBalance(balances, 'solana:' + ADDRESSES.solana.SOL, solBalance) } - blacklistedTokens.forEach(i => delete balances['solana:'+i]) + blacklistedTokens.forEach(i => delete balances['solana:' + i]) return balances diff --git a/projects/helper/utils/solana/layouts/raydium-layout.js b/projects/helper/utils/solana/layouts/raydium-layout.js index 07190779ecb..7c3b3cafd8c 100644 --- a/projects/helper/utils/solana/layouts/raydium-layout.js +++ b/projects/helper/utils/solana/layouts/raydium-layout.js @@ -1,7 +1,7 @@ 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"), @@ -59,6 +59,9 @@ const RAYDIUM_LIQUIDITY_STATE_LAYOUT_V4 = struct([ 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"), @@ -73,7 +76,7 @@ const RAYDIUM_REWARD_INFO = struct([ u128("rewardGrowthGlobalX64"), ]) -const RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ +const RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM = struct([ blob(8), u8("bump"), publicKey("ammConfig"), diff --git a/projects/marinade-native/index.js b/projects/marinade-native/index.js index 8d3ad92f8b6..ecb86f706c5 100644 --- a/projects/marinade-native/index.js +++ b/projects/marinade-native/index.js @@ -1,19 +1,23 @@ const { StakeProgram } = require("@solana/web3.js") const { getConnection } = require('../helper/solana') -async function tvl(api) { - const stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { - filters: [{ - memcmp: { - bytes: 'stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', - offset: 4 + 8 - } - }] - }) +async function tvl() { + let hasNext = true + let offset = 0 + let length = 9 + let nativeTvl = 0 + do { + const _stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { + filters: [{ + memcmp: { bytes: 'stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', offset: 4 + 8 } + }], + dataSlice: { offset, length } + }) + nativeTvl += _stakeAccounts.reduce((tvl, { account }) => { return tvl + account.lamports / 1e9 }, 0) - const nativeTvl = stakeAccounts.reduce((tvl, { account }) => { - return tvl + account.lamports/1e9 - }, 0) + hasNext = _stakeAccounts.length === length + offset += length + } while (hasNext) return { solana: nativeTvl From 7520084f496900c245019ef5c6d9efa78ed97882 Mon Sep 17 00:00:00 2001 From: Thomas Clement <88335455+tom2o17@users.noreply.github.com> Date: Tue, 7 May 2024 15:26:30 -0400 Subject: [PATCH 1517/2004] Update index.js (#10125) --- projects/fraxlend/index.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/projects/fraxlend/index.js b/projects/fraxlend/index.js index 43666adff2d..c8bb6771f3f 100644 --- a/projects/fraxlend/index.js +++ b/projects/fraxlend/index.js @@ -1,18 +1,33 @@ const ADDRESSES = require('../helper/coreAssets.json') const abi = require("./abi.json"); const { sumTokens2 } = require('../helper/unwrapLPs') +const sdk = require('@defillama/sdk'); -const REGISTRY_ADDR = "0xD6E9D27C75Afd88ad24Cd5EdccdC76fd2fc3A751" +const REGISTRY_ADDR_ETHEREUM = "0xD6E9D27C75Afd88ad24Cd5EdccdC76fd2fc3A751" +const REGISTRY_ADDR_FRAXTAL = "0x8c22EBc8f9B96cEac97EA21c53F3B27ef2F45e57"; +const REGISTRY_ADDR_ARBITRUM = "0x0bD2fFBcB0A17De2d5a543ec2D47C772eeaD316d" + +const registry_config = { + fraxtal: REGISTRY_ADDR_FRAXTAL, + ethereum: REGISTRY_ADDR_ETHEREUM, + arbitrum: REGISTRY_ADDR_ARBITRUM +} + +const frax_config = { + ethereum: ADDRESSES.ethereum.FRAX, + fraxtal: "0xFc00000000000000000000000000000000000001", + arbitrum: "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F" +} async function tvl(api) { - const pairs = await api.call({ target: REGISTRY_ADDR, abi: abi['getAllPairAddresses'], }) + const pairs = await api.call({ target: registry_config[api.chain], abi: abi['getAllPairAddresses'], chain: api.chain}) const tokens = await api.multiCall({ abi: abi.collateralContract, calls: pairs }) return sumTokens2({ api, tokensAndOwners: tokens.map((v, i) => [v, pairs[i]]) }) } async function borrowed(api) { - const pairs = await api.call({ target: REGISTRY_ADDR, abi: abi['getAllPairAddresses'], }) + const pairs = await api.call({ target: registry_config[api.chain], abi: abi['getAllPairAddresses'], chain: api.chain}) const bals = await api.multiCall({ abi: 'function totalBorrow() view returns (uint128 amount, uint128 shares)', calls: pairs }) - bals.forEach(bal => api.add(ADDRESSES.ethereum.FRAX, bal.amount)) + bals.forEach(bal => api.add(frax_config[api.chain], bal.amount)) } module.exports = { @@ -20,4 +35,10 @@ module.exports = { ethereum: { tvl, borrowed, }, + fraxtal: { + tvl, borrowed + }, + arbitrum: { + tvl, borrowed + } } \ No newline at end of file From 627ee606ab7c3fc016caf105b02bc1096961c902 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 7 May 2024 21:56:20 +0200 Subject: [PATCH 1518/2004] tarot: remove bad debt --- projects/tarot/tarotHelper.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/tarot/tarotHelper.js b/projects/tarot/tarotHelper.js index 7d728792b77..a301c686753 100644 --- a/projects/tarot/tarotHelper.js +++ b/projects/tarot/tarotHelper.js @@ -72,11 +72,17 @@ function tarotHelper(exportsObj, config, { tarotSymbol = 'vTAROT' } = {}) { // 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) => { - // Lot of MAI pools have bad debt, ignoring it - if (v.toLowerCase() !== '0xfb98b335551a418cd0737375a2ea0ded62ea213b' && !blacklistedBorrowables.has(borrowables[i].toLowerCase())) { + + if (!blacklistedTokens.has(v.toLowerCase()) && !blacklistedBorrowables.has(borrowables[i].toLowerCase())) { sdk.util.sumSingleBalance(balances, v, borrowed[i], api.chain) } }) From 07dfb868a8557a651d2386da24a7c0439315bde6 Mon Sep 17 00:00:00 2001 From: GaussETH <98699779+GaussETH@users.noreply.github.com> Date: Wed, 8 May 2024 14:40:57 +0800 Subject: [PATCH 1519/2004] feat: FeeFree support Base chain (#10130) Co-authored-by: GaussETH --- projects/FeeFree/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/FeeFree/index.js b/projects/FeeFree/index.js index 12b79f55547..7e8942a4772 100644 --- a/projects/FeeFree/index.js +++ b/projects/FeeFree/index.js @@ -9,6 +9,11 @@ const config = { router: "0x0Fee97363deEFBE4De038D437D805A98dbEbA400", fromBlock: 13704184, }, + base: { + pool: "0xc08304a5300D9a2310A603b8D7fB8470f752947F", + router: "0x0Fee76f15DE74A5211e5Bc2aBF95394d7f50C400", + fromBlock: 14089843, + } } module.exports = { From 1dae981a9ff736e06df0754f2cabbea9d23901ae Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 8 May 2024 08:42:47 +0200 Subject: [PATCH 1520/2004] update loxodrome --- projects/loxodrome/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/loxodrome/index.js b/projects/loxodrome/index.js index 51e4cb90f44..e504baf0afc 100644 --- a/projects/loxodrome/index.js +++ b/projects/loxodrome/index.js @@ -1,3 +1,7 @@ const { uniTvlExport } = require('../helper/unknownTokens') +const { mergeExports } = require('../helper/utils') -module.exports = uniTvlExport('iotex', '0x92bfa051bf12a0aef9a5e1ac8b2aa7dc1b05a406', { hasStablePools: true, }) \ No newline at end of file +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 From 0391ece151ca42825b42bc4fb50300415fd63978 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 8 May 2024 08:54:44 +0200 Subject: [PATCH 1521/2004] track bitgenie dex --- projects/bitgenie-dex/index.js | 3 +++ projects/bitgenie/index.js | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 projects/bitgenie-dex/index.js diff --git a/projects/bitgenie-dex/index.js b/projects/bitgenie-dex/index.js new file mode 100644 index 00000000000..ea48ad369eb --- /dev/null +++ b/projects/bitgenie-dex/index.js @@ -0,0 +1,3 @@ +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 index 51a3b3f2787..ac0b4211820 100644 --- a/projects/bitgenie/index.js +++ b/projects/bitgenie/index.js @@ -7,7 +7,7 @@ const stakingContracts = [ "0x63C8860e93697dB85716C9ee7F15D09EAC62136C", "0x19a0D0b1734bdB167D393e7BB7a57418e3a8cCA8", "0x1DBa95577DFe76d8e86af00aEB614479cb7917D2", - "0xC795A8D5f83F5A172f606AC2516276Ee7DF63407" + "0xC795A8D5f83F5A172f606AC2516276Ee7DF63407", ]; @@ -18,7 +18,6 @@ module.exports = { } async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:stakeToken', calls: stakingContracts}) - return api.sumTokens({ tokensAndOwners2: [tokens, stakingContracts]}) - + const tokens = await api.multiCall({ abi: 'address:stakeToken', calls: stakingContracts }) + return api.sumTokens({ tokensAndOwners2: [tokens, stakingContracts] }) } From 6ff45535db31f603048d745c68d0ff45e0964833 Mon Sep 17 00:00:00 2001 From: arcc0s <97156729+arcc0s@users.noreply.github.com> Date: Wed, 8 May 2024 12:03:10 +0200 Subject: [PATCH 1522/2004] update amphor tvl with new vault (#10127) --- projects/amphor/index.js | 50 ++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/projects/amphor/index.js b/projects/amphor/index.js index 50a87aa85d3..891a5b603bc 100644 --- a/projects/amphor/index.js +++ b/projects/amphor/index.js @@ -1,30 +1,36 @@ const { sumERC4626VaultsExport } = require('../helper/erc4626'); +const { sumTokensExport } = require('../helper/unwrapLPs'); +const sdk = require('@defillama/sdk'); const config = { - ethereum: { - lvTokens: { - 'ampr-LP-USD': '0x3b022EdECD65b63288704a6fa33A8B9185b5096b', - 'ampr-LP-ETH': '0x2791EB5807D69Fe10C02eED6B4DC12baC0701744', - 'ampr-LP-BTC': '0xC4A324fDF8a2495776B4d6cA46599B5a52f96489', - amprPTweETH: '0xf97ecda5F9ff31d83f635a6EA70D2D3B9C8f2e00', - amprPTrsETH: '0x0498b85FB4EC85EF5EFe82513aa9DaF767358A15', - amprPTezETH: '0x920F17e741029D904936c58a545DFFC72f82C079', - }, + ethereum: { + lvTokens: { + 'ampr-LP-USD': '0x3b022EdECD65b63288704a6fa33A8B9185b5096b', + 'ampr-LP-ETH': '0x2791EB5807D69Fe10C02eED6B4DC12baC0701744', + 'ampr-LP-BTC': '0xC4A324fDF8a2495776B4d6cA46599B5a52f96489', + amprPTweETH: '0xf97ecda5F9ff31d83f635a6EA70D2D3B9C8f2e00', + amprPTrsETH: '0x0498b85FB4EC85EF5EFe82513aa9DaF767358A15', + amprPTezETH: '0x920F17e741029D904936c58a545DFFC72f82C079', + amprETH: '0xcdc51f2b0e5f0906f2fd5f557de49d99c34df54e', }, + }, }; -Object.keys(config).forEach((chain) => { - const { lvTokens } = config[chain]; - module.exports[chain] = { - tvl: sumERC4626VaultsExport({ - vaults: Object.values(lvTokens), - tokenAbi: 'asset', - balanceAbi: 'totalAssets', - }) - }; -}); +const claimableSilo = '0x06eCFaAde8fcb8C1bC58CB05104604282f8a8144'; +const pendingSilo = '0x361a027e660844f336d5fa07E4cb38c40d5880d9'; +const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; + +const tvl = sdk.util.sumChainTvls([ + sumERC4626VaultsExport({ + vaults: Object.values(config.ethereum.lvTokens), + tokenAbi: 'asset', + balanceAbi: 'totalAssets', + }), + sumTokensExport({ owners: [claimableSilo, pendingSilo], tokens: [WETH] }), +]); +module.exports['ethereum'] = { tvl }; module.exports.hallmarks = [ - [1710115200, "Beta test closing"], - [1712361600, "LRT vault release"], -] + [1710115200, 'Beta test closing'], + [1712361600, 'LRT vault release'], +]; From 4b14bd6731d5c6ec8128c31d32caffc56d18f319 Mon Sep 17 00:00:00 2001 From: rivusdao <160065241+rivusdao@users.noreply.github.com> Date: Wed, 8 May 2024 06:09:12 -0400 Subject: [PATCH 1523/2004] Add TVL adapter for rivusdao (#10122) * Add TVL adapter for rivusdao * code refactor --------- Co-authored-by: crypto moon Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/rivusdao/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 projects/rivusdao/index.js diff --git a/projects/rivusdao/index.js b/projects/rivusdao/index.js new file mode 100644 index 00000000000..bf74c5a389c --- /dev/null +++ b/projects/rivusdao/index.js @@ -0,0 +1,17 @@ +const rTokens = [ + '0xdad3d3c5cac4f2c8eca2b483aba9e928a4b88783', // rsTAO + '0xae173ac44c0041cda87907f52a1e531934e49610' // rsCOMAI +] + +async function tvl(api) { + const tokens = await api.multiCall({ abi: 'address:wrappedToken', calls: rTokens}) + const supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: rTokens}) + api.add(tokens, supplies) +} + +module.exports = { + methodology: "TVL is calculated as the sum of the total supplies of rsTAO and rsCOMAI tokens.", + ethereum: { + tvl, + } +}; From af795b3fa9d3df6e8a8b10fd9997bc1b544436fa Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 8 May 2024 12:34:33 +0200 Subject: [PATCH 1524/2004] degate: blacklist own token --- projects/degate/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/degate/index.js b/projects/degate/index.js index f7190b1feb5..04e1654b685 100644 --- a/projects/degate/index.js +++ b/projects/degate/index.js @@ -13,7 +13,7 @@ async function tvl(api) { onlyArgs: true, fromBlock: START_BLOCK, }) - return api.sumTokens({ tokens: logs.map((log) => log.token), owner: DEGATE_DEPOSIT_CONTRACT }) + return api.sumTokens({ tokens: logs.map((log) => log.token), owner: DEGATE_DEPOSIT_CONTRACT, blacklistedTokens: ['0x53C8395465A84955c95159814461466053DedEDE'] }) } module.exports = { From 62b55a6183e20b6ad7b6c5848b4719aad7252c4c Mon Sep 17 00:00:00 2001 From: KevinMoll-ls <35275573+KevinMoll-ls@users.noreply.github.com> Date: Wed, 8 May 2024 11:53:12 -0400 Subject: [PATCH 1525/2004] add new Base treasury address for AERO (#10139) --- projects/treasury/reserve.js | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/projects/treasury/reserve.js b/projects/treasury/reserve.js index 3994de82a9e..b79f511f8a3 100644 --- a/projects/treasury/reserve.js +++ b/projects/treasury/reserve.js @@ -1,11 +1,36 @@ -const { nullAddress,treasuryExports } = require("../helper/treasury"); - +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 = treasuryExports({ +module.exports = mergeExports([treasuryExports({ ethereum: { tokens: [nullAddress], owners: [reserveTreasury], - ownTokens: ['0x320623b8e4ff03373931769a31fc52a4e78b5d70'], + 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 From 737175601e5b82afe9de52e47a234814e13184af Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 8 May 2024 16:54:14 +0100 Subject: [PATCH 1526/2004] add chilizswap adapter --- projects/chilizswap/index.js | 13 +++++++++++++ projects/helper/tokenMapping.js | 3 +++ 2 files changed, 16 insertions(+) create mode 100644 projects/chilizswap/index.js diff --git a/projects/chilizswap/index.js b/projects/chilizswap/index.js new file mode 100644 index 00000000000..2fa4d4c077f --- /dev/null +++ b/projects/chilizswap/index.js @@ -0,0 +1,13 @@ +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, + fetchBalances: true, + }), + }, +}; \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 60918100e69..6d60c9000a8 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -68,6 +68,9 @@ const fixBalancesTokens = { solana: { 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, }, + chz: { + '0x677F7e16C7Dd57be1D4C8aD1244883214953DC47': { coingeckoId: "wrapped-chiliz", decimals: 18 } + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From f515a8e10fceb098b2012ccde5d7198010bd7604 Mon Sep 17 00:00:00 2001 From: "NonKyc.io" <129050754+NonKYC@users.noreply.github.com> Date: Wed, 8 May 2024 12:08:21 -0400 Subject: [PATCH 1527/2004] add NonKYC (#10138) --- projects/nonkyc/index.js | 117 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 projects/nonkyc/index.js diff --git a/projects/nonkyc/index.js b/projects/nonkyc/index.js new file mode 100644 index 00000000000..b52ecaa9938 --- /dev/null +++ b/projects/nonkyc/index.js @@ -0,0 +1,117 @@ +const { cexExports } = require('../helper/cex') + +const config = { + alephium: { + owners: [ + '1DiovRDAHyYJTudaTEhccZaGMTSCFtJ3NxvNGFWkXnCSJ' + ] + }, + algorand: { + owners: [ + '26NEOQ2ZVVM6C53LVFC7MUNA32HF4S2DCZT5JZ5SDSKTN4OOMA7VMIRZVA' + ] + }, + arbitrum: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ] + }, + avax: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ] + }, + base: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ] + }, + bitcoin: { + owners: [ + 'bc1qy8xx8fcsmdlc447ls4wzw2tn3y6c6cy64wckhz', + ] + }, + bitcoincash: { + owners: [ + 'qzfew0ck3kxjdytrr2vnycdjnnsyju3pwsrgsupqj2', + ] + }, + bsc: { + owners: [ + '0x15d7619c8457e2F89ea28c720b1d7941C245d27e' + ] + }, + cardano: { + owners: [ + 'addr1qxd9jjmxd4gl2kf4jh99nnhqjsk5gn597ryq25045ttaschx70mgasdwgef63zgwl0fac38mdwaszwsg7uu0d2j5ckqsgsva7r' + ] + }, + dash: { + owners: [ + 'XauVSyTHwQiwt5HLiMKEYhCZr9z4dwzyn4' + ] + }, + doge: { + owners: [ + 'DFbKm2cjt1Y36sKPQc6RQc3MsLmwcccTJx' + ] + }, + energi: { + owners: [ + '0x7b4D11b7fABC161bc09E3Ee86C3d34Dff40F5a47' + ] + }, + ethereum: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ], + }, + ethereumclassic: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ], + }, + fantom: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ], + }, + flare: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ], + }, + fusion: { + owners: [ + '0x7b4D11b7fABC161bc09E3Ee86C3d34Dff40F5a47' + ], + }, + litecoin: { + owners: [ + 'ltc1qemulmneuu7lv3z9a00v243u23dt0vygcq6cwp7' + ], + }, + optimism: { + owners: [ + '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' + ], + }, + polygon: { + owners: [ + '0xA785844dF37E04d89D0Ae8F036e13630ad6495e8' + ] + }, + ripple: { + owners: [ + 'rHmku65GJrrsp6Sb7KRzCgM2tAA3JBACQZ' + ] + }, + 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.' \ No newline at end of file From cc58935a453252c0ae579718d4dbd81fdfa90458 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 8 May 2024 17:30:12 +0100 Subject: [PATCH 1528/2004] fix nonkyc adapter (#10140) --- projects/nonkyc/index.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/projects/nonkyc/index.js b/projects/nonkyc/index.js index b52ecaa9938..c4f32cedb57 100644 --- a/projects/nonkyc/index.js +++ b/projects/nonkyc/index.js @@ -1,11 +1,13 @@ const { cexExports } = require('../helper/cex') const config = { + /* alephium: { owners: [ '1DiovRDAHyYJTudaTEhccZaGMTSCFtJ3NxvNGFWkXnCSJ' ] }, +*/ //we dont support alephium on CEX dashboard algorand: { owners: [ '26NEOQ2ZVVM6C53LVFC7MUNA32HF4S2DCZT5JZ5SDSKTN4OOMA7VMIRZVA' @@ -31,11 +33,13 @@ const config = { 'bc1qy8xx8fcsmdlc447ls4wzw2tn3y6c6cy64wckhz', ] }, + /* bitcoincash: { owners: [ 'qzfew0ck3kxjdytrr2vnycdjnnsyju3pwsrgsupqj2', ] }, + */ // we dont support bitcoincash on CEX dashboard bsc: { owners: [ '0x15d7619c8457e2F89ea28c720b1d7941C245d27e' @@ -46,16 +50,18 @@ const config = { 'addr1qxd9jjmxd4gl2kf4jh99nnhqjsk5gn597ryq25045ttaschx70mgasdwgef63zgwl0fac38mdwaszwsg7uu0d2j5ckqsgsva7r' ] }, + /* dash: { owners: [ 'XauVSyTHwQiwt5HLiMKEYhCZr9z4dwzyn4' ] - }, + }, //// we dont support dash neither doge on CEX dashboard doge: { owners: [ 'DFbKm2cjt1Y36sKPQc6RQc3MsLmwcccTJx' ] }, + */ energi: { owners: [ '0x7b4D11b7fABC161bc09E3Ee86C3d34Dff40F5a47' @@ -66,11 +72,13 @@ const config = { '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' ], }, + /* ethereumclassic: { owners: [ '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' ], - }, + }, //we dont support ethclassic on CEX dashboard + */ fantom: { owners: [ '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' @@ -81,11 +89,13 @@ const config = { '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' ], }, + /* fusion: { owners: [ '0x7b4D11b7fABC161bc09E3Ee86C3d34Dff40F5a47' ], - }, + }, // no support on CEX + */ litecoin: { owners: [ 'ltc1qemulmneuu7lv3z9a00v243u23dt0vygcq6cwp7' From 6fae826f682b7aa466eaceabcaee3debfcb1ebf6 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 8 May 2024 18:34:57 +0100 Subject: [PATCH 1529/2004] remove btc nonkyc (#10141) --- projects/nonkyc/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/nonkyc/index.js b/projects/nonkyc/index.js index c4f32cedb57..3715eed4806 100644 --- a/projects/nonkyc/index.js +++ b/projects/nonkyc/index.js @@ -28,11 +28,12 @@ const config = { '0x5D738fBf1D8940BBE72Af847d88c517064DE76e7' ] }, + /* bitcoin: { owners: [ 'bc1qy8xx8fcsmdlc447ls4wzw2tn3y6c6cy64wckhz', ] - }, + }, // remove it for now /* bitcoincash: { owners: [ From a7ceddad2ad7b761e097bc03cad97326a9f973a9 Mon Sep 17 00:00:00 2001 From: 4TT1L4 <2914096+4TT1L4@users.noreply.github.com> Date: Thu, 9 May 2024 16:04:41 +0200 Subject: [PATCH 1530/2004] Update DeFi Llama Adapter #19 (#10151) Updated Genius Yield adapter: added new address for v1.1 --- projects/genius-yield/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/genius-yield/index.js b/projects/genius-yield/index.js index d2a1aaace8c..b0b4cf95a4f 100644 --- a/projects/genius-yield/index.js +++ b/projects/genius-yield/index.js @@ -7,12 +7,16 @@ const emp = '6c8642400e8437f737eb86df0fc8a8437c760f48592b1ba8f5767e81456d706f776 const gensx = 'fbae99b8679369079a7f6f0da14a2cf1c2d6bfd3afdf3a96a64ab67a0014df1047454e5358' const staking = 'addr1w8r99sv75y9tqfdzkzyqdqhedgnef47w4x7y0qnyts8pznq87e4wh' -const orders = 'addr_vkh1ahllvc7n0lzljafmcs3zurdzhlsg4fydkzph6tpjnt0tx0asedu' + +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({ owner: orders }) + tvl: (sumTokensExport({ owners : orders })) } }; From e5c83cd91ef08ae72a7ed71352d8af00ffc7f383 Mon Sep 17 00:00:00 2001 From: "L.Y" <141099829+lyfsn@users.noreply.github.com> Date: Thu, 9 May 2024 22:24:02 +0800 Subject: [PATCH 1531/2004] Add Endurance chain and Tesseract World DEX (#10148) * add Endurance chain Signed-off-by: lyfsn * code refactor --------- Signed-off-by: lyfsn Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 4 ++++ projects/tesseractworld/index.js | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 projects/tesseractworld/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index f15afddabf4..4c25b2714b8 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -1,5 +1,6 @@ [ "acala", + "ace", "airdao", "alephium", "algorand", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6d60c9000a8..ba48d281906 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -35,6 +35,10 @@ const ibcMappings = { } const fixBalancesTokens = { + ace: { + [nullAddress]: { coingeckoId: "endurance", decimals: 18 }, + '0x85119527cf38f6ccf7b1b8f8fad05145358aaa81': { coingeckoId: "endurance", decimals: 18 }, + }, // Sample Code ozone: { // '0x83048f0bf34feed8ced419455a4320a735a92e9d': { coingeckoId: "ozonechain", decimals: 18 }, // was mapped to wrong chain diff --git a/projects/tesseractworld/index.js b/projects/tesseractworld/index.js new file mode 100644 index 00000000000..879d94e5050 --- /dev/null +++ b/projects/tesseractworld/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + ace: { factory: '0x699cf93f5dec3a3e314f0a31c1f885fb11b983c3', fromBlock: 197972, }, +}) \ No newline at end of file From 693d16edc11bbfd65380d7ebd932428567118813 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Thu, 9 May 2024 23:25:35 +0900 Subject: [PATCH 1532/2004] add bob-stable market (#10147) --- projects/shoebillFinance-v2/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index bd4d3d92eb7..3625ca5c7d2 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -64,5 +64,10 @@ module.exports = mergeExports([ comptroller: "0xB7ed6c062caAaCb1A13f317E0A751289280FC306", }), }, + { + bob: compoundExports2({ + comptroller: "0x1e514767F5cFe1ddE599dd39a79666E3BeEAaf7d", + }), + }, ]); From ff972c2fd2bd82d01b273b20d017436f7e0c77a7 Mon Sep 17 00:00:00 2001 From: jan-magpie <155635960+jan-magpie@users.noreply.github.com> Date: Thu, 9 May 2024 20:18:09 +0530 Subject: [PATCH 1533/2004] cakepie tvl-added v2 pools and stable swap pool of pancakeswap (#10150) * Update index.js adding mpendle sv * added v2/ss pools * lint fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cakepie/index.js | 60 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/projects/cakepie/index.js b/projects/cakepie/index.js index 8ae73718456..566838e4eed 100644 --- a/projects/cakepie/index.js +++ b/projects/cakepie/index.js @@ -2,16 +2,68 @@ 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') +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 '0x2170ed0880ac9a755fd29b2688956bd959f933f8' // 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] }) + 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) } From 64c54ea278c5f97c8b2bd0073f47f2133e0abdc0 Mon Sep 17 00:00:00 2001 From: Stone <125890624+Stonepapa@users.noreply.github.com> Date: Thu, 9 May 2024 22:48:22 +0800 Subject: [PATCH 1534/2004] Update index.js (#10149) Add btc tvl --- projects/bsquared/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/bsquared/index.js b/projects/bsquared/index.js index 10a9a86c82c..9ef51a59254 100644 --- a/projects/bsquared/index.js +++ b/projects/bsquared/index.js @@ -6,6 +6,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const BTCOwners = [ "bc1q4fsk5pgnmnu7ngp79xclsw2t0yk46sjqw22ffz", "bc1qva5m5e7da2zm590z03tdnj42u9q2uye3hgrehwrzgg8j4kxq9seq9rvw0m", + "bc1qjv2lfrv672rqagycs5zdsggmury0cz2vufek46jj86ddqynyp2qsxm3qfs", ]; const BRC20Owners = [ "bc1q97ctqygjgj0ljxgge4q735ujxvlad8smass7f0axc6x3ggffr8xqwn69hc", From 51e30947b5fe0406ffd453245da1a0b7e333f5a6 Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Thu, 9 May 2024 22:48:49 +0800 Subject: [PATCH 1535/2004] add new farm (#10146) --- projects/muito-finance/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index 4f3555644f6..5ff620dca0e 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -21,6 +21,7 @@ async function getTvl(api, farmAddress) { async function tvl(api) { const MUTO_V3_FARM = "0xD7372abc6693702fF09536ec3824780eB264b2eF"; const MUTO_V3_FARM2 = "0xCd356c40A86c59955e20FcCF7Bb3b9Be15AF238D"; + const MUTO_V3_FARM3 = "0x1d75a3228576E3Cfe6Fc3d0aAE51eAbEE4E8D12e"; await sumTokens2({ api, uniV3nftsAndOwners: [ @@ -33,6 +34,12 @@ async function tvl(api) { ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM2], ], }); + await sumTokens2({ + api, + uniV3nftsAndOwners: [ + ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM3], + ], + }); await getTvl(api, MUTO_FARM); await getTvl(api, MUTO_MULTI_FARM2); await getTvl(api, MUTO_MULTI_FARM3); From 6ca83b275b063ac661d42b8881981f3f7029a7b5 Mon Sep 17 00:00:00 2001 From: Sergey Khrul Date: Thu, 9 May 2024 17:50:25 +0300 Subject: [PATCH 1536/2004] BLUESHIFT DEX (#10135) * BLUESHIFT DEX - Added BOB chain contract addresses. Delete milkomeda_a1 chain support. * Return milkomeda_a1 contract addresses in order to retain deprecated chains --------- Co-authored-by: khsa --- projects/blueshift/config.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/blueshift/config.json b/projects/blueshift/config.json index 07d9d2bbf8b..4edf5efe704 100644 --- a/projects/blueshift/config.json +++ b/projects/blueshift/config.json @@ -3,12 +3,14 @@ "milkomeda": "0xb42F2f37Dedf435F4916665d6B4c2cC643A17f14", "milkomeda_a1": "0xa98C276d262Cc3Bf660189E2eBE74c4B8C18e50a", "kava": "0x49399653f651A25924b3D8718276b5b4372577b1", - "polygon": "0x2080A319A4B11D097050722b6b65d09F754EdC83" + "polygon": "0x2080A319A4B11D097050722b6b65d09F754EdC83", + "bob": "0xFF485b08a64046B9A23342D6098f26e7C237c19A" }, "manualPool": { "milkomeda": "0xA4f0e3C80C77b347250B9D3999478E305FF814A4", "milkomeda_a1": "0x589E3Edd93A22FB316cff53eABA6BB958ff601cd", - "kava": "0x7A60918Bd5c83Ef7e2ABA87D13e3FD704f6A77E1" + "kava": "0x7A60918Bd5c83Ef7e2ABA87D13e3FD704f6A77E1", + "bob": "0x784156F8729c64BAd3CC79fc20d1e8Cde8D42E96" }, "blueschain": { "milkomeda": { From 4dde1c03c0394736a2215789aa8f395bae4dcd21 Mon Sep 17 00:00:00 2001 From: firebomb1 <88804546+firebomb1@users.noreply.github.com> Date: Thu, 9 May 2024 16:51:09 +0200 Subject: [PATCH 1537/2004] chore: add shapeshift fox farm v9 (#10144) --- projects/shapeshift/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/shapeshift/index.js b/projects/shapeshift/index.js index a4ef4bb9512..880af405448 100644 --- a/projects/shapeshift/index.js +++ b/projects/shapeshift/index.js @@ -11,6 +11,7 @@ const stakingUNIv2Contracts = [ "0xEbB1761Ad43034Fd7FaA64d84e5BbD8cB5c40b68", // v6 "0x5939783dbf3e9f453a69bc9ddc1e492efac1fbcb", // v7 "0x662da6c777a258382f08b979d9489c3fbbbd8ac3", // v8 + "0x721720784b76265aa3e34c1c7ba02a6027bcd3e5", // v9 ]; const stakingFoxy = "0xee77aa3Fd23BbeBaf94386dD44b548e9a785ea4b"; From a226f34b3d8d4da990d7891bdd15406ede06436e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 9 May 2024 16:56:50 +0200 Subject: [PATCH 1538/2004] update pooltogether v5 --- projects/pooltogether/v5.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/projects/pooltogether/v5.js b/projects/pooltogether/v5.js index 70ae8b58a1c..888a11c4d5b 100644 --- a/projects/pooltogether/v5.js +++ b/projects/pooltogether/v5.js @@ -1,17 +1,22 @@ const abi = require('./abi.json') +const { sumTokens2 } = require('../helper/unwrapLPs') const V5_VAULT_FACTORIES = { - optimism: '0xF65FA202907D6046D1eF33C521889B54BdE08081' + optimism: ['0xF65FA202907D6046D1eF33C521889B54BdE08081', '0x6B17EE3a95BcCd605340454c5919e693Ef8EfF0E', '0xF0F151494658baE060034c8f4f199F74910ea806', '0x0C379e9b71ba7079084aDa0D1c1Aeb85d24dFD39'] } async function tvl(api) { - const factory = V5_VAULT_FACTORIES[api.chain] - if (!factory) return {} - const vaults = await api.fetchList({ lengthAbi: abi.totalVaults, itemAbi: abi.allVaults, target: factory }) + 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) + } 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 api.getBalances() + return sumTokens2({ api, resolveLP: true, }) } module.exports = { From 5ddda2a6f77e10d780af49eef59289d4ab5a101e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 9 May 2024 21:03:06 +0530 Subject: [PATCH 1539/2004] Update index.js with Limitless TVL (#10133) * Limitless TVL * Update index.js * Update index.js * turn adapter on chain --------- Co-authored-by: jihyun song --- projects/limitless/index.js | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 projects/limitless/index.js diff --git a/projects/limitless/index.js b/projects/limitless/index.js new file mode 100644 index 00000000000..ac9ad3ebbba --- /dev/null +++ b/projects/limitless/index.js @@ -0,0 +1,53 @@ +const { nullAddress, addUniV3LikePosition } = require("../helper/unwrapLPs") + +const config = { + base: { postionManager: '0x3eF54A2Cf152f6E06C0928722412883D448F92eC', factory: '0x33128a8fC17869897dcE68Ed026d694621f6FDfD', limWETH: '0x845d629D2485555514B93F05Bdbe344cC2e4b0ce', }, + arbitrum: { postionManager: '0x6D73fc6F4C299E369377C0e60CebFef2409f86A0', factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984', limWETH: '0xdEe4326E0a8B5eF94E50a457F7c70d4821be9f4C', }, + linea: { postionManager: '0x726e3116AE07f43A7E1921c635352B75e2DEa4Ad', factory: '0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9', limWETH: '0x5188b47Cb80D1A3E22Cc6221792F199f1Fb0DD3c', }, +} + +Object.keys(config).forEach(chain => { + const { postionManager, factory, limWETH } = 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 getKey = (token0, token1, fee) => `${token0}-${token1}-${fee}` + + const positionData = await api.fetchList({ lengthAbi: 'totalSupply', itemAbi: abi.positions, target: postionManager }) + const poolData = {} + // console.table(positionData.map(({ token0, token1, tokensOwed0, tokensOwed1, fee, liquidity }) => ({ token0, token1, tokensOwed0, tokensOwed1, fee, liquidity }))) + 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] } } + 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) return; // pool not found + addUniV3LikePosition({ api, token0, token1, tick, liquidity, tickUpper, tickLower, }) + }) + } + } +}) + +const abi = { + "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 From d2ce6e50fadc85ea8c6836d4725e7864961b30df Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 9 May 2024 16:48:30 +0100 Subject: [PATCH 1540/2004] add golem staking --- projects/treasury/golem.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js index 284adb71937..6ccbb1289e2 100644 --- a/projects/treasury/golem.js +++ b/projects/treasury/golem.js @@ -1,5 +1,5 @@ -const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); +const { mergeExports } = require('../helper/utils'); // Treasury const treasury = "0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9"; @@ -12,7 +12,19 @@ module.exports = treasuryExports({ // Ethereum Assets nullAddress, ], - owners: [treasury, '0x70a0a7be87deb51e1fab16d4f2bf00be1510e476'], + owners: [treasury, '0x70a0a7be87deb51e1fab16d4f2bf00be1510e476', '0x3d4530082c3eb60f58af03f79b1ed3f40e591cd1'], ownTokens: [GLM] }, -}) \ No newline at end of file +}) + +async function tvl(api) { + if(api.timestamp > 1687828149){ + // Staked 100k ETH in validators + api.add("0x0000000000000000000000000000000000000000", 100e3*1e18) + } + return api.getBalances() +} + +module.exports = mergeExports([module.exports, { + ethereum: { tvl } +}]) \ No newline at end of file From fd6e80d926a66cbaf2eb254759c47b80ed7f94b3 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 9 May 2024 16:52:38 +0100 Subject: [PATCH 1541/2004] add hallmark --- projects/genesis-lrt/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/genesis-lrt/index.js b/projects/genesis-lrt/index.js index 5afb61c28d8..0bfb2483359 100644 --- a/projects/genesis-lrt/index.js +++ b/projects/genesis-lrt/index.js @@ -6,6 +6,9 @@ async function tvl(api) { } module.exports = { + hallmarks: [ + [1714953600,"Genesis Merges with InceptionLRT"] + ], doublecounted: true, ethereum: { tvl, }, } \ No newline at end of file From a7588d3179dd4a5328054204795718291f736102 Mon Sep 17 00:00:00 2001 From: hoomp3 Date: Thu, 9 May 2024 14:58:08 -0400 Subject: [PATCH 1542/2004] feat: add new managers (#10152) --- projects/helper/coreAssets.json | 3 ++- projects/juice-finance/index.js | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 2975bccf25c..39937d36cab 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1648,7 +1648,8 @@ "fwWETH": "0x66714db8f3397c767d0a602458b5b4e3c0fe7dd1", "fwUSDB": "0x866f2c06b83df2ed7ca9c2d044940e7cd55a06d6", "WETH": "0x4300000000000000000000000000000000000004", - "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5" + "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "weETH": "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A" }, "chz": { "WCHZ": "0x721ef6871f1c4efe730dce047d40d1743b886946" diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index c6e89053277..f1d0aba3298 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -15,6 +15,10 @@ 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, @@ -49,6 +53,8 @@ async function tvl(api) { resolveLP: true, tokensAndOwners: [ [EZETH, EZETH_COLLATERAL_MANAGER], + [ADDRESSES.blast.weETH, WEETH_COLLATERAL_MANAGER], + [ADDRESSES.blast.USDB, USDB_COLLATERAL_MANAGER], ...wethCollateralManagers, ], }); From 3b999231851d6fbd01cc724c5fa28980edb42831 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 9 May 2024 23:37:05 +0100 Subject: [PATCH 1543/2004] add flipster adapter cex (#10156) --- projects/flipster/index.js | 62 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 projects/flipster/index.js diff --git a/projects/flipster/index.js b/projects/flipster/index.js new file mode 100644 index 00000000000..51d21361bba --- /dev/null +++ b/projects/flipster/index.js @@ -0,0 +1,62 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + '0xd49417f37cED33aBA35DDAbf208D5bFcD87b4eBe' + ], + }, + tron: { + owners: [ + 'TA6SbszfFYC7NYt48viCM9LMD5F5E1Gbi8', + ] + }, + bitcoin: { + owners: [ + '31iAUikiV7yKEYBzbA1iHPcanHNsLBFe8C' + ] + }, + arbitrum: { + owners: [ + '0xa9b686EE77EfC18e7a08c48FA823CAA0cfDd754E' + ] + }, + optimism: { + owners: [ + '0x27605eb3BAae062459e1291A65137Da109B1440D' + ] + }, + ripple: { + owners: [ + 'rDjLFq7ZxUx9iYQ1jV5MYbLHnBsSkyfqj3' + ] + }, + fantom: { + owners: [ + '0xeeebcdf3ddd52d4Ab34EFA127a0d6b74385062Ac' + ] + }, + solana: { + owners: [ + 'FgQygQyFJ5SB8idVQcee6v1uGoQbJMyVhW8BFPTAEpat' + ] + }, + avax: { + owners: [ + '0x04723FcDAD0d2A201EbBeD043714fD52651e0C5e' + ] + }, + bsc: { + owners: [ + '0xCD47f02B261426Ab734Be9271156327327407E43' + ] + }, + polygon: { + owners: [ + '0xfA705a98FA89134F460Bf79457D4fbd3d8E118d9' + ] + }, +} + +module.exports = cexExports(config) +module.exports.methodology = 'All reserves information can be found here https://flipster.io/support/proof-of-reserves.' \ No newline at end of file From 2adc57d67283d0524bab82baaa208303ab7d3bdf Mon Sep 17 00:00:00 2001 From: dananderson3999 <165169892+dananderson3999@users.noreply.github.com> Date: Fri, 10 May 2024 08:34:10 +0100 Subject: [PATCH 1544/2004] Add MODE L2 (#10153) --- projects/peapods-finance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/peapods-finance/index.js b/projects/peapods-finance/index.js index 8dac8176c19..cc6055b8aa9 100644 --- a/projects/peapods-finance/index.js +++ b/projects/peapods-finance/index.js @@ -3,6 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { ethereum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, arbitrum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, + mode: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, } const indexManagerABI = From 8ad33a0391807384423c069125704db7738c6fa0 Mon Sep 17 00:00:00 2001 From: bluewhale-saito <126760033+bluewhale-saito@users.noreply.github.com> Date: Fri, 10 May 2024 16:47:48 +0900 Subject: [PATCH 1545/2004] Add v3 dex, Delete existing lp pool (#10159) * init Klaytn Bluewhale * Refactor Bluewhale contract and update token addresses * Add bluewhale v3 tvl --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bluewhale/index.js | 39 +++++++------------------------------ 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/projects/bluewhale/index.js b/projects/bluewhale/index.js index bba63346fea..b94fdf34e83 100644 --- a/projects/bluewhale/index.js +++ b/projects/bluewhale/index.js @@ -1,8 +1,10 @@ const { staking } = require('../helper/staking') const { getUniTVL } = require('../helper/unknownTokens'); -const { sumTokensExport } = require('../helper/sumTokens'); +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'; @@ -15,41 +17,14 @@ const tokens = { "sADOL": "0x4f3ac44bb2345d3960e34dd5dfe275249e43ae4a" } -const LPs = { - ksp: { - sbwpm_ousdt: "0xb6eaa073881c9cac7141ef20b25a588914a367b2", - clam_ousdc: "0x87882c1a76fad9ae5bf5ba1bedd7d82be73430c8", - // clam_oxrp_v3: "0x7c9a31020b32a528367602468688f16d7b469337", - // clam_klay_v3: "0xbdb8ddf58ff70bfa1b1a2e2ab9751bc5fcdfefab", - // clam_ksp_v3: "0xb36df541218dd2ee26f54c2775c528c27e484ef6", - // clam_owbtc_v3: "0xf0e21e240a291258db0417c6ac1a3fe156073a96", - // clam_oeth_v3: "0xcae4254611097112b9cbe62e0d047a2957843c09", - // clam_pearl_v3: "0xfc37f916418d50adf4177d734463f822f73ebd99", - // clam_ousdt_v3: "0x633fd7084e9b2c098b88e90a2fcb582af5d9b0e1", - // pearl_oxrp_v3: "0x006965e875b108cf53cba9aa3759b700af464329", - // pearl_owbtc_v3: "0xad55cf6024a21c650569d3b28a8679e613e43348", - // pearl_oeth_v3: "0x388a8973b477924cc15f46d17967e10334fbbaca", - }, - pala: { - sbwpm_ousdt: "0xd90f637a7a1362028f8ad77eba9655c7b92bb919", - clam_ousdc: "0xbb6c0a0dd21bb3b880228c7736a7301f48b8200e", - clam_sbwpm: "0x5c8aadcbf79a861bf8f7ec69eb2bf6fe15b75e2e", - }, - aqua: { - sadol_clam: "0x144a347dabd17ffdb93f3a09a64a96743b273d67", - clam_ousdt: "0x8c9e758d5f448f2669f45bfec7749bc372996c2e", - }, - devteam: "0x8d4d436b6665e41a9caf4057c3f924d945a2aa8e", -} - -const pool2Tokens = Object.values(LPs.ksp).concat(Object.values(LPs.pala)) - module.exports = { misrepresentedTokens: true, methodology: `counts the number of tokens in the Bluewhale contract. `, klaytn: { - tvl: getUniTVL({ factory: AQUA_FACTORY, useDefaultCoreAssets: true }), + 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]), - pool2: sumTokensExport({ owner: CLAM_MASTERCHEF, tokens: pool2Tokens, resolveLP: true, }), }, }; \ No newline at end of file From a5abfc7dbf5aa1866771a48b04b3559d77e589eb Mon Sep 17 00:00:00 2001 From: Calvin Date: Fri, 10 May 2024 02:12:21 -0600 Subject: [PATCH 1546/2004] Add SundaeSwap V3 Contract TVL (#10154) * chore: v3 tvl * chore: add v3 contract tvl --- projects/sundaeswap-v3/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/sundaeswap-v3/index.js diff --git a/projects/sundaeswap-v3/index.js b/projects/sundaeswap-v3/index.js new file mode 100644 index 00000000000..ab3b6a2c625 --- /dev/null +++ b/projects/sundaeswap-v3/index.js @@ -0,0 +1,16 @@ +const { getAdaInAddress } = require('../helper/chain/cardano') + +async function tvl(){ + const ammLocked = await getAdaInAddress("addr1x8srqftqemf0mjlukfszd97ljuxdp44r372txfcr75wrz26rnxqnmtv3hdu2t6chcfhl2zzjh36a87nmd6dwsu3jenqsslnz7e") + // const orderBookLocked = await getAdaInAddress("addr1w8ax5k9mutg07p2ngscu3chsauktmstq92z9de938j8nqacprc9mw") + return { + "cardano": ammLocked * 2 + } +} + +module.exports={ + timetravel: false, + cardano:{ + tvl + } +} From ca8d8f713ee0a93f6f87ee8baf7b4c61a27dfe0a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 10 May 2024 10:19:11 +0200 Subject: [PATCH 1547/2004] update jojo --- projects/jojo/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/jojo/index.js b/projects/jojo/index.js index b2c8287dc35..c05697c1ed7 100644 --- a/projects/jojo/index.js +++ b/projects/jojo/index.js @@ -1,5 +1,8 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') +const cbethBase = "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22"; +const degenBase = "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"; +const mUsdcBase = "0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22"; module.exports = { era: { tvl: sumTokensExport({ tokens: [ADDRESSES.era.USDC], owners: ['0x47eAD228547db8397398C1D3aAfd0847CBEbddeC'], }) }, @@ -16,7 +19,7 @@ module.exports = { base: { tvl: sumTokensExport( { - tokens: [ADDRESSES.base.USDC, ADDRESSES.base.WETH], + tokens: [ADDRESSES.base.USDC, ADDRESSES.base.WETH, cbethBase, degenBase, mUsdcBase, ], owners: ['0x2f7c3cf9d9280b165981311b822becc4e05fe635', '0xf8192489A8015cA1690a556D42F7328Ea1Bb53D0'] } ) From 27c6dad61c98a5b730a809ba361a7830c5ea22a0 Mon Sep 17 00:00:00 2001 From: Tokan Exchange <145607429+TokanExchange@users.noreply.github.com> Date: Fri, 10 May 2024 08:48:18 +0000 Subject: [PATCH 1548/2004] add tokan exchange (#10155) --- projects/tokan-exchange/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/tokan-exchange/index.js diff --git a/projects/tokan-exchange/index.js b/projects/tokan-exchange/index.js new file mode 100644 index 00000000000..9a6b78e4dfc --- /dev/null +++ b/projects/tokan-exchange/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + scroll: { + tvl: getUniTVL({ + factory: "0x92aF10c685D2CF4CD845388C5f45aC5dc97C5024", + useDefaultCoreAssets: true, + hasStablePools: true + }), + } +}; From 436b254ac72353d7978bb56e735664368b7f064f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 10 May 2024 12:01:31 +0200 Subject: [PATCH 1549/2004] minor fix --- projects/becoswap/index.js | 1 + projects/chaintools/index.js | 1 + projects/helper/coreAssets.json | 4 +--- projects/treasury/chaintools.js | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/becoswap/index.js b/projects/becoswap/index.js index 45c246b1991..0ec42d7c1da 100644 --- a/projects/becoswap/index.js +++ b/projects/becoswap/index.js @@ -12,6 +12,7 @@ module.exports = { tvl: getUniTVL({ useDefaultCoreAssets: true, factory: '0x58b54BCDF2aF8a70dD6433EB39b308148261bB49', + blacklistedTokens: ['0x551a5dcac57c66aa010940c2dcff5da9c53aa53b'] }) }, }; diff --git a/projects/chaintools/index.js b/projects/chaintools/index.js index 79b1d943e7d..91ede6f7d5f 100644 --- a/projects/chaintools/index.js +++ b/projects/chaintools/index.js @@ -10,6 +10,7 @@ const COMPOUNDING_KEEPER_ADDRESS = "0x5648C24Ea7cFE703836924bF2080ceFa44A12cA8"; 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, ], }), diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 39937d36cab..b61311b80da 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1143,9 +1143,7 @@ "XSP": "0x36726235dadbdb4658d33e62a249dca7c4b2bc68" }, "kardia": { - "WKAI": "0xaf984e23eaa3e7967f3c5e007fbe397d8566d23d", - "USDT": "0x551a5dcac57c66aa010940c2dcff5da9c53aa53b", - "KUSD_T": "0x92364ec610efa050d296f1eeb131f2139fb8810e" + "WKAI": "0xaf984e23eaa3e7967f3c5e007fbe397d8566d23d" }, "empire": { "USDC": "0xc61a71c75ed4742dcae74b8cac27a37d46fc6751" diff --git a/projects/treasury/chaintools.js b/projects/treasury/chaintools.js index 808a225cc02..f02a914fd93 100644 --- a/projects/treasury/chaintools.js +++ b/projects/treasury/chaintools.js @@ -4,6 +4,7 @@ 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, ], }), From 52251c40a207c1fe34af5bcb8b7f8ec25aabe98e Mon Sep 17 00:00:00 2001 From: imfeng Date: Fri, 10 May 2024 21:10:54 +0800 Subject: [PATCH 1550/2004] Update Satoshi-Protocol (BEVM) wstBTC tvl (#10166) * update Satoshi-Protocol wstBTC tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/satoshi-protocol/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/satoshi-protocol/index.js b/projects/satoshi-protocol/index.js index 5dc4709f410..4ac9b74b2c4 100644 --- a/projects/satoshi-protocol/index.js +++ b/projects/satoshi-protocol/index.js @@ -1,8 +1,11 @@ -const TROVE_MANAGER_BEACON_PROXY_ADDRESS = '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA'; +const TROVE_MANAGER_LIST = [ + '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA', // WBTC Collateral + '0xa794a7Fd668FE378E095849caafA8C8dC7E84780', // wstBTC Collateral +] async function tvl(api) { - const token = await api.call({ abi: 'address:collateralToken', target: TROVE_MANAGER_BEACON_PROXY_ADDRESS}) - return api.sumTokens({ tokens: [token], owner: [TROVE_MANAGER_BEACON_PROXY_ADDRESS] }) + const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: TROVE_MANAGER_LIST}) + return api.sumTokens({ tokensAndOwners2: [tokens, TROVE_MANAGER_LIST]}) } module.exports = { From 6a49f149a101fc10f93962704ad81b6af9a454af Mon Sep 17 00:00:00 2001 From: Easy Rider Date: Fri, 10 May 2024 15:20:24 +0200 Subject: [PATCH 1551/2004] add blast, scroll and linea chains for charm v2 (#10163) --- projects/charm-fi-vaults-v2/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/charm-fi-vaults-v2/index.js b/projects/charm-fi-vaults-v2/index.js index 9eb56af75a7..35c80c9759b 100644 --- a/projects/charm-fi-vaults-v2/index.js +++ b/projects/charm-fi-vaults-v2/index.js @@ -5,6 +5,9 @@ const config = { polygon: {}, base: {}, boba: { factory: '0xFaf1Af4dC761dBA157227a3c06CeC9A7486D8a07' }, + blast: { factory: '0x8C554F200B1EEECdE99370Fe6284B15d23E50E07' }, + scroll: { factory: '0xc2cC57a62982c4C92C69B856B5d03c6DECa32E77' }, + linea: { factory: '0x8C554F200B1EEECdE99370Fe6284B15d23E50E07' }, } module.exports = { From 06fdd9a641ac970de0c2a584bfc29ab7099be76e Mon Sep 17 00:00:00 2001 From: HoU | FlowX <138456737+devflowx@users.noreply.github.com> Date: Fri, 10 May 2024 20:44:39 +0700 Subject: [PATCH 1552/2004] Feat: update flowx finance, clmm update model (#10160) --- projects/flowx-finance-clmm/index.js | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/flowx-finance-clmm/index.js diff --git a/projects/flowx-finance-clmm/index.js b/projects/flowx-finance-clmm/index.js new file mode 100644 index 00000000000..277a91f45f6 --- /dev/null +++ b/projects/flowx-finance-clmm/index.js @@ -0,0 +1,32 @@ +const sui = require("../helper/chain/sui"); + +async function suiTVL() { + const { api } = arguments[3]; + + const poolInfo = ( + await sui.getDynamicFieldObjects({ + parent: + "0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc", + }) + ).map((i) => i.fields); + poolInfo.forEach(({ reserve_x, reserve_y, coin_type_x, coin_type_y }) => { + api.add( + coin_type_x.fields.name.startsWith("0x") + ? coin_type_x.fields.name + : "0x" + coin_type_x.fields.name, + reserve_x + ); + api.add( + coin_type_y.fields.name.startsWith("0x") + ? coin_type_y.fields.name + : "0x" + coin_type_y.fields.name, + reserve_y + ); + }); +} + +module.exports = { + sui: { + tvl: suiTVL, + }, +}; From 1470fc3394248ec8bc3cf0c669e7f204e6ecd6dc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 10 May 2024 18:53:07 +0200 Subject: [PATCH 1553/2004] update a51 fi --- projects/a51-finance-v3/index.js | 163 +++++++++---------------------- 1 file changed, 46 insertions(+), 117 deletions(-) diff --git a/projects/a51-finance-v3/index.js b/projects/a51-finance-v3/index.js index a79f04a4ab4..6d2cfa56337 100644 --- a/projects/a51-finance-v3/index.js +++ b/projects/a51-finance-v3/index.js @@ -9,133 +9,62 @@ 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 ADDRESSES = { - arbitrum: { - CLTBASE: "0x3e0aa2e17fe3e5e319f388c794fdbc3c64ef9da6", - HELPER: "0x9d80597d9403bdb35b3d7d9f400377e790b01053", - }, - blast: { - CLTBASE: "0x5a8e82c4b3Dbd7579fD198A3276cF75CEA2Df63D", - HELPER: "0xbA13be69628d12963b28de8E7Ba04C3C4c1eaceA", - }, - base: { - CLTBASE: "0x3e0AA2e17FE3E5e319f388C794FdBC3c64Ef9da6", - HELPER: "0xA1d8180F4482359CEb7Eb7437FCf4a2616830F81", - }, - optimism: { - CLTBASE: "0x525c80e91efe9222de3eae86af69a480fbced416", - HELPER: "0x965356eb2c208ce4130e267342ca720042cce7b2", - }, - polygon: { - CLTBASE: "0xD4798F142FDb87738eF4eBE82Bd56Eccde19A88C", - HELPER: "0x9c225a02426e3229C073A6132E083561e95000b5", - }, - bsc: { - CLTBASE: "0x6F2b186e9392042B1edE2D1D1706a3DC4a4725d8", - HELPER: "0x9c225a02426e3229C073A6132E083561e95000b5", - }, - scroll: { - CLTBASE: "0xA8Dc31c8C9F93dB2e42A5472F580689794639576", - HELPER: "0x965356eb2C208Ce4130E267342cA720042Cce7b2", - }, - manta: { - CLTBASE: "0x69317029384c3305fC04670c68a2b434e2D8C44C", - HELPER: "0xa1d8180f4482359ceb7eb7437fcf4a2616830f81", - }, -} - const DEFAULT_STRATEGY_CREATION_TOPIC = "StrategyCreated(bytes32)" -const START_BLOCKS = { - arbitrum: { - CLTBASE: 190945156, - }, - blast: { - CLTBASE: 1709947, - }, - base: { - CLTBASE: 12765695, - }, - optimism: { - CLTBASE: 118360616, - }, - polygon: { - CLTBASE: 55506149, - }, - bsc: { - CLTBASE: 37623104, - }, - scroll: { - CLTBASE: 4846051, - }, - manta: { - CLTBASE: 1834975, - }, +const config = { + arbitrum: [{ target: "0x3e0aa2e17fe3e5e319f388c794fdbc3c64ef9da6", helper: "0x9d80597d9403bdb35b3d7d9f400377e790b01053", startBlock: 190945156 },], + blast: [{ target: "0x5a8e82c4b3Dbd7579fD198A3276cF75CEA2Df63D", helper: "0xbA13be69628d12963b28de8E7Ba04C3C4c1eaceA", startBlock: 1709947 },], + base: [ + { target: "0x3e0AA2e17FE3E5e319f388C794FdBC3c64Ef9da6", helper: "0xA1d8180F4482359CEb7Eb7437FCf4a2616830F81", startBlock: 12765695 }, + { target: "0xDFb179526ae303Eea49AC99DD360159C39105828", helper: "0x6e7e838E20ED6657Aaf1166f9B7a845565956F51", startBlock: 13890566 }, + ], + optimism: [{ target: "0x525c80e91efe9222de3eae86af69a480fbced416", helper: "0x965356eb2c208ce4130e267342ca720042cce7b2", startBlock: 118360616 },], + polygon: [{ target: "0xD4798F142FDb87738eF4eBE82Bd56Eccde19A88C", helper: "0x9c225a02426e3229C073A6132E083561e95000b5", startBlock: 55506149 },], + bsc: [{ target: "0x6F2b186e9392042B1edE2D1D1706a3DC4a4725d8", helper: "0x9c225a02426e3229C073A6132E083561e95000b5", startBlock: 37623104 },], + scroll: [{ target: "0xA8Dc31c8C9F93dB2e42A5472F580689794639576", helper: "0x965356eb2C208Ce4130E267342cA720042Cce7b2", startBlock: 4846051 },], + manta: [{ target: "0x69317029384c3305fC04670c68a2b434e2D8C44C", helper: "0xa1d8180f4482359ceb7eb7437fcf4a2616830f81", startBlock: 1834975 },], } -async function getStrategiesLogs(strategies, factoryType, api) { - const chain = api.chain - let topic = DEFAULT_STRATEGY_CREATION_TOPIC +module.exports = { + doublecounted: true, +} - const strategyLogs = await getLogs({ - target: ADDRESSES[chain][factoryType], - topic, - fromBlock: START_BLOCKS[chain][factoryType], - api, - }) +Object.keys(config).forEach(chain => { + const configs = config[chain] + module.exports[chain] = { + tvl: async (api) => { + await Promise.all(configs.map(addConfigTvl)) - for (let log of strategyLogs) - strategies.push(log.topics[1]) + 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]) - return strategies -} + const pools = [] + const reservesCalls = [] -async function tvl(api) { - const chain = api.chain - const strategies = [] - const pools = [] - const reservesCalls = [] - - for (const label of Object.keys(START_BLOCKS[api.chain])) - await getStrategiesLogs(strategies, label, api) - - const strategyDetails = await api.multiCall({ - abi: getStrategiesDetails, - target: ADDRESSES[chain].CLTBASE, - calls: strategies, - }) - - strategyDetails.forEach(({ key: { pool, tickLower, tickUpper }, account }) => { - pools.push(pool) - - reservesCalls.push({ - target: ADDRESSES[chain].HELPER, - 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: ADDRESSES[chain].HELPER, }), - ]) - - reserves.forEach((reserve, index) => { - api.add(token0s[index], reserve.reserves0) - api.add(token1s[index], reserve.reserves1) - }) - - return sumTokens2({ owner: ADDRESSES[chain].CLTBASE, tokens: token0s.concat(token1s), api, }) -} + const strategyDetails = await api.multiCall({ abi: getStrategiesDetails, target, calls: strategies, }) -module.exports = { - doublecounted: true, -} + strategyDetails.forEach(({ key: { pool, tickLower, tickUpper }, account }) => { + pools.push(pool) -Object.keys(ADDRESSES).forEach((chain) => { - module.exports[chain] = { tvl } -}) + reservesCalls.push({ params: [pool, Number(tickLower), Number(tickUpper), account.uniswapLiquidity,], }) + }) -if (!module.exports.polygon) module.exports.polygon = {} + 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 From ca60efcf45734913dc7e15a3b8fd140314a0fd6d Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 10 May 2024 18:18:23 +0100 Subject: [PATCH 1554/2004] separate weth --- projects/etherfi-liquid/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js index cf3396e3258..6eaed15280f 100644 --- a/projects/etherfi-liquid/index.js +++ b/projects/etherfi-liquid/index.js @@ -4,7 +4,13 @@ async function tvl(api) { abi: "uint256:totalAssets", target: '0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221', }); - api.add(ADDRESSES.ethereum.EETH, balETH); + const wethBal = await api.call({ + target: ADDRESSES.ethereum.WETH, + abi: "erc20:balanceOf", + params: ['0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221'], + }); + api.add(ADDRESSES.ethereum.EETH, balETH-wethBal); + api.add(ADDRESSES.ethereum.WETH, wethBal) const balUSD = await api.call({ abi: "uint256:totalSupply", target: '0x08c6f91e2b681faf5e17227f2a44c307b3c1364c', From ed47a18b62eb4f2e197fbcdda42a1f96b2843fb5 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Fri, 10 May 2024 19:07:33 +0100 Subject: [PATCH 1555/2004] add diva vault --- projects/diva/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/diva/index.js b/projects/diva/index.js index 31d7d6eb969..7554ff1bd58 100644 --- a/projects/diva/index.js +++ b/projects/diva/index.js @@ -1,15 +1,23 @@ 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: sumTokensExport({ owners: [ + 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 From c135f13570ed7202d7ed7716cfc6bed2fb321795 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 10 May 2024 20:29:50 +0200 Subject: [PATCH 1556/2004] track keller v3 --- projects/keller-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/keller-v3/index.js diff --git a/projects/keller-v3/index.js b/projects/keller-v3/index.js new file mode 100644 index 00000000000..fccb07e0021 --- /dev/null +++ b/projects/keller-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + scroll: { factory: "0x952aC46B2586737df679e836d9B980E43E12B2d8", fromBlock: 4627488 }, +}) \ No newline at end of file From da01473f655847413cf87a55a349a428c4b08f68 Mon Sep 17 00:00:00 2001 From: Evan | zkLink Labs Date: Sat, 11 May 2024 02:33:27 +0800 Subject: [PATCH 1557/2004] add free.tech bridge address to zklink-nova (#10170) --- projects/zkLink/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 5dde9d4146c..81401a80c28 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -117,6 +117,7 @@ const config = { merlin: { owners: [ "0xf5b90fE755Aa2e3CcC69d9548cbeB7b38c661D73", // nova bridge address + "0xE12382e046DB998DE89aF19Ca799CbB757106781", // free.tech bridge: https://solvbtc.free.tech/ ], tokens: [ "0xB880fd278198bd590252621d4CD071b1842E9Bcd", //MBTC From 0c99801198ddd5be701cce08eb6ccb1e17057063 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 11 May 2024 10:51:55 +0200 Subject: [PATCH 1558/2004] fix raydium --- .../utils/solana/layouts/raydium-layout.js | 14 ++- projects/marinade-native/index.js | 24 ++-- projects/raydium.js | 115 ++++++++++++------ 3 files changed, 100 insertions(+), 53 deletions(-) diff --git a/projects/helper/utils/solana/layouts/raydium-layout.js b/projects/helper/utils/solana/layouts/raydium-layout.js index 7c3b3cafd8c..55f4669c9b1 100644 --- a/projects/helper/utils/solana/layouts/raydium-layout.js +++ b/projects/helper/utils/solana/layouts/raydium-layout.js @@ -185,6 +185,18 @@ const RAYDIUM_STABLE_STATE_LAYOUT_V1 = struct([ seq(u64("padding"), 64, "padding"), ]) +const KeyLayoutv4 = struct([ + publicKey('vaultA'), + publicKey('vaultB'), + publicKey('mintA'), + publicKey('mintB'), +]) + +const TokenAmountLayout = struct([ + u64('amount'), +]) + + module.exports = { - RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, + RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, KeyLayoutv4, TokenAmountLayout, } \ No newline at end of file diff --git a/projects/marinade-native/index.js b/projects/marinade-native/index.js index ecb86f706c5..8f84c77ce06 100644 --- a/projects/marinade-native/index.js +++ b/projects/marinade-native/index.js @@ -2,25 +2,15 @@ const { StakeProgram } = require("@solana/web3.js") const { getConnection } = require('../helper/solana') async function tvl() { - let hasNext = true - let offset = 0 - let length = 9 - let nativeTvl = 0 - do { - const _stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { - filters: [{ - memcmp: { bytes: 'stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', offset: 4 + 8 } - }], - dataSlice: { offset, length } - }) - nativeTvl += _stakeAccounts.reduce((tvl, { account }) => { return tvl + account.lamports / 1e9 }, 0) - - hasNext = _stakeAccounts.length === length - offset += length - } while (hasNext) + const stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { + filters: [{ + memcmp: { bytes: 'stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', offset: 4 + 8 } + }], + dataSlice: { offset: 0, length: 1 } // we dont care about the data, just the lamports + }) return { - solana: nativeTvl + solana: stakeAccounts.reduce((tvl, { account }) => { return tvl + account.lamports / 1e9 }, 0) } } diff --git a/projects/raydium.js b/projects/raydium.js index cad0631e7c3..b179ff1d78f 100644 --- a/projects/raydium.js +++ b/projects/raydium.js @@ -1,6 +1,10 @@ const { getConnection, sumTokens2, decodeAccount, } = require("./helper/solana"); const { PublicKey, } = require("@solana/web3.js"); -const sdk = require('@defillama/sdk'); +const sdk = require('@defillama/sdk') + +const { TokenAmountLayout, KeyLayoutv4 } = require("./helper/utils/solana/layouts/raydium-layout"); +const { transformDexBalances } = require("./helper/portedTokens"); +const { sleep } = require("./helper/utils"); const CLMM = 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK' const AmmV4 = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8' @@ -31,49 +35,90 @@ async function tvlCLMM() { } -async function ammV4Tvl() { - const owner = '5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1' - return sumTokens2({ owner, getAllTokenAccounts: true }) +async function ammV4Tvl(api) { + const connection = getConnection() + const auth = '5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1' + + await sleep(10000) + const allPoolVaultAmount = await connection.getProgramAccounts(new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'), { filters: [{ dataSize: 165 }, { memcmp: { offset: 32, bytes: auth } }], dataSlice: { offset: 64, length: TokenAmountLayout.span } }) + await sleep(30000) + const allPoolKeyInfo = await connection.getProgramAccounts(new PublicKey(AmmV4), { filters: [{ dataSize: 752 }], dataSlice: { offset: 336, length: KeyLayoutv4.span } }) + + const vaultIdToAmount = {} + for (const item of allPoolVaultAmount) { + vaultIdToAmount[item.pubkey.toString()] = TokenAmountLayout.decode(item.account.data).amount.toString() + } + + 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', - ] }) + 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', + ] + }) } module.exports = { timetravel: false, + misrepresentedTokens: true, hallmarks: [[1667865600, "FTX collapse"]], solana: { tvl: sdk.util.sumChainTvls([tvlCLMM, ammStableTvl, ammV4Tvl, ammV2V3]), - staking: () => sumTokens2({ tokenAccounts: ['8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY']}) + staking: () => sumTokens2({ tokenAccounts: ['8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY'] }) }, }; \ No newline at end of file From 8d601a8a12041ae0b7eae20d4f4d49e79db0f5f7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 11 May 2024 11:16:41 +0200 Subject: [PATCH 1559/2004] fix broken adapters --- projects/puffer/index.js | 2 +- projects/xWinFinance/index.js | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/projects/puffer/index.js b/projects/puffer/index.js index 4746fa05f8a..f246b75efdb 100644 --- a/projects/puffer/index.js +++ b/projects/puffer/index.js @@ -1,7 +1,7 @@ const PUF_ETH = '0xD9A442856C234a39a81a089C06451EBAa4306a72'; async function tvl(api) { - return api.erc4626Sum({ calls: [PUF_ETH], isOG4626: true }) + return api.erc4626Sum({ calls: [PUF_ETH], isOG4626: true, permitFailure: true, }) } module.exports = { diff --git a/projects/xWinFinance/index.js b/projects/xWinFinance/index.js index 78a402af074..91612e871e8 100644 --- a/projects/xWinFinance/index.js +++ b/projects/xWinFinance/index.js @@ -25,7 +25,7 @@ Object.keys(config).forEach(chain => { const { portfolioURL, strategyUrl, privateKey, } = config[chain] module.exports[chain] = { tvl: async (api) => { - const vaults = (await getConfig('xWinFinance/vaults/' + api.chain, strategyUrl)).map(i => i.contractaddress) + let vaults = (await getConfig('xWinFinance/vaults/' + api.chain, strategyUrl)).map(i => i.contractaddress) const privateVaults = await getConfig('xWinFinance/privateVaults', PrivateURL) vaults.push(...privateVaults[privateKey]) @@ -34,14 +34,18 @@ Object.keys(config).forEach(chain => { vaults.push(...portfolioVaults.map(i => i.contractaddress)) } - const bals = await api.multiCall({ abi: 'uint256:getVaultValues', calls: vaults }) + + 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 / 10 ** (18 - decimals[i])) + bals.forEach((bal, i) => bals[i] = (bal ?? 0) / 10 ** (18 - decimals[i])) api.addTokens(tokens, bals) } From 8746f4080916ce59ddb93a718d284aeeba06bb55 Mon Sep 17 00:00:00 2001 From: cerraio <147749662+cerraio@users.noreply.github.com> Date: Sat, 11 May 2024 02:20:03 -0700 Subject: [PATCH 1560/2004] add batcher script (#10174) * add batcher script * Update index.js --- projects/cerra/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/cerra/index.js b/projects/cerra/index.js index 1361646e699..5c3d308b1bb 100644 --- a/projects/cerra/index.js +++ b/projects/cerra/index.js @@ -2,9 +2,10 @@ 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] }) + return sumTokens2({ scripts: [LENDING_SCRIPT, AMM_SCRIPT, BATCHER_SCRIPT] }) } module.exports = { From 3c59ce9d95991cd7d2fc602b1d25e9824f4e9550 Mon Sep 17 00:00:00 2001 From: mrben1 Date: Sat, 11 May 2024 21:21:46 +1200 Subject: [PATCH 1561/2004] Added ape.store tvm (#10172) --- projects/apestore/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/apestore/index.js diff --git a/projects/apestore/index.js b/projects/apestore/index.js new file mode 100644 index 00000000000..1efd12a64c8 --- /dev/null +++ b/projects/apestore/index.js @@ -0,0 +1,16 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); +const coreAssets = require("../helper/coreAssets.json"); + +const routers = [ + "0xF6Af6C034E92694A4c79569B03543d580df402D7", + "0x992D40d9ED8937Bb0Ad3c0Ba99713072Ae0a05b3", + "0x135De7F9223C76b7d0278FFe854eC480D37FE906" +]; + +const tokens = [coreAssets.null]; + +module.exports = { + base: { + tvl: sumTokensExport({ owners: routers, tokens }) + }, +}; \ No newline at end of file From 411b60caf4ef781aa676eea4c580432491966ed3 Mon Sep 17 00:00:00 2001 From: "L.Y" <141099829+lyfsn@users.noreply.github.com> Date: Sat, 11 May 2024 21:36:04 +0800 Subject: [PATCH 1562/2004] Add the bridge between Endurance and BSC for ACE (#10161) * Add the bridge between Endurance and BSC Signed-off-by: lyfsn * code refactor * update a51 fi * Revert "update a51 fi" This reverts commit 97fa2de2d9735980ae76bce4f11b247d7af84943. --------- Signed-off-by: lyfsn Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/endurance-bridge/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/endurance-bridge/index.js diff --git a/projects/endurance-bridge/index.js b/projects/endurance-bridge/index.js new file mode 100644 index 00000000000..c72004d068b --- /dev/null +++ b/projects/endurance-bridge/index.js @@ -0,0 +1,15 @@ +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 From e93ddabd55db9811c5052bdb73a24d8700ee7c79 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sun, 12 May 2024 13:22:02 +0100 Subject: [PATCH 1563/2004] add 2 new wallets (#10183) --- projects/merlin-l2/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/merlin-l2/index.js b/projects/merlin-l2/index.js index fe01e9abfdc..ab92d570c53 100644 --- a/projects/merlin-l2/index.js +++ b/projects/merlin-l2/index.js @@ -22,8 +22,12 @@ const owners = [ "bc1pruhkl5exjt0z824cafauf750f5g08azuvgcjctv0enz5csayaj7ss3j5wc", // add on 25/02/2024 "bc1q97vmervc8x9hzr4z4yvzn3x4rk74se6e8x8sgy", // add on 25/02/2024 "bc1q2lzqzjcq472x8v0kgdcn4m5y8cq95ysnxm6vemu0qsuqgzyge06sqmqdal", // add on 25/02/2024 - "bc1qcmj5lkumeycyn35lxc3yr32k3fzue87yrjrna6", //nft_vault_address -]; + "bc1qcmj5lkumeycyn35lxc3yr32k3fzue87yrjrna6", //nft_vault_address; + "bc1qq76dy32nnk5sha36etg6pdj94vl5zrskavux2f", // add on 12/05/2024 + "36n825H7orW1u8yWmvR4zs2CWfmkY2rkpK", // add on 12/05/2024 + "bc1p35l88j3ashhktg75tjctt6pacrgpyr93ldt7yw484dm4expq073qk4n0a0", // add on 12/05/2024 + +] module.exports = { methodology: "Staking tokens via BitStable counts as TVL", From bc8f20c1f84424786f09a0ce0dff7711d830b8cb Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 12 May 2024 20:55:14 +0100 Subject: [PATCH 1564/2004] another staking contract --- projects/gensokishi/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/gensokishi/index.js b/projects/gensokishi/index.js index f6df15b78d5..e0c76178d79 100644 --- a/projects/gensokishi/index.js +++ b/projects/gensokishi/index.js @@ -1,8 +1,10 @@ -const { staking } = require("../helper/staking") +const { stakings } = require("../helper/staking") module.exports={ polygon:{ - staking: staking("0x1b2430aeedececafb52a3ff8cc8321e9426fc82c", "0xa3c322ad15218fbfaed26ba7f616249f7705d945", "polygon", "polygon:0xa3c322ad15218fbfaed26ba7f616249f7705d945"), + staking: stakings([ + "0x1b2430aeedececafb52a3ff8cc8321e9426fc82c", "0x8B55fFfcF528D89fDEfEEac670d24Ae384ca083b" + ], "0xa3c322ad15218fbfaed26ba7f616249f7705d945", "polygon"), tvl:()=>({}) } } \ No newline at end of file From 77b96cd54086ae389dcc80299244d4487b81a1ae Mon Sep 17 00:00:00 2001 From: Wayne Kuo <95527849+WayneAl@users.noreply.github.com> Date: Mon, 13 May 2024 14:35:48 +0800 Subject: [PATCH 1565/2004] Add typus v1 tvl (#10186) --- projects/typus-finance/index.js | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/projects/typus-finance/index.js b/projects/typus-finance/index.js index e9ca02f4c9b..a0cad661225 100644 --- a/projects/typus-finance/index.js +++ b/projects/typus-finance/index.js @@ -2,6 +2,8 @@ const sui = require("../helper/chain/sui"); const SINGLE_DEPOSIT_VAULT_REGISTRY = "0xd67cf93a0df61b4b3bbf6170511e0b28b21578d9b87a8f4adafec96322dd284d"; 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 depositVaultFields = await sui.getDynamicFieldObjects({ @@ -31,6 +33,52 @@ async function tvl(api) { api.add(bid_token, fields.premium_share_supply); } }); + + // Add v1 vaults + + const v1depositVaultFields = await sui.getDynamicFieldObjects({ + parent: V1_SINGLE_DEPOSIT_VAULT_REGISTRY, + }); + + const v1depositVaultIds = v1depositVaultFields.map((item) => item.fields.id.id); + const v1depositVaults = await sui.getObjects(v1depositVaultIds); + + v1depositVaults.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, + }); + + const v1bidVaultIds = v1bidVaultFields.map((item) => item.fields.id.id); + + const v1bidVaults = await sui.getObjects(v1bidVaultIds); + + v1bidVaults.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); + } + ); } module.exports = { From 0c1faa96b8fa7af7b4f69eab3eb50484e09d1f0e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 13 May 2024 12:08:51 +0530 Subject: [PATCH 1566/2004] Add equation v3 and refactor code (#10187) * add equation v3 * code refactor --------- Co-authored-by: waldo --- projects/equation-v3/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/equation-v3/index.js diff --git a/projects/equation-v3/index.js b/projects/equation-v3/index.js new file mode 100644 index 00000000000..c9ec82b16a8 --- /dev/null +++ b/projects/equation-v3/index.js @@ -0,0 +1,13 @@ +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 From cd809e339fb1eabced62a0d8a759c1d6bfa228df Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Mon, 13 May 2024 15:17:49 +0800 Subject: [PATCH 1567/2004] add new farm (#10188) --- projects/muito-finance/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index 5ff620dca0e..4f286c27d06 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -22,6 +22,7 @@ async function tvl(api) { const MUTO_V3_FARM = "0xD7372abc6693702fF09536ec3824780eB264b2eF"; const MUTO_V3_FARM2 = "0xCd356c40A86c59955e20FcCF7Bb3b9Be15AF238D"; const MUTO_V3_FARM3 = "0x1d75a3228576E3Cfe6Fc3d0aAE51eAbEE4E8D12e"; + const MUTO_V3_FARM4 = "0xE2711FAcAbA363e3E574a3860813D92F8f502311"; await sumTokens2({ api, uniV3nftsAndOwners: [ @@ -40,6 +41,12 @@ async function tvl(api) { ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM3], ], }); + await sumTokens2({ + api, + uniV3nftsAndOwners: [ + ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM4], + ], + }); await getTvl(api, MUTO_FARM); await getTvl(api, MUTO_MULTI_FARM2); await getTvl(api, MUTO_MULTI_FARM3); From 94d613f4877f22dd305f64ede88245f272ec95ff Mon Sep 17 00:00:00 2001 From: 0xYFLOW <139814596+0xYFLOW@users.noreply.github.com> Date: Mon, 13 May 2024 11:18:19 +0400 Subject: [PATCH 1568/2004] add pendle and rwa (#10182) --- projects/yieldflow/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js index acc7a926197..cccb078f2ed 100644 --- a/projects/yieldflow/index.js +++ b/projects/yieldflow/index.js @@ -44,7 +44,16 @@ const managers = [ '0x717FADe04FF819a58128Be591caC8C801F28Cd5b', '0x1655cfD162b4148E1715B6302DA4EF075Fa72ADf', '0x604Ef6Dc8c7abf78008749b57a4135C87d69fc35', - '0xa63fa8FE58A5E197f092742619D8F4C7fE4924e8' + '0xa63fa8FE58A5E197f092742619D8F4C7fE4924e8', + + '0xC22c7f332cA100725Bf4eA832f2D169e471923D6', + '0x1E5F83Fc7f167fF44D58e59142DeE2358346331B', + '0x8702800D715461Fb7D9C89C74DDB7bE73F5a37C6', + '0xb6F1E82e7AE822DE9eD64967D04359Fe4D58A569', + '0xE0213546258ABd7EF0D689D26Cf6d6BCEeE20e8a', + '0xf732Fc726B3a4bE9f6c86a710Fd3367259DB456e' + + ] async function tvl(api) { From 989e1ffb65a59289d8167bd42bd77df57fdd5236 Mon Sep 17 00:00:00 2001 From: GadAlmighty <112296686+GadAlmighty@users.noreply.github.com> Date: Mon, 13 May 2024 15:19:22 +0800 Subject: [PATCH 1569/2004] Add neutron and archway contracts for CALC Finance (#10180) --- projects/calculated-finance/index.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/projects/calculated-finance/index.js b/projects/calculated-finance/index.js index 4e7df9cf8af..f7797a7dfa0 100644 --- a/projects/calculated-finance/index.js +++ b/projects/calculated-finance/index.js @@ -1,19 +1,24 @@ const { sumTokens, } = require('../helper/chain/cosmos') -async function tvl() { - const owners = [ - "kujira1e6fjnq7q20sh9cca76wdkfg69esha5zn53jjewrtjgm4nktk824stzyysu", - ] - return sumTokens({ owners, chain: 'kujira' }) -} - module.exports = { kujira: { - tvl, + tvl: async () => { + return sumTokens({ owners: ['kujira1e6fjnq7q20sh9cca76wdkfg69esha5zn53jjewrtjgm4nktk824stzyysu'], chain: 'kujira' }) + }, }, osmosis: { tvl: async () => { return sumTokens({ owners: ['osmo1zacxlu90sl6j2zf90uctpddhfmux84ryrw794ywnlcwx2zeh5a4q67qtc9'], chain: 'osmosis' }) } }, -} \ No newline at end of file + neutron: { + tvl: async () => { + return sumTokens({ owners: ['neutron1cc5adah6vekm2nz5yp6qs332g704q90jgc03v8zxpzaqh297jvqqae2eez'], chain: 'neutron' }) + } + }, + archway: { + tvl: async () => { + return sumTokens({ owners: ['archway1delmknshmvfuhv07uetes90crzrj32za23pgd9cvjtc5mrzfjauq3jqrpa'], chain: 'archway' }) + } + }, +} From 49271c1a9afe880c23ce3c252c6c636d2cf84970 Mon Sep 17 00:00:00 2001 From: WormholeOracle <51072084+WormholeOracle@users.noreply.github.com> Date: Mon, 13 May 2024 00:19:47 -0700 Subject: [PATCH 1570/2004] add wstETH gateway (#10179) --- projects/scroll/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/scroll/index.js b/projects/scroll/index.js index f2b544bc0f2..b7d742ee252 100644 --- a/projects/scroll/index.js +++ b/projects/scroll/index.js @@ -13,6 +13,7 @@ module.exports = { "0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6", "0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B", "0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B", + "0x6625C6332c9F91F2D27c304E729B86db87A3f504", ], fetchCoValentTokens: true, }), From b315dac8292b659d6d3b1d982724fa02c2fa9ee7 Mon Sep 17 00:00:00 2001 From: QuantoSwap <168090171+QuantoSwap@users.noreply.github.com> Date: Mon, 13 May 2024 08:27:29 +0100 Subject: [PATCH 1571/2004] Add QuantoSwap (#10177) * Create index.js * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/quantoswap/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/quantoswap/index.js diff --git a/projects/quantoswap/index.js b/projects/quantoswap/index.js new file mode 100644 index 00000000000..d8d0f067214 --- /dev/null +++ b/projects/quantoswap/index.js @@ -0,0 +1,16 @@ +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, fetchBalances: true }) + }, +}; \ No newline at end of file From 48ac1bde465da488bbb1aad000510ec352ade161 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Mon, 13 May 2024 10:56:34 +0100 Subject: [PATCH 1572/2004] Revert "add free.tech bridge address to zklink-nova (#10170)" This reverts commit da01473f655847413cf87a55a349a428c4b08f68. --- projects/zkLink/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 81401a80c28..5dde9d4146c 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -117,7 +117,6 @@ const config = { merlin: { owners: [ "0xf5b90fE755Aa2e3CcC69d9548cbeB7b38c661D73", // nova bridge address - "0xE12382e046DB998DE89aF19Ca799CbB757106781", // free.tech bridge: https://solvbtc.free.tech/ ], tokens: [ "0xB880fd278198bd590252621d4CD071b1842E9Bcd", //MBTC From b85e3233721e96c4bccd638a1d56c322d1d5d404 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 13 May 2024 12:15:41 +0200 Subject: [PATCH 1573/2004] add bitcow: - avalon - track bitlayer - scrub invest - remove own token --- projects/avalon-finance/index.js | 3 ++- projects/bitcow/index.js | 27 +++++++++++++++++++++++++++ projects/bitsmiley-io/index.js | 30 ++++++++++++++++++++++++++++++ projects/el-salvador/index.js | 5 +++++ projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 15 ++++++++++++++- projects/macaron-xyz/index.js | 3 +++ projects/scrubinvest/index.js | 2 +- 9 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 projects/bitcow/index.js create mode 100644 projects/bitsmiley-io/index.js create mode 100644 projects/el-salvador/index.js create mode 100644 projects/macaron-xyz/index.js diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js index ebeb87ca3c2..ce185e4a379 100644 --- a/projects/avalon-finance/index.js +++ b/projects/avalon-finance/index.js @@ -1,5 +1,5 @@ -const { aaveExports } = require('../helper/aave') +const { aaveExports } = require('../helper/aave') const methodologies = require('../helper/methodologies') const { mergeExports } = require('../helper/utils') @@ -8,6 +8,7 @@ const mainMarket = { } const innovativeMarket = { merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682'], { v3: true }), + btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), } module.exports = mergeExports(mainMarket, innovativeMarket) diff --git a/projects/bitcow/index.js b/projects/bitcow/index.js new file mode 100644 index 00000000000..7270e2e1827 --- /dev/null +++ b/projects/bitcow/index.js @@ -0,0 +1,27 @@ +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/bitsmiley-io/index.js b/projects/bitsmiley-io/index.js new file mode 100644 index 00000000000..e9bc375b1d8 --- /dev/null +++ b/projects/bitsmiley-io/index.js @@ -0,0 +1,30 @@ +const { sumTokens2, } = require('../helper/unwrapLPs') + +async function tvl(api) { + + return sumTokens2({ owners: [ + '0x37fc73b4dda9f7263926590838e32e05e4e051e9', + ], tokens: ['0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f'], api, }) +} + +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/el-salvador/index.js b/projects/el-salvador/index.js new file mode 100644 index 00000000000..37e69daa82f --- /dev/null +++ b/projects/el-salvador/index.js @@ -0,0 +1,5 @@ +const { sumTokensExport } = require('../helper/sumTokens') + +module.exports = { + bitcoin: { tvl: sumTokensExport({owner: '32ixEdVJWo3kmvJGMTZq5jAQVZZeuwnqzo'}) } +} \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 4c25b2714b8..d4b5c965c6e 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -41,6 +41,7 @@ "bostrom", "bsc", "bsquared", + "btr", "btn", "bytomsidechain", "callisto", diff --git a/projects/helper/env.js b/projects/helper/env.js index 8af0628556a..d258846b5a4 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -13,6 +13,7 @@ const DEFAULTS = { ANKR_API_KEY: '79258ce7f7ee046decc3b5292a24eb4bf7c910d7e39b691384c7ce0cfb839a01', RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", // add manually, short name is b2-mainnet + BTR_RPC_MULTICALL: '0xc8818aaeaBF0dF9f3f3ffF54Ab185705177A6234', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index ba48d281906..f6e1d58254f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -74,7 +74,20 @@ const fixBalancesTokens = { }, chz: { '0x677F7e16C7Dd57be1D4C8aD1244883214953DC47': { coingeckoId: "wrapped-chiliz", decimals: 18 } - } + }, + zklink: { + '0xbEAf16cFD8eFe0FC97C2a07E349B9411F5dC272C': { coingeckoId: "solv-btc", decimals: 18 }, + '0xFb8dBdc644eb54dAe0D7A9757f1e6444a07F8067': { coingeckoId: "bitcoin-trc20", decimals: 18 }, + '0x85D431A3a56FDf2d2970635fF627f386b4ae49CC': { coingeckoId: "merlin-s-seal-btc", decimals: 18 }, + }, + btr: { + '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, + '0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2': { coingeckoId: 'tether', decimals: 6 }, + '0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2': { coingeckoId: 'ethereum', decimals: 18 }, + '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, + '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0': { coingeckoId: 'tether', decimals: 18 }, // bitUSD + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/macaron-xyz/index.js b/projects/macaron-xyz/index.js new file mode 100644 index 00000000000..fa3a611c858 --- /dev/null +++ b/projects/macaron-xyz/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('btr', '0x05daB9D11A0e14E68862cd08A73A7362Bb93a331') \ No newline at end of file diff --git a/projects/scrubinvest/index.js b/projects/scrubinvest/index.js index 6e75deec33b..6044ed66336 100644 --- a/projects/scrubinvest/index.js +++ b/projects/scrubinvest/index.js @@ -50,7 +50,7 @@ async function tvl(api) { [ADDRESSES.moonriver.USDC, '0x1504B9EDdD57Ed8252b3b3b407DdE27B72A80790'], [ADDRESSES.kava.WKAVA, '0xC05021F3b3601BF33aB59dc75577B85985ACaab7'], // New Scrub Pool - ['0x471F79616569343e8e84a66F342B7B433b958154', '0x67041094c4fc1492A1AB988Fb8De0ab4A0a4A080'], + // ['0x471F79616569343e8e84a66F342B7B433b958154', '0x67041094c4fc1492A1AB988Fb8De0ab4A0a4A080'], // Tiger - protocol related token // WETH From 39930efa9057e7d1888b18d36c5cec6c698a69ab Mon Sep 17 00:00:00 2001 From: Puneet <59960662+puneet2019@users.noreply.github.com> Date: Mon, 13 May 2024 14:54:18 +0400 Subject: [PATCH 1574/2004] Update index.js (#10189) add xprt tvl for stkxprt --- projects/pstake/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/pstake/index.js b/projects/pstake/index.js index f8b9226a3c4..5b6e1157ae1 100644 --- a/projects/pstake/index.js +++ b/projects/pstake/index.js @@ -33,6 +33,11 @@ const chainInfos = { name: "stargaze", decimals: 1e6, endpoint: "/stkstars/stars_tvu" + }, + persistence: { + name: "persistence", + decimals: 1e6, + endpoint: "/stkxprt/xprt_tvu" } } From 8a639b2ad7afc7da0e32f051d617a0d0189badd3 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 13 May 2024 12:25:59 +0100 Subject: [PATCH 1575/2004] move elsavador + golem method (#10192) --- projects/{el-salvador/index.js => entities/el-salvador.js} | 0 projects/treasury/golem.js | 7 +++++-- 2 files changed, 5 insertions(+), 2 deletions(-) rename projects/{el-salvador/index.js => entities/el-salvador.js} (100%) diff --git a/projects/el-salvador/index.js b/projects/entities/el-salvador.js similarity index 100% rename from projects/el-salvador/index.js rename to projects/entities/el-salvador.js diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js index 6ccbb1289e2..4b6ce4512c5 100644 --- a/projects/treasury/golem.js +++ b/projects/treasury/golem.js @@ -26,5 +26,8 @@ async function tvl(api) { } module.exports = mergeExports([module.exports, { - ethereum: { tvl } -}]) \ No newline at end of file + 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"] \ No newline at end of file From 43ed745f9f5a674623d0c14592beb1e97b7cdab7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 13 May 2024 16:57:15 +0530 Subject: [PATCH 1576/2004] Add Defillama adapter for fountain-fi (#10193) * add Defillama adapter fountain-fi * minor fix --------- Co-authored-by: jasm1n33 --- projects/fountain-fi/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/fountain-fi/index.js diff --git a/projects/fountain-fi/index.js b/projects/fountain-fi/index.js new file mode 100644 index 00000000000..10085ec3229 --- /dev/null +++ b/projects/fountain-fi/index.js @@ -0,0 +1,30 @@ +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 From 7062361fbffcc3128d469291884f00888e939a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sim=C3=A3o=20Pinto?= <87367287+Sk1mer12@users.noreply.github.com> Date: Mon, 13 May 2024 12:33:38 +0100 Subject: [PATCH 1577/2004] Update InceptionLRT TVL (#10134) * Update index.js * Update index.js * compromise * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/genesis-lrt/index.js | 3 ++- projects/inception-lrt/index.js | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/projects/genesis-lrt/index.js b/projects/genesis-lrt/index.js index 0bfb2483359..e9ad2da8098 100644 --- a/projects/genesis-lrt/index.js +++ b/projects/genesis-lrt/index.js @@ -1,7 +1,8 @@ const ADDRESSES = require('../helper/coreAssets.json') async function tvl(api) { - const staked = await api.call({ abi: 'uint256:totalAssets', target: '0xf073bAC22DAb7FaF4a3Dd6c6189a70D54110525C'}) + if (api.timestamp > 1715181240) return {} + const staked = await api.call({ abi: 'uint256:totalAssets', target: '0xf073bAC22DAb7FaF4a3Dd6c6189a70D54110525C' }) api.add(ADDRESSES.null, staked) } diff --git a/projects/inception-lrt/index.js b/projects/inception-lrt/index.js index e007381ec47..ecdda208cd4 100644 --- a/projects/inception-lrt/index.js +++ b/projects/inception-lrt/index.js @@ -1,14 +1,20 @@ -async function tvl(api) { +const ADDRESSES = require('../helper/coreAssets.json') + +async function tvl_eth(api) { const vaults = ['0x36B429439AB227fAB170A4dFb3321741c8815e55', '0xfE715358368416E01d3A961D3a037b7359735d5e', '0x90E80E25ABDB6205B08DeBa29a87f7eb039023C2', '0x4878F636A9Aa314B776Ac51A25021C44CAF86bEd', '0xA9F8c770661BeE8DF2D026edB1Cb6FF763C780FF', '0x1Aa53BC4Beb82aDf7f5EDEE9e3bBF3434aD59F12', '0x814CC6B8fd2555845541FB843f37418b05977d8d', '0xc4181dC7BB31453C4A48689ce0CBe975e495321c', '0xC0660932C5dCaD4A1409b7975d147203B1e9A2B6', '0x6E17a8b5D33e6DBdB9fC61d758BF554b6AD93322', '0x295234B7E370a5Db2D2447aCA83bc7448f151161', '0xd0ee89d82183D7Ddaef14C6b4fC0AA742F426355'] const total_deposited = await api.multiCall({ abi: 'uint256:getTotalDeposited', calls: vaults, permitFailure: true}) // const total_withdraw = await api.multiCall({ abi: 'uint256:totalAmountToWithdraw', calls: vaults, permitFailure: true}) const strategies = await api.multiCall({ abi: 'address:strategy', calls: vaults}) const tokens = await api.multiCall({ abi: 'address:underlyingToken', calls: strategies}) // const result = total_deposited.map((deposited, index) => deposited - total_withdraw[index]); + if (api.timestamp > 1715181240) { + const staked = await api.call({ abi: 'uint256:totalAssets', target: '0xf073bAC22DAb7FaF4a3Dd6c6189a70D54110525C' }) + api.add(ADDRESSES.null, staked) + } api.add(tokens, total_deposited) } module.exports = { doublecounted: true, - ethereum: { tvl, }, -} \ No newline at end of file + ethereum: { tvl: tvl_eth, } , +} From ed430ecd83acd64f5206c75ae946b4e0e9f108dd Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 13 May 2024 13:47:24 +0100 Subject: [PATCH 1578/2004] comment out golem method (#10197) --- projects/treasury/golem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js index 4b6ce4512c5..631aa9d9d66 100644 --- a/projects/treasury/golem.js +++ b/projects/treasury/golem.js @@ -30,4 +30,4 @@ module.exports = mergeExports([module.exports, { }]) -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"] \ No newline at end of file +//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"] \ No newline at end of file From de8114cf34604e20b0b71d9b970b9e0b4d67a106 Mon Sep 17 00:00:00 2001 From: Ivan <3238603+ivivanov@users.noreply.github.com> Date: Mon, 13 May 2024 16:41:57 +0300 Subject: [PATCH 1579/2004] Add native USDC pool in Nolus protocol (#10199) --- projects/nolus/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/nolus/index.js b/projects/nolus/index.js index 22b30aefc2f..2be45251c9f 100644 --- a/projects/nolus/index.js +++ b/projects/nolus/index.js @@ -4,7 +4,8 @@ const { queryContract, queryManyContracts, queryContracts } = require('../helper // Osmosis const osmosisLeaserAddr = 'nolus1wn625s4jcmvk0szpl85rj5azkfc6suyvf75q6vrddscjdphtve8s5gg42f' -const osmosisLppAddr = 'nolus1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sqaa3c5' +const osmosisAxlLppAddr = 'nolus1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3sqaa3c5' +const osmosisNobleLppAddr = 'nolus1ueytzwqyadm6r0z8ajse7g6gzum4w3vv04qazctf8ugqrrej6n4sq027cf' // Neutron (Astroport) const neutronLeaserAddr = 'nolus1et45v5gepxs44jxewfxah0hk4wqmw34m8pm4alf44ucxvj895kas5yrxd8' @@ -130,7 +131,8 @@ module.exports = { nolus: { tvl: async () => { return { - 'axlusdc': await getLppTvl([osmosisLppAddr, neutronLppAddr]) + 'axlusdc': await getLppTvl([osmosisAxlLppAddr, neutronLppAddr]), + 'usd-coin': await getLppTvl([osmosisNobleLppAddr]) } } }, From 976ed7132b359a046370f07237643f93e4b5530a Mon Sep 17 00:00:00 2001 From: 0x <43978164+0xtjoe@users.noreply.github.com> Date: Tue, 14 May 2024 00:03:55 +1000 Subject: [PATCH 1580/2004] feat: add adapter for origami (#10168) * feat: add adapter for origami * code refactor --------- Co-authored-by: 0xl2 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/origami/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/origami/index.js diff --git a/projects/origami/index.js b/projects/origami/index.js new file mode 100644 index 00000000000..b666da8dc9e --- /dev/null +++ b/projects/origami/index.js @@ -0,0 +1,30 @@ +const { cachedGraphQuery } = require('../helper/cache') + +const GRAPH_URLS = { + ethereum: "https://api.thegraph.com/subgraphs/name/templedao/origami-mainnet", // ethereum + arbitrum: "https://api.thegraph.com/subgraphs/name/templedao/origami-arb", // arbitrum +} + +module.exports = { + doublecounted: true, +} + +Object.keys(GRAPH_URLS).forEach(chain => { + const endpoint = GRAPH_URLS[chain] + module.exports[chain] = { + tvl: async (api) => { + const { metrics: [{ investmentVaults }] } = await cachedGraphQuery('origami/' + chain, endpoint, '{ metrics { investmentVaults { id } } }') + const vaults = investmentVaults.map(vault => vault.id) + let tokens = await api.multiCall({ abi: 'address:reserveToken', calls: vaults }) + if (chain === 'arbitrum') + tokens = await api.multiCall({ abi: 'address:baseToken', calls: tokens }) + + const decimals = await api.multiCall({ abi: 'uint8:decimals', calls: vaults }) + const supplies = await api.multiCall({ abi: 'uint256:totalSupply', calls: vaults }) + const reserves = await api.multiCall({ abi: 'uint256:reservesPerShare', calls: vaults }) + const bals = reserves.map((reserve, i) => reserve * supplies[i] / 10 ** decimals[i]) + console.log(tokens, bals, vaults, api.chain) + api.add(tokens, bals) + } + } +}) From 1228d3630f3524064249b3fee071f1ef38124fc2 Mon Sep 17 00:00:00 2001 From: webWorker-eos <67700142+webWorker-eos@users.noreply.github.com> Date: Mon, 13 May 2024 22:36:39 +0800 Subject: [PATCH 1581/2004] add dfs tvl (#10046) * add dfs tvl * calc tvl by chain * del log --- projects/dfs/index.js | 75 +++++++++++++++++++++++++++++-------- projects/helper/chains.json | 1 + 2 files changed, 60 insertions(+), 16 deletions(-) diff --git a/projects/dfs/index.js b/projects/dfs/index.js index 545947a86c0..968aa75f296 100644 --- a/projects/dfs/index.js +++ b/projects/dfs/index.js @@ -1,28 +1,71 @@ -const { get_account_tvl } = require("../helper/chain/eos"); +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"], -] + ['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); + 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 = { methodology: `DFS TVL is achieved by querying token balances from DFS's AMM swap liquidity smart contract.`, eos: { - tvl: eos + tvl: eos, }, -} + dfs: { + tvl: dfs, + }, +}; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index d4b5c965c6e..6dfa8b9b43e 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -76,6 +76,7 @@ "defiverse", "degen", "dexit", + "dfs", "dfk", "doge", "dogechain", From ee7770a79451bf4aeca695d58b6e5ade751e77ad Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 13 May 2024 19:48:10 +0200 Subject: [PATCH 1582/2004] track cyeth --- package-lock.json | 47 ++++++++++++++++----------------- projects/abstraDex/index.js | 1 + projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 3 +++ 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 507493f26c8..4f1deb45ac3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -808,9 +808,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.55", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.55.tgz", - "integrity": "sha512-IYY14D7wSR/lHP3adExvBahynnpcbYubHQKKzmirNq1LVSGaLMtYdPKaf9cwlvZk0hejNwTjP1HF0yF0CehIDA==", + "version": "5.0.56", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.56.tgz", + "integrity": "sha512-91dDh9+EbZ8ABDz4SYhPj/eV8vjobh0uQ7+OkgfHH9V1zH/ajJ2DbN40NJqRL+rMzZqu0CX062wNaxPYmcwASw==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", @@ -1013,20 +1013,20 @@ } }, "node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "engines": { "node": ">= 16" }, @@ -1840,13 +1840,13 @@ } }, "node_modules/@solana/web3.js": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.88.0.tgz", - "integrity": "sha512-E4BdfB0HZpb66OPFhIzPApNE2tG75Mc6XKIoeymUkx/IV+USSYuxDX29sjgE/KGNYxggrOf4YuYnRMI6UiPL8w==", + "version": "1.91.8", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.91.8.tgz", + "integrity": "sha512-USa6OS1jbh8zOapRJ/CBZImZ8Xb7AJjROZl5adql9TpOoBN9BUzyyouS5oPuZHft7S7eB8uJPuXWYjMi6BHgOw==", "dependencies": { - "@babel/runtime": "^7.23.4", - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", + "@babel/runtime": "^7.24.5", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", "@solana/buffer-layout": "^4.0.1", "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", @@ -1857,7 +1857,7 @@ "fast-stable-stringify": "^1.0.0", "jayson": "^4.1.0", "node-fetch": "^2.7.0", - "rpc-websockets": "^7.5.1", + "rpc-websockets": "^7.11.0", "superstruct": "^0.14.2" } }, @@ -3525,11 +3525,10 @@ } }, "node_modules/rpc-websockets": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", - "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.11.0.tgz", + "integrity": "sha512-IkLYjayPv6Io8C/TdCL5gwgzd1hFz2vmBZrjMw/SPEXo51ETOhnzgS4Qy5GWi2JQN7HKHa66J3+2mv0fgNh/7w==", "dependencies": { - "@babel/runtime": "^7.17.2", "eventemitter3": "^4.0.7", "uuid": "^8.3.2", "ws": "^8.5.0" diff --git a/projects/abstraDex/index.js b/projects/abstraDex/index.js index 6f4bcb28495..ac6ecf1f304 100644 --- a/projects/abstraDex/index.js +++ b/projects/abstraDex/index.js @@ -6,6 +6,7 @@ const config = { zkfair: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', zeta: '0x174c4C03DfeA09682728A5959A253bf1F7C7766F', blast: '0xA7afB6163c331DDb0845843889D6f9544328846F', + cyeth: '0x174c4c03dfea09682728a5959a253bf1f7c7766f', } module.exports = { diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 6dfa8b9b43e..516a71e3ae9 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -69,6 +69,7 @@ "csc", "cube", "curio", + "cyeth", "darwinia", "dash", "defichain", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f6e1d58254f..c4cdc320b0a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -88,6 +88,9 @@ const fixBalancesTokens = { '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0': { coingeckoId: 'tether', decimals: 18 }, // bitUSD }, + cyeth: { + '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From ab334d28aa5d6b94ee2919cc944e5d8810069d2c Mon Sep 17 00:00:00 2001 From: LeviathanYou <168118002+LeviathanYou@users.noreply.github.com> Date: Tue, 14 May 2024 02:23:08 +0800 Subject: [PATCH 1583/2004] feat: add tvl for free protocol (#10200) --- projects/free-protocol/index.js | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 projects/free-protocol/index.js diff --git a/projects/free-protocol/index.js b/projects/free-protocol/index.js new file mode 100644 index 00000000000..a4a848fbe72 --- /dev/null +++ b/projects/free-protocol/index.js @@ -0,0 +1,80 @@ +const { sumTokensExport } = require('../helper/unwrapLPs'); + +module.exports = { + merlin: { + tvl: sumTokensExport({ + owners: [ + '0xA6E02b4445dB933FCD125a449448326d6505B189', + '0x79af88101aB5589aB0f92a2bbAbe2bAe1c602806', + '0xD5f051fF82D90D086B57842e6Aae8f2FAa80Cb1c', + '0xE12382e046DB998DE89aF19Ca799CbB757106781', + ], + tokens: [ + '0xB880fd278198bd590252621d4CD071b1842E9Bcd', + '0xC5BD913eE3BEFD4721C609177F29a8770ACD7242', + '0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71', + '0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71', + ], + }), + }, + ethereum: { + tvl: sumTokensExport({ + owners: [ + '0xd6572c7cd671ecf75d920adcd200b00343959600', + '0xa97Fe3E9c1d3Be7289030684eD32A6710d2d02bA', + '0xeea3A032f381AB1E415e82Fe08ebeb20F513c42c', + ], + tokens: [ + '0x7122985656e38bdc0302db86685bb972b145bd3c', + '0xdac17f958d2ee523a2206206994597c13d831ec7', + ] + }) + }, + arbitrum: { + tvl: sumTokensExport({ + owners: [ + '0xC178AE294bC3623e6dfDF07C9ca79c6dB692f032', + '0xBA43F3C8733b0515B5C23DFF46F47Af6EB46F85C', + ], + tokens: [ + '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', + '0xaf88d065e77c8cc2239327c5edb3a432268e5831', + '0xaf88d065e77c8cc2239327c5edb3a432268e5831', + ] + }) + }, + manta: { + tvl: sumTokensExport({ + owners: [ + '0x19727db22Cba70B1feE40337Aba69D83c6741caF', + ], + tokens: [ + '0xEc901DA9c68E90798BbBb74c11406A32A70652C3', + ] + }) + }, + bsc: { + tvl: sumTokensExport({ + owners: [ + '0xBA43F3C8733b0515B5C23DFF46F47Af6EB46F85C', + '0x0A80028d73Faaee6e57484E3335BeFda0de7f455', + ], + tokens: [ + '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409', + '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', + '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409', + ] + }) + }, + polygon: { + tvl: sumTokensExport({ + owners: [ + '0x7Ab202c0161357Ca4C8FD2E09AdFcD45F3aAfb41', + ], + tokens: [ + '0x4f64a90409b8361cde7c3103e87e9c8511501c5a', + '0x57912d26a5285bc5d614bbf4e9be0e42406ede54', + ] + }) + }, +}; \ No newline at end of file From 53e174d63e60753cab4ac7a4c6ca0116566a43d0 Mon Sep 17 00:00:00 2001 From: CoreXNetwork <166182366+CoreXNetwork@users.noreply.github.com> Date: Tue, 14 May 2024 02:23:43 +0800 Subject: [PATCH 1584/2004] Add COREx Swap (#10202) Add COREx Swap TVL --- projects/corexswap/index.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 projects/corexswap/index.js diff --git a/projects/corexswap/index.js b/projects/corexswap/index.js new file mode 100644 index 00000000000..56068b34ef3 --- /dev/null +++ b/projects/corexswap/index.js @@ -0,0 +1,6 @@ +const { uniV3Export } = require("../helper/uniswapV3"); +const factory = "0x526190295AFB6b8736B14E4b42744FBd95203A3a"; + +module.exports = uniV3Export({ + core: { factory, fromBlock: 14045524 }, +}); \ No newline at end of file From 0dc3e8f1bdebd019de92dfd88aa83da7d0ede92c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sim=C3=A3o=20Pinto?= <87367287+Sk1mer12@users.noreply.github.com> Date: Mon, 13 May 2024 19:26:15 +0100 Subject: [PATCH 1585/2004] Update Davos TVL (#10198) * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js --- projects/davos-protocol/index.js | 82 ++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 20 deletions(-) diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index 05246b69446..0c7da4328c6 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -2,35 +2,77 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, } = require('../helper/unknownTokens') module.exports = { - methodology: 'The total amount of ankrMATIC in the vault', - polygon: { - tvl: sumTokensExport({ owner: '0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', tokens: [ - '0x0E9b89007eEE9c958c0EDA24eF70723C2C93dD58', // ankrMATIC + methodology: 'collateral TVL * collateral price', + arbitrum: { + tvl: sumTokensExport({ owners: ['0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', '0x04901268EE65E989852370C0bad08E1514a0C484', '0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0xEC38621e72D86775a89C7422746de1f52bbA5320', '0x04901268EE65E989852370C0bad08E1514a0C484', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4', '0x394fdEC30250A38869bcB425F96080eD6c1b756a', '0xafCA20A243e4e4936fAF76e8893128A231678677' ], tokens: [ + "0xe05A08226c49b636ACf99c40Da8DC6aF83CE5bB3", //ankrETH + "0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf", //cUSDC + "0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8", //RETH + "0x004626A008B1aCdC4c74ab51644093b155e59A23", //stEUR + "0xe148C9fC6Cb7E968BfF86Ec9A6a881662d8ED9bb", //wcUSDC + "0x5979D7b546E38E414F7E9822514be443A4800529", //wstETH + "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", //weETH + "0x2416092f143378750bb29b79eD961ab195CcEea5", //ezETH + ] }), + }, + bsc: { + tvl: sumTokensExport({ owners: ['0x4e90156997BB469c6F5975e13FF1451C9500B711', '0x87ad5Ab05d7C1E1F904e029783810A2a95702563', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], tokens: [ + "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", //ankrBNB + "0xecA88125a5ADbe82614ffC12D0DB554E2e2867C8", //vUSDC + "0xfD5840Cd36d94D7229439859C0112a4185BC0255", //vUSDT ] }), }, ethereum: { - tvl: sumTokensExport({ owners: ['0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0xb396b31599333739A97951b74652c117BE86eE1D', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d'], tokens: [ - ADDRESSES.ethereum.WSTETH, - ADDRESSES.ethereum.RETH, - '0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599', //stmatic - ADDRESSES.ethereum.sfrxETH, - ADDRESSES.ethereum.MATIC + tvl: sumTokensExport({ owners: ['0xb396b31599333739A97951b74652c117BE86eE1D', '0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xC5A7bEB1E6c61B3Aa8dF5aD32a17eb5e9B974B98', '0xf824c280De7622E468547E2d3eca7C94Ad8d7169', '0x4d7CabA383F017c4ce8B1F4493482eC0f09c9Ae7', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d', '0xD9dbd69974733481eeCD0125898C8Bb63c51f783', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0xd4E426ABA74Ece196D375e01b53A70ebeA51Cf25', '0x591e68e32eF0fbFc2DbC5916cd70fEFBF3a9F136', '0x7E6173fE3b426755B4B961c6a7686c13E3c82883', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0x47F661404716C3BB35B80C557e13F0EF490bC4Ae', '0xa6466b9827AD5D765579E3Fc9ca0d678C423fB53'], tokens: [ + '0xb396b31599333739A97951b74652c117BE86eE1D', //ceMATIC + '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb', //ankrETH + '0xA35b1B31Ce002FBF2058D22F30f95D405200A15b', //ETHx + '0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38', //osETH + '0xD9A442856C234a39a81a089C06451EBAa4306a72', //puffETH + '0xae78736Cd615f374D3085123A210448E74Fc6393', //rETH + '0x83F20F44975D03b1b09e64809B757c47f942BEeA', //sdai + '0xac3E018457B222d93114458476f3E3416Abbe38F', //sfrxETH + '0xf951E335afb289353dc249e82926178EaC7DEd78', //swETH + '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', //weETH + '0xDcEe70654261AF21C44c093C300eD3Bb97b78192', //woETH + '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', //wstETH + '0xbf5495Efe5DB9ce00f80364C8B423567e58d2110', //ezETH + '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7', //rsETH ] }), }, - arbitrum: { - tvl: sumTokensExport({ owners: ['0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4' ], tokens: [ - "0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8", //RETH - ADDRESSES.arbitrum.WSTETH + optimism: { + tvl: sumTokensExport({ owners: ['0x9c44E6A927302dA33dd76abe4558f26e31C48019', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], tokens: [ + "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D", //RETH + "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb" //wstETH ] }), }, - bsc: { - tvl: sumTokensExport({ owner: '0x4e90156997BB469c6F5975e13FF1451C9500B711', tokens: [ - "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827" + polygon: { + tvl: sumTokensExport({ owners: ['0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e', '0x9a1275304960dbc6a8d4a5795832823a7d53f30a'], tokens: [ + '0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e', //ceMATIC + '0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4', // stMATIC ] }), }, - optimism: { - tvl: sumTokensExport({ owner: '0x9c44E6A927302dA33dd76abe4558f26e31C48019', tokens: [ - "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D" //RETH + polygon_zkevm: { + tvl: sumTokensExport({ owners: ['0x687B069759b053866715542f22877DA9091f20f5', '0x93402F1908dD009C857962b45278E71C7F63647f', '0x24318b8a0CBaCc61cAdE47e5457Eea7237EB2c0E'], tokens: [ + '0x12D8CE035c5DE3Ce39B1fDD4C1d5a745EAbA3b8C', // ankrETH + '0xb23C20EFcE6e24Acca0Cef9B7B7aA196b84EC942', //rETH + '0x5d8cff95d7a57c0bf50b30b43c7cc0d52825d4a9', //wstETH + ] }), + }, + mode: { + tvl: sumTokensExport({ owners: ['0xafCA20A243e4e4936fAF76e8893128A231678677', '0xbD38B722480e2e3D540CaFC44A113d92E1015faa', '0xFdC5033b6Ef5DEDc6b5225B3Fbe3704C3F9638eE', '0xbfE8c19642929Ea9FfD1754e8DdAb880F05022f1'], tokens: [ + "0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038", //ionUSDC + "0x2416092f143378750bb29b79eD961ab195CcEea5", //ezETH + "0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3", //ionUSDT + "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a", //weETH + ] }), + }, + linea: { + tvl: sumTokensExport({ owners: ['0x7CDb0b6217A568947D3A2585F0E8AF135017d608', '0xd9BE9956C822000cc0078C16C66B7dd83E6E07C4', '0x2770cB901e6d990B4F5C35E0732821eBf9d3acb7', '0x4F50E7D6A48D78D813775d7A36717DA6A058811D'], tokens: [ + "0x333D8b480BDB25eA7Be4Dd87EEB359988CE1b30D", //meUSDC + "0xf669C3C03D9fdF4339e19214A749E52616300E89", //meUSDT + "0x2416092f143378750bb29b79eD961ab195CcEea5", //ezETH + "0x1Bf74C010E6320bab11e2e5A532b5AC15e0b8aA6", //weETH ] }), }, } From 8b35d4fa14606c75b35d57dc13d88cf02aec09a0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 00:43:25 +0530 Subject: [PATCH 1586/2004] track untangled (#10204) * Add adapter for Untangled Finance * code refactor --------- Co-authored-by: cedric-untangled --- projects/untangled/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/untangled/index.js diff --git a/projects/untangled/index.js b/projects/untangled/index.js new file mode 100644 index 00000000000..e4c3b7bf059 --- /dev/null +++ b/projects/untangled/index.js @@ -0,0 +1,22 @@ +const Contracts = { + SecuritizationManager: "0x4DCC7a839CE7e952Cd90d03d65C70B9CCD6BA4C2", + USDC: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C", +}; + +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 reserves = await api.multiCall({ abi: 'function getReserves() external view returns (uint256, uint256)', calls: pools }) + api.add(Contracts.USDC, reserves.map(i => i[0])) +} + +module.exports = { + celo: { + tvl, borrowed, + }, +}; From c8ae1d8c1ffa95962d08acc27befa632688e179e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 13 May 2024 22:00:38 +0200 Subject: [PATCH 1587/2004] Update golem.js --- projects/treasury/golem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js index 631aa9d9d66..9095d252aba 100644 --- a/projects/treasury/golem.js +++ b/projects/treasury/golem.js @@ -30,4 +30,4 @@ module.exports = mergeExports([module.exports, { }]) -//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"] \ No newline at end of file +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" From 2c7591e5ec54b4a8a088a439ab9eeffe5f0581a8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 08:30:44 +0200 Subject: [PATCH 1588/2004] minor fix --- projects/elektrik/index.js | 2 +- projects/team-finance/apiCache.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/elektrik/index.js b/projects/elektrik/index.js index bd364174a3e..1720939bb73 100644 --- a/projects/elektrik/index.js +++ b/projects/elektrik/index.js @@ -10,7 +10,7 @@ const query = `{ }` async function tvl(api) { - const { pools } = await cachedGraphQuery('elektrik', 'https://subgraph.elektrik.network/subgraphs/name/ELEKTRIK-GRAPH-V2', query) + const { pools } = await cachedGraphQuery('elektrik-1', '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, }) } diff --git a/projects/team-finance/apiCache.js b/projects/team-finance/apiCache.js index 61e74963d3c..bfcfe9630ee 100644 --- a/projects/team-finance/apiCache.js +++ b/projects/team-finance/apiCache.js @@ -21,6 +21,7 @@ async function tvl(api) { } await Promise.all(args.map(_tvl)) await setCache(project, chain, cache) + return api.getBalances() } module.exports = { From 55dbf8e162e199cc2bf17b8855b78ed29f268988 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 08:57:08 +0200 Subject: [PATCH 1589/2004] minor fix --- projects/pinksale/index.js | 51 +------------------------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/projects/pinksale/index.js b/projects/pinksale/index.js index 5f4eab9fa37..0a351c24994 100644 --- a/projects/pinksale/index.js +++ b/projects/pinksale/index.js @@ -1,51 +1,2 @@ -const sdk = require("@defillama/sdk") -const abi = require('./abi') -const config = require('./config') -const { vestingHelper } = require('../helper/unknownTokens') +module.exports = require("./apiCache") -module.exports = {} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: async (timestamp, _block, { [chain]: block }) => { - const balances = {} - const { vaults, blacklist, log_coreAssetPrices, log_minTokenValue, } = config[chain] - for (const vault of vaults) { - - let calls = [] - const { output: size } = await sdk.api.abi.call({ - target: vault, - abi: abi.getTotalLockCount, - chain, block, - }) - - const isLastVault = vault === vaults[vaults.length - 1] - const lockAbi = isLastVault ? abi.getLockAt : abi.getLock - for (let i = 0; i < +size; i++) - calls.push({ params: i }) - let { output: tokens } = await sdk.api.abi.multiCall({ - target: vault, - abi: lockAbi, - calls, - chain, block, - }) - - tokens = tokens.map(i => i.output[1]) - const balance = await vestingHelper({ - useDefaultCoreAssets: true, - blacklist, - owner: vault, - tokens, - block, chain, - log_coreAssetPrices, - log_minTokenValue, - }) - - Object.entries(balance).forEach(([token, bal]) => sdk.util.sumSingleBalance(balances, token, bal)) - } - - return balances - } - - } -}) From 225afe38069ecbd56f5ff11cffa02552b365e36f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 12:37:33 +0530 Subject: [PATCH 1590/2004] code refactor (#10207) * add mitosis * code refactor --------- Co-authored-by: steve806 --- projects/mitosis/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/mitosis/index.js diff --git a/projects/mitosis/index.js b/projects/mitosis/index.js new file mode 100644 index 00000000000..07f53e97676 --- /dev/null +++ b/projects/mitosis/index.js @@ -0,0 +1,23 @@ +const chains = ["ethereum", "arbitrum", "optimism", "mode", "manta"]; + +const WEETH_ADDRESS = { + ethereum: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + arbitrum: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", + optimism: "0x346e03f8cce9fe01dcb3d0da3e9d00dc2c0e08f0", + mode: "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", + manta: "0x77b6F99970f488cFA8bd41892900b6Ce881C2300", +}; + +const CAP_ADDRESS = { + ethereum: "0x451d791b6e9a9b8c9237bb55e58a7757342b16f9", +}; + +chains.forEach((chain) => { + module.exports[chain] = { + tvl: async (api) => { + const cap = CAP_ADDRESS[chain] ?? '0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2' + const tvl = await api.call({ abi: 'uint256:load', target: cap, }) + api.add(WEETH_ADDRESS[chain], tvl) + }, + }; +}); From 9b4ca8ac03bd64a916b67762efe2492cf9bcdb39 Mon Sep 17 00:00:00 2001 From: hoomp3 Date: Tue, 14 May 2024 03:11:38 -0400 Subject: [PATCH 1591/2004] Update Juice Finance (#10205) * feat: add new managers * feat: add staked LP to tvl --- projects/juice-finance/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/juice-finance/index.js b/projects/juice-finance/index.js index f1d0aba3298..ea92ee9dbc7 100644 --- a/projects/juice-finance/index.js +++ b/projects/juice-finance/index.js @@ -28,6 +28,13 @@ const wethCollateralManagers = [ ].map((a) => [ADDRESSES.blast.WETH, 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: { inputs: [], From 4c45d6164ffa9c2528869c0114fecb5d100582e3 Mon Sep 17 00:00:00 2001 From: Lawson Graham <45542987+LawsonGraham@users.noreply.github.com> Date: Tue, 14 May 2024 02:21:29 -0700 Subject: [PATCH 1592/2004] feat: added thala vethl tvl (#10181) * feat: added thala vethl tvl * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/thala-vethl/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/thala-vethl/index.js diff --git a/projects/thala-vethl/index.js b/projects/thala-vethl/index.js new file mode 100644 index 00000000000..d00714ddb58 --- /dev/null +++ b/projects/thala-vethl/index.js @@ -0,0 +1,27 @@ +const utils = require("../helper/utils"); +const sdk = require("@defillama/sdk"); +const { transformBalances } = require("../helper/portedTokens"); + +const THALA_API = "https://app.thala.fi/api"; +const thlAddress = "0x7fd500c11216f0fe3095d0c4b8aa4d64a4e2e04f83758462f2b127255643615::thl_coin::THL"; +const thlDecimals = 8; + +module.exports = { + timetravel: true, + start: 1692598825, + methodology: + `TVL data is pulled from the Thala's API "https://app.thala.fi/api/vethl-tvl".`, + aptos: { + tvl: () => ({}), + staking: async ({ timestamp }) => { + const response = await utils.fetchURL(`${THALA_API}/vethl-tvl?timestamp=${ timestamp }`); + const thlAmount = response.data.data * 10**thlDecimals; + + const balances = {}; + sdk.util.sumSingleBalance(balances, thlAddress, thlAmount); + + return transformBalances("aptos", balances); + }, + }, +}; + From d043d54e1c43319c6833b5de0f45af4dbe19be13 Mon Sep 17 00:00:00 2001 From: MuitoFinance <148542132+MuitoFinance@users.noreply.github.com> Date: Tue, 14 May 2024 17:30:01 +0800 Subject: [PATCH 1593/2004] add new farm (#10209) * add new farm * add new farm * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/muito-finance/index.js | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/projects/muito-finance/index.js b/projects/muito-finance/index.js index 4f286c27d06..c88669bc19a 100644 --- a/projects/muito-finance/index.js +++ b/projects/muito-finance/index.js @@ -23,28 +23,15 @@ async function tvl(api) { 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], - ], - }); - await sumTokens2({ - api, - uniV3nftsAndOwners: [ ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM2], - ], - }); - await sumTokens2({ - api, - uniV3nftsAndOwners: [ ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM3], - ], - }); - await sumTokens2({ - api, - uniV3nftsAndOwners: [ ["0x218bf598D1453383e2F4AA7b14fFB9BfB102D637", MUTO_V3_FARM4], + ["0x5752F085206AB87d8a5EF6166779658ADD455774", MUTO_V3_FARM5], ], }); await getTvl(api, MUTO_FARM); From b782b01c6fd77a05a1ea414f001b91f54d31a5b6 Mon Sep 17 00:00:00 2001 From: Pavel Shuvalov Date: Tue, 14 May 2024 14:16:14 +0400 Subject: [PATCH 1594/2004] Add native USDT vault to StormTrade (#10211) --- projects/helper/coreAssets.json | 5 +++-- projects/stormtrade/index.js | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index b61311b80da..348e400fdb9 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1277,7 +1277,8 @@ "ORC": "EQDCIEo0HUUYsAV-lTMviOd-GkSXfVPsNZMGjRaNOA_6--FD", "MEGA": "EQBf6-YoR9xylol_NwjHrLkrTFAZJCX-bsd-Xx_902OaPaBf", "WEMIX": "EQCf7Nb341dxOE3N0jimngRxGEV8T3zo-eU2EZVs_nchNhhZ", - "jUSDT": "EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA" + "jUSDT": "EQBynBO23ywHy_CgarY9NK9FTz0yDsG82PtcbSTQgGoXwiuA", + "USDT": "EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs" }, "defichain": { "DFI": "DFI", @@ -1770,4 +1771,4 @@ "RETH": "0xb5686c4f60904ec2bda6277d6fe1f7caa8d1b41a", "TBTC": "0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2" } -} +} \ No newline at end of file diff --git a/projects/stormtrade/index.js b/projects/stormtrade/index.js index af8e9a374a9..2e1eda39676 100644 --- a/projects/stormtrade/index.js +++ b/projects/stormtrade/index.js @@ -8,11 +8,12 @@ module.exports = { tvl: ( sumTokensExport({ owners: [ - 'EQDynReiCeK8xlKRbYArpp4jyzZuF6-tYfhFM0O5ulOs5H0L', // USDT vault + 'EQDynReiCeK8xlKRbYArpp4jyzZuF6-tYfhFM0O5ulOs5H0L', // jUSDT vault 'EQDpJnZP89Jyxz3euDaXXFUhwCWtaOeRmiUJTi3jGYgF8fnj', // TON-M vault + 'EQAz6ehNfL7_8NI7OVh1Qg46HsuC4kFpK-icfqK9J3Frd6CJ', // USDT vault 'EQBwfRtqEf3ZzhkeGsmXiC7hzTh1C5zZZzLgDH5VL8gENQ2A' // Notcoin pre-market vault ], - tokens: [ADDRESSES.ton.jUSDT, ADDRESSES.ton.TON] + tokens: [ADDRESSES.ton.jUSDT, ADDRESSES.ton.USDT, ADDRESSES.ton.TON] }) ) } From d5a168650f7aa8063c3f6f823066245fcc13f62a Mon Sep 17 00:00:00 2001 From: asofinance Date: Tue, 14 May 2024 19:17:32 +0900 Subject: [PATCH 1595/2004] Add Aso Finance (#10210) --- projects/asofinance/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/asofinance/index.js diff --git a/projects/asofinance/index.js b/projects/asofinance/index.js new file mode 100644 index 00000000000..06270775c13 --- /dev/null +++ b/projects/asofinance/index.js @@ -0,0 +1,8 @@ +const { compoundExports2 } = require('../helper/compound'); + +module.exports = { + blast: compoundExports2({ + comptroller: '0xD5e60A396842D6C1D5470E16DA0BfDbb7Ba47101', + cether: '0x001FF326A2836bdD77B28E992344983681071f87', + }) +}; From 87365d9961aef0ab9049024c0064d2d9af2b5a34 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 12:23:15 +0200 Subject: [PATCH 1596/2004] minor fix --- projects/helper/tokenMapping.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index c4cdc320b0a..52db5b993a6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -86,7 +86,6 @@ const fixBalancesTokens = { '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2': { coingeckoId: 'tether', decimals: 6 }, '0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2': { coingeckoId: 'ethereum', decimals: 18 }, '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, - '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0': { coingeckoId: 'tether', decimals: 18 }, // bitUSD }, cyeth: { '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, From 34550852e40229eca07f5d8df76706f557429c00 Mon Sep 17 00:00:00 2001 From: rogi-sh <46889545+rogi-sh@users.noreply.github.com> Date: Tue, 14 May 2024 13:11:15 +0200 Subject: [PATCH 1597/2004] add vanilla swap (#10214) * add vanilla swap v2 * add vanilla swap v3 * fix vanilla swap v3 * add correct chain vanilla swap v3 * fix v3 address * track v3 * minor fix --------- Co-authored-by: igorshelkovenkov Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 7 +++++++ projects/vanillaswap-v2/index.js | 3 +++ projects/vanillaswap-v3/index.js | 6 ++++++ 4 files changed, 17 insertions(+) create mode 100644 projects/vanillaswap-v2/index.js create mode 100644 projects/vanillaswap-v3/index.js diff --git a/projects/helper/env.js b/projects/helper/env.js index d258846b5a4..95f996fc2f6 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -14,6 +14,7 @@ const DEFAULTS = { RENEC_RPC: "https://api-mainnet-beta.renec.foundation:8899/", BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", // add manually, short name is b2-mainnet BTR_RPC_MULTICALL: '0xc8818aaeaBF0dF9f3f3ffF54Ab185705177A6234', + DEFICHAIN_EVM_RPC_MULTICALL: '0x7fEf77CDe3B41221Cff54B84Ea89D2EBc6b53352', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 52db5b993a6..20df5b5e157 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -35,6 +35,13 @@ const ibcMappings = { } const fixBalancesTokens = { + defichain_evm: { + '0x49febbf9626b2d39aba11c01d83ef59b3d56d2a4': { coingeckoId: "defichain", decimals: 18 }, + '0xff0000000000000000000000000000000000000d': { coingeckoId: "usd-coin", decimals: 18 }, + '0xff00000000000000000000000000000000000003': { coingeckoId: "tether", decimals: 18 }, + '0xff00000000000000000000000000000000000001': { coingeckoId: "ethereum", decimals: 18 }, + '0xff0000000000000000000000000000000000000f': { coingeckoId: "decentralized-usd", decimals: 18 }, + }, ace: { [nullAddress]: { coingeckoId: "endurance", decimals: 18 }, '0x85119527cf38f6ccf7b1b8f8fad05145358aaa81': { coingeckoId: "endurance", decimals: 18 }, diff --git a/projects/vanillaswap-v2/index.js b/projects/vanillaswap-v2/index.js new file mode 100644 index 00000000000..358b4b32709 --- /dev/null +++ b/projects/vanillaswap-v2/index.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000000..f4d2d0b1ef6 --- /dev/null +++ b/projects/vanillaswap-v3/index.js @@ -0,0 +1,6 @@ +const { uniV3Export } = require("../helper/uniswapV3"); +const factory = "0x9C444DD15Fb0Ac0bA8E9fbB9dA7b9015F43b4Dc1"; + +module.exports = uniV3Export({ + defichain_evm: { factory, fromBlock: 147204 }, +}) \ No newline at end of file From a46b92b48fc4a2f848aef8359c55bdf3375d3556 Mon Sep 17 00:00:00 2001 From: BAICE <48044642+libaice@users.noreply.github.com> Date: Tue, 14 May 2024 19:19:03 +0800 Subject: [PATCH 1598/2004] add coredao chain market deployment (#10215) --- projects/bitlen/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/bitlen/index.js b/projects/bitlen/index.js index 5a72e520a44..89c4c904d9d 100644 --- a/projects/bitlen/index.js +++ b/projects/bitlen/index.js @@ -2,11 +2,20 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const WBTC_POOL = '0x6996c446b1bfb8cc2ef7a4bc32979de613bcefe1'; const USDT_POOL = '0xad9b8b6c60ca112ab10670d87d53e6ff86ec3c2a'; -const USDC_POOL = '0x779bddc3cBc62617093CB1E27436C78DA015508E' +const USDC_POOL = '0x779bddc3cBc62617093CB1E27436C78DA015508E'; + + +const CORE_POOL = '0xfE345fF60ACB262848FBf3Cb11bf5811c8293Aa9'; +const COREBTC_POOL = '0x95fBbAf7Ad1DB1Ee6D1Ee2ea9ddca2cda23af832'; +const CORE_USDT_POOL = '0xeC225F71C065E2abD06C5C69BF0FB06C857E46cB'; +const CORE_USDC_POOL = '0x514C4876e239a248dD6d40F54491Cc1C7b2D044A'; const config = { bsquared: { pools: [WBTC_POOL, USDT_POOL, USDC_POOL,] + }, + core: { + pools: [CORE_POOL, COREBTC_POOL, CORE_USDT_POOL, CORE_USDC_POOL] } } From f89ea8fc9f75b5bd78ede6eaa947d0ca2d2e37e6 Mon Sep 17 00:00:00 2001 From: lootbotxyz <139526488+lootbotxyz@users.noreply.github.com> Date: Tue, 14 May 2024 18:22:31 +0700 Subject: [PATCH 1599/2004] add Whales-market tvl (#10213) --- projects/whales-market/index.js | 76 +++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 projects/whales-market/index.js diff --git a/projects/whales-market/index.js b/projects/whales-market/index.js new file mode 100644 index 00000000000..3b1fe2e2a37 --- /dev/null +++ b/projects/whales-market/index.js @@ -0,0 +1,76 @@ +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, tokens: + insuranceConfig.solana.tokens + }); +} + +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)}, +}; From d5a0ba11e62989a9d7aa19ce1e728e852a26497c Mon Sep 17 00:00:00 2001 From: madi-blockstars <112677856+madi-blockstars@users.noreply.github.com> Date: Tue, 14 May 2024 12:27:28 +0100 Subject: [PATCH 1600/2004] silkswap on bahamut chain (#10217) * silkswap dex on bahamut chain * v2 * first try * ftn as chain name * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/silkswap/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/silkswap/index.js diff --git a/projects/silkswap/index.js b/projects/silkswap/index.js new file mode 100644 index 00000000000..39612edf025 --- /dev/null +++ b/projects/silkswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens'); + +module.exports = uniTvlExport('ftn', '0xd0c5d23290d63e06a0c4b87f14bd2f7aa551a895') From eb17aaac82897837e34abef44196ea594824647f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 18:46:25 +0530 Subject: [PATCH 1601/2004] Vfat (#10219) * vfat [wip] * add batches * update - wip * fix * wip * wip * remove deposit calls * NFTs implementation - wip * nft multicalls * tvl done * add chain configs * code refactor --------- Co-authored-by: stepollo2 Co-authored-by: vfat --- projects/vfat/index.js | 116 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 projects/vfat/index.js diff --git a/projects/vfat/index.js b/projects/vfat/index.js new file mode 100644 index 00000000000..8565a945a6e --- /dev/null +++ b/projects/vfat/index.js @@ -0,0 +1,116 @@ +const { getLogs } = require('../helper/cache/getLogs'); +const { sumTokens2, addUniV3LikePosition } = require('../helper/unwrapLPs'); + +const config = { + base: { + factory: '0x71D234A3e1dfC161cc1d081E6496e76627baAc31', + gaugeFactory: '0x35f35cA5B132CaDf2916BaB57639128eAC5bbcb5', + gaugeFactory2: '0xD30677bd8dd15132F251Cb54CbDA552d2A05Fb08', + voter: '0x16613524e02ad97edfef371bc883f2f5d6c480a5', + NonfungiblePositionManager: '0x827922686190790b37229fd06084350E74485b72', + fromBlock: 3200567, + fromBlockSickle: 12116234, + chainName: 'base', + }, + optimism: { + factory: '0xB4C31b0f0B76b351395D4aCC94A54dD4e6fbA1E8', + gaugeFactory: '0x8391fE399640E7228A059f8Fa104b8a7B4835071', + gaugeFactory2: '0x282AC0eA96493650F1A5E5e5d20490C782F1592a', + voter: '0x41C914ee0c7E1A5edCD0295623e6dC557B5aBf3C', + NonfungiblePositionManager: '0xbB5DFE1380333CEE4c2EeBd7202c80dE2256AdF4', + fromBlock: 105896812, + fromBlockSickle: 117753454, + chainName: 'optimism', + }, +}; + + +async function tvl(api) { + const { factory, gaugeFactory, gaugeFactory2, voter, NonfungiblePositionManager, fromBlock, fromBlockSickle, chainName } = config[api.chain]; + + // Fetch logs from both the factory and the voter contracts + const [deployLogs, deployAeroLogs] = await Promise.all([ + getLogs({ + api, + target: factory, + fromBlock: fromBlockSickle, + eventAbi: 'event Deploy(address indexed admin, address sickle)', + }), + 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 + )`, + }), + ]); + + + // Get the addresses of deployed sickles + const sickles = deployLogs.map(log => log.args.sickle); + + // Separate gauges by type + const deployedAeroGauges = 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) { + acc.nft.push(gaugeAddress); + } + return acc; + }, + { lp: [], nft: [] } + ); + + const stakingTokens = await api.multiCall({ abi: 'address:stakingToken', calls: deployedAeroGauges.lp }) + const gaugeTokenMapping = {} + stakingTokens.forEach((stakingToken, index) => { + gaugeTokenMapping[deployedAeroGauges.lp[index]] = stakingToken + }) + + + // Prepare balance queries for each gauge-sickle pair + const balanceCallsLP = []; + const tokens = []; + + for (const gauge of deployedAeroGauges.lp) { + for (const sickle of sickles) { + balanceCallsLP.push({ target: gauge, params: [sickle] }); + tokens.push(gaugeTokenMapping[gauge]) + } + } + + const lpBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceCallsLP, }) + api.add(tokens, lpBals) + + + // process NFT gauges + const pools = await api.multiCall({ abi: 'address:pool', calls: deployedAeroGauges.nft }) + const slot0s = await api.multiCall({ abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)', calls: pools }) + let i = 0 + + await Promise.all(deployedAeroGauges.nft.map(async (gauge, i) => { + 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 }) + positions.forEach(position => addUniV3LikePosition({ ...position, tick, api })) + })) + + // unwrap uni v2 like LPs + return sumTokens2({ api, resolveLP: true, }) +} + + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl } +}) \ No newline at end of file From b222bff8fa1bc117323f3951a85d0d97c23f2222 Mon Sep 17 00:00:00 2001 From: CropperFinance <85000094+CropperFinance@users.noreply.github.com> Date: Tue, 14 May 2024 15:22:18 +0200 Subject: [PATCH 1602/2004] Update Cropper TVL to track new CLMM (#10218) * Update Cropper TVL to track new CLMM * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cropper-CL/index.js | 182 +++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 projects/cropper-CL/index.js diff --git a/projects/cropper-CL/index.js b/projects/cropper-CL/index.js new file mode 100644 index 00000000000..c4ba074036a --- /dev/null +++ b/projects/cropper-CL/index.js @@ -0,0 +1,182 @@ +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: [] +} From 482b35919ade5f89de269f0d25198e739a4dd088 Mon Sep 17 00:00:00 2001 From: tuco-gordian <125207884+tuco-gordian@users.noreply.github.com> Date: Tue, 14 May 2024 16:23:37 +0300 Subject: [PATCH 1603/2004] Added CetoSwap tvl (#10191) --- projects/ceto-swap/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/ceto-swap/index.js diff --git a/projects/ceto-swap/index.js b/projects/ceto-swap/index.js new file mode 100644 index 00000000000..65de715ab2c --- /dev/null +++ b/projects/ceto-swap/index.js @@ -0,0 +1,9 @@ +const { getUniTVL } = require('../helper/unknownTokens'); + +const factory = '0xf50c8e257ccf3e2b58651f78e3c2dc83446d9c47'; + +module.exports = { + manta: { + tvl: getUniTVL({ factory, useDefaultCoreAssets: true, fetchBalances: true }), + }, +}; From 223c57fed8e6f42751fa50195f38b09543362ad4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 18:11:21 +0200 Subject: [PATCH 1604/2004] fix adapters --- projects/curve/contracts.json | 6 ++++-- projects/kinetix-v3/index.js | 18 +++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json index e86ee42f55e..66c36b1cfc9 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -111,9 +111,11 @@ } }, "celo": { + "addressProvider": "0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98", "registriesMapping": { "stableFactory": "0x5277a0226d10392295e8d383e9724d6e416d6e6c" - } + }, + "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" }, "base": { "wrapped": "0x4200000000000000000000000000000000000006", @@ -163,4 +165,4 @@ "metapoolBases": {}, "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" } -} +} \ No newline at end of file diff --git a/projects/kinetix-v3/index.js b/projects/kinetix-v3/index.js index 9dab1927951..48e18f9b3dd 100644 --- a/projects/kinetix-v3/index.js +++ b/projects/kinetix-v3/index.js @@ -1,8 +1,12 @@ -const { uniV3Export } = require('../helper/uniswapV3') +const { uniV3GraphExport } = require('../helper/uniswapV3') -module.exports = uniV3Export({ - kava: { - factory: '0x2dBB6254231C5569B6A4313c6C1F5Fe1340b35C2', - fromBlock: 6069472 - }, -}) +module.exports = { + kava: { + tvl: uniV3GraphExport({ + // // factory: '0x2dBB6254231C5569B6A4313c6C1F5Fe1340b35C2', + // // fromBlock: 6069472 + graphURL: 'https://kava-graph-node.metavault.trade/subgraphs/name/kinetixfi/v3-subgraph', + name: 'kinetixfi/kava-v3', + }) + } +} From 98faa9d49cdbe9883372420a87ac4a2468d2ed07 Mon Sep 17 00:00:00 2001 From: Deon Achuo <57288805+Sir-Deon@users.noreply.github.com> Date: Tue, 14 May 2024 19:15:29 +0100 Subject: [PATCH 1605/2004] Updated baki address (#10220) --- projects/baki/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/baki/index.js b/projects/baki/index.js index 550e60f1219..cdf6bdfc043 100644 --- a/projects/baki/index.js +++ b/projects/baki/index.js @@ -1,4 +1,4 @@ -const bakiAddress = "0x98e76679064d50a45647c452a0b2c4cb1137f28c"; +const bakiAddress = "0x1209c35BDA1bC7b9edaF4C2f60Aa034B0530240b"; const { sumTokensExport } = require('../helper/unwrapLPs') const ADDRESSES = require('../helper/coreAssets.json') From 75e76aca207d1941a8f64a814fc29c3c5ba95e7a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 14 May 2024 20:50:07 +0200 Subject: [PATCH 1606/2004] reset teahouse cache --- projects/teahouse-v3/index.js | 2 +- projects/teahouse/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/teahouse-v3/index.js b/projects/teahouse-v3/index.js index 53240386c1e..2b1d0d1b8f6 100644 --- a/projects/teahouse-v3/index.js +++ b/projects/teahouse-v3/index.js @@ -10,7 +10,7 @@ async function getVaultContractsAddress(chain) { let pairVault = []; let portVault = []; let starknetPairVault = []; - const { vaults } = await getConfig("teahouse/v3", teahouseVaultAPI); + const { vaults } = await getConfig("teahouse/v3_reset_cache", teahouseVaultAPI); vaults.forEach((element) => { // permissionless vaults if (element.isDeFi == true && element.isActive == true) { diff --git a/projects/teahouse/index.js b/projects/teahouse/index.js index 3d590766988..4e54008cf90 100644 --- a/projects/teahouse/index.js +++ b/projects/teahouse/index.js @@ -8,7 +8,7 @@ const teahouseVaultAPI = "https://vault-content-api.teahouse.finance/vaults"; // get vault contract addresses from teahouse api async function getVaultContractsAddress(chain) { let htAddress = []; - const { vaults } = await getConfig("teahouse/v1", teahouseVaultAPI); + const { vaults } = await getConfig("teahouse/v1_reset_cache", teahouseVaultAPI); vaults.forEach((element) => { // v2 vaults if (element.isDeFi == false && element.isActive == true) { From 13b6b4bbe9538fc1f2cec381c7ef2a7c315dd111 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 14 May 2024 19:58:49 +0100 Subject: [PATCH 1607/2004] add pxeth blast --- projects/helper/tokenMapping.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 20df5b5e157..c4a6bee74f6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -75,6 +75,7 @@ const fixBalancesTokens = { }, blast: { '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, }, solana: { 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, From ccfc88fc43245448d98f7278c4dbf98f607fd906 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 14 May 2024 22:07:17 +0100 Subject: [PATCH 1608/2004] add blast deus --- projects/helper/tokenMapping.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index c4a6bee74f6..8c7ea4247f3 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -76,6 +76,7 @@ const fixBalancesTokens = { blast: { '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, + '0xde55b113a27cc0c5893caa6ee1c020b6b46650c0': { coingeckoId: "deus-finance-2", decimals: 18 }, }, solana: { 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, From acd53872b85176d7d8946eb4b0f7bf071e00440a Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Tue, 14 May 2024 22:11:28 +0100 Subject: [PATCH 1609/2004] add note --- projects/helper/tokenMapping.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 8c7ea4247f3..6d38898e4df 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -74,9 +74,9 @@ const fixBalancesTokens = { KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, blast: { - '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, - '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, - '0xde55b113a27cc0c5893caa6ee1c020b6b46650c0': { coingeckoId: "deus-finance-2", decimals: 18 }, + '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, //pirex eth + '0xde55b113a27cc0c5893caa6ee1c020b6b46650c0': { coingeckoId: "deus-finance-2", decimals: 18 }, // deus }, solana: { 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, From 838d97d80b305d4bd12113b290ab73a089478511 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 15 May 2024 03:36:47 +0100 Subject: [PATCH 1610/2004] add new wallets --- projects/treasury/mango.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/treasury/mango.js b/projects/treasury/mango.js index 9e76577d8f7..e87ae432162 100644 --- a/projects/treasury/mango.js +++ b/projects/treasury/mango.js @@ -4,6 +4,17 @@ module.exports = treasuryExports({ solana: { owners: [ '5tgfd6XgwiXB9otEnzFpXK11m7Q7yZUaAJzWK4oT5UGF', + '9RGoboEjmaAjSCXsKi6p6zJucnwF3Eg5NUN9jPS6ziL3', + '3H5PPK1bhHKmCAG5zwUyxpKDijES3H9uRAUCBrW8rGPX', + '5sD9b7DR8E7nvNfqoBoH3t8s8NdwtdDVxjf4NB9uaxG9', + 'DdZWj3nWSzJMMv1LMTHm9gTJ37wHLNXTMzqjWCokvKEn', + 'VrT8f16NLADvYR73YiDMwxZREPbJgiZqLvN6HLQj4hR', + 'DZZWE1PR8qTkH3dLTrD7kcNEs6xx3GmSuFbzW29dyHv7', + 'BExGoGVK6k6mUL6oHmabbc2EtwNqhJUeNoJWijF6t3ZB', + '9so7UTo6b6LXBSqdDfh18hjVj8Ng5BmLbYXLB7UrhaaJ', + '9so7UTo6b6LXBSqdDfh18hjVj8Ng5BmLbYXLB7UrhaaJ', + '58apybWwtWwgVfARs7uJ75Vs1csPimnCCFth7cKwTJAe', + '7hqfhmXK6uXQKmNjUVEJo5acDMLcnyN9p9bZ5Dmnifde' ], ownTokens: [ 'MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac', // MNGO From 222e55a9ade0cd4bedde64a056848f9a1cddd5e3 Mon Sep 17 00:00:00 2001 From: hxzaifa13 <121883195+hxzaifa13@users.noreply.github.com> Date: Tue, 14 May 2024 23:52:34 -0400 Subject: [PATCH 1611/2004] Blackwing: add more pendle tokens (#10222) * add blackwing project * add pendle token * nit * add pendle tokens --------- Co-authored-by: Huzaifa Nasir Co-authored-by: Huzaifa Nasir --- projects/blackwing/index.js | 52 ++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index 4f0000e7387..a3e6beeefd9 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -8,26 +8,70 @@ const BLACKWING_VAULT_BSC = '0xD00789260984160a64DcF19A03896DfF73BF4514' const ARBITRUM_WEETH = "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe"; 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 = "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee"; const ETHEREUM_MAINNET_EZETH = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; -const ETHEREUM_MAINNET_PENDLE = "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa"; +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"; + module.exports = { arbitrum: { - tvl: sumTokensExport({ tokens: [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH, ARBITRUM_EZETH, ARBITRUM_WEETH,], owner: BLACKWING_VAULT_ARBITRUM, fetchCoValentTokens: true, }), + 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 + 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_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, ], owner: BLACKWING_VAULT_ETH, fetchCoValentTokens: true, }) }, bsc: { tvl: sumTokensExport({ - tokens: [ADDRESSES.bsc.USDT, ADDRESSES.bsc.WBNB,], owner: BLACKWING_VAULT_BSC, fetchCoValentTokens: true, + tokens: [ + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.WBNB], + owner: BLACKWING_VAULT_BSC, fetchCoValentTokens: true, }) } } From 53983973c09a9f32cee668cbd185680911961ce2 Mon Sep 17 00:00:00 2001 From: hamur dev <122794657+tpktpj@users.noreply.github.com> Date: Tue, 14 May 2024 23:55:03 -0400 Subject: [PATCH 1612/2004] feat: add bsc and arbitrum main market (#10224) Co-authored-by: jsmjsm --- projects/avalon-finance/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js index ce185e4a379..578bf4a14a5 100644 --- a/projects/avalon-finance/index.js +++ b/projects/avalon-finance/index.js @@ -5,11 +5,14 @@ const { mergeExports } = require('../helper/utils') const mainMarket = { merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), + btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), + arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F'], { v3: true }), + bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39'], { v3: true }), } + const innovativeMarket = { merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682'], { v3: true }), - btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), } module.exports = mergeExports(mainMarket, innovativeMarket) -module.exports.methodology = methodologies.lendingMarket \ No newline at end of file +module.exports.methodology = methodologies.lendingMarket From bf0046b950bec104e14ae5ade900ceeafaa36005 Mon Sep 17 00:00:00 2001 From: Dan Half-Stack Octavian Date: Wed, 15 May 2024 06:57:21 +0300 Subject: [PATCH 1613/2004] Add YieldNest ynETH token TVL adapter for total ETH managed by ynETH (#10225) --- projects/yieldnest/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/yieldnest/index.js diff --git a/projects/yieldnest/index.js b/projects/yieldnest/index.js new file mode 100644 index 00000000000..353c76b4207 --- /dev/null +++ b/projects/yieldnest/index.js @@ -0,0 +1,14 @@ + +const ADDRESSES = require('../helper/coreAssets.json') + +const token = '0x09db87a538bd693e9d08544577d5ccfaa6373a48' + +module.exports = { + ethereum: { + tvl: async (api) => { + const ethBalance = await api.call({ abi: 'uint256:totalAssets', target: token }) + api.add(ADDRESSES.null, ethBalance) + return api.getBalances() + } + }, +} \ No newline at end of file From 5211483a53b18a3e5210fadee1e414449c0581ee Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Wed, 15 May 2024 00:08:13 -0400 Subject: [PATCH 1614/2004] Add blast, scroll, Update fantom, linea, polygon zkevm in tvl cals (#10223) * Add Base, Celo, and Evmos to tvl calcs * Add Blast, Scroll, Spiritswap on Fantom, Metavault and Uni on Linea, PancakeSwap and QuickSwap on Polygon zkEVM --------- Co-authored-by: Tatyana Stemkovski --- projects/ichifarm/index.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index 35aa52695a8..4d6adbe0c81 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -46,6 +46,17 @@ const config = { { factory: '0x1Cc05B01f2e52ae3bb29F7A0059Fe112C60aA3f4', fromBlock: 147199960, isAlgebra: false, }, // Horiza ], }, + base: { + vaultConfigs: [ + { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 10607512, isAlgebra: false, }, // Equalizer + ] + }, + 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, }, @@ -53,11 +64,6 @@ const config = { { factory: '0x065356d9f628cDd1bb9F2384E2972CdAC50f51b7', fromBlock: 34595133, isAlgebra: false, }, // Uni v3 ], }, - base: { - vaultConfigs: [ - { factory: '0xfBf38920cCbCFF7268Ad714ae5F9Fad6dF607065', fromBlock: 10607512, isAlgebra: false, }, // Equalizer - ] - }, celo: { vaultConfigs: [ { factory: '0x9FAb4bdD4E05f5C023CCC85D2071b49791D7418F', fromBlock: 24256269, isAlgebra: false, }, // Uniswap v3 @@ -81,6 +87,7 @@ const config = { fantom: { vaultConfigs: [ { factory: '0x932E1908461De58b0891E5022431dc995Cb95C5E', fromBlock: 74304207, isAlgebra: false, }, // Equalizer + { factory: '0x89FFdaa18b296d9F0CF02fBD88e5c633FEFA5f34', fromBlock: 79156621, isAlgebra: true, }, // Spiritswap ] }, // hedera: { @@ -88,9 +95,16 @@ const config = { // { factory: '0xb62399d23d1c81f08ea445a42d7f15cc12090a71', fromBlock: 59010832, isAlgebra: false, }, // Saucerswap // ] // }, + // kava: { + // vaultConfigs: [ + // { factory: '0x2d2c72C4dC71AA32D64e5142e336741131A73fc0', fromBlock: 8864638, isAlgebra: false, }, // Kinetix + // ] + // }, linea: { vaultConfigs: [ { factory: '0x0248b992ac2a75294b05286E9DD3A2bD3C9CFE4B', fromBlock: 1599561, isAlgebra: true, }, // Lynex + { factory: '0x2592686212C164C1851dF2f62c5d5EC50600195E', fromBlock: 4148753, isAlgebra: false, }, // Metavault + { factory: '0x6E3eB904966B0158833852cAFD1200c171772b53', fromBlock: 3976012, isAlgebra: false, }, // Uniswap ] }, mantle: { From e2f2105b45f6c11be2affa271bf5dc11392db9cb Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 15 May 2024 10:45:31 +0100 Subject: [PATCH 1615/2004] add USDT to smiley (#10229) --- projects/bitsmiley-io/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/bitsmiley-io/index.js b/projects/bitsmiley-io/index.js index e9bc375b1d8..462e12db1b0 100644 --- a/projects/bitsmiley-io/index.js +++ b/projects/bitsmiley-io/index.js @@ -4,7 +4,7 @@ async function tvl(api) { return sumTokens2({ owners: [ '0x37fc73b4dda9f7263926590838e32e05e4e051e9', - ], tokens: ['0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f'], api, }) + ], tokens: ['0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f', '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2'], api, }) //wbtc and usdt } module.exports = { From 557f49d9840468e0f22dac54de25d77d1abccf32 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 15 May 2024 13:33:56 +0200 Subject: [PATCH 1616/2004] reduce rpc call --- .../utils/solana/layouts/mixed-layout.js | 16 +++++++++++++++ projects/hub3-ee/index.js | 20 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/projects/helper/utils/solana/layouts/mixed-layout.js b/projects/helper/utils/solana/layouts/mixed-layout.js index dda09247208..9d414f14c8b 100644 --- a/projects/helper/utils/solana/layouts/mixed-layout.js +++ b/projects/helper/utils/solana/layouts/mixed-layout.js @@ -194,6 +194,22 @@ const TokenSwapLayout = BufferLayout.struct([ 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"), +]) + +console.log(Hub3Layout.span) + const eSOL_feeFields = [u64('denominator'), u64('numerator')]; const eSOL_rateOfExchangeFields = [u64('denominator'), u64('numerator')]; diff --git a/projects/hub3-ee/index.js b/projects/hub3-ee/index.js index af821cde561..1ae76f86a86 100644 --- a/projects/hub3-ee/index.js +++ b/projects/hub3-ee/index.js @@ -1,9 +1,9 @@ const { PublicKey } = require("@solana/web3.js"); -const { sumTokens2, getProvider, } = require("../helper/solana"); +const { sumTokens2, getProvider, getConnection, } = require("../helper/solana"); const { Program } = require("@project-serum/anchor"); const sdk = require('@defillama/sdk') -async function tvl() { +async function _tvl() { const provider = getProvider(); const programId = new PublicKey("2pi53pUUC5S4zyUU6Wrbe6EfYXS9LNcpikpwPFahtQQw"); const program = new Program(sharesIDL, programId, provider); @@ -11,9 +11,25 @@ async function tvl() { accounts = accounts.filter(i => +i.account.holders > 0) accounts.sort((a, b) => +b.account.holders - a.account.holders) sdk.log(accounts.length) + console.log(accounts.slice(0, 10).map(i => i.account.span)) return sumTokens2({ solOwners: accounts.map(i => i.publicKey) }) } +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: { From 0426917beb52017ff0f9d31a6b64e4fcd7061760 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 15 May 2024 12:56:15 +0100 Subject: [PATCH 1617/2004] add hallmark sonne exploit (#10231) --- projects/sonne-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/sonne-finance/index.js b/projects/sonne-finance/index.js index 5528671d2c6..9b9471e8425 100644 --- a/projects/sonne-finance/index.js +++ b/projects/sonne-finance/index.js @@ -10,4 +10,7 @@ const config = { Object.keys(config).forEach(chain => { module.exports[chain] = compoundExports2({ comptroller: config[chain] }) }) -module.exports.optimism.staking = staking(["0xdc05d85069dc4aba65954008ff99f2d73ff12618", "0x41279e29586eb20f9a4f65e031af09fced171166"], "0x1DB2466d9F5e10D7090E7152B68d62703a2245F0") \ No newline at end of file +module.exports.optimism.staking = staking(["0xdc05d85069dc4aba65954008ff99f2d73ff12618", "0x41279e29586eb20f9a4f65e031af09fced171166"], "0x1DB2466d9F5e10D7090E7152B68d62703a2245F0") +module.exports.hallmarks = [ + [1715731260,"donation attack exploit"], + ] \ No newline at end of file From 3785186187e6b730bbaedb42ffc1d5c058a1b3be Mon Sep 17 00:00:00 2001 From: Daniel <16984675+DanielRX@users.noreply.github.com> Date: Wed, 15 May 2024 15:47:40 +0100 Subject: [PATCH 1618/2004] Add TVL for mangrove (#10221) --- projects/mangrove/abi.json | 4 +++ projects/mangrove/index.js | 50 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 projects/mangrove/abi.json create mode 100644 projects/mangrove/index.js diff --git a/projects/mangrove/abi.json b/projects/mangrove/abi.json new file mode 100644 index 00000000000..4ed112e9666 --- /dev/null +++ b/projects/mangrove/abi.json @@ -0,0 +1,4 @@ +{ + "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 new file mode 100644 index 00000000000..30240ab1cbb --- /dev/null +++ b/projects/mangrove/index.js @@ -0,0 +1,50 @@ +const abi = require("./abi.json"); +const { BigNumber } = require("bignumber.js"); + +const mgvReader = "0x26fD9643Baf1f8A44b752B28f0D90AEBd04AB3F8"; + +const getOffers = async (api, { 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) { + 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, { tkn0, tkn1, tickSpacing }); + const tkn1TPV = await getOffers(api, { tkn0: tkn1, tkn1: tkn0, tickSpacing }); + + api.addTokens([tkn0, tkn1], [tkn0TPV, tkn1TPV]); + } +} + +module.exports = { + blast: { + tvl: getMangroveTVL, + }, + misrepresentedTokens: false, + methodology: "TVL is calculated by getting the total promised liquidity on the orderbook on a specific block.", + start: 1708992000, +}; From 31a837520f89a49d528e574cf48046c988c3e514 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 15 May 2024 19:48:57 +0500 Subject: [PATCH 1619/2004] add lynex-algebra pools (#10233) --- projects/clip-finance/index.js | 157 ++++++++++++++++++--------------- 1 file changed, 88 insertions(+), 69 deletions(-) diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js index 7f50e4f7e81..618798dd484 100644 --- a/projects/clip-finance/index.js +++ b/projects/clip-finance/index.js @@ -8,96 +8,116 @@ const config = { vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", }, base: { - vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0" - } -} + vaultRegistry: "0x5A9B5E22be45d04c753863A916c4311f07bd4dF0", + }, +}; const VaultType = { PancakeV3: 1, - Stargate : 2, + Stargate: 2, MendiLending: 3, - Aero : 4, + Aero: 4, + LynexAlgebra: 5, }; const typesDataInterfaces = { - any : ["uint256"], // has only vaultType - [VaultType.PancakeV3] : ["uint256", "address"], // vaultType, v3 pool address - [VaultType.Stargate] : ["uint256"], // vaultType + any: ["uint256"], // has only vaultType + [VaultType.PancakeV3]: ["uint256", "address"], // vaultType, v3 pool address + [VaultType.Stargate]: ["uint256"], // vaultType [VaultType.MendiLending]: ["uint256", "address"], //vaultType, mendiLeverage address - [VaultType.Aero] : ["uint256"] //vaultType + [VaultType.Aero]: ["uint256"], //vaultType + [VaultType.LynexAlgebra]: ["uint256", "address"], // vaultType, algebra pool address }; const tvl = async (api) => { - const { vaultRegistry } = config[api.chain] - const vaultDatas = await api.call({ abi: abis.getVaults, target: vaultRegistry }) + 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 + //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)})); - + const vaults = vaultDatas.map((i) => ({ ...i, vaultType: decoder.decode(typesDataInterfaces.any, i.data) })); + //ammVaults - const ammVaults = vaults.filter(i => i.vaultType == VaultType.PancakeV3).map(i => i.vault); - const ammPools = vaults.filter(i => i.vaultType == VaultType.PancakeV3).map(i => '0x' + i.data.slice(-40)) - 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 }) + const appTypes = [VaultType.PancakeV3, VaultType.LynexAlgebra]; + const ammVaults = vaults.filter((i) => appTypes.includes(Number(i.vaultType.toString()))).map((i) => i.vault); + const ammPools = vaults + .filter((i) => appTypes.includes(Number(i.vaultType.toString()))) + .map((i) => "0x" + i.data.slice(-40)); + 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) - }) - + api.add(ammToken0s[i], pool.total0); + api.add(ammToken1s[i], pool.total1); + }); + //Aerodrom Vaults - const aerodromVaults = vaults.filter(i => i.vaultType == VaultType.Aero).map(i => i.vault) - const tokenAs = await api.multiCall({ abi: 'address:tokenA', calls: aerodromVaults }) - - const tokenBs = await api.multiCall({ abi: 'address:tokenB', calls: aerodromVaults }) - const farms = await api.multiCall({ abi: 'address:farm', calls: aerodromVaults }) - - const lpTokens = await api.multiCall({ abi: 'address:lpToken', calls: aerodromVaults }) - - const liquidities = await api.multiCall({ abi: abis.balanceOf, calls: farms.map((vault, i) => ({ - target: vault, - params: aerodromVaults[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: aerodromVaults[i] - }))}) - - const tokenBBalances = await api.multiCall({ abi: abis.balanceOf, calls: tokenBs.map((tokenB, i) => ({ - target: tokenB, - params: aerodromVaults[i] - }))}) - + const aerodromVaults = vaults.filter((i) => i.vaultType == VaultType.Aero).map((i) => i.vault); + const tokenAs = await api.multiCall({ abi: "address:tokenA", calls: aerodromVaults }); + + const tokenBs = await api.multiCall({ abi: "address:tokenB", calls: aerodromVaults }); + const farms = await api.multiCall({ abi: "address:farm", calls: aerodromVaults }); + + const lpTokens = await api.multiCall({ abi: "address:lpToken", calls: aerodromVaults }); + + const liquidities = await api.multiCall({ + abi: abis.balanceOf, + calls: farms.map((vault, i) => ({ + target: vault, + params: aerodromVaults[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: aerodromVaults[i], + })), + }); + + const tokenBBalances = await api.multiCall({ + abi: abis.balanceOf, + calls: tokenBs.map((tokenB, i) => ({ + target: tokenB, + params: aerodromVaults[i], + })), + }); + aerodromVaults.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])) + 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])); } - }) + }); //Mendi Vaults - const mendiVaults = vaults.filter(i => i.vaultType == VaultType.MendiLending).map(i => i.vault) - const depositTokens = await api.multiCall({abi: 'address:depositToken', calls: mendiVaults}) - const TVLs = await api.multiCall({abi: 'uint256:TVL', calls: mendiVaults}) + const mendiVaults = vaults.filter((i) => i.vaultType == VaultType.MendiLending).map((i) => i.vault); + const depositTokens = await api.multiCall({ abi: "address:depositToken", calls: mendiVaults }); + const TVLs = await api.multiCall({ abi: "uint256:TVL", calls: mendiVaults }); mendiVaults.forEach((_, i) => { - api.add(depositTokens[i], TVLs[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, }) + 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 = { @@ -114,10 +134,9 @@ Object.keys(config).forEach((chain) => { }); const abis = { - getTotalAmounts: - "function getTotalAmounts() public view returns (uint256 total0, uint256 total1, uint128 liquidity)", + getTotalAmounts: "function getTotalAmounts() public 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)" + balanceOf: "function balanceOf(address) view returns (uint256)", }; From cebcffb1b7dc96f98f221413de25e3251e43c87a Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 15 May 2024 23:19:46 +0800 Subject: [PATCH 1620/2004] update nerve bridge (#10232) --- projects/nervenetworkbridge/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/nervenetworkbridge/index.js b/projects/nervenetworkbridge/index.js index dbc19fa41f1..633d888b889 100644 --- a/projects/nervenetworkbridge/index.js +++ b/projects/nervenetworkbridge/index.js @@ -33,8 +33,17 @@ const getBridgeContract = { 'ethereumclassic': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', 'base': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', 'bitgert': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', - 'scroll': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5' + 'scroll': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'manta': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'zeta': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'mode': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'blast': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'merlin': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'xlayer': '0x3758AA66caD9F2606F1F501c9CB31b94b713A6d5', + 'pulse': '0x0035cCA7Ff94156AEFcdd109bFD0C25083c1d89b' } + + const tronBridgeContract = 'TXeFBRKUW2x8ZYKPD13RuZDTd9qHbaPGEN'; let tokensConfTest; From aa9b5534b150ba7912494a8ff116f8de712d620c Mon Sep 17 00:00:00 2001 From: kavsky02 <95619352+kavsky02@users.noreply.github.com> Date: Wed, 15 May 2024 18:25:30 +0200 Subject: [PATCH 1621/2004] Update assetToAddressMappingArbitrum.json for Pendle/Panpie integration (#10234) * Update assetToAddressMappingArbitrum.json * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- .../mappings/assetToAddressMappingArbitrum.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json b/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json index fa011a2cd4f..f5d72b8ee7a 100644 --- a/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json +++ b/projects/deltaprime/mappings/assetToAddressMappingArbitrum.json @@ -17,7 +17,6 @@ "FRAX": "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F", "GLP": "0x5402B5F40310bDED796c7D0F3FF6683f5C0cFfdf", "MAGIC": "0x539bdE0d7Dbd336b79148AA742883198BBF60342", - "wstETH": "0x5979D7b546E38E414F7E9822514be443A4800529", "GM_ETH_WETH_USDC": "0x70d95587d40A2caf56bd97485aB3Eec10Bee6336", "GM_ARB_ARB_USDC": "0xC25cEf6061Cf5dE5eb761b50E4743c1F5D7E5407", "GM_LINK_LINK_USDC": "0x7f1fa204bb700853D36994DA19F830b6Ad18455C", @@ -33,5 +32,14 @@ "YY_WOMBEX_DAI": "0x1817fE376740b53CAe73224B7F0a57F23DD4C9b5", "SUSHI_DPX_ETH_LP": "0x0C1Cf6883efA1B496B01f654E247B9b419873054", "MOO_SUSHI_DPX_ETH_LP": "0x4D323f77c32EDdC62BF8eAbA11E5C573FD0a2ccd", - "MOO_GMX": "0x5B904f19fb9ccf493b623e5c8cE91603665788b0" -} \ No newline at end of file + "MOO_GMX": "0x5B904f19fb9ccf493b623e5c8cE91603665788b0", + "ezETH": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "wstETH": "0x5979D7b546E38E414F7E9822514be443A4800529", + "weETH": "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", + "rsETH": "0x4186BFC76E2E237523CBC30FD220FE055156b41F", + "PENDLE_EZ_ETH_LP": "0xecCDC2C2191d5148905229c5226375124934b63b", + "PENDLE_WSTETH_LP": "0xdb0e1D1872202A81Eb0cb655137f4a937873E02f", + "PENDLE_E_ETH_LP": "0x264f4138161aaE16b76dEc7D4eEb756f25Fa67Cd", + "PENDLE_RS_ETH_LP": "0xe3B327c43b5002eb7280Eef52823698b6cDA06cF", + "PENDLE_SILO_ETH_WSTETH_LP": "0xCcCC7c80c9Be9fDf22e322A5fdbfD2ef6ac5D574" +} From ebd8aada4d68a62925239f39cb5182f5b5033aa2 Mon Sep 17 00:00:00 2001 From: Bit-Genie <168055389+Bit-Genie@users.noreply.github.com> Date: Thu, 16 May 2024 00:27:00 +0800 Subject: [PATCH 1622/2004] Add new contracts (#10228) Co-authored-by: Arvin --- projects/bitgenie/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/bitgenie/index.js b/projects/bitgenie/index.js index ac0b4211820..8653bd7faff 100644 --- a/projects/bitgenie/index.js +++ b/projects/bitgenie/index.js @@ -8,6 +8,10 @@ const stakingContracts = [ "0x19a0D0b1734bdB167D393e7BB7a57418e3a8cCA8", "0x1DBa95577DFe76d8e86af00aEB614479cb7917D2", "0xC795A8D5f83F5A172f606AC2516276Ee7DF63407", + "0x1d5EB4Cba6D15d91AEd92988d9F1E12e33CCF4D1", + "0x0b0659bC906cB62179FDD2B6008BA729baa79126", + "0xF57A28168401f9c386c7723C2BA4e579A2F3818a", + "0x82cf7644BD07002217EFB2563D361a0b0c245978", ]; From 87ed9577927baed2ee42c45a9d5df99738930de8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 15 May 2024 22:03:35 +0530 Subject: [PATCH 1623/2004] Add new pool and fix minor issues (#10235) * feat: add new pool * minor fix --------- Co-authored-by: Rahul Sethuram --- projects/ionic/index.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/ionic/index.js b/projects/ionic/index.js index e7de53d4a3f..fd64d1f9e15 100644 --- a/projects/ionic/index.js +++ b/projects/ionic/index.js @@ -1,5 +1,9 @@ + const { compoundExports2 } = require("../helper/compound"); +const { mergeExports } = require("../helper/utils"); -module.exports = { - mode: compoundExports2({ comptroller: '0xfb3323e24743caf4add0fdccfb268565c0685556'}) -} \ No newline at end of file +module.exports = mergeExports([{ + mode: compoundExports2({ comptroller: '0xfb3323e24743caf4add0fdccfb268565c0685556' }) +}, { + mode: compoundExports2({ comptroller: '0x8fb3d4a94d0aa5d6edaac3ed82b59a27f56d923a' }) +}]) \ No newline at end of file From d67f57641b931a04afe05affe4c52605b6544e26 Mon Sep 17 00:00:00 2001 From: johnnyonline Date: Wed, 15 May 2024 22:08:56 +0300 Subject: [PATCH 1624/2004] feat: add afCVX TVL (#10236) --- projects/asymmetry-fi/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/projects/asymmetry-fi/index.js b/projects/asymmetry-fi/index.js index 646e21aea3c..65032b5032d 100644 --- a/projects/asymmetry-fi/index.js +++ b/projects/asymmetry-fi/index.js @@ -11,6 +11,9 @@ const AFETH = '0x0000000016E6Cb3038203c1129c8B4aEE7af7a11' const CVX = ADDRESSES.ethereum.CVX const VOTIUM = '0x00000069aBbB0B1Ad6975bcF753eEe15D318A0BF' +// afCVX +const AFCVX = '0x8668a15b7b023Dc77B372a740FCb8939E15257Cf' + async function tvl(api) { const tokensAndOwners = [ @@ -26,13 +29,19 @@ async function tvl(api) { [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 }) } module.exports = { - methodology: 'counts tvl on both afETH and safETH', + methodology: 'counts tvl on afETH, safETH, and afCVX', ethereum: { tvl, }, From 799d05182ded67a84ee635c9f50cda2432e88c75 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 08:47:07 +0200 Subject: [PATCH 1625/2004] track bouncebit bitswap --- projects/bitswap-bb-v2/index.js | 3 +++ projects/bitswap-bb-v3/index.js | 5 +++++ projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 3 +++ 5 files changed, 13 insertions(+) create mode 100644 projects/bitswap-bb-v2/index.js create mode 100644 projects/bitswap-bb-v3/index.js diff --git a/projects/bitswap-bb-v2/index.js b/projects/bitswap-bb-v2/index.js new file mode 100644 index 00000000000..377144b9dad --- /dev/null +++ b/projects/bitswap-bb-v2/index.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000000..5cdaf9a9187 --- /dev/null +++ b/projects/bitswap-bb-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + bouncebit: { factory: '0x30a326d09E01d7960a0A2639c8F13362e6cd304A', fromBlock: 218667, }, +}) \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 516a71e3ae9..0b3671661b5 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -39,6 +39,7 @@ "bone", "borrowed", "bostrom", + "bouncebit", "bsc", "bsquared", "btr", diff --git a/projects/helper/env.js b/projects/helper/env.js index 95f996fc2f6..67e111830f1 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -15,6 +15,7 @@ const DEFAULTS = { BSQUARED_RPC: "https://rpc.bsquared.network,https://b2-mainnet.alt.technology", // add manually, short name is b2-mainnet BTR_RPC_MULTICALL: '0xc8818aaeaBF0dF9f3f3ffF54Ab185705177A6234', DEFICHAIN_EVM_RPC_MULTICALL: '0x7fEf77CDe3B41221Cff54B84Ea89D2EBc6b53352', + BOUNCEBIT_RPC_MULTICALL: '0x493d616f5F9a64e5B3D527120E406439bdF29272', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 6d38898e4df..4198ff5dbae 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -98,6 +98,9 @@ const fixBalancesTokens = { }, cyeth: { '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + }, + bouncebit: { + '0xf4c20e5004c6fdcdda920bdd491ba8c98a9c5863': { coingeckoId: 'bouncebit', decimals: 18 }, } } From 8aff4603724275f86414c159022ef562464f787a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 09:47:17 +0200 Subject: [PATCH 1626/2004] fix error message --- projects/helper/cache/getLogs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/cache/getLogs.js b/projects/helper/cache/getLogs.js index ac550173a79..30ba2544f1b 100644 --- a/projects/helper/cache/getLogs.js +++ b/projects/helper/cache/getLogs.js @@ -18,7 +18,7 @@ async function getLogs({ target, const block = api.block const chain = api.chain ?? 'ethereum' if (!toBlock) toBlock = block - if (!toBlock) throw new Error('Missing fromBlock!') + if (!toBlock) throw new Error('Missing toBlock!') let iface From c70c26452b4d8f2c8dec3a21d6093781851e7ff3 Mon Sep 17 00:00:00 2001 From: 0xShad0w <44497716+0xShad0w@users.noreply.github.com> Date: Thu, 16 May 2024 09:14:26 +0100 Subject: [PATCH 1627/2004] fix nile-v1 tvl (#10244) --- projects/nile-exchange-v1/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/nile-exchange-v1/index.js b/projects/nile-exchange-v1/index.js index b5d73fca551..15f24f55bfd 100644 --- a/projects/nile-exchange-v1/index.js +++ b/projects/nile-exchange-v1/index.js @@ -4,7 +4,7 @@ const { staking } = require('../helper/staking') module.exports = { misrepresentedTokens: true, linea:{ - tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'crAMM' }), + tvl: getUniTVL({ factory: '0xAAA16c016BF556fcD620328f0759252E29b1AB57', useDefaultCoreAssets: true, hasStablePools: true, stablePoolSymbol: 'cAMM' }), staking: staking("0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F", "0xAAAac83751090C6ea42379626435f805DDF54DC8"), }, } \ No newline at end of file From 7ea3788c94614aeebc03d3ef25b46de4d22665c6 Mon Sep 17 00:00:00 2001 From: ZkSwapFinance <126151208+ZkSwapFinance@users.noreply.github.com> Date: Thu, 16 May 2024 15:19:13 +0700 Subject: [PATCH 1628/2004] add DAO contract v2 for zkSwap Finance (#10242) --- projects/zkSwap-finance/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/zkSwap-finance/index.js b/projects/zkSwap-finance/index.js index 9eb17ac9a36..62511f8176e 100644 --- a/projects/zkSwap-finance/index.js +++ b/projects/zkSwap-finance/index.js @@ -2,12 +2,13 @@ const { getUniTVL, } = require('../helper/unknownTokens') const { sumTokensExport } = require('../helper/unwrapLPs') const FACTORY = '0x3a76e377ed58c8731f9df3a36155942438744ce3' -const DAO_CONTRACT = '0x4Ca2aC3513739ceBF053B66a1d59C88d925f1987' +const DAO_CONTRACT_V1 = '0x4Ca2aC3513739ceBF053B66a1d59C88d925f1987' +const DAO_CONTRACT_V2 = '0x056f1960b5CF53676AD9C0A7113363A812DC0c8e' module.exports = { era: { tvl: getUniTVL({ factory: FACTORY, useDefaultCoreAssets: false, }), - staking: sumTokensExport({ owners: ['0x9F9D043fB77A194b4216784Eb5985c471b979D67', DAO_CONTRACT], tokens: ['0x31C2c031fDc9d33e974f327Ab0d9883Eae06cA4A'], }), + staking: sumTokensExport({ owners: ['0x9F9D043fB77A194b4216784Eb5985c471b979D67', DAO_CONTRACT_V1, DAO_CONTRACT_V2], tokens: ['0x31C2c031fDc9d33e974f327Ab0d9883Eae06cA4A'], }), }, methodology: "TVL is total liquidity of all liquidity pools." } From 8a001474feac217f4eb02f3ac718de84b16fb988 Mon Sep 17 00:00:00 2001 From: sgmntp <146187995+sgmntp@users.noreply.github.com> Date: Thu, 16 May 2024 10:19:54 +0200 Subject: [PATCH 1629/2004] add (Project) Lumen Money (#10239) --- projects/lumen-money/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/lumen-money/index.js diff --git a/projects/lumen-money/index.js b/projects/lumen-money/index.js new file mode 100644 index 00000000000..f4548b79f11 --- /dev/null +++ b/projects/lumen-money/index.js @@ -0,0 +1,10 @@ +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", + neon_evm: compoundExports2({ + comptroller: "0x252dBa92827744e6d2b01f1c9D77dcD3CBAb4573", + cether: "0x3A81c854dCF6172cE3a7fFF024ECF20d8Ac2A1af", + }), +}; From 4e9d4d28dfab6c1e66be2736ff88dddfda197c0f Mon Sep 17 00:00:00 2001 From: Ptolemy <124589737+ptolemythedev@users.noreply.github.com> Date: Thu, 16 May 2024 04:22:22 -0400 Subject: [PATCH 1630/2004] Added Planar Finance (#10237) --- projects/planar-finance/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/planar-finance/index.js diff --git a/projects/planar-finance/index.js b/projects/planar-finance/index.js new file mode 100644 index 00000000000..85b87558999 --- /dev/null +++ b/projects/planar-finance/index.js @@ -0,0 +1,9 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + start: 1715328951, + blast: { + tvl: getUniTVL({ factory: '0xdC401B87Ee940F5050f6a17f49763635653eb496', useDefaultCoreAssets: true,}), + } +}; From 32eeb099a4bcfcb1e36fcafb8e1d43019d935d3b Mon Sep 17 00:00:00 2001 From: dusan-mrsic <51543421+dusan-mrsic@users.noreply.github.com> Date: Thu, 16 May 2024 10:26:49 +0200 Subject: [PATCH 1631/2004] add chi-protocol adapter (#10241) * add chi-protocol adapter * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/chi-protocol/index.js | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 projects/chi-protocol/index.js diff --git a/projects/chi-protocol/index.js b/projects/chi-protocol/index.js new file mode 100644 index 00000000000..a2914a14e11 --- /dev/null +++ b/projects/chi-protocol/index.js @@ -0,0 +1,56 @@ +const { sumTokens2 } = require('../helper/unwrapLPs'); +const { pool2s } = require("../helper/pool2"); + +const RESERVE_HOLDER = '0x037528457Cf5b0b9DAb641Fd7F0Ce8Fc9690318d'; +const USC_STAKING = '0x60aBb55c8488698153dB0AF2af362EdB25A505e3'; +const CHI_STAKING = '0xaB1dCa1C0f948c268652eedC676966002Ae241c6'; +const CHI_LOCKING = '0xE3dD17ff009bAC84e32130fcA5f01C908e956603'; +const CHI_VESTING = '0x426DBAa2B33cE1B833C13b72503F5128AFef79fC'; +const STETH = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; +const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' +const USC = '0x38547D918b9645F2D94336B6b61AEB08053E142c'; +const CHI = '0x3b21418081528845a6DF4e970bD2185545b712ba'; + +const stakingPool2Contracts = [ + "0x85CD2803223C864D625b1D289fDD3Cee7e4bB307", + "0xD66DAbE0c898Ec74DA03AE4e90b9c051408685e6", +]; +const lpAddresses = [ + "0x88d1fFB9F94Fc881ea0D83Dddcdb196EE9DA8739", + "0x9f93F419d0267877247A39b4eb6b2775AbAC6bdc", +]; + +async function tvl(api) { + const owner = RESERVE_HOLDER; + const tokens = [ + STETH, + WETH + ]; + return sumTokens2({ owner, tokens, api }) +} + +async function staking(api) { + const tokensAndOwners = [ + // [USC, USC_STAKING], + [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 + } +} From 6def63043111deef948c130c77c267622041f210 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 13:57:50 +0200 Subject: [PATCH 1632/2004] minor fix --- projects/helper/tokenMapping.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4198ff5dbae..be05817b797 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -101,7 +101,11 @@ const fixBalancesTokens = { }, bouncebit: { '0xf4c20e5004c6fdcdda920bdd491ba8c98a9c5863': { coingeckoId: 'bouncebit', decimals: 18 }, - } + '0x77776b40c3d75cb07ce54dea4b2fd1d07f865222': { coingeckoId: 'tether', decimals: 18 }, + }, + linea: { + '0x63ba74893621d3d12f13cec1e86517ec3d329837': { coingeckoId: 'liquity-usd', decimals: 18 }, + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 6df63abacb9d6b82b3c1b316d7e9a5437d3ddd5b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 14:01:10 +0200 Subject: [PATCH 1633/2004] term-fi: track avax --- projects/term-finance/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/term-finance/index.js b/projects/term-finance/index.js index 2e04a41cc61..cd2787efacc 100644 --- a/projects/term-finance/index.js +++ b/projects/term-finance/index.js @@ -4,6 +4,8 @@ const { getLogs } = require('../helper/cache/getLogs') const graphs = { ethereum: "https://graph-node.mainnet.termfinance.io/subgraphs/name/term-finance-mainnet", + avax: + "https://public-graph-proxy.avalanche.mainnet.termfinance.io", }; const query = ` From f7d54cc9690c08d89954946fa84c2646517c5a25 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 17:52:19 +0530 Subject: [PATCH 1634/2004] Add BTCB and BitcoinUSD in bifi (#10246) * add BTCB, BitcoinUSD in bifi * reupdate * fix tokenmapping * revert change --------- Co-authored-by: Ss5h --- projects/bifi/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/bifi/index.js b/projects/bifi/index.js index ef8d29484af..c22a620cfbe 100644 --- a/projects/bifi/index.js +++ b/projects/bifi/index.js @@ -48,7 +48,10 @@ const chainPools = { 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 } + 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: '0x6906Ccda405926FC3f04240187dd4fAd5DF6d555' } }, } From 1cd5a254e65e8e1d9a827cf9acf9b24bb3f944ee Mon Sep 17 00:00:00 2001 From: Nicolas Zozol Date: Thu, 16 May 2024 17:51:34 +0200 Subject: [PATCH 1635/2004] update: swaap v2 (dex)-> swaap earn (yield) (#10248) * update: swaap v2 (dex)-> swaap earn (yield) * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/swaap-earn/index.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 projects/swaap-earn/index.js diff --git a/projects/swaap-earn/index.js b/projects/swaap-earn/index.js new file mode 100644 index 00000000000..1cff804f379 --- /dev/null +++ b/projects/swaap-earn/index.js @@ -0,0 +1,20 @@ +const { cachedGraphQuery } = require('../helper/cache') +const query = `query FundsTVL{ funds { id } }` + +module.exports = { + start: 1713312000, // Apr 17 2024 00:00:00 GMT+0000 +} + +const config = { + arbitrum: { endpoint: 'https://api.thegraph.com/subgraphs/name/borelien/swaap-earn-arbitrum-test', }, +} + +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 From f4367c6e6847c2581a2285f2cd3511ee32621649 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 21:25:15 +0530 Subject: [PATCH 1636/2004] Refactor Weft Staking Pool and Adapter (#10250) * Adding Weft Staking Pool * Weft: Adapter refactoring * minor fix --------- Co-authored-by: atoumbre --- projects/weft-finance/index.js | 56 ++++++++++------------------------ 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/projects/weft-finance/index.js b/projects/weft-finance/index.js index ef7168c525f..a4ebede8b3f 100644 --- a/projects/weft-finance/index.js +++ b/projects/weft-finance/index.js @@ -1,8 +1,14 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { queryAddresses } = require('../helper/chain/radixdlt'); +const { queryAddresses, sumTokens } = require('../helper/chain/radixdlt'); -const pools = [ +const staking_pools = [ + 'component_rdx1cqzle2pft0y09kwzaxy07maczpwmka9xknl88glwc4ka6a7xavsltd', + 'component_rdx1cpdpfn8q0650yh6stmxdwme4tp7m6lphngpqjazakehttq8aqenvhm', + 'component_rdx1crrxdzcq0cfpxvqk70e0usq8qusqz6g0ht6rylr4wgnxpflzjeaayy' +] + +const lending_pools = [ { pool: 'component_rdx1cq8mm5z49x6lyet44a0jd7zq52flrmykwwxszq65uzfn6pk3mvm0k4', resource: ADDRESSES.radixdlt.XRD, @@ -20,54 +26,24 @@ const pools = [ } ] -async function fetchData(addresses) { - return await queryAddresses({ addresses }); -} - async function tvl(api) { - const [poolData, priceData] = await Promise.all([ - fetchData(pools.map((item) => item.pool)), - fetchData(pools.map((item) => item.priceFeed)), - ]); - - const prices = priceData.map((item) => item.details.state.fields[0].entries).flat(); - - let totalValueLocked = 0; - - pools.forEach((pool) => { - const { fungible_resources } = poolData.find((item) => item.address === pool.pool); - const priceData = prices.find((price_item) => price_item.key.value === pool.resource); - - const price = priceData ? +priceData.value.fields[1].value : 1; - totalValueLocked += ++fungible_resources.items[0].amount * price; - }); - - return { 'radix': totalValueLocked }; + return sumTokens({ owners: lending_pools.map((pool_data) => pool_data.pool), api }); } async function borrowed(api) { - const [poolData, priceData] = await Promise.all([ - fetchData(pools.map((item) => item.pool)), - fetchData(pools.map((item) => item.priceFeed)), - ]); - - const prices = priceData.map((item) => item.details.state.fields[0].entries).flat(); + const poolData = await queryAddresses({ addresses: lending_pools.map((item) => item.pool) }); - let borrowedValue = 0; - - pools.forEach((pool) => { + lending_pools.forEach((pool) => { const { details } = poolData.find((item) => item.address === pool.pool); - const priceData = prices.find((price_item) => price_item.key.value === pool.resource); - - const priceInXRD = priceData ? +priceData.value.fields[1].value : 1; - borrowedValue += +details.state.fields[1].value * priceInXRD; + api.add(pool.resource, +details.state.fields[1].value) }); +} - return { 'radix': borrowedValue }; +async function staking(api) { + return sumTokens({ owners: staking_pools, api }); } module.exports = { - radixdlt: { tvl, borrowed }, + radixdlt: { tvl, borrowed, staking }, timetravel: false, - misrepresentedTokens: true, }; From 21aa4fb461ba858d652f5e308e9efc790c317333 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 16 May 2024 21:56:12 +0530 Subject: [PATCH 1637/2004] update clearpool (#10251) * feat: list protocols on DefiLlama (#10) * feat: sum tvls of all protocols per chain (#11) * feat: support prime in DefiLlama (#12) * feat: init * feat: support prime * fix: fromBlock val * fix: add missed protocols perchain * feat: init * doc: add instruction to add network and protocol * chore: remove log * remove file --------- Co-authored-by: Addis Belete Co-authored-by: George Ciubotaru --- projects/clearpool/index.js | 223 +++++++++++++++++++++++++++++++----- 1 file changed, 192 insertions(+), 31 deletions(-) diff --git a/projects/clearpool/index.js b/projects/clearpool/index.js index ae8bc0af130..0fd614a23b1 100644 --- a/projects/clearpool/index.js +++ b/projects/clearpool/index.js @@ -1,6 +1,3 @@ -// npm i -f -// node test.js projects/clearpool/index.js - const abi = require("./abi.json"); const { stakings } = require("../helper/staking"); @@ -11,44 +8,208 @@ const CPOOL = "0x66761fa41377003622aee3c7675fc7b5c1c2fac5"; module.exports = { methodology: "We count liquidity by Stables deposited on the pools contracts", -} +}; -const config = { - ethereum: { factory: '0xde204e5a060ba5d3b63c7a4099712959114c2d48', fromBlock: 14443222 }, // Permissionless Pools - polygon_zkevm: { factory: '0xCE3Fec90A05992dF1357651FEF6D143FeeC7Ca16', fromBlock: 302970 }, // Permissionless Pools - polygon: { factory: '0x215CCa938dF02c9814BE2D39A285B941FbdA79bA', fromBlock: 31128013 }, // Permissionless Pools - optimism: { factory: '0x99C10A7aBd93b2db6d1a2271e69F268a2c356b80', fromBlock: 107128813 }, // Permissionless Pools - mantle: { factory: '0xB217D93a8f6A4b7861bB2C865a8C22105FbCdE41', fromBlock: 49691965 }, // Permissionless Pools -} +const CHAIN = { + ARBITRUM: "arbitrum", + AVAX: "avax", + ETHEREUM: "ethereum", + OPTIMISM: "optimism", + POLYGON: "polygon", + POLYGON_ZKEVM: "polygon_zkevm", + FLARE: "flare", + BASE: "base", + MANTLE: "mantle", +}; -Object.keys(config).forEach(chain => { - const { fromBlock, factory } = config[chain] +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, + }, + }, + [CHAIN.MANTLE]: { + dynamic: { + factory: "0xB217D93a8f6A4b7861bB2C865a8C22105FbCdE41", + fromBlock: 49691271, + }, + vaults: { + factory: "0xF041A2838794266d19f79709F416A2977F896A9B", + fromBlock: 59594636 + } + }, + [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 tvl = async (api) => { - const { pools, tokens } = await _getLogs(api) - return api.sumTokens({ tokensAndOwners2: [tokens, pools] }) +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 }; +}; - async function _getLogs(api) { +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: 'event PoolCreated(address indexed pool, address indexed owner, address indexed token)', - onlyArgs: true - }) - const pools = logs.map(log => log.pool) - const tokens = logs.map(log => log.token) - return { pools, tokens } - } + 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, borrowFn, protocol }) => { + const { pools, tokens } = await _getLogs( + api, + factory, + fromBlock, + abi, + protocol + ); + allTokens.push(...tokens); + allPools.push(...pools); + } + ); + + await Promise.all(promiseArray); + + return api.sumTokens({ tokensAndOwners2: [allTokens, allPools] }); + }; const borrowed = async (api) => { - const { pools, tokens } = await _getLogs(api) - const bals = await api.multiCall({ abi: abi.borrows, calls: pools }) - api.addTokens(tokens, bals) - } + 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); - module.exports[chain] = { tvl, borrowed } -}) + return api.addTokens(allTokens, balances); + }; + module.exports[chain] = { tvl, borrowed }; +}); -module.exports.ethereum.staking = stakings(singleStakingContracts, CPOOL) +module.exports.ethereum.staking = stakings(singleStakingContracts, CPOOL); From f122d82657c3dcd5ab4ef3247d402d9778f9743e Mon Sep 17 00:00:00 2001 From: qwen-solv <110524338+qwen-solv@users.noreply.github.com> Date: Fri, 17 May 2024 00:27:10 +0800 Subject: [PATCH 1638/2004] Solv Protocol create SolvBTC and update Solv Funds (#10145) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js * update subgraph url * fix bug * revert * Excluding Fof Funds * add other Deposit * add solvbtc Solv Funds del solvbtc * update graphql query --------- Co-authored-by: buchaoqun Co-authored-by: charq <73696209+buchaoqun@users.noreply.github.com> Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/solv-protocol-funds/index.js | 15 ++- projects/solvbtc/abi.json | 5 + projects/solvbtc/index.js | 157 ++++++++++++++++++++++++++ 3 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 projects/solvbtc/abi.json create mode 100644 projects/solvbtc/index.js diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index e368242466f..e67465e04d2 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -27,7 +27,7 @@ async function tvl(api) { await iziswap(api, address); await lendle(api, address); await vaultBalance(api); - await otherDeposit(api, address); + // await otherDeposit(api, address); return api.getBalances(); } @@ -290,6 +290,8 @@ async function vaultBalance(api) { const network = api.chain; const graphData = await getGraphData(api.timestamp, network, api); + const solvbtcListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solvbtc.json'; + let solvbtc = (await getConfig('solv-protocol/solvbtc', solvbtcListUrl)); if (graphData.pools.length > 0) { const poolLists = graphData.pools; @@ -303,9 +305,16 @@ async function vaultBalance(api) { })), }) + let vaultAddress = []; + for (const key in poolLists) { + if (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 = {}; for (const key in poolLists) { - if (poolBaseInfos[key][1] && poolLists[key]["vault"]) { + if (poolBaseInfos[key][1] && poolLists[key]["vault"] && 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"]] } } @@ -328,7 +337,7 @@ async function vaultBalance(api) { async function getGraphData(timestamp, chain, api) { let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); - const slotDataQuery = `query BondSlotInfos { + const slotDataQuery = `query PoolOrderInfos { poolOrderInfos(first: 1000 where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot_not_in: ${JSON.stringify(rwaSlot)}}) { marketContractAddress contractAddress diff --git a/projects/solvbtc/abi.json b/projects/solvbtc/abi.json new file mode 100644 index 00000000000..9539772b740 --- /dev/null +++ b/projects/solvbtc/abi.json @@ -0,0 +1,5 @@ +{ + "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 new file mode 100644 index 00000000000..c255fdf3f37 --- /dev/null +++ b/projects/solvbtc/index.js @@ -0,0 +1,157 @@ +const abi = require("./abi.json"); +const { getConfig } = require("../helper/cache"); +const { cachedGraphQuery } = require("../helper/cache"); +const { sumTokens2, } = require("../helper/unwrapLPs"); + +// 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: 'http://api.0xgraph.xyz/subgraphs/name/solv-payable-factory-mentle-0xgraph', + merlin: 'http://solv-subgraph-server-alb-694489734.us-west-1.elb.amazonaws.com:8000/subgraphs/name/solv-payable-factory-merlin', +} + +const solvbtcListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solvbtc.json'; + +async function tvl(api) { + let solvbtc = (await getConfig('solv-protocol/solvbtc', solvbtcListUrl)); + + await gm(api, solvbtc) + await vaultBalance(api, solvbtc); + await otherDeposit(api, solvbtc); + + return api.getBalances(); +} + +async function gm(api, solvbtc) { + if (!solvbtc[api.chain] || !solvbtc[api.chain]["gm"]) { + return; + } + let gm = solvbtc[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 otherDeposit(api, solvbtc) { + if (!solvbtc[api.chain] || !solvbtc[api.chain]["otherDeposit"]) { + return; + } + let otherDeposit = solvbtc[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 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 vaultBalance(api, solvbtc) { + if (!solvbtc[api.chain] || !solvbtc[api.chain]["slot"]) { + return; + } + let slot = solvbtc[api.chain]["slot"]; + + const graphData = await getGraphData(api.timestamp, api.chain, api, slot); + if (graphData.pools.length > 0) { + const poolLists = graphData.pools; + + const poolConcretes = await concrete(poolLists, api); + + const poolBaseInfos = await api.multiCall({ + abi: abi.slotBaseInfo, + calls: poolLists.map((index) => ({ + target: poolConcretes[index.contractAddress], + params: [index.openFundShareSlot] + })), + }) + + let vaults = {}; + for (const key in poolLists) { + if (poolBaseInfos[key][1] && poolLists[key]["vault"]) { + vaults[`${poolBaseInfos[key][1].toLowerCase()}-${poolLists[key]["vault"].toLowerCase()}`] = [poolBaseInfos[key][1], poolLists[key]["vault"]] + } + } + + const balances = await api.multiCall({ + abi: abi.balanceOf, + calls: Object.values(vaults).map((index) => ({ + target: index[0], + params: [index[1]] + })), + }) + + for (const key in balances) { + api.add(Object.values(vaults)[key][0], balances[key]) + } + } +} + + +async function getGraphData(timestamp, chain, api, slot) { + + const slotDataQuery = `query PoolOrderInfos { + poolOrderInfos(first: 1000 where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot_in: ${JSON.stringify(slot)}}) { + 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/solvbtc +['ethereum', 'bsc', 'polygon', 'arbitrum', 'mantle', 'merlin'].forEach(chain => { + module.exports[chain] = { + tvl + } +}) From 235986120f1f9e4349fe8add2492e582c3a92f14 Mon Sep 17 00:00:00 2001 From: ChrisPantostin <100164910+ChrisPantostin@users.noreply.github.com> Date: Thu, 16 May 2024 20:25:46 +0200 Subject: [PATCH 1639/2004] ociswap tvl data for basic and precision pools (#10247) --- projects/ociswap-basic/index.js | 24 ++++++++++++++++++++++++ projects/ociswap-precision/index.js | 24 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 projects/ociswap-basic/index.js create mode 100644 projects/ociswap-precision/index.js diff --git a/projects/ociswap-basic/index.js b/projects/ociswap-basic/index.js new file mode 100644 index 00000000000..9aeaa9b8ec3 --- /dev/null +++ b/projects/ociswap-basic/index.js @@ -0,0 +1,24 @@ +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 new file mode 100644 index 00000000000..5f2220d61d6 --- /dev/null +++ b/projects/ociswap-precision/index.js @@ -0,0 +1,24 @@ +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 } +} From 68ede5d4cb0768d617ebfcf6d87c56c5752a8a86 Mon Sep 17 00:00:00 2001 From: NonFinancialAdvisor <155776586+NonFinancialAdvisor@users.noreply.github.com> Date: Fri, 17 May 2024 10:04:18 +0200 Subject: [PATCH 1640/2004] Add Base network support and Base and Mode hallmarks (#10252) --- projects/peapods-finance/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/peapods-finance/index.js b/projects/peapods-finance/index.js index cc6055b8aa9..d6066c4e3ae 100644 --- a/projects/peapods-finance/index.js +++ b/projects/peapods-finance/index.js @@ -3,6 +3,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { ethereum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, arbitrum: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, + base: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, mode: { indexManager: "0x0Bb39ba2eE60f825348676f9a87B7CD1e3B4AE6B", peasToken: "0x02f92800F57BCD74066F5709F1Daa1A4302Df875" }, } @@ -42,7 +43,7 @@ const getTvl = async (api, isStaking) => { module.exports = { methodology: "Aggregates TVL in all Peapods Finance indexes created", - hallmarks: [[1710444951, "Arbitrum launch"]], + hallmarks: [[1710444951, "Arbitrum launch"],[1715151225, "Base launch"],[1715214483, "Mode launch"]], } Object.keys(config).forEach(chain => { From aa758e94b925675bbedb08f7d408511c0de4ef87 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Fri, 17 May 2024 16:25:34 +0800 Subject: [PATCH 1641/2004] add vibrswap adapter (#10254) --- projects/vibrswap/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/vibrswap/index.js diff --git a/projects/vibrswap/index.js b/projects/vibrswap/index.js new file mode 100644 index 00000000000..5ed2fbae651 --- /dev/null +++ b/projects/vibrswap/index.js @@ -0,0 +1,9 @@ +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 From 3033ccfdedccc7e6ed7315371634c0815a3e9205 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 17 May 2024 11:25:14 +0200 Subject: [PATCH 1642/2004] serum: more efficient rpc call --- projects/helper/utils/solana/layout.js | 3 ++- .../helper/utils/solana/layouts/mixed-layout.js | 2 -- .../utils/solana/layouts/openbook-layout.js | 15 +++++++++++++++ projects/openbook/index.js | 6 ++++-- projects/serum.js | 6 ++++-- projects/veryLongSwap-masterchef/index.js | 13 +++++++++++++ 6 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 projects/veryLongSwap-masterchef/index.js diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index 09c332eecb6..c5803bc3464 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -4,7 +4,7 @@ const { parseLido, parseLidoValidatorList } = require('./layouts/lido') const { parsePhoenix } = require('./layouts/phoenix-dex') const { RAYDIUM_LIQUIDITY_STATE_LAYOUT_CLMM, RAYDIUM_STABLE_STATE_LAYOUT_V1, } = require('./layouts/raydium-layout') const { INVESTIN_FUND_DATA, } = require('./layouts/investin-layout') -const { MARKET_STATE_LAYOUT_V3, OPEN_ORDERS_LAYOUT_V2 } = require('./layouts/openbook-layout') +const { MARKET_STATE_LAYOUT_V3, OPEN_ORDERS_LAYOUT_V2, MARKET_STATE_LAYOUT_V3_MINIMAL } = require('./layouts/openbook-layout') const { ReserveLayout, ReserveLayoutLarix, MintLayout, AccountLayout, TokenSwapLayout, ESOLStakePoolLayout, } = require('./layouts/mixed-layout'); const { SCN_STAKE_POOL } = require("./layouts/scnSOL"); const { SANCTUM_INFINITY } = require("./layouts/sanctum-infinity-layout"); @@ -49,6 +49,7 @@ const customDecoders = { 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), diff --git a/projects/helper/utils/solana/layouts/mixed-layout.js b/projects/helper/utils/solana/layouts/mixed-layout.js index 9d414f14c8b..77e760154d5 100644 --- a/projects/helper/utils/solana/layouts/mixed-layout.js +++ b/projects/helper/utils/solana/layouts/mixed-layout.js @@ -208,8 +208,6 @@ const Hub3Layout = BufferLayout.struct([ u64("d"), ]) -console.log(Hub3Layout.span) - const eSOL_feeFields = [u64('denominator'), u64('numerator')]; const eSOL_rateOfExchangeFields = [u64('denominator'), u64('numerator')]; diff --git a/projects/helper/utils/solana/layouts/openbook-layout.js b/projects/helper/utils/solana/layouts/openbook-layout.js index 9be674694c7..d3cdb5a7e85 100644 --- a/projects/helper/utils/solana/layouts/openbook-layout.js +++ b/projects/helper/utils/solana/layouts/openbook-layout.js @@ -89,6 +89,20 @@ const MARKET_STATE_LAYOUT_V3 = struct([ 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), @@ -115,6 +129,7 @@ const OPEN_ORDERS_LAYOUT_V2 = struct([ module.exports = { + MARKET_STATE_LAYOUT_V3_MINIMAL, MARKET_STATE_LAYOUT_V3, OPEN_ORDERS_LAYOUT_V2 } diff --git a/projects/openbook/index.js b/projects/openbook/index.js index 90ec3cba67d..2f4789900dc 100644 --- a/projects/openbook/index.js +++ b/projects/openbook/index.js @@ -1,6 +1,7 @@ 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) { @@ -8,12 +9,13 @@ async function tvl(api) { const programPublicKey = new PublicKey('srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX') const programAccounts = await connection.getProgramAccounts(programPublicKey, { - filters: [{ dataSize: 388 }] + 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', account.account) + const market = decodeAccount('openbook-minimal', account.account) const baseToken = market.baseMint.toBase58() const quoteToken = market.quoteMint.toBase58() const baseBal = +market.baseDepositsTotal + +market.baseFeesAccrued diff --git a/projects/serum.js b/projects/serum.js index d0941565959..0a399c1b0b4 100644 --- a/projects/serum.js +++ b/projects/serum.js @@ -1,6 +1,7 @@ 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) @@ -9,12 +10,13 @@ async function tvl(api) { const programPublicKey = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin') const programAccounts = await connection.getProgramAccounts(programPublicKey, { - filters: [{ dataSize: 388 }] + 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', account.account) + const market = decodeAccount('openbook-minimal', account.account) const baseToken = market.baseMint.toBase58() const quoteToken = market.quoteMint.toBase58() const baseBal = +market.baseDepositsTotal + +market.baseFeesAccrued diff --git a/projects/veryLongSwap-masterchef/index.js b/projects/veryLongSwap-masterchef/index.js new file mode 100644 index 00000000000..0d4a5ea186c --- /dev/null +++ b/projects/veryLongSwap-masterchef/index.js @@ -0,0 +1,13 @@ +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)) +} From c7cd119f0d472417353d51318aa50b85b97bbb0d Mon Sep 17 00:00:00 2001 From: bit-reserve Date: Fri, 17 May 2024 17:28:52 +0800 Subject: [PATCH 1643/2004] commit tvl (#10256) bit-reserve rBTC TVL commit --- projects/bit-reserve/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/bit-reserve/index.js diff --git a/projects/bit-reserve/index.js b/projects/bit-reserve/index.js new file mode 100644 index 00000000000..10191c1208d --- /dev/null +++ b/projects/bit-reserve/index.js @@ -0,0 +1,14 @@ +const rBTC_CONTRACT = '0xBf4df43f72d27a7b1D2fC295aeca58e0853f922F'; + +async function tvl(api) { + const tokens = await api.fetchList({ lengthAbi: 'approvedTokens', itemAbi: 'approvedRestakedLSTs', target: rBTC_CONTRACT }) + return api.sumTokens({ owner: rBTC_CONTRACT, tokens }) +} + +module.exports = { + methodology: 'The total value of BTC in the rBTC contract on the BIT-RESERVE platform.', + start: 1715917267, + core: { + tvl + } +} \ No newline at end of file From b7a544a7586a36405817c885e860134ee79ccf48 Mon Sep 17 00:00:00 2001 From: Si Yushin Date: Fri, 17 May 2024 18:16:40 +0800 Subject: [PATCH 1644/2004] add ENZO adapter (#10258) * add adapter for ENZO * refactor --------- Co-authored-by: Yuushin Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/enzo/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/enzo/index.js diff --git a/projects/enzo/index.js b/projects/enzo/index.js new file mode 100644 index 00000000000..186617c5952 --- /dev/null +++ b/projects/enzo/index.js @@ -0,0 +1,5 @@ +const { compoundExports2 } = require("../helper/compound"); + +module.exports = { + btr: compoundExports2({ cether: '0xe277Aed3fF3Eb9824EdC52Fe7703DF0c5ED8B313', comptroller: '0xe688a4a94AD1D32CD52A01306fc0a9552749F322',}) +}; \ No newline at end of file From 7f549d53c5c13954b7b1b950df6684dc46f14924 Mon Sep 17 00:00:00 2001 From: Jinwoo Cheon Date: Fri, 17 May 2024 19:16:56 +0900 Subject: [PATCH 1645/2004] add Pump Markets (Blast) (#10259) --- projects/pump-markets/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/pump-markets/index.js diff --git a/projects/pump-markets/index.js b/projects/pump-markets/index.js new file mode 100644 index 00000000000..0568500afd7 --- /dev/null +++ b/projects/pump-markets/index.js @@ -0,0 +1,11 @@ +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], + }), + }, +}; From 33fe2b0a9a94dae4869479e61fec6148180a89f9 Mon Sep 17 00:00:00 2001 From: wandbuild <138229969+wandbuild@users.noreply.github.com> Date: Fri, 17 May 2024 18:17:05 +0800 Subject: [PATCH 1646/2004] Add wand protocol $weETH vault (#10260) * Add wand protocol V2 contract addresses * Add weETH vault --- projects/treasury/wand.js | 3 ++- projects/wand/index.js | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/treasury/wand.js b/projects/treasury/wand.js index 663d9889f28..4a6723ed82d 100644 --- a/projects/treasury/wand.js +++ b/projects/treasury/wand.js @@ -8,7 +8,8 @@ const config = { ], tokens: [ ADDRESSES.null, // $ETH - ADDRESSES.blast.USDB // $USDB + ADDRESSES.blast.USDB, // $USDB + ADDRESSES.blast.weETH // weETH ], }, } diff --git a/projects/wand/index.js b/projects/wand/index.js index 89af4c49213..6600f878f6e 100644 --- a/projects/wand/index.js +++ b/projects/wand/index.js @@ -12,11 +12,13 @@ module.exports = { '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 + '0x565e325B7197d6105b0Ee74563ea211Cc838e2c3', // $USDB V2 vault's token pot + '0x4A084b06eFdB44e9fB26Eac29334E4808BA65A32', // $weETH plain vault ], tokens: [ ADDRESSES.null, // $ETH - ADDRESSES.blast.USDB // $USDB + ADDRESSES.blast.USDB, // $USDB + ADDRESSES.blast.weETH // weETH ], }), } From 91435727c06216eb24ae819fdb3f62b41d6114bf Mon Sep 17 00:00:00 2001 From: rudewalt Date: Fri, 17 May 2024 13:19:41 +0300 Subject: [PATCH 1647/2004] Marginly: add new contracts (#10263) * add blast chain * fix * remove skipCache argument * add new contracts * remove wrong imports --------- Co-authored-by: Ivan Sanin --- projects/marginly/config.js | 16 ++++++++++++++++ projects/marginly/index.js | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/projects/marginly/config.js b/projects/marginly/config.js index bea36ae5894..6b358afbed6 100644 --- a/projects/marginly/config.js +++ b/projects/marginly/config.js @@ -4,6 +4,12 @@ module.exports = { { factory: "0x1e36749E00229759dca262cB25Ad8d9B21bEB3F5", fromBlock: 144171029, + version: "v1", + }, + { + factory: "0x537A3417Fe03e28F4E9640Bece70887a6938ff92", + fromBlock: 208756175, + version: "v1.5", }, ], }, @@ -12,6 +18,16 @@ module.exports = { { 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 index a1765763cf5..3137e936aaf 100644 --- a/projects/marginly/index.js +++ b/projects/marginly/index.js @@ -12,9 +12,9 @@ Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl: async (api) => { const ownerTokens = []; - for (const { factory, fromBlock } of factories) { + for (const { factory, fromBlock, version } of factories) { let logs; - if (chain === "arbitrum") { + if (version === "v1") { // v1.0 contract logs = await getLogs({ api, From 197bb74b464b831f10f047b64294e2a911888fa4 Mon Sep 17 00:00:00 2001 From: kmax <115686499+kmax4ever@users.noreply.github.com> Date: Fri, 17 May 2024 17:31:38 +0700 Subject: [PATCH 1648/2004] init goat-tech adapter (#10264) * init goat-tech adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/goat-tech/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/goat-tech/index.js diff --git a/projects/goat-tech/index.js b/projects/goat-tech/index.js new file mode 100644 index 00000000000..0b27dcca117 --- /dev/null +++ b/projects/goat-tech/index.js @@ -0,0 +1,25 @@ +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: "0x35751007a407ca6feffe80b3cb397736d2cf4dbe", +}; + +module.exports = { + methodology: "Total staking", + start: 210487219, + 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], + ], + }), + }, +}; From 3e14d478644bb7d6eb8a8a6d76f3aeeac6cc589c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 17 May 2024 12:48:03 +0200 Subject: [PATCH 1649/2004] add stBTC --- projects/helper/tokenMapping.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index be05817b797..962bf803969 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -106,6 +106,9 @@ const fixBalancesTokens = { linea: { '0x63ba74893621d3d12f13cec1e86517ec3d329837': { coingeckoId: 'liquity-usd', decimals: 18 }, }, + bevm: { + '0x2967e7bb9daa5711ac332caf874bd47ef99b3820': { coingeckoId: 'wrapped-stbtc', decimals: 18 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From 15ae6a807342ce329568f0f3f20136c3a6f46b4f Mon Sep 17 00:00:00 2001 From: haiifeng <1485540731@qq.com> Date: Fri, 17 May 2024 19:20:03 +0800 Subject: [PATCH 1650/2004] feat: add trustin adapter (#10262) * feat: add trustin project * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/trustin/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/trustin/index.js diff --git a/projects/trustin/index.js b/projects/trustin/index.js new file mode 100644 index 00000000000..b45bfca83ca --- /dev/null +++ b/projects/trustin/index.js @@ -0,0 +1,5 @@ +const { compoundExports2 } = require('../helper/compound') + +module.exports = { + btr: compoundExports2({ comptroller: '0xF2EBc006a55ADFb3f50A521E5Db848942e7Dbb1F' }), +} \ No newline at end of file From 508af89a40899583bddce34e8d12508ddb51ed06 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 17 May 2024 15:56:47 +0200 Subject: [PATCH 1651/2004] fix bug --- projects/helper/coreAssets.json | 3 +++ projects/helper/tokenMapping.js | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 348e400fdb9..618d3e22fc3 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1770,5 +1770,8 @@ "STONE": "0x96147a9ae9a42d7da551fd2322ca15b71032f342", "RETH": "0xb5686c4f60904ec2bda6277d6fe1f7caa8d1b41a", "TBTC": "0xbba2ef945d523c4e2608c9e1214c2cc64d4fc2e2" + }, + "btr": { + "ETH": "0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2" } } \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 962bf803969..3150b654a79 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -93,7 +93,6 @@ const fixBalancesTokens = { '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, '0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2': { coingeckoId: 'tether', decimals: 6 }, - '0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2': { coingeckoId: 'ethereum', decimals: 18 }, '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, }, cyeth: { From 6251f71966227c82035efd2d5005ecc3fe8dc4df Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 17 May 2024 16:02:25 +0100 Subject: [PATCH 1652/2004] add bitlayer to menson (#10266) --- projects/meson/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/meson/index.js b/projects/meson/index.js index 4081fc3fecf..fa131455647 100644 --- a/projects/meson/index.js +++ b/projects/meson/index.js @@ -98,6 +98,7 @@ const config = { optimism: { id: 'opt'}, polygon_zkevm: { id: 'zkevm'}, era: { id: 'zksync'}, + btr: { id: 'bitlayer'} } async function addCoinfg(id, ownerTokens) { From e6290eea993c71348ecc510ce40391eccdb08d03 Mon Sep 17 00:00:00 2001 From: gaawai-l Date: Sat, 18 May 2024 00:47:24 +0800 Subject: [PATCH 1653/2004] add jaspervault tvl (#10271) * add jaspervault tvl * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/jaspervault/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/jaspervault/index.js diff --git a/projects/jaspervault/index.js b/projects/jaspervault/index.js new file mode 100644 index 00000000000..3c70971341a --- /dev/null +++ b/projects/jaspervault/index.js @@ -0,0 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokensExport } = require("../helper/unwrapLPs") + +module.exports = { + arbitrum: { + tvl: sumTokensExport({ + owners: [ + '0xE980FD1dEA4E93c25B7f5B27351CF069C4f63a41', // sell WBTC ETH CALL & PUT + ], + tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.null, ADDRESSES.arbitrum.USDT] + }) + }, +} From 61089909ae1d560082869025a88cde3041bef291 Mon Sep 17 00:00:00 2001 From: PRINT3R <141354432+PRINT3Rxyz@users.noreply.github.com> Date: Fri, 17 May 2024 18:49:00 +0200 Subject: [PATCH 1654/2004] Added PRINT3R on Mode (#10267) --- projects/PRINT3R/index.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/projects/PRINT3R/index.js b/projects/PRINT3R/index.js index f766f14d70a..75d488ab4b3 100644 --- a/projects/PRINT3R/index.js +++ b/projects/PRINT3R/index.js @@ -1,11 +1,14 @@ -const { gmxExports } = require('../helper/gmx') +const { gmxExports } = require("../helper/gmx"); // Base -const baseVault = '0x102B73Ca761F5DFB59918f62604b54aeB2fB0b3E'; +const baseVault = "0x102B73Ca761F5DFB59918f62604b54aeB2fB0b3E"; +const modeVault = "0x3901B2e6d966dA5772A634a632bccCc83DC5Cf4C"; module.exports = { - base:{ - tvl: gmxExports({ vault: baseVault, }) + base: { + tvl: gmxExports({ vault: baseVault }), + }, + mode: { + tvl: gmxExports({ vault: modeVault }), }, - }; From 38ed77055cb97c937b178524789596fe26dce48a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 17 May 2024 18:51:02 +0200 Subject: [PATCH 1655/2004] fix enzo --- projects/enzo/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/enzo/index.js b/projects/enzo/index.js index 186617c5952..e4fd5e32ba3 100644 --- a/projects/enzo/index.js +++ b/projects/enzo/index.js @@ -1,5 +1,5 @@ const { compoundExports2 } = require("../helper/compound"); module.exports = { - btr: compoundExports2({ cether: '0xe277Aed3fF3Eb9824EdC52Fe7703DF0c5ED8B313', comptroller: '0xe688a4a94AD1D32CD52A01306fc0a9552749F322',}) + btr: compoundExports2({ cether: '0xe277Aed3fF3Eb9824EdC52Fe7703DF0c5ED8B313', comptroller: '0xe688a4a94AD1D32CD52A01306fc0a9552749F322', cetheEquivalent: '0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F' }) }; \ No newline at end of file From 168c7d5cd3a5795a33ddcb1444c49a58e279a14b Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 17 May 2024 17:57:19 +0100 Subject: [PATCH 1656/2004] add bitlayer --- projects/lineabank/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/lineabank/index.js b/projects/lineabank/index.js index 5000524af09..876dc1ede34 100644 --- a/projects/lineabank/index.js +++ b/projects/lineabank/index.js @@ -8,6 +8,7 @@ const config = { zklink: '0x4Ac518DbF0CC730A1c880739CFa98fe0bB284959', bsquared: '0x72f7a8eb9F83dE366AE166DC50F16074076C3Ea6', bob: '0x77cabFd057Bd7C81c011059F1bf74eC1fBeDa971', + btr: '0xf1E25704e75dA0496B46Bf4E3856c5480A3c247F' } const abis = { From 0a1cc478425843abc52d0d1c53d547deeaa00af7 Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Fri, 17 May 2024 18:45:40 +0100 Subject: [PATCH 1657/2004] remove useless event --- projects/glif/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/glif/index.js b/projects/glif/index.js index e1d515b90a5..92a87f4ea43 100644 --- a/projects/glif/index.js +++ b/projects/glif/index.js @@ -25,7 +25,6 @@ module.exports = { // timestamp, event [1680206490, "Early deposits open"], // 2023-03-30 [1685035830, "Protocol deployed"], // 2023-05-25 - [1691781060, "Exit ramp deployed"], // 2023-08-11 [1711641600, "GLIF Points released"], // 2024-03-28 ], }; From 0b7d99ee429164d6c036d98089fce2c1aecdb73f Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sat, 18 May 2024 12:57:51 +0100 Subject: [PATCH 1658/2004] add NKYC token (#10277) --- projects/helper/cex.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/cex.js b/projects/helper/cex.js index 1db1ae8708f..81bd5add7d9 100644 --- a/projects/helper/cex.js +++ b/projects/helper/cex.js @@ -168,6 +168,7 @@ const defaultTokens = { '0x47c454ca6be2f6def6f32b638c80f91c9c3c5949', //gfall '0xfe1d7f7a8f0bda6e415593a2e4f82c64b446d404', //blp '0xe9d78bf51ae04c7e1263a76ed89a65537b9ca903', // GMEX + '0x59769630b236398c2471eb26e6a529448030d94f', //NKYC nonkyc exchange token ], eos: [ ["eosio.token", "EOS", "eos"], From 018f693c9475cb38473388f7c108f96852c90a8c Mon Sep 17 00:00:00 2001 From: GREFintech <95459199+GREFintech@users.noreply.github.com> Date: Sun, 19 May 2024 14:54:19 -0300 Subject: [PATCH 1659/2004] Add viri tvl (#10274) * Feat: Viri new project * Fix: Chain core --- projects/Viridian/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/Viridian/index.js diff --git a/projects/Viridian/index.js b/projects/Viridian/index.js new file mode 100644 index 00000000000..4f77bcec3fc --- /dev/null +++ b/projects/Viridian/index.js @@ -0,0 +1,11 @@ +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 From 3c6795fc8bc294e5f0b708a0b939f3d9a6d56cd1 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Sun, 19 May 2024 11:06:28 -0700 Subject: [PATCH 1660/2004] Add Mode/KIM (#10275) --- projects/visor/config.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index 7653281a914..0ccba906f30 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -122,6 +122,9 @@ const HYPE_REGISTRY = { ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // Quickswap ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 697096], // xtrade ], + mode: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // KIM + ], }; Object.keys(HYPE_REGISTRY).forEach(chain => { From aba9d79f361d6f7d362104f4191fa0d1f15727a1 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Mon, 20 May 2024 15:28:20 +0800 Subject: [PATCH 1661/2004] add cyberswap adapter (#10283) --- projects/cyberswap/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/cyberswap/index.js diff --git a/projects/cyberswap/index.js b/projects/cyberswap/index.js new file mode 100644 index 00000000000..fec0f63749e --- /dev/null +++ b/projects/cyberswap/index.js @@ -0,0 +1,10 @@ +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 From 7683f4c8fa3077ed2d7795c16d311d5656ff0eeb Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Mon, 20 May 2024 15:28:56 +0800 Subject: [PATCH 1662/2004] add kaiaswap adapter (#10282) --- projects/kaiaswap/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/kaiaswap/index.js diff --git a/projects/kaiaswap/index.js b/projects/kaiaswap/index.js new file mode 100644 index 00000000000..9433737d09b --- /dev/null +++ b/projects/kaiaswap/index.js @@ -0,0 +1,10 @@ +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 From 4d8c6577c891b1eac95fc1282c745d53d8462321 Mon Sep 17 00:00:00 2001 From: halberd01 <146163939+halberd01@users.noreply.github.com> Date: Mon, 20 May 2024 15:30:15 +0800 Subject: [PATCH 1663/2004] add rollie finance (#10281) --- projects/rollie-finance/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/rollie-finance/index.js diff --git a/projects/rollie-finance/index.js b/projects/rollie-finance/index.js new file mode 100644 index 00000000000..a38f58c6d79 --- /dev/null +++ b/projects/rollie-finance/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + scroll: { + tvl: sumTokensExport({ owners: ['0xA79E00e68549e91e5f0c27048F453b3D87ef6E3D', '0x7Aa73970Dc1eAe1e39AA3eAC9F3DadB4468993a1'], tokens: [ADDRESSES.scroll.USDC] }), + } +} From 9b608d86f7db4ef7dd343f6751cb763e7da23d45 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 20 May 2024 10:32:57 +0200 Subject: [PATCH 1664/2004] refactor davos --- projects/davos-protocol/index.js | 80 ++++++++------------------------ 1 file changed, 20 insertions(+), 60 deletions(-) diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index 0c7da4328c6..6cdac9fca1c 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -1,78 +1,38 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { sumTokensExport, } = require('../helper/unknownTokens') -module.exports = { - methodology: 'collateral TVL * collateral price', +const config = { arbitrum: { - tvl: sumTokensExport({ owners: ['0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', '0x04901268EE65E989852370C0bad08E1514a0C484', '0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0xEC38621e72D86775a89C7422746de1f52bbA5320', '0x04901268EE65E989852370C0bad08E1514a0C484', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4', '0x394fdEC30250A38869bcB425F96080eD6c1b756a', '0xafCA20A243e4e4936fAF76e8893128A231678677' ], tokens: [ - "0xe05A08226c49b636ACf99c40Da8DC6aF83CE5bB3", //ankrETH - "0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf", //cUSDC - "0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8", //RETH - "0x004626A008B1aCdC4c74ab51644093b155e59A23", //stEUR - "0xe148C9fC6Cb7E968BfF86Ec9A6a881662d8ED9bb", //wcUSDC - "0x5979D7b546E38E414F7E9822514be443A4800529", //wstETH - "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", //weETH - "0x2416092f143378750bb29b79eD961ab195CcEea5", //ezETH - ] }), + mvts: ['0x5E851dC1f56A05Bb6d3C053FA756304a5171C345', '0x04901268EE65E989852370C0bad08E1514a0C484', '0x9eDC0ea75e6023b93bbB41c16818e314cfE59D2b', '0xEC38621e72D86775a89C7422746de1f52bbA5320', '0x30aCD3e86f42Fcc87c6FB9873058d8d7133785d4', '0x394fdEC30250A38869bcB425F96080eD6c1b756a', '0xafCA20A243e4e4936fAF76e8893128A231678677'], }, bsc: { - tvl: sumTokensExport({ owners: ['0x4e90156997BB469c6F5975e13FF1451C9500B711', '0x87ad5Ab05d7C1E1F904e029783810A2a95702563', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], tokens: [ - "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", //ankrBNB - "0xecA88125a5ADbe82614ffC12D0DB554E2e2867C8", //vUSDC - "0xfD5840Cd36d94D7229439859C0112a4185BC0255", //vUSDT - ] }), + mvts: ['0x4e90156997BB469c6F5975e13FF1451C9500B711', '0x87ad5Ab05d7C1E1F904e029783810A2a95702563', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], }, ethereum: { - tvl: sumTokensExport({ owners: ['0xb396b31599333739A97951b74652c117BE86eE1D', '0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xC5A7bEB1E6c61B3Aa8dF5aD32a17eb5e9B974B98', '0xf824c280De7622E468547E2d3eca7C94Ad8d7169', '0x4d7CabA383F017c4ce8B1F4493482eC0f09c9Ae7', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d', '0xD9dbd69974733481eeCD0125898C8Bb63c51f783', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0xd4E426ABA74Ece196D375e01b53A70ebeA51Cf25', '0x591e68e32eF0fbFc2DbC5916cd70fEFBF3a9F136', '0x7E6173fE3b426755B4B961c6a7686c13E3c82883', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0x47F661404716C3BB35B80C557e13F0EF490bC4Ae', '0xa6466b9827AD5D765579E3Fc9ca0d678C423fB53'], tokens: [ - '0xb396b31599333739A97951b74652c117BE86eE1D', //ceMATIC - '0xE95A203B1a91a908F9B9CE46459d101078c2c3cb', //ankrETH - '0xA35b1B31Ce002FBF2058D22F30f95D405200A15b', //ETHx - '0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38', //osETH - '0xD9A442856C234a39a81a089C06451EBAa4306a72', //puffETH - '0xae78736Cd615f374D3085123A210448E74Fc6393', //rETH - '0x83F20F44975D03b1b09e64809B757c47f942BEeA', //sdai - '0xac3E018457B222d93114458476f3E3416Abbe38F', //sfrxETH - '0xf951E335afb289353dc249e82926178EaC7DEd78', //swETH - '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', //weETH - '0xDcEe70654261AF21C44c093C300eD3Bb97b78192', //woETH - '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', //wstETH - '0xbf5495Efe5DB9ce00f80364C8B423567e58d2110', //ezETH - '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7', //rsETH - ] }), + mvts: ['0xb396b31599333739A97951b74652c117BE86eE1D', '0x97f0BdaDbfAA05a1944fFbA862b3336a175056cF', '0xC5A7bEB1E6c61B3Aa8dF5aD32a17eb5e9B974B98', '0xf824c280De7622E468547E2d3eca7C94Ad8d7169', '0x4d7CabA383F017c4ce8B1F4493482eC0f09c9Ae7', '0x7281d1bCcbe34574Ee6507b3f4816AFBe85A2e3d', '0xD9dbd69974733481eeCD0125898C8Bb63c51f783', '0xc7b219a9A8e246f9C4d4A1c7d4a371F0840ff724', '0xd4E426ABA74Ece196D375e01b53A70ebeA51Cf25', '0x591e68e32eF0fbFc2DbC5916cd70fEFBF3a9F136', '0x7E6173fE3b426755B4B961c6a7686c13E3c82883', '0x0730BA2252670Cd71580dadf471f3E137592e800', '0x47F661404716C3BB35B80C557e13F0EF490bC4Ae', '0xa6466b9827AD5D765579E3Fc9ca0d678C423fB53'], }, optimism: { - tvl: sumTokensExport({ owners: ['0x9c44E6A927302dA33dd76abe4558f26e31C48019', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], tokens: [ - "0x9Bcef72be871e61ED4fBbc7630889beE758eb81D", //RETH - "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb" //wstETH - ] }), + mvts: ['0x9c44E6A927302dA33dd76abe4558f26e31C48019', '0xb44A251d1C31dd32700E5F2584B4282716C43EB3'], }, polygon: { - tvl: sumTokensExport({ owners: ['0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e', '0x9a1275304960dbc6a8d4a5795832823a7d53f30a'], tokens: [ - '0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e', //ceMATIC - '0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4', // stMATIC - ] }), + mvts: ['0x77F4C841cb87fDFa43aB909cf56f7710Af648a8e', '0x9a1275304960dbc6a8d4a5795832823a7d53f30a'], }, polygon_zkevm: { - tvl: sumTokensExport({ owners: ['0x687B069759b053866715542f22877DA9091f20f5', '0x93402F1908dD009C857962b45278E71C7F63647f', '0x24318b8a0CBaCc61cAdE47e5457Eea7237EB2c0E'], tokens: [ - '0x12D8CE035c5DE3Ce39B1fDD4C1d5a745EAbA3b8C', // ankrETH - '0xb23C20EFcE6e24Acca0Cef9B7B7aA196b84EC942', //rETH - '0x5d8cff95d7a57c0bf50b30b43c7cc0d52825d4a9', //wstETH - ] }), + mvts: ['0x687B069759b053866715542f22877DA9091f20f5', '0x93402F1908dD009C857962b45278E71C7F63647f', '0x24318b8a0CBaCc61cAdE47e5457Eea7237EB2c0E'], }, mode: { - tvl: sumTokensExport({ owners: ['0xafCA20A243e4e4936fAF76e8893128A231678677', '0xbD38B722480e2e3D540CaFC44A113d92E1015faa', '0xFdC5033b6Ef5DEDc6b5225B3Fbe3704C3F9638eE', '0xbfE8c19642929Ea9FfD1754e8DdAb880F05022f1'], tokens: [ - "0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038", //ionUSDC - "0x2416092f143378750bb29b79eD961ab195CcEea5", //ezETH - "0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3", //ionUSDT - "0x04c0599ae5a44757c0af6f9ec3b93da8976c150a", //weETH - ] }), + mvts: ['0xafCA20A243e4e4936fAF76e8893128A231678677', '0xbD38B722480e2e3D540CaFC44A113d92E1015faa', '0xFdC5033b6Ef5DEDc6b5225B3Fbe3704C3F9638eE', '0xbfE8c19642929Ea9FfD1754e8DdAb880F05022f1'], }, linea: { - tvl: sumTokensExport({ owners: ['0x7CDb0b6217A568947D3A2585F0E8AF135017d608', '0xd9BE9956C822000cc0078C16C66B7dd83E6E07C4', '0x2770cB901e6d990B4F5C35E0732821eBf9d3acb7', '0x4F50E7D6A48D78D813775d7A36717DA6A058811D'], tokens: [ - "0x333D8b480BDB25eA7Be4Dd87EEB359988CE1b30D", //meUSDC - "0xf669C3C03D9fdF4339e19214A749E52616300E89", //meUSDT - "0x2416092f143378750bb29b79eD961ab195CcEea5", //ezETH - "0x1Bf74C010E6320bab11e2e5A532b5AC15e0b8aA6", //weETH - ] }), + mvts: ['0x7CDb0b6217A568947D3A2585F0E8AF135017d608', '0xd9BE9956C822000cc0078C16C66B7dd83E6E07C4', '0x2770cB901e6d990B4F5C35E0732821eBf9d3acb7', '0x4F50E7D6A48D78D813775d7A36717DA6A058811D'], }, } + + +Object.keys(config).forEach(chain => { + const { mvts,} = config[chain] + module.exports[chain] = { + tvl: async (api) => { + const assets = await api.multiCall({ abi: 'address:asset', calls: mvts}) + return api.sumTokens({ tokensAndOwners2: [assets, mvts]}) + } + } +}) \ No newline at end of file From fdefe9b3c003cf8b2ea9e5c439dfef66dc7cabac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 20 May 2024 14:11:14 +0530 Subject: [PATCH 1665/2004] ion 2 (#10284) * fix: upgraded ion contracts * minor fix --------- Co-authored-by: Dashan McCain --- projects/ion-protocol/index.js | 85 ++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/projects/ion-protocol/index.js b/projects/ion-protocol/index.js index 26510eaa0d7..fe221169578 100644 --- a/projects/ion-protocol/index.js +++ b/projects/ion-protocol/index.js @@ -1,41 +1,68 @@ - +const { getConfig } = require("../helper/cache"); const { lendingMarket } = require("../helper/methodologies"); + const abi = { - debt: "uint256:debt", + debt: "function debt(address pool) external view returns (uint256)", totalCollateral: "uint256:totalGem", totalSupply: "uint256:totalSupply", underlyingLender: "address:underlying", underlyingCollateral: "address:GEM", }; -module.exports = { - methodology: lendingMarket, +async function getMarkets() { + return getConfig('ion-markets', "https://ion-backend.vercel.app/v1/bigbrother/markets"); } -const config = { - ethereum: { - gems: [ - "0x3f6119B0328C27190bE39597213ea1729f061876", // weETH/wstETH GemJoin - "0x3bC3AC09d1ee05393F2848d82cb420f347954432", // rsETH/wstETH GemJoin - "0xD696f9EA3299113324B9065ab19b70758256cf16", // rswETH/wstETH GemJoin - ] - }, +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) + ); } -Object.keys(config).forEach(chain => { - const { gems } = config[chain] - module.exports[chain] = { - tvl: async (api) => { - 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({ tokens: tokens.concat(gemUnderlyings), owners: pools.concat(gems) }) - }, - borrowed: async (api) => { - const pools = await api.multiCall({ abi: 'address:POOL', calls: gems }) - const tokens = await api.multiCall({ abi: abi.underlyingLender, calls: pools }) - const debt = await api.multiCall({ abi: abi.debt, calls: pools }) - api.add(tokens, debt.map(b => b / 1e27)) - } - } -}) \ No newline at end of file +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, + }, +}; From cf3314513469adeb9d9a24b5855c5077f5a926ce Mon Sep 17 00:00:00 2001 From: barbat0x Date: Mon, 20 May 2024 11:28:29 +0200 Subject: [PATCH 1666/2004] Add Miner project and TVL (#10272) * add avalanche TVL for Antfarm finance * add TVL for Miner * add base TVL * minor fix --------- Co-authored-by: barbat0x Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/miner/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/miner/index.js diff --git a/projects/miner/index.js b/projects/miner/index.js new file mode 100644 index 00000000000..53937a40e70 --- /dev/null +++ b/projects/miner/index.js @@ -0,0 +1,27 @@ +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"], + ), + }, +}; From 35e453a25ca5ac60856c0b1fb518285ff7ee47a7 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 20 May 2024 12:00:18 +0200 Subject: [PATCH 1667/2004] track 9inch.io v3 --- projects/9inch-io-v3/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/9inch-io-v3/index.js diff --git a/projects/9inch-io-v3/index.js b/projects/9inch-io-v3/index.js new file mode 100644 index 00000000000..1800421d176 --- /dev/null +++ b/projects/9inch-io-v3/index.js @@ -0,0 +1,3 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ pulse: { factory: '0xCfd33C867C9F031AadfF7939Cb8086Ee5ae88c41', fromBlock: 20357155, } }) \ No newline at end of file From 868ddfbd10248cf5bf06ac19e8be2ebc4585f8f2 Mon Sep 17 00:00:00 2001 From: gaawai-l Date: Mon, 20 May 2024 18:50:07 +0800 Subject: [PATCH 1668/2004] Add a new liquidity pool for selling puts on Jaspervault (#10285) * add jaspervault tvl * minor fix * Add a new liquidity pool for selling puts. --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/jaspervault/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/jaspervault/index.js b/projects/jaspervault/index.js index 3c70971341a..ba1ff656c5c 100644 --- a/projects/jaspervault/index.js +++ b/projects/jaspervault/index.js @@ -5,7 +5,8 @@ module.exports = { arbitrum: { tvl: sumTokensExport({ owners: [ - '0xE980FD1dEA4E93c25B7f5B27351CF069C4f63a41', // sell WBTC ETH CALL & PUT + '0xE980FD1dEA4E93c25B7f5B27351CF069C4f63a41', // sell WBTC & ETH CALL + '0xE26f15B3cc23e8a5adE4c10CCc69e50520eE2a89' // sell WBTC & ETH PUT ], tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.null, ADDRESSES.arbitrum.USDT] }) From 9e4dbda5ded3da544f623cc423c4ff3cbfd2bdb5 Mon Sep 17 00:00:00 2001 From: Adolf998 <154962952+Adolf998@users.noreply.github.com> Date: Mon, 20 May 2024 18:50:26 +0800 Subject: [PATCH 1669/2004] add bouncebit-lsd & bouncebit-premium (#10276) * add bouncebit-lsd & bouncebit-premium * add bouncebit fixBalancesTokens * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bouncebit-lsd/index.js | 15 +++++++++++++++ projects/bouncebit-premium/index.js | 26 ++++++++++++++++++++++++++ projects/helper/tokenMapping.js | 2 ++ 3 files changed, 43 insertions(+) create mode 100644 projects/bouncebit-lsd/index.js create mode 100644 projects/bouncebit-premium/index.js diff --git a/projects/bouncebit-lsd/index.js b/projects/bouncebit-lsd/index.js new file mode 100644 index 00000000000..80470dac862 --- /dev/null +++ b/projects/bouncebit-lsd/index.js @@ -0,0 +1,15 @@ +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 new file mode 100644 index 00000000000..e60eea7a28a --- /dev/null +++ b/projects/bouncebit-premium/index.js @@ -0,0 +1,26 @@ +const { sumTokensExport } = require('../helper/sumTokens'); + +const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' +const BBUSD = '0x77776b40C3d75cb07ce54dEA4b2Fd1D07F865222' +const stBBTC = '0x7F150c293c97172C75983BD8ac084c187107eA19' + +module.exports = { + ethereum: { + tvl: sumTokensExport({ + owners: ["0x1ddD6E5eA766511CC0f348DC8d17578a821B680F", "0xa2B283e4dbdFEA5461C36a59E3B94b3ef2883085"], + tokens: [BBTC, BBUSD] + }), + }, + bsc: { + tvl: sumTokensExport({ + owners: ["0x55a55e8b08b091bD0529bf1af05b69fF5291867D", "0xdAfd8591402c5E57DCa4B1b9e481c08548a2442E"], + tokens: [BBTC, BBUSD] + }), + }, + bouncebit: { + tvl: sumTokensExport({ + owners: ["0xd4def93a10ada7e14cAdc6920b6CDE01148D1813", "0x426CD147ff93f31BB18F1Acd19DAb9c32d934131", '0x7F26aB9263E33de947654F44C5AB439090cfAaf7'], + tokens: [BBTC, BBUSD, stBBTC] + }), + }, +}; diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3150b654a79..20b905a5417 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -99,8 +99,10 @@ const fixBalancesTokens = { '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, }, bouncebit: { + '0x0000000000000000000000000000000000000000': { coingeckoId: 'bouncebit', decimals: 18 }, '0xf4c20e5004c6fdcdda920bdd491ba8c98a9c5863': { coingeckoId: 'bouncebit', decimals: 18 }, '0x77776b40c3d75cb07ce54dea4b2fd1d07f865222': { coingeckoId: 'tether', decimals: 18 }, + '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC': { coingeckoId: 'bitcoin', decimals: 18 }, }, linea: { '0x63ba74893621d3d12f13cec1e86517ec3d329837': { coingeckoId: 'liquity-usd', decimals: 18 }, From 38e537b1b82a7b426d28aab8ff29593db7401490 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 20 May 2024 15:23:21 +0100 Subject: [PATCH 1670/2004] izumi-hallmark (#10289) --- projects/izumi-iziswap/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 063b4623903..6970edde859 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -45,4 +45,8 @@ const blacklistedTokens = [ Object.keys(poolHelpers).forEach(chain => { module.exports[chain] = { tvl: iziswapExport({ poolHelpers: poolHelpers[chain], blacklistedTokens }), } -}) \ No newline at end of file +}) + +module.exports.hallmarks = [ + [1715648400,"End Mode TVL Campaign S1"] +] \ No newline at end of file From 4d832b407e84ea7611d3fc7024d694a36c2d3efa Mon Sep 17 00:00:00 2001 From: Pavel Shuvalov Date: Mon, 20 May 2024 18:56:34 +0400 Subject: [PATCH 1671/2004] rename orbit bridge USDT to oUSDT to avoid name conflict (#10286) --- projects/helper/coreAssets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 618d3e22fc3..d5ba1ab6e70 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1271,7 +1271,7 @@ "TON_3": "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c", "TON_4": "EQCajaUU1XXSAjTD-xOV7pE49fGtg4q8kF3ELCOJtGvQFQ2C", "USDC": "EQC61IQRl0_la95t27xhIpjxZt32vl1QQVF2UgTNuvD18W-4", - "USDT": "EQC_1YoM8RBixN95lz7odcF3Vrkc_N8Ne7gQi7Abtlet_Efi", + "oUSDT": "EQC_1YoM8RBixN95lz7odcF3Vrkc_N8Ne7gQi7Abtlet_Efi", "ETH": "EQAW42HutyDem98Be1f27PoXobghh81umTQ-cGgaKVmRLS7-", "MATIC": "EQBq4d4GPyBoh-Pjnf3wxUyQSS28WY2Yt-7cPAG8FHpWpNRX", "ORC": "EQDCIEo0HUUYsAV-lTMviOd-GkSXfVPsNZMGjRaNOA_6--FD", From 9dffb5cdfa8f9fb169076e27805c5a557daba446 Mon Sep 17 00:00:00 2001 From: Dozer <71271486+dev-dozer@users.noreply.github.com> Date: Mon, 20 May 2024 17:57:45 +0300 Subject: [PATCH 1672/2004] added zklink nova chain (#10288) --- projects/interport-finance/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/interport-finance/index.js b/projects/interport-finance/index.js index 60e791a3b7e..bc3afb0548f 100644 --- a/projects/interport-finance/index.js +++ b/projects/interport-finance/index.js @@ -4,6 +4,8 @@ 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'] }, @@ -11,13 +13,14 @@ const config = { 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'].forEach(chain => { +['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 From e72ed3f0ed4960a21336c3151330782c77ed2fda Mon Sep 17 00:00:00 2001 From: hbdgr Date: Mon, 20 May 2024 17:29:26 +0200 Subject: [PATCH 1673/2004] Update Colony - additional TVL sources, treasury adapter (#10287) * colony: tvl from staking rewards * colony: tvl from colony dex (forked uniswap v2) pairs * colony: tvl from Nests USD investments * colony: treasury from Validation Program * colony: add treasury wallets and tokens * colony: TVL adapter - style * colony: add hallmark for EarlyStage Launch * minor refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/colony/earlyStageInvestments.js | 29 ++++++++ projects/colony/index.js | 38 +++++++++-- projects/colony/stakingRewards.js | 52 ++++++++++++++ projects/treasury/colony.js | 87 ++++++++++++++++++++++++ 4 files changed, 201 insertions(+), 5 deletions(-) create mode 100644 projects/colony/earlyStageInvestments.js create mode 100644 projects/colony/stakingRewards.js create mode 100644 projects/treasury/colony.js diff --git a/projects/colony/earlyStageInvestments.js b/projects/colony/earlyStageInvestments.js new file mode 100644 index 00000000000..d30d0409e58 --- /dev/null +++ b/projects/colony/earlyStageInvestments.js @@ -0,0 +1,29 @@ +/// 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 index 590acdeb52c..77d1808fa02 100644 --- a/projects/colony/index.js +++ b/projects/colony/index.js @@ -1,5 +1,10 @@ -const { clyVesting } = require("./clyVesting") -const { staking } = require('../helper/staking') +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"; @@ -9,25 +14,48 @@ 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, + fetchBalances: true, + 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 already unlocked and available to claim CLY tokens in the vesting contract", + "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: 1638367059, // CLY Token deployment - tvl: async () => ({}), + tvl: _tvl(), staking: _staking, // vesting: clyVesting(colonyGovernanceToken, vestingContract), vesting: staking(vestingContract, colonyGovernanceToken), }, hallmarks: [ [1651241728, "Staking V2 Launch"], - [1711370069, "Staking V3 Launch"] + [1711370069, "Staking V3 Launch"], + [1715688000, "EarlyStage Launch"] ], }; diff --git a/projects/colony/stakingRewards.js b/projects/colony/stakingRewards.js new file mode 100644 index 00000000000..cb6501437bf --- /dev/null +++ b/projects/colony/stakingRewards.js @@ -0,0 +1,52 @@ +/// 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/treasury/colony.js b/projects/treasury/colony.js new file mode 100644 index 00000000000..2d00f956f67 --- /dev/null +++ b/projects/treasury/colony.js @@ -0,0 +1,87 @@ +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 } +}]) From 2777417aee1532fd1a5e08f706ad912df7241139 Mon Sep 17 00:00:00 2001 From: tyler-tsai Date: Tue, 21 May 2024 02:53:15 -0400 Subject: [PATCH 1674/2004] feat: add new collateral token for lista (#10291) Co-authored-by: Tyler Tsai --- projects/helio-money/index.js | 46 ++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/projects/helio-money/index.js b/projects/helio-money/index.js index 769661eadd1..14518e17f3c 100644 --- a/projects/helio-money/index.js +++ b/projects/helio-money/index.js @@ -13,39 +13,20 @@ module.exports = { // BNB [ADDRESSES.null, "0x986b40C2618fF295a49AC442c5ec40febB26CC54"], - //ankrBNB - [ - "0x52F24a5e03aee338Da5fd9Df68D2b6FAe1178827", - "0x25b21472c073095bebc681001cbf165f849eee5e", - ], - - //stkBNB - [ - "0xc2E9d07F66A89c44062459A47a0D2Dc038E4fb16", - "0x98CB81d921B8F5020983A46e96595471Ad4E60Be", - ], - //snBNB + //slisBNB [ "0xB0b84D294e0C75A6abe60171b70edEb2EFd14A1B", "0x6F28FeC449dbd2056b76ac666350Af8773E03873", ], - //BNBx - [ - "0x1bdd3Cf7F79cfB8EdbB955f20ad99211551BA275", - "0x6ae7073d801a74eE753F19323DF320C8F5Fe2DbC", - ], - // snBNB + // slisBNB [ "0xB0b84D294e0C75A6abe60171b70edEb2EFd14A1B", "0x91e49983598685DD5ACAc90CEb4061A772f6E5Ae", ], // eth - [ - ADDRESSES.bsc.ETH, - "0xA230805C28121cc97B348f8209c79BEBEa3839C0", - ], + [ADDRESSES.bsc.ETH, "0xA230805C28121cc97B348f8209c79BEBEa3839C0"], // eth => wBETH [ @@ -58,6 +39,27 @@ module.exports = { "0xa2E3356610840701BDf5611a53974510Ae27E2e1", "0xA230805C28121cc97B348f8209c79BEBEa3839C0", ], + + // BTCB + [ + "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + "0xad9eAAe95617c39019aCC42301a1dCa4ea5b6f65", + ], + // ezETH + [ + "0x2416092f143378750bb29b79ed961ab195cceea5", + "0xd7E33948e2a43e7C1ec2F19937bf5bf8BbF9BaE8", + ], + // weETH + [ + "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", + "0x2367f2Da6fd39De6944218CC9EC706BCdc9a6918", + ], + // STONE + [ + "0x80137510979822322193fc997d400d5a6c747bf7", + "0x876cd9a380Ee7712129b52f8293F6f06056c3104", + ], ], }), }, From 98c9c232e8b6928058ddab8dba359c3c89622ed3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 21 May 2024 09:11:31 +0200 Subject: [PATCH 1675/2004] dolomite: track new chains --- projects/dolomite/index.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/projects/dolomite/index.js b/projects/dolomite/index.js index 929a92f3251..773ad3ad5e5 100644 --- a/projects/dolomite/index.js +++ b/projects/dolomite/index.js @@ -6,10 +6,10 @@ const { } = require("./dolomite-margin.json"); const BigNumber = require("bignumber.js"); -const dolomiteMargin = "0x6bd780e7fdf01d77e4d475c821f1e7ae05409072"; const basePar = '1000000000000000000' async function getTokensAndBalances(api, supplyOrBorrow) { + const dolomiteMargin = config[api.chain].margin const 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 @@ -35,8 +35,16 @@ async function borrowed(api) { module.exports = { start: 1664856000, // 10/4/2022 @ 00:00am (UTC) - arbitrum: { - tvl, - borrowed - }, }; + +const config = { + arbitrum: { margin: '0x6bd780e7fdf01d77e4d475c821f1e7ae05409072', }, + polygon_zkevm: { margin: '0x836b557Cf9eF29fcF49C776841191782df34e4e5', }, + mantle: { margin: '0xE6Ef4f0B2455bAB92ce7cC78E35324ab58917De8', }, + xlayer: { margin: '0x836b557Cf9eF29fcF49C776841191782df34e4e5', }, + // base: { margin: '0x43C2FDB89A1C491F9FE86E1Ff05bd2BE204Ab4aE', }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { tvl, borrowed, } +}) \ No newline at end of file From 40037005a158658c07331630c7d7af6023bc9313 Mon Sep 17 00:00:00 2001 From: Galen <160598801+GalenSofiadis@users.noreply.github.com> Date: Tue, 21 May 2024 14:33:06 +0700 Subject: [PATCH 1676/2004] feat: add zeno project (#10293) --- projects/zeno/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/zeno/index.js diff --git a/projects/zeno/index.js b/projects/zeno/index.js new file mode 100644 index 00000000000..7a0ec0617b7 --- /dev/null +++ b/projects/zeno/index.js @@ -0,0 +1,22 @@ +async function metisTvl(api) { + const vaultStorageAddress = "0xFaEee486F4A53cdBEaBE37216bcf1016eB4E52D6"; + + // eth, usdt, usdc + const zenoUnderlyingTokens = [ + "0x420000000000000000000000000000000000000a", + "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21", + "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC", + ]; + + return api.sumTokens({ + owner: vaultStorageAddress, + tokens: zenoUnderlyingTokens, + }); +} + +module.exports = { + start: 1710294153, + metis: { + tvl: metisTvl, + }, +}; From fb2611727a2fb6d9d050f7592553db12ec761af6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 21 May 2024 13:37:23 +0530 Subject: [PATCH 1677/2004] Update TVL calculation for liquid WETH (#10296) * get liquid weth from contract * get block * add sdk * update abi * remove memory * update method name * updated contract to get timestamp of when tvl updated * retrieve timestamp * minor fix * add check for stale data --------- Co-authored-by: Vaibhav Valecha --- projects/etherfi-liquid/index.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/projects/etherfi-liquid/index.js b/projects/etherfi-liquid/index.js index 6eaed15280f..1498bdcc48f 100644 --- a/projects/etherfi-liquid/index.js +++ b/projects/etherfi-liquid/index.js @@ -1,15 +1,28 @@ const ADDRESSES = require('../helper/coreAssets.json') +const sdk = require('@defillama/sdk') + async function tvl(api) { + const optimismApi = new sdk.ChainApi({ chain: 'optimism', timestamp: api.timestamp }) const balETH = await api.call({ abi: "uint256:totalAssets", target: '0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221', }); - const wethBal = await api.call({ - target: ADDRESSES.ethereum.WETH, - abi: "erc20:balanceOf", - params: ['0xea1a6307d9b18f8d1cbf1c3dd6aad8416c06a221'], + await optimismApi.getBlock() + const wethBal = await optimismApi.call({ + target: '0xAB7590CeE3Ef1A863E9A5877fBB82D9bE11504da', + abi: 'function categoryTVL(string _category) view returns (uint256)', + params: ['liquid-weth'] + }); + const updatedTimestamp = await optimismApi.call({ + target: '0xAB7590CeE3Ef1A863E9A5877fBB82D9bE11504da', + abi: 'function categoryLastUpdated(string _category) view returns (uint256)', + params: ['liquid-weth'] }); - api.add(ADDRESSES.ethereum.EETH, balETH-wethBal); + if (api.timestamp - updatedTimestamp > 12 * 60 * 60 || updatedTimestamp > api.timestamp) { + throw new Error('Data is outdated') + } + console.log(updatedTimestamp, api.timestamp) + api.add(ADDRESSES.ethereum.EETH, balETH - wethBal); api.add(ADDRESSES.ethereum.WETH, wethBal) const balUSD = await api.call({ abi: "uint256:totalSupply", From b94cb2bca76b6b1df42fead807f6ea99104a2a97 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 21 May 2024 10:11:26 +0200 Subject: [PATCH 1678/2004] track tealswap v3 --- projects/tealswap-v3/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/tealswap-v3/index.js diff --git a/projects/tealswap-v3/index.js b/projects/tealswap-v3/index.js new file mode 100644 index 00000000000..cd509eee5e0 --- /dev/null +++ b/projects/tealswap-v3/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + oas: { + factory: "0xe3fc2cB6E8c2671816D15B556B47375Afb2C29bD", + fromBlock: 2445228, + }, +}) \ No newline at end of file From a813d5479447ec74737bfae99f7cbeb2eae8e37e Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 21 May 2024 13:14:43 +0100 Subject: [PATCH 1679/2004] add zklink to logx (#10300) * add zklink to logx * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/logx/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/logx/index.js b/projects/logx/index.js index 43af074153b..a90d5d4e53f 100644 --- a/projects/logx/index.js +++ b/projects/logx/index.js @@ -1,3 +1,5 @@ +const { nullAddress } = require("../helper/tokenMapping") + module.exports = { methodology: "USDC.e in the vault", } @@ -9,7 +11,8 @@ const config = { manta: '0x53c6decad02cB6C535a7078B686650c951aD6Af5', telos: '0x082321F9939373b02Ad54ea214BF6e822531e679', fuse: '0x082321F9939373b02Ad54ea214BF6e822531e679', - mode: ['0x34b83A3759ba4c9F99c339604181bf6bBdED4C79', '0x082321F9939373b02Ad54ea214BF6e822531e679'] + mode: ['0x34b83A3759ba4c9F99c339604181bf6bBdED4C79', '0x082321F9939373b02Ad54ea214BF6e822531e679'], + zklink: ['0x75940cDa18F14D1F97562fc2A6dBCe31CBe03870'] } Object.keys(config).forEach(chain => { @@ -20,7 +23,12 @@ Object.keys(config).forEach(chain => { const ownerTokens = [] for (const v of vault) { const tokens = await api.fetchList({ lengthAbi: 'allWhitelistedTokensLength', itemAbi: 'allWhitelistedTokens', target: v }) - ownerTokens.push([tokens, v]) + ownerTokens.push([tokens.map(i => { + switch (i.toLowerCase()) { + case '0x000000000000000000000000000000000000800a': return nullAddress + default: return i + } + }), v]) } return api.sumTokens({ ownerTokens }) } From 0165a049fd2c9d03da521016fdd795d5ecc2fac9 Mon Sep 17 00:00:00 2001 From: MirthFutures <69535002+MirthFutures@users.noreply.github.com> Date: Tue, 21 May 2024 08:15:02 -0400 Subject: [PATCH 1680/2004] Add Beefy to Mode Chain (#10304) * Add Beefy Gnosis * Update index.js * Add Mode to Beefy --------- Co-authored-by: Real Shaman <85087525+realdealshaman@users.noreply.github.com> --- projects/beefy/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 0354c206802..2422c214110 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -50,6 +50,7 @@ const chains = { mantle: 5000, canto: 7700, base: 8453, + mode: 34443, arbitrum: 42161, celo: 42220, oasis: 42262, From 48991f9585372d6f5bf9b09e1707cacbc85585a2 Mon Sep 17 00:00:00 2001 From: Valdislav Dihtiarenko <66130898+Digtyarenk0@users.noreply.github.com> Date: Tue, 21 May 2024 14:18:19 +0200 Subject: [PATCH 1681/2004] update: added missing tokens in primex-finance (#10302) * feat: ethereum contracts * fix: default tokens * Add missed tokens --------- Co-authored-by: Eugene Mormul --- projects/primex-finance/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/primex-finance/index.js b/projects/primex-finance/index.js index 875ca18e338..1fb8033cf77 100644 --- a/projects/primex-finance/index.js +++ b/projects/primex-finance/index.js @@ -8,11 +8,16 @@ const config = { positionManager: '0x02bcaA4633E466d151b34112608f60A82a4F6035', traderBalanceVault: '0x0801896C67CF024606BcC92bd788d6Eb077CC74F', defaultTokens: { + MATIC: ADDRESSES.polygon.WMATIC_1, + WMATIC: ADDRESSES.polygon.WMATIC_2, WETH: ADDRESSES.polygon.WETH_1, WBTC: ADDRESSES.polygon.WBTC, - WMATIC: ADDRESSES.polygon.WMATIC_2, USDC: ADDRESSES.polygon.USDC, USDT: ADDRESSES.polygon.USDT, + AAVE: "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", + DAI: ADDRESSES.polygon.DAI, + LINK: "0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39", + GNS: "0xE5417Af564e4bFDA1c483642db72007871397896", EPMX: "0xDc6D1bd104E1efa4A1bf0BBCf6E0BD093614E31A" }, aaveTokens: { @@ -32,6 +37,7 @@ const config = { USDC: ADDRESSES.arbitrum.USDC_CIRCLE, USDT: ADDRESSES.arbitrum.USDT, WETH: ADDRESSES.arbitrum.WETH, + ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", WBTC: ADDRESSES.arbitrum.WBTC, ARB: ADDRESSES.arbitrum.ARB, DAI: ADDRESSES.arbitrum.DAI, @@ -60,6 +66,7 @@ const config = { traderBalanceVault: '0x156e2fC8e1906507412BEeEB6640Bf999a1Ea76b', defaultTokens: { WETH: ADDRESSES.ethereum.WETH, + ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", WBTC: ADDRESSES.ethereum.WBTC, USDC: ADDRESSES.ethereum.USDC, USDT: ADDRESSES.ethereum.USDT, From 340b07702319612827d4f82ddb2a70afdb8ee7ef Mon Sep 17 00:00:00 2001 From: NovaSwap | Dev Date: Tue, 21 May 2024 20:46:28 +0800 Subject: [PATCH 1682/2004] Added Novaswap adapter (#10301) * Added novaswap adapter * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/env.js | 1 + projects/novaswap/index.js | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 projects/novaswap/index.js diff --git a/projects/helper/env.js b/projects/helper/env.js index 67e111830f1..58d3a3c34f9 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -16,6 +16,7 @@ const DEFAULTS = { BTR_RPC_MULTICALL: '0xc8818aaeaBF0dF9f3f3ffF54Ab185705177A6234', DEFICHAIN_EVM_RPC_MULTICALL: '0x7fEf77CDe3B41221Cff54B84Ea89D2EBc6b53352', BOUNCEBIT_RPC_MULTICALL: '0x493d616f5F9a64e5B3D527120E406439bdF29272', + ZKLINK_RPC_MULTICALL: '0xa8738F57538E3Bb73872d1133F2358c7Fe56FD35', } const ENV_KEYS = [ diff --git a/projects/novaswap/index.js b/projects/novaswap/index.js new file mode 100644 index 00000000000..1859081eacf --- /dev/null +++ b/projects/novaswap/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + zklink: { factory: '0xf8D35842f37800E349A993503372fb9E2CBb7E3d', fromBlock: 1676253 }, +}) \ No newline at end of file From e2880f3af9c11b33af87b8e3a98885cf0b816425 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Tue, 21 May 2024 20:47:42 +0800 Subject: [PATCH 1683/2004] add mirro ceffu balance (#10305) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js * update subgraph url * fix bug * revert * Excluding Fof Funds * add other Deposit * add solvbtc Solv Funds del solvbtc * update graphql query * add mirro balance --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Co-authored-by: qwen-solv --- projects/solv-protocol-funds/index.js | 140 ++++++++++++++++++++++++-- 1 file changed, 134 insertions(+), 6 deletions(-) diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index e67465e04d2..bac24c4908f 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -3,7 +3,7 @@ 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 { getAmounts } = require("./iziswap"); // The Graph const graphUrlList = { @@ -19,15 +19,17 @@ const slotListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/solv-pro const addressUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solv-funds.json'; async function tvl(api) { - let address = (await getConfig('solv-protocol/funds', addressUrl)); + 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 lendle(api, address); - await vaultBalance(api); - // await otherDeposit(api, address); + await vaultBalance(api, graphData); + await otherDeposit(api, address); + await ceffuBalance(api, address, graphData); return api.getBalances(); } @@ -286,9 +288,8 @@ async function lendle(api, address) { api.add(lendleData.account.ethAddress, balance) } -async function vaultBalance(api) { +async function vaultBalance(api, graphData) { const network = api.chain; - const graphData = await getGraphData(api.timestamp, network, api); const solvbtcListUrl = 'https://raw.githubusercontent.com/solv-finance-dev/slov-protocol-defillama/main/solvbtc.json'; let solvbtc = (await getConfig('solv-protocol/solvbtc', solvbtcListUrl)); @@ -333,6 +334,133 @@ async function vaultBalance(api) { } } +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][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 getGraphSoltData(timestamp, chain, api, slot) { + console.log("slot", slot) + const poolSlotDataQuery = `query PoolOrderInfos { + poolOrderInfos(first: 1000 where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot:"${slot["slot"]}") { + marketContractAddress + contractAddress + navOracle + poolId + vault + openFundShareSlot + } + }`; + + console.log("slotDataQuery", poolSlotDataQuery); + let data; + if (graphUrlList[chain]) { + data = (await cachedGraphQuery(`solv-protocol/funds-graph-data/${chain}`, graphUrlList[chain], poolSlotDataQuery, { api, fetchById: true })); + } + + let poolList = []; + if (data != undefined && data.poolOrderInfos != undefined) { + poolList = data.poolOrderInfos; + } + + return { + pools: poolList + }; +} async function getGraphData(timestamp, chain, api) { let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); From 9b8d0c7afe9b7952bbe991bc85e2c98dc76ef483 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 21 May 2024 14:58:04 +0200 Subject: [PATCH 1684/2004] davos: track ceMATIC --- projects/davos-protocol/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/davos-protocol/index.js b/projects/davos-protocol/index.js index 6cdac9fca1c..d5f310e020a 100644 --- a/projects/davos-protocol/index.js +++ b/projects/davos-protocol/index.js @@ -1,3 +1,4 @@ +const { nullAddress } = require('../helper/unwrapLPs') const config = { arbitrum: { @@ -31,6 +32,11 @@ 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]}) } From f1819b96e658c10defa3c9b85a6382bec240ea89 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 21 May 2024 15:55:37 +0200 Subject: [PATCH 1685/2004] minor fix --- projects/satoshi-protocol/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/satoshi-protocol/index.js b/projects/satoshi-protocol/index.js index 4ac9b74b2c4..61dbc564090 100644 --- a/projects/satoshi-protocol/index.js +++ b/projects/satoshi-protocol/index.js @@ -1,3 +1,5 @@ +const { sumTokens2 } = require("../helper/unwrapLPs") + const TROVE_MANAGER_LIST = [ '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA', // WBTC Collateral '0xa794a7Fd668FE378E095849caafA8C8dC7E84780', // wstBTC Collateral @@ -5,7 +7,7 @@ const TROVE_MANAGER_LIST = [ async function tvl(api) { const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: TROVE_MANAGER_LIST}) - return api.sumTokens({ tokensAndOwners2: [tokens, TROVE_MANAGER_LIST]}) + return sumTokens2({ api, tokensAndOwners2: [tokens, TROVE_MANAGER_LIST]}) } module.exports = { From 9b83aacf9b665488bdf82f2dfc383f73acdbe734 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 21 May 2024 20:17:49 +0100 Subject: [PATCH 1686/2004] add bouncebit chain to meson (#10312) --- projects/meson/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/meson/index.js b/projects/meson/index.js index fa131455647..240504c5e57 100644 --- a/projects/meson/index.js +++ b/projects/meson/index.js @@ -98,7 +98,8 @@ const config = { optimism: { id: 'opt'}, polygon_zkevm: { id: 'zkevm'}, era: { id: 'zksync'}, - btr: { id: 'bitlayer'} + btr: { id: 'bitlayer'}, + bouncebit: { id: 'bb'} } async function addCoinfg(id, ownerTokens) { From 0ce848758e125ea233212867a3a7f57519fad611 Mon Sep 17 00:00:00 2001 From: lilian ludford Date: Tue, 21 May 2024 16:40:30 -0400 Subject: [PATCH 1687/2004] USDY: adding aptos tvl + combining usdyc tvl with usdy (#10311) * adding aptos * adding usdyc to usdy * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ondofinance/index.js | 60 +++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/projects/ondofinance/index.js b/projects/ondofinance/index.js index 2820739e11a..84e2339b549 100644 --- a/projects/ondofinance/index.js +++ b/projects/ondofinance/index.js @@ -1,5 +1,6 @@ -const { getTokenSupply } = require('../helper/solana'); +const { getTokenSupply } = require("../helper/solana"); const sui = require("../helper/chain/sui"); +const { aQuery } = require("../helper/chain/aptos"); module.exports = { methodology: "Sums the total supplies of Ondo's issued tokens.", @@ -11,23 +12,27 @@ const config = { USDY: "A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6", }, ethereum: { - OUSG: '0x1B19C19393e2d034D8Ff31ff34c81252FcBbee92', - USDY: '0x96F6eF951840721AdBF46Ac996b59E0235CB985C', - USDYc: '0xe86845788d6e3e5c2393ade1a051ae617d974c09', + OUSG: "0x1B19C19393e2d034D8Ff31ff34c81252FcBbee92", + USDY: "0x96F6eF951840721AdBF46Ac996b59E0235CB985C", + USDYc: "0xe86845788d6e3e5c2393ade1a051ae617d974c09", }, polygon: { - OUSG: '0xbA11C5effA33c4D6F8f593CFA394241CfE925811', + OUSG: "0xbA11C5effA33c4D6F8f593CFA394241CfE925811", }, mantle: { USDY: "0x5bE26527e817998A7206475496fDE1E68957c5A6", }, sui: { - USDY: "0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY" - } -} + USDY: "0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY", + }, + aptos: { + USDY: "0xcfea864b32833f157f042618bd845145256b1bf4c0da34a7013b76e42daa53cc", + }, +}; async function getUSDYTotalSupplySUI() { - const USDY_TREASURY_CAP_OBJECT_ID = '0x9dca9f57a78fa7f132f95a0cf5c4d1b796836145ead7337da6b94012db62267a'; + const USDY_TREASURY_CAP_OBJECT_ID = + "0x9dca9f57a78fa7f132f95a0cf5c4d1b796836145ead7337da6b94012db62267a"; let treasuryCapInfo = await sui.getObject(USDY_TREASURY_CAP_OBJECT_ID); return treasuryCapInfo.fields.total_supply.fields.value; } @@ -39,23 +44,46 @@ Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl: async (api) => { let supplies; - if (chain === 'solana') { - supplies = await Promise.all(fundAddresses.map(getTokenSupply)) - .catch(error => { + if (chain === "solana") { + supplies = await Promise.all(fundAddresses.map(getTokenSupply)).catch( + (error) => { throw error; - }); + } + ); - const scaledSupplies = supplies.map(supply => supply * 1_000_000); + const scaledSupplies = supplies.map((supply) => supply * 1_000_000); api.addTokens(fundAddresses, scaledSupplies); } 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(config.ethereum.USDY, aptosSupply * 1e18, { skipChain: true, }); } else { - supplies = await api.multiCall({ abi: 'erc20:totalSupply', calls: fundAddresses }); + supplies = await api.multiCall({ + abi: "erc20:totalSupply", + calls: fundAddresses, + }); + if (chain === "ethereum") { + const usdycIndex = fundAddresses.indexOf(config.ethereum.USDYc); + const usdyIndex = fundAddresses.indexOf(config.ethereum.USDY); + // add USDYc supply to USDY supply + supplies[usdyIndex] = + parseInt(supplies[usdyIndex]) + parseInt(supplies[usdycIndex]); + fundAddresses.splice(usdycIndex, 1); + supplies.splice(usdycIndex, 1); + } api.addTokens(fundAddresses, supplies); } return api.getBalances(); }, }; }); - From d5858c69b4b302c6913e265074c1c45e22620cbc Mon Sep 17 00:00:00 2001 From: 0xSacha <90143060+0xSacha@users.noreply.github.com> Date: Tue, 21 May 2024 22:45:33 +0200 Subject: [PATCH 1688/2004] Feat/add nimbora yield (#10315) * add nimbora-yield * fix(nimbora-yield): update methodology --- projects/nimbora-yield/index.js | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 projects/nimbora-yield/index.js diff --git a/projects/nimbora-yield/index.js b/projects/nimbora-yield/index.js new file mode 100644 index 00000000000..246218de50e --- /dev/null +++ b/projects/nimbora-yield/index.js @@ -0,0 +1,35 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const { call, parseAddress } = require('../helper/chain/starknet') +const { getConfig } = require('../helper/cache') + +const totalAssetsAbi = { + "name": "total_assets", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "totalAssets", + "type": "Uint256" + } + ], + "stateMutability": "view" +} + + + +async function tvl(api) { + const strategyData = await getConfig('nimbora', "https://backend.nimbora.io/yield-dex/strategies") + for (let index = 0; index < strategyData.length; index++) { + const strategyInfo = strategyData[index]; + const underlying = parseAddress(strategyInfo.underlying) == "0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad" ? 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 + }, +} From 0cc357a90a050265c58a8ef0ab2cc298cefb975a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 22 May 2024 02:25:23 +0530 Subject: [PATCH 1689/2004] Add grace adapter and refactor code (#10316) * add grace adapter * code refactor --------- Co-authored-by: nourharidy --- projects/grace/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/grace/index.js diff --git a/projects/grace/index.js b/projects/grace/index.js new file mode 100644 index 00000000000..46ed6066e70 --- /dev/null +++ b/projects/grace/index.js @@ -0,0 +1,24 @@ +const CORE_CONTRACT = '0x1522ad0a3250eb0f64e0acfe090ca40949330cc1'; + +async function tvl(api) { + const pools = await api.fetchList({ lengthAbi: 'poolCount', itemAbi: 'poolList', target: CORE_CONTRACT }) + const collaterals = await api.fetchList({ lengthAbi: 'collateralCount', itemAbi: 'collateralList', target: CORE_CONTRACT }) + 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_CONTRACT }) + 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', + start: 14684731, + base: { + tvl, borrowed + } +}; \ No newline at end of file From 2349c183dddefc7057a77617ee3a6b7e3ad68ba3 Mon Sep 17 00:00:00 2001 From: MaxwellBlock <87404816+MaxwellBlock@users.noreply.github.com> Date: Wed, 22 May 2024 04:57:10 +0800 Subject: [PATCH 1690/2004] submit allspark adapter (#10313) submit allspark adapter --- projects/allspark/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/allspark/index.js diff --git a/projects/allspark/index.js b/projects/allspark/index.js new file mode 100644 index 00000000000..e59b148d7b7 --- /dev/null +++ b/projects/allspark/index.js @@ -0,0 +1,13 @@ +const ADDRESSES = require('../helper/coreAssets.json') +const {staking} = require("../helper/staking"); + +module.exports = { + methodology: 'allspark counts the staking values as tvl', + start: 1690371, + zklink:{ + tvl: staking( + ["0xD06B5A208b736656A8F9cD04ed43744C738BD8A9"], + [ADDRESSES.null] + ) + } +}; From 85e9a81efb21ebce01bd04c81cd72bb3389b02fc Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 22 May 2024 03:43:31 +0100 Subject: [PATCH 1691/2004] add new addresses --- projects/lyra-v2/index.js | 46 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/projects/lyra-v2/index.js b/projects/lyra-v2/index.js index 5a38db8b51b..667113cf9a6 100644 --- a/projects/lyra-v2/index.js +++ b/projects/lyra-v2/index.js @@ -3,6 +3,48 @@ const ADDRESSES = require('../helper/coreAssets.json') module.exports = { ethereum: { - tvl: sumTokensExport({ owner: '0x6d303cee7959f814042d31e0624fb88ec6fbcc1d', tokens: [ADDRESSES.ethereum.USDC] }) - } + tvl: sumTokensExport({ tokensAndOwners: [ + [ADDRESSES.ethereum.USDC, '0x6d303cee7959f814042d31e0624fb88ec6fbcc1d'], + [ADDRESSES.ethereum.WETH, '0xD4efe33C66B8CdE33B8896a2126E41e5dB571b7e'], + [ADDRESSES.ethereum.WBTC, '0x3Eec7c855aF33280F1eD38b93059F5aa5862E3ab'], + [ADDRESSES.ethereum.USDT, '0x5e98A25d8d6FF69A8992d6Aa57948dFB77D4ECBa'], + [ADDRESSES.ethereum.SNX, '0x7D7aC8d55A9bD4152b703011f3E61AB3bB0A5592'], + [ADDRESSES.ethereum.WSTETH, '0xeBB5D642aA8ccDeE98373D6aC3ee0602b63824b3'], + ['0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', '0x8180EcCC825b692ef65FF099a0A387743788bf78'], // weETH + ['0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0', '0x4BB4C3CDc7562f08e9910A0C7D8bB7e108861eB4'] // rswETH + ], + }) + }, + optimism: { + tvl: sumTokensExport({ tokensAndOwners: [ + [ADDRESSES.optimism.USDC_CIRCLE, '0xDEf0bfBdf7530C75AB3C73f8d2F64d9eaA7aA98e'], + [ADDRESSES.optimism.USDC, '0xBb9CF28Bc1B41c5c7c76Ee1B2722C33eBB8fbD8C'], + [ADDRESSES.optimism.WETH, '0xdD4c717a69763176d8B7A687728e228597eAB86d'], + [ADDRESSES.optimism.WBTC, '0xE5967877065f111a556850d8f05b8DaD88edCEc9'], + [ADDRESSES.optimism.USDT, '0x44343AE5e9319b61c9DaD7876919eFdB03241b02'], + ['0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4', '0x8574CBC539c26Df9ec11bA283218268101ff10e1'], // snx + [ADDRESSES.optimism.WSTETH, '0xAA8f9D05599F1a5d5929c40342c06a5Da063a4dE'] + ] + }) + }, + base: { + tvl: sumTokensExport({ tokensAndOwners: [ + [ADDRESSES.base.USDC, '0x4e798659b9846F1da7B6D6B5d09d581270aB6FEC'], + ['0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452', '0x2805B908a0F9CA58a2b3b7900341b4EBd0B994e9'], //wstETH + [ADDRESSES.base.WETH, '0xBd282333710B9C7e33E8a37d027885A7C079Ae23'], + ] + }) + }, + arbitrum: { + tvl: sumTokensExport({ tokensAndOwners: [ + [ADDRESSES.arbitrum.USDC_CIRCLE, '0x5e027ad442e031424b5a2C0ad6f656662Be32882'], + [ADDRESSES.arbitrum.USDC, '0xFB7B06538d837e4212D72E2A38e6c074F9076E0B'], + [ADDRESSES.arbitrum.WETH, '0x8e9f58E6c206CB9C98aBb9F235E0f02D65dFc922'], + [ADDRESSES.arbitrum.WBTC, '0x3D20c6A2b719129af175E0ff7B1875DEb360896f'], + [ADDRESSES.arbitrum.USDT, '0xb2Cb9aDA6e00118dA8E83a6A53dF1EC6331A60a6'], + [ADDRESSES.arbitrum.WSTETH, '0x8574CBC539c26Df9ec11bA283218268101ff10e1'], + ['0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe', '0x3FBFD80EF7591658d1D7DdEC067F413eFd6f985c'] + ] + }) + }, } \ No newline at end of file From 05f894182bfc0ba77e90a19e154d08d33e946772 Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Wed, 22 May 2024 13:33:10 +0800 Subject: [PATCH 1692/2004] add vaultka's token (VKA) staking info (#10319) --- projects/vaultka/index.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/projects/vaultka/index.js b/projects/vaultka/index.js index 85c31daa45f..4d85a4af3c5 100644 --- a/projects/vaultka/index.js +++ b/projects/vaultka/index.js @@ -1,6 +1,6 @@ //import utils const ADDRESSES = require("../helper/coreAssets.json"); - +const { staking } = require("../helper/staking"); // 19/12/2023 ALP Leverage Vault // 29/11/2023 GMXV2 Leverage(Neutral) Vault // 12/11/2023 GLP Compound Vault @@ -108,16 +108,12 @@ module.exports = { }); 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)", + 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)", + balanceOf: "function balanceOf(address) external view returns (uint256)", }; const StakedVLPBal = await api.call({ @@ -167,5 +163,6 @@ module.exports = { api.add(ADDRESSES.arbitrum.USDC, alpValue); api.add(ADDRESSES.arbitrum.USDC, klpValue); }, + staking: staking("0xA6f217d92A1F23C0454792cb7Bf81c74C8416550", "0xAFccb724e3aec1657fC9514E3e53A0E71e80622D"), }, }; From 476cc44dea31ee902fe16db8e3abbd13fdd109d9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 22 May 2024 12:41:12 +0530 Subject: [PATCH 1693/2004] "Add TVL and borrowed data for Huma pool" (#10322) * added Huma pool TVL * added a missing pool * reading v2 pool addresses from the factory * removed extra semicolons * split borrowed from tvl --------- Co-authored-by: PlayJoker --- projects/huma/index.js | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 projects/huma/index.js diff --git a/projects/huma/index.js b/projects/huma/index.js new file mode 100644 index 00000000000..fd27dc2d225 --- /dev/null +++ b/projects/huma/index.js @@ -0,0 +1,67 @@ +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: 1716248276, //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 From b9dc6731a52c5a438dcf3c588a1fd19f03c7d8a9 Mon Sep 17 00:00:00 2001 From: penpad-dev <168410560+penpad-dev@users.noreply.github.com> Date: Wed, 22 May 2024 15:21:55 +0800 Subject: [PATCH 1694/2004] add TVL assets and update category Yield Aggregator (#10320) * add assets add other assets * Update index.js * Update coreAssets.json --- projects/helper/coreAssets.json | 5 +++-- projects/penpad/index.js | 23 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index d5ba1ab6e70..eee6a5af45c 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1560,7 +1560,8 @@ "scroll": { "WETH": "0x5300000000000000000000000000000000000004", "USDT": "0xf55bec9cafdbe8730f096aa55dad6d22d44099df", - "USDC": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4" + "USDC": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", + "STONE": "0x80137510979822322193FC997d400D5A6C747bf7" }, "darwinia": { "RING": "0xe7578598aac020abfb918f33a20fad5b71d670b4" @@ -1774,4 +1775,4 @@ "btr": { "ETH": "0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2" } -} \ No newline at end of file +} diff --git a/projects/penpad/index.js b/projects/penpad/index.js index 39973ca3ca9..0ef51da7aa3 100644 --- a/projects/penpad/index.js +++ b/projects/penpad/index.js @@ -1,10 +1,25 @@ - const ADDRESSES = require('../helper/coreAssets.json'); -const { staking } = require('../helper/staking'); +const { sumTokensExport } = require('../helper/unknownTokens'); module.exports = { methodology: 'Counts liquidty on the staking', scroll: { - tvl: staking('0x8F53fA7928305Fd4f78c12BA9d9DE6B2420A2188', ADDRESSES.null), + 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 + ], + }), }, -} +}; From e0b1b943b60042ccc6dfc0fbf19a06187da395cd Mon Sep 17 00:00:00 2001 From: enoch-roots <117774949+enoch-roots@users.noreply.github.com> Date: Wed, 22 May 2024 02:28:37 -0500 Subject: [PATCH 1695/2004] add superposition project adapter (#10309) * add superposition project adapter * split borrowed from tvl --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/superposition/index.js | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 projects/superposition/index.js diff --git a/projects/superposition/index.js b/projects/superposition/index.js new file mode 100644 index 00000000000..b6ecf4c48d7 --- /dev/null +++ b/projects/superposition/index.js @@ -0,0 +1,51 @@ +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`); + +function processBrokerData(brokerDataArray, isBorrowed = false) { + const result = {}; + + brokerDataArray.map((item) => { + const { type, data } = item; + result[type] = !isBorrowed ? parseInt(data.available) : parseInt(data.borrowed) + }); + + return result; +} + +function simplifyKeys(balanceData, api) { + Object.entries(balanceData).forEach(([key, value]) => { + const newKey = key.match(/<([^>]+)>/)[1]; + api.add(newKey, 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 balanceData = processBrokerData(brokers); + simplifyKeys(balanceData, api); + }, + borrowed: async (api) => { + const resources = await _getResources(); + const brokers = resources.filter(brokersFilter); + const balanceData = processBrokerData(brokers, true); + simplifyKeys(balanceData, api); + }, + }, +}; From 6586ced106305deb647634772881ecc3702a8f81 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 22 May 2024 13:36:28 +0530 Subject: [PATCH 1696/2004] Update staking stats and add TVL (#10324) * Updated staking stats to include staked TLX and added TVL. * code refactor --------- Co-authored-by: pauljpritz-temp --- projects/tlx/index.js | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/projects/tlx/index.js b/projects/tlx/index.js index fd11ed7196c..24f65216b89 100644 --- a/projects/tlx/index.js +++ b/projects/tlx/index.js @@ -1,9 +1,15 @@ -const { sumTokens2 } = require("../helper/unwrapLPs"); +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: "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", locker: "0xc068c3261522c97ff719dc97c98c63a1356fef0f", -} + staker: "0xc30877315f3b621a8f7bcda27819ec29429f3817", + leveragedTokenHelper: "0xBdAF7A2C4ee313Be468B9250609ba8496131B1f0", +}; async function staking(api) { const lockedTlxBalance = await api.call({ @@ -11,15 +17,34 @@ async function staking(api) { target: contracts.locker, }); - api.addToken(contracts.tlx, lockedTlxBalance) - return sumTokens2({ api }) + 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: 1712731500, - methodology: "Total TLX locked in the genesis locker contract.", + 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: tvl, staking: staking, }, }; From 82c50a4d268d7d6b52fa7678931659b34a2c01b4 Mon Sep 17 00:00:00 2001 From: Qu33zZ <81550263+Qu33zZ@users.noreply.github.com> Date: Wed, 22 May 2024 11:13:13 +0300 Subject: [PATCH 1697/2004] add ponzi.market adapter (#10299) * feat: add ponzi.market adapter * fix: add onchain tvl calculation * code refactor --------- Co-authored-by: QueezZ Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ponzi-market/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/ponzi-market/index.js diff --git a/projects/ponzi-market/index.js b/projects/ponzi-market/index.js new file mode 100644 index 00000000000..5c95816f6bb --- /dev/null +++ b/projects/ponzi-market/index.js @@ -0,0 +1,22 @@ +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 From d54a1ad1c2095d9c81983ac707f938cff49aeac3 Mon Sep 17 00:00:00 2001 From: danielliu029 Date: Wed, 22 May 2024 16:25:21 +0800 Subject: [PATCH 1698/2004] Add WoofWoofWest (#10303) * Create index.js * Update index.js --- projects/woofwoofwest/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/woofwoofwest/index.js diff --git a/projects/woofwoofwest/index.js b/projects/woofwoofwest/index.js new file mode 100644 index 00000000000..9a48181fb2a --- /dev/null +++ b/projects/woofwoofwest/index.js @@ -0,0 +1,12 @@ +const { sumTokens2, } = require('../helper/unwrapLPs') + +async function tvl(api) { + +return sumTokens2({ owners: [ + '0x97886860D6F569C02c7DFAcE8030EFB5052dF353', + ], tokens: ['0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f'], api, }) //wbtc +} + +module.exports = { + btr: { tvl, } +} \ No newline at end of file From 9a8be08bf487881ef74de4403a51de954945ffe6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 22 May 2024 13:55:38 +0530 Subject: [PATCH 1699/2004] Revert "Add WoofWoofWest (#10303)" (#10325) This reverts commit d54a1ad1c2095d9c81983ac707f938cff49aeac3. --- projects/woofwoofwest/index.js | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 projects/woofwoofwest/index.js diff --git a/projects/woofwoofwest/index.js b/projects/woofwoofwest/index.js deleted file mode 100644 index 9a48181fb2a..00000000000 --- a/projects/woofwoofwest/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const { sumTokens2, } = require('../helper/unwrapLPs') - -async function tvl(api) { - -return sumTokens2({ owners: [ - '0x97886860D6F569C02c7DFAcE8030EFB5052dF353', - ], tokens: ['0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f'], api, }) //wbtc -} - -module.exports = { - btr: { tvl, } -} \ No newline at end of file From 97dd24659af0a3b196fdeed4154ec9ceb4b5629f Mon Sep 17 00:00:00 2001 From: Gull Network <165013002+GullNetwork@users.noreply.github.com> Date: Wed, 22 May 2024 16:26:29 +0800 Subject: [PATCH 1700/2004] Update GullNetwork adapter include liquidity (#10321) * GullNetwork adapter include liquidity * split adapter --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/gullnetwork-amm/index.js | 6 ++++++ projects/gullnetwork/index.js | 31 +++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 projects/gullnetwork-amm/index.js diff --git a/projects/gullnetwork-amm/index.js b/projects/gullnetwork-amm/index.js new file mode 100644 index 00000000000..441fa41b475 --- /dev/null +++ b/projects/gullnetwork-amm/index.js @@ -0,0 +1,6 @@ +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 index 7c2553ee150..b48859486b5 100644 --- a/projects/gullnetwork/index.js +++ b/projects/gullnetwork/index.js @@ -1,21 +1,40 @@ +const FACTORY_SINGLETON_ADDR = '0xFc6387f581d2A827F183A9ea68f07063F99744dE' -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 vaults = await api.fetchList({ lengthAbi: 'length', itemAbi: 'stakingVaults', target: FACTORY_SINGLETON_ADDR }) - const stakedTokens = await api.multiCall({ calls: vaults, abi: 'address:stakedToken', }) - return api.sumTokens({ tokensAndOwners2: [stakedTokens, vaults] }); + const { stakingVaultFactory = FACTORY_SINGLETON_ADDR, rewardFactory } = config[api.chain] + await getStakingVaultTvl(api, stakingVaultFactory) + await getRewardTvl(api, rewardFactory) } module.exports = { start: 1710844331, // May-17-2024 12:45:31 PM +UTC - methodology: 'GullNetwork TVL including total values of assets staked in our staking vaults.', + methodology: 'GullNetwork TVL including total values of assets staked in our staking vaults, and assets in the liquidity pool.', } const config = { ethereum: {}, bsc: {}, - manta: {}, + manta: { + rewardFactory: '0x2a18164B5e84d9C1B03ddbb5A1982A35cF75E506' + }, base: {}, } From 4db3aff42afeacd395b015b8d7813d20908949cf Mon Sep 17 00:00:00 2001 From: yyexdev Date: Wed, 22 May 2024 16:27:03 +0800 Subject: [PATCH 1701/2004] add yyex (#10280) --- projects/yyex/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/yyex/index.js diff --git a/projects/yyex/index.js b/projects/yyex/index.js new file mode 100644 index 00000000000..a2bcfaf620e --- /dev/null +++ b/projects/yyex/index.js @@ -0,0 +1,9 @@ +const { gmxExports } = require("../helper/gmx"); + +module.exports = { + btr: { + tvl: gmxExports({ + vault: "0x16Aa605Ca2cBE921AAC6C4838c1109b3cf9d444F", + }), + }, +}; From 3d5a3ce4f1b6943e329ca599f5f8d172aa89f4e2 Mon Sep 17 00:00:00 2001 From: conquerorzzz <160872432+conquerorzzz@users.noreply.github.com> Date: Wed, 22 May 2024 19:45:29 +0800 Subject: [PATCH 1702/2004] add nxfi tvl (#10308) * add nxfi tvl * code refactor * add nxfi borrowed * add nxfi tvl and borrow * skip library --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/nxfi/idl.js | 524 +++++++++++++++++++++++++++++++++++++++++ projects/nxfi/index.js | 41 ++++ 2 files changed, 565 insertions(+) create mode 100644 projects/nxfi/idl.js create mode 100644 projects/nxfi/index.js diff --git a/projects/nxfi/idl.js b/projects/nxfi/idl.js new file mode 100644 index 00000000000..266eb8dc3f5 --- /dev/null +++ b/projects/nxfi/idl.js @@ -0,0 +1,524 @@ +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" + } + ] + } + } + ], + "events": [], + "errors": [], + "metadata": { + "address": "7YYkqwXp812NMe6nWny2JAGsm6b3CVvbQKiMo8SuaPMg" + } +} \ No newline at end of file diff --git a/projects/nxfi/index.js b/projects/nxfi/index.js new file mode 100644 index 00000000000..041e5deb224 --- /dev/null +++ b/projects/nxfi/index.js @@ -0,0 +1,41 @@ +const { Program } = require("@project-serum/anchor"); +const { getProvider, sumTokens2, } = require("../helper/solana"); + +const idl = require('./idl') + +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) +} + +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 }, +} From e11d70fa3e37ea81a95c733aebfa74c57d8ad380 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 22 May 2024 13:45:53 +0100 Subject: [PATCH 1703/2004] add mode chain to velo (#10328) --- projects/velodrome-v2/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/velodrome-v2/index.js b/projects/velodrome-v2/index.js index b21a9461fd5..40e4f0b7f0b 100644 --- a/projects/velodrome-v2/index.js +++ b/projects/velodrome-v2/index.js @@ -8,6 +8,12 @@ module.exports = { allPairs: 'function allPools(uint256) view returns (address)', }, { useDefaultCoreAssets: true, hasStablePools: true, permitFailure: true, }), }, + mode: { + tvl: uniTvlExport("0x31832f2a97Fd20664D76Cc421207669b55CE4BC0", undefined, undefined, { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, { useDefaultCoreAssets: true, hasStablePools: true, permitFailure: true, }), + }, hallmarks: [ [1687465883, "v2 Migration on OP Mainnet"], // https://twitter.com/VelodromeFi/status/1671979216039202816 ] From 6ebbfa221ab512b32d68ebf9a38279b5ac98b5c1 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Wed, 22 May 2024 13:48:13 +0100 Subject: [PATCH 1704/2004] add bob to velo (#10330) --- projects/velodrome-v2/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/projects/velodrome-v2/index.js b/projects/velodrome-v2/index.js index 40e4f0b7f0b..eba9afb904b 100644 --- a/projects/velodrome-v2/index.js +++ b/projects/velodrome-v2/index.js @@ -14,6 +14,12 @@ module.exports = { allPairs: 'function allPools(uint256) view returns (address)', }, { useDefaultCoreAssets: true, hasStablePools: true, permitFailure: true, }), }, + bob: { + tvl: uniTvlExport("0x31832f2a97Fd20664D76Cc421207669b55CE4BC0", undefined, undefined, { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, { useDefaultCoreAssets: true, hasStablePools: true, permitFailure: true, }), + }, hallmarks: [ [1687465883, "v2 Migration on OP Mainnet"], // https://twitter.com/VelodromeFi/status/1671979216039202816 ] From 4d85f09152f3df96c6f0abe9aa3104709478ae4f Mon Sep 17 00:00:00 2001 From: Bit-Genie <168055389+Bit-Genie@users.noreply.github.com> Date: Wed, 22 May 2024 21:22:42 +0800 Subject: [PATCH 1705/2004] Add New Contracts (#10329) * Add new contracts * Add New Contracts --------- Co-authored-by: Arvin Co-authored-by: Your Name --- projects/bitgenie/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/bitgenie/index.js b/projects/bitgenie/index.js index 8653bd7faff..94c85ffa801 100644 --- a/projects/bitgenie/index.js +++ b/projects/bitgenie/index.js @@ -12,6 +12,10 @@ const stakingContracts = [ "0x0b0659bC906cB62179FDD2B6008BA729baa79126", "0xF57A28168401f9c386c7723C2BA4e579A2F3818a", "0x82cf7644BD07002217EFB2563D361a0b0c245978", + "0x8Ab52b92C31bd16e9e091c42FaCA01358717b8A4", + "0x0Bf2C32E2045b50AD772E8F758484aF3BbA75738", + "0xeC986eE93884ca3e20AA8a11C72f5c57085893F3", + "0xFf090ED319D3B89DD3ee2CB94F590272A6866cD9", ]; From 448d52d4aeb36091efbf7c79f9b2119d7cb8bbc3 Mon Sep 17 00:00:00 2001 From: Adolf998 <154962952+Adolf998@users.noreply.github.com> Date: Wed, 22 May 2024 21:38:29 +0800 Subject: [PATCH 1706/2004] update bouncebit-premium & bouncebitTvl (#10294) --- projects/bouncebit-premium/index.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/projects/bouncebit-premium/index.js b/projects/bouncebit-premium/index.js index e60eea7a28a..9af68c13fa4 100644 --- a/projects/bouncebit-premium/index.js +++ b/projects/bouncebit-premium/index.js @@ -1,8 +1,23 @@ -const { sumTokensExport } = require('../helper/sumTokens'); +const { sumTokens, sumTokensExport } = require('../helper/sumTokens'); const BBTC = '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC' const BBUSD = '0x77776b40C3d75cb07ce54dEA4b2Fd1D07F865222' -const stBBTC = '0x7F150c293c97172C75983BD8ac084c187107eA19' +// 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: { @@ -18,9 +33,6 @@ module.exports = { }), }, bouncebit: { - tvl: sumTokensExport({ - owners: ["0xd4def93a10ada7e14cAdc6920b6CDE01148D1813", "0x426CD147ff93f31BB18F1Acd19DAb9c32d934131", '0x7F26aB9263E33de947654F44C5AB439090cfAaf7'], - tokens: [BBTC, BBUSD, stBBTC] - }), + tvl: bouncebitTvl }, }; From dd671d34c67fc7bff54a7de7509cca8a677e98bc Mon Sep 17 00:00:00 2001 From: northern05 <42889528+northern05@users.noreply.github.com> Date: Wed, 22 May 2024 18:20:23 +0300 Subject: [PATCH 1707/2004] Add LendOS (#10331) * add ilend * code refactor * add ilend v2 * add lendOS * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lendOS/index.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/lendOS/index.js diff --git a/projects/lendOS/index.js b/projects/lendOS/index.js new file mode 100644 index 00000000000..92b4491083b --- /dev/null +++ b/projects/lendOS/index.js @@ -0,0 +1,7 @@ +const { aaveExports } = require('../helper/aave'); +const methodologies = require('../helper/methodologies'); + +module.exports = { + methodology: methodologies.lendingMarket, + neon_evm: aaveExports('', undefined, undefined, ['0x3A1ca459F21D8FAcF9A30bC4773f5dBf07C1191d'], { v3: true, }), +} \ No newline at end of file From 852fa6971c547e2e489c059e6b786751dea57b69 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 22 May 2024 21:11:01 +0200 Subject: [PATCH 1708/2004] wagmi: track staking --- projects/wagmi-com/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/projects/wagmi-com/index.js b/projects/wagmi-com/index.js index ae95ac05fcc..8fc560dd697 100644 --- a/projects/wagmi-com/index.js +++ b/projects/wagmi-com/index.js @@ -1,3 +1,4 @@ +const { staking } = require('../helper/staking') const { uniV3Export, uniV3GraphExport } = require("../helper/uniswapV3"); module.exports = uniV3Export({ @@ -8,4 +9,14 @@ module.exports = uniV3Export({ metis: { factory: '0x8112E18a34b63964388a3B2984037d6a2EFE5B8A', fromBlock: 9740222, }, }) -module.exports.kava = { tvl: uniV3GraphExport({ name: 'wagmi-kava', graphURL: 'https://kava.graph.wagmi.com/subgraphs/name/v3', minTVLUSD: 0 }) } \ No newline at end of file +module.exports.kava = { tvl: uniV3GraphExport({ name: 'wagmi-kava', graphURL: 'https://kava.graph.wagmi.com/subgraphs/name/v3', minTVLUSD: 0 }) } + +const stakingConfig = { + metis: { swagmi: '0x5fb3983adc4dcc82a610a91d2e329f6401352558', wagmi: '0xaf20f5f19698f1d19351028cd7103b63d30de7d7', }, + kava: { swagmi: '0x3690d1a9fb569c21372f8091527ab44f1dc9630f', wagmi: '0xaf20f5f19698f1d19351028cd7103b63d30de7d7', }, +} + +Object.keys(stakingConfig).forEach(chain => { + const { swagmi, wagmi, } = stakingConfig[chain] + module.exports[chain].staking = staking(swagmi, wagmi) +}) \ No newline at end of file From e6d00514d9f865c5e74304be43e782e0258821c3 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 22 May 2024 21:21:45 +0200 Subject: [PATCH 1709/2004] track unlockd-v2 --- projects/unlockd-v2/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/unlockd-v2/index.js diff --git a/projects/unlockd-v2/index.js b/projects/unlockd-v2/index.js new file mode 100644 index 00000000000..7d6cee91da7 --- /dev/null +++ b/projects/unlockd-v2/index.js @@ -0,0 +1,30 @@ +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: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +} + +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, + }, +}; From c3a914e98727c849032b69e7036d75632d64f4fc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 23 May 2024 00:58:56 +0530 Subject: [PATCH 1710/2004] Add LineHub Protocol (#10335) * Add LineHub Protocol * refactor --------- Co-authored-by: 0xR <0xr@metavault.org> Co-authored-by: 0xR <99395193+0xrmvdao@users.noreply.github.com> --- projects/linehub-v2/index.js | 12 ++++++++++++ projects/linehub-v3/index.js | 5 +++++ 2 files changed, 17 insertions(+) create mode 100644 projects/linehub-v2/index.js create mode 100644 projects/linehub-v3/index.js diff --git a/projects/linehub-v2/index.js b/projects/linehub-v2/index.js new file mode 100644 index 00000000000..28159d8de6d --- /dev/null +++ b/projects/linehub-v2/index.js @@ -0,0 +1,12 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + misrepresentedTokens: true, + linea: { + tvl: getUniTVL({ + factory: "0x7811DeF28977060784cC509641f2DD23584b7671", + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, +}; diff --git a/projects/linehub-v3/index.js b/projects/linehub-v3/index.js new file mode 100644 index 00000000000..6a555fdd5ea --- /dev/null +++ b/projects/linehub-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + linea: { factory: '0x6c379d538f2f7cb642851e154a8e572d63238df4', fromBlock: 407280, }, +}) From 8598288804f276c801a980d91c182c779ff9c081 Mon Sep 17 00:00:00 2001 From: Daniel <110973578+DanielZhangReal@users.noreply.github.com> Date: Thu, 23 May 2024 14:34:03 +0800 Subject: [PATCH 1711/2004] feat: add manta cedefi (#10341) --- projects/manta-cedefi/index.js | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/manta-cedefi/index.js diff --git a/projects/manta-cedefi/index.js b/projects/manta-cedefi/index.js new file mode 100644 index 00000000000..6900413f588 --- /dev/null +++ b/projects/manta-cedefi/index.js @@ -0,0 +1,37 @@ +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), + }); + return tokens.reduce((total, item, index) => { + total[item.coinGeckoId] = balances[index] / 10 ** tokens[index].decimals; + return total; + }, {}); +} + +module.exports = { + manta: { + tvl, + }, +}; From b421d9858df91d14ea8546fcb5e082ac56800567 Mon Sep 17 00:00:00 2001 From: Jasper <104004836+j-vp@users.noreply.github.com> Date: Thu, 23 May 2024 08:38:45 +0200 Subject: [PATCH 1712/2004] add slipstream handling (#10340) * add slipstream handling * remove slipstream abi from arcadia abi & add nftposmgr links --- projects/arcadia-finance-v2/index.js | 7 +- .../arcadia-finance-v2/slipstreamNftABI.json | 5 + projects/helper/unwrapLPs.js | 109 +++++++++++++++++- 3 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 projects/arcadia-finance-v2/slipstreamNftABI.json diff --git a/projects/arcadia-finance-v2/index.js b/projects/arcadia-finance-v2/index.js index 7341b5eb241..9cbaf0aebfc 100644 --- a/projects/arcadia-finance-v2/index.js +++ b/projects/arcadia-finance-v2/index.js @@ -8,11 +8,12 @@ const config = { usdcPool: "0x3ec4a293Fb906DD2Cd440c20dECB250DeF141dF1", }, uniNFT: '0x03a520b32c04bf3beef7beb72e919cf822ed34f1', + slipNFT: '0x827922686190790b37229fd06084350e74485b72' }, } async function tvl(api) { - let { factory, pools, uniNFT, } = config[api.chain]; + let { factory, pools, uniNFT, slipNFT, } = config[api.chain]; pools = Object.values(pools); const uTokens = await api.multiCall({ abi: "address:asset", calls: pools }) await api.sumTokens({ tokensAndOwners2: [uTokens, pools] }) @@ -20,8 +21,8 @@ async function tvl(api) { const assetData = await api.multiCall({ abi: abi.assetData, calls: accounts, }); const ownerTokens = accounts.map((account, i) => [assetData[i].assets, account]) - await api.sumTokens({ ownerTokens, blacklistedTokens: [uniNFT] }) - return sumTokens2({ api, owners: accounts, resolveUniV3: true }) + await api.sumTokens({ ownerTokens, blacklistedTokens: [uniNFT, slipNFT] }) + return sumTokens2({ api, owners: accounts, resolveUniV3: true, resolveSlipstream: true }) } module.exports = { diff --git a/projects/arcadia-finance-v2/slipstreamNftABI.json b/projects/arcadia-finance-v2/slipstreamNftABI.json new file mode 100644 index 00000000000..8a88c4ea6ed --- /dev/null +++ b/projects/arcadia-finance-v2/slipstreamNftABI.json @@ -0,0 +1,5 @@ +{ + "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/helper/unwrapLPs.js b/projects/helper/unwrapLPs.js index 4d3293e3025..b6eef6184f8 100644 --- a/projects/helper/unwrapLPs.js +++ b/projects/helper/unwrapLPs.js @@ -11,6 +11,7 @@ const creamAbi = require('./abis/cream.json') const { isLP, log, sliceIntoChunks, isICHIVaultToken, createIncrementArray } = 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'); @@ -302,6 +303,105 @@ async function unwrapUniswapV3NFT({ balances, owner, nftAddress, block, chain = } } +async function unwrapSlipstreamNFTs({ balances = {}, nftsAndOwners = [], block, chain = 'base', owner, nftAddress, owners, blacklistedTokens = [], whitelistedTokens = [], uniV3ExtraConfig = {} }) { + // https://velodrome.finance/security#contracts + // https://aerodrome.finance/security#contracts + if (!nftsAndOwners.length) { + if (!nftAddress) + switch (chain) { + case 'optimism': nftAddress = '0xbB5DFE1380333CEE4c2EeBd7202c80dE2256AdF4'; break; + case 'base': nftAddress = '0x827922686190790b37229fd06084350e74485b72'; 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]) + } + await Promise.all(nftsAndOwners.map(([nftAddress, owner]) => unwrapSlipstreamNFT({ balances, owner, nftAddress, block, chain, blacklistedTokens, whitelistedTokens, uniV3ExtraConfig, }))) + return balances +} + +async function unwrapSlipstreamNFT({ balances, owner, nftAddress, block, chain = 'base', blacklistedTokens = [], whitelistedTokens = [], uniV3ExtraConfig = {}, }) { + + blacklistedTokens = getUniqueAddresses(blacklistedTokens, chain) + whitelistedTokens = getUniqueAddresses(whitelistedTokens, chain) + let nftIdFetcher = uniV3ExtraConfig.nftIdFetcher ?? nftAddress + + const nftPositions = (await sdk.api.erc20.balanceOf({ target: nftIdFetcher, owner, block, chain })).output + 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 + + const positionIds = (await sdk.api.abi.multiCall({ + block, chain, abi: wildCreditABI.tokenOfOwnerByIndex, target: nftIdFetcher, + calls: Array(Number(nftPositions)).fill(0).map((_, index) => ({ params: [owner, index] })), + })).output.map(positionIdCall => positionIdCall.output) + + const positions = (await sdk.api.abi.multiCall({ + block, chain, abi: slipstreamNftABI.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: slipstreamNftABI.getPool, target: factory, + calls: lpInfoArray.map((info) => ({ params: [info.token0, info.token1, info.tickSpacing] })), + })).output.map(positionsCall => positionsCall.output) + + const slot0 = await sdk.api.abi.multiCall({ block, chain, abi: slipstreamNftABI.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, tickSpacing } = position + token0 = token0.toLowerCase() + token1 = token1.toLowerCase() + return `${token0}-${token1}-${tickSpacing}` + } + + function addV3PositionBalances(position) { + 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 = +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; @@ -695,6 +795,7 @@ async function sumTokens2({ abis = {}, api, resolveUniV3 = false, + resolveSlipstream = false, uniV3WhitelistedTokens = [], uniV3nftsAndOwners = [], resolveArtBlocks = false, @@ -774,6 +875,10 @@ async function sumTokens2({ if (resolveUniV3 || uniV3nftsAndOwners.length || Object.keys(uniV3ExtraConfig).length) await unwrapUniswapV3NFTs({ balances, chain, block, owner, owners, blacklistedTokens, whitelistedTokens: uniV3WhitelistedTokens, nftsAndOwners: uniV3nftsAndOwners, uniV3ExtraConfig, }) + + if (resolveSlipstream) + await unwrapSlipstreamNFTs({ balances, chain, block, 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)) @@ -835,8 +940,8 @@ async function sumTokens2({ } } -function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, logCalls, ...args }) { - return async (api) => sumTokens2({ api, balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args, }) +function sumTokensExport({ balances, tokensAndOwners, tokensAndOwners2, tokens, owner, owners, transformAddress, unwrapAll, resolveLP, blacklistedLPs, blacklistedTokens, skipFixBalances, ownerTokens, resolveUniV3, 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, resolveSlipstream, resolveArtBlocks, resolveNFTs, fetchCoValentTokens, ...args, }) } async function unwrapBalancerToken({ api, chain, block, balancerToken, owner, balances, isBPool = false, isV2 = true }) { From 39e0b3a450e0198b2330c2f04220250f3855e53a Mon Sep 17 00:00:00 2001 From: rogi-sh <46889545+rogi-sh@users.noreply.github.com> Date: Thu, 23 May 2024 11:01:38 +0200 Subject: [PATCH 1713/2004] add javsphere to token mappings to get price from coingecko (#10347) * add javsphere to token mappings to get price from coingecko * dusd back --------- Co-authored-by: igorshelkovenkov --- projects/helper/tokenMapping.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 20b905a5417..cf7dd4bf614 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -41,6 +41,7 @@ const fixBalancesTokens = { '0xff00000000000000000000000000000000000003': { coingeckoId: "tether", decimals: 18 }, '0xff00000000000000000000000000000000000001': { coingeckoId: "ethereum", decimals: 18 }, '0xff0000000000000000000000000000000000000f': { coingeckoId: "decentralized-usd", decimals: 18 }, + '0x66F3Cf265D2D146A0348F6fC67E3Da0835e0968E': { coingeckoId: "javsphere", decimals: 18 }, }, ace: { [nullAddress]: { coingeckoId: "endurance", decimals: 18 }, From 4ae39c68c84e994397af6f3a59537f91a31c7da7 Mon Sep 17 00:00:00 2001 From: Javokhir Artykov <55207018+cxxnm@users.noreply.github.com> Date: Thu, 23 May 2024 14:07:11 +0500 Subject: [PATCH 1714/2004] chore: new pool added (#10344) Co-authored-by: Javokhir Artykov --- projects/azuro/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/azuro/index.js b/projects/azuro/index.js index 300286103d5..606edfa18a7 100644 --- a/projects/azuro/index.js +++ b/projects/azuro/index.js @@ -8,6 +8,7 @@ const config = { xdai: { factory: '0x8ea1a7241537f10fa73363fdc6380f3fc8619c03', fromBlock: 26026402, tokensAndOwners: [[ADDRESSES.xdai.WXDAI, '0xac004b512c33D029cf23ABf04513f1f380B3FD0a']], // v1 }, + chz: { factory: '0xC57DC3acf7834D0dc4B2F73a5fb81dD9609D347A', fromBlock: 12285532 } } async function tvl(api) { @@ -17,7 +18,8 @@ async function tvl(api) { module.exports = { xdai: { tvl }, polygon: { tvl }, - methodology: `TVL is the total amount of WXDAI and USDC held on Liquidity pools’ smart-contracts.` + chz: { tvl }, + methodology: `TVL is the total amount of WXDAI, USDC, USDT and CHZ held on Liquidity pools’ smart-contracts.` } Object.keys(config).forEach(chain => { From 92e4fe62ad450e628c89cc47bbaf46e13cc2cc33 Mon Sep 17 00:00:00 2001 From: silvercondor <32993765+silvercondor@users.noreply.github.com> Date: Thu, 23 May 2024 17:43:42 +0800 Subject: [PATCH 1715/2004] fix: split dex & lend tvl (#10346) --- projects/native-lend/index.js | 25 +++++++++++++++++++++++++ projects/native/index.js | 25 ------------------------- 2 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 projects/native-lend/index.js diff --git a/projects/native-lend/index.js b/projects/native-lend/index.js new file mode 100644 index 00000000000..f333843a773 --- /dev/null +++ b/projects/native-lend/index.js @@ -0,0 +1,25 @@ + +const { getCompoundV2Tvl } = require("../helper/compound") + +module.exports = { + methodology: + "includes the liquidity provided to the infrasturcture and ecosystem of Native", +}; + +const config = { + arbitrum: { + vault: "0x795E5cCdd008637EB98c64958d3b8Ba3e6DE2d2B", + fromBlock: 211430925, + }, + zklink: { + vault: "0x4AC97E2727B0e92AE32F5796b97b7f98dc47F059", + vaultFromBlock: 452, + }, +}; + +Object.keys(config).forEach((chain) => { + const { vault, vaultFromBlock } = config[chain]; + module.exports[chain] = { + tvl: getCompoundV2Tvl(vault, chain) + }; +}); diff --git a/projects/native/index.js b/projects/native/index.js index 7ce6e10ca04..f4a16b19152 100644 --- a/projects/native/index.js +++ b/projects/native/index.js @@ -26,8 +26,6 @@ const config = { avax: { factory: "0x85b0F66E83515ff4e825DfCAa58E040E08278EF9", fromBlock: 34309521, - vault: "0xbe5D56B08055d7b6e9f780DfeA262512a2D2d950", - vaultFromBlock: 42536874, }, mantle: { factory: "0x4c34BA0103b8417e1Fc4D0F6645828B2d6d207F9", @@ -44,8 +42,6 @@ const config = { zklink: { factory: "0x335c04321E88631A99F78fD7D7C4f49A921ed924", fromBlock: 443, - vault: "0x4AC97E2727B0e92AE32F5796b97b7f98dc47F059", - vaultFromBlock: 452, }, }; @@ -53,27 +49,6 @@ Object.keys(config).forEach((chain) => { const { factory, fromBlock, vault, vaultFromBlock } = config[chain]; module.exports[chain] = { tvl: async (api) => { - // tvl from aqua - // read from AquaVault to get allMarkets and the token list - // sum the balance of those tokens in the vault - if (vault) { - const lpTokenCreationLogs = await getLogs({ - api, - target: vault, - topic: "MarketListed(address)", - eventAbi: "event MarketListed(address lpToken)", - onlyArgs: true, - fromBlock: vaultFromBlock, - }); - const lpTokens = lpTokenCreationLogs.map((i) => i.lpToken); - // get underlying of each ctoken - const underlyingTokens = await api.multiCall({ - abi: "address:underlying", - calls: lpTokens, - }); - // get balances in vault - await sumTokens2({ api, owner: vault, tokens: underlyingTokens }); - } // tvl from factory const poolCreationLogs = await getLogs({ api, From df236f23700f078481580d301a3104b8bea96bd6 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 23 May 2024 15:10:29 +0200 Subject: [PATCH 1716/2004] add tvl adapters --- projects/alien-finance/index.js | 15 +++++++++++---- projects/arcana/index.js | 11 +++++++++++ projects/gasturbo-io-dex/index.js | 3 +++ projects/helper/cache/uniswap.js | 3 +-- projects/helper/chains.json | 1 + projects/helper/env.js | 2 ++ projects/helper/tokenMapping.js | 6 ++++++ projects/macaron-xyz/index.js | 6 +++++- projects/manta-cedefi/index.js | 9 ++++----- projects/native-lend/index.js | 29 +++++++++++++---------------- projects/pearl-v2/index.js | 11 +++++++++++ 11 files changed, 68 insertions(+), 28 deletions(-) create mode 100644 projects/arcana/index.js create mode 100644 projects/gasturbo-io-dex/index.js create mode 100644 projects/pearl-v2/index.js diff --git a/projects/alien-finance/index.js b/projects/alien-finance/index.js index 2ccc980a925..1b189a2e47b 100644 --- a/projects/alien-finance/index.js +++ b/projects/alien-finance/index.js @@ -1,11 +1,18 @@ -const { sumTokensExport } = require("../helper/unwrapLPs") -const ADDRESSES = require('../helper/coreAssets.json') - const owner = "0x50454acC07bf8fC78100619a1b68e9E8d28cE022" module.exports = { blast: { - tvl: sumTokensExport({ owner, tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), + tvl, borrowed, }, start: 1709630412, }; + +async function tvl(api) { + const tokens = await api.call({ abi: 'address[]:getAllMarkets', target: owner}) + return api.sumTokens({ owner, tokens}) +} +async function borrowed(api) { + const tokens = await api.call({ abi: 'address[]:getAllMarkets', target: owner}) + const bals = await api.multiCall({ abi: 'function getTotalBorrow(address) view returns (uint256)', calls: tokens, target: owner}) + api.add(tokens, bals) +} \ No newline at end of file diff --git a/projects/arcana/index.js b/projects/arcana/index.js new file mode 100644 index 00000000000..cdcf40739fe --- /dev/null +++ b/projects/arcana/index.js @@ -0,0 +1,11 @@ + +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/gasturbo-io-dex/index.js b/projects/gasturbo-io-dex/index.js new file mode 100644 index 00000000000..8181f05a117 --- /dev/null +++ b/projects/gasturbo-io-dex/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('arbitrum', '0x7e299DdF7E12663570dBfA8F3F20CB54f8fD04fA') \ No newline at end of file diff --git a/projects/helper/cache/uniswap.js b/projects/helper/cache/uniswap.js index fb804fa65e7..b2edf4eff7a 100644 --- a/projects/helper/cache/uniswap.js +++ b/projects/helper/cache/uniswap.js @@ -29,8 +29,7 @@ function getUniTVL({ coreAssets, blacklist = [], factory, blacklistedTokens, let chain = api?.chain if (!chain) chain = _chain - // const supply = await api.call({ abi: 'erc20:totalSupply', target: ADDRESSES.area.WAREA }) - // console.log(await sdk.api.eth.getBalance({ target: ADDRESSES.area.WAREA, chain: api.chain }), supply) + // 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}` diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 0b3671661b5..dcd91477420 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -238,6 +238,7 @@ "quasar", "quicksilver", "radixdlt", + "real", "reef", "regen", "rei", diff --git a/projects/helper/env.js b/projects/helper/env.js index 58d3a3c34f9..80961520a73 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -17,6 +17,8 @@ const DEFAULTS = { DEFICHAIN_EVM_RPC_MULTICALL: '0x7fEf77CDe3B41221Cff54B84Ea89D2EBc6b53352', BOUNCEBIT_RPC_MULTICALL: '0x493d616f5F9a64e5B3D527120E406439bdF29272', ZKLINK_RPC_MULTICALL: '0xa8738F57538E3Bb73872d1133F2358c7Fe56FD35', + REAL_RPC: 'https://real.drpc.org', + REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index cf7dd4bf614..9066558f75a 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -110,6 +110,12 @@ const fixBalancesTokens = { }, bevm: { '0x2967e7bb9daa5711ac332caf874bd47ef99b3820': { coingeckoId: 'wrapped-stbtc', decimals: 18 }, + }, + real: { + '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, + '0x90c6e93849e06ec7478ba24522329d14a5954df4': { coingeckoId: 'ethereum', decimals: 18 }, + '0x75d0cbf342060b14c2fc756fd6e717dfeb5b1b70': { coingeckoId: 'dai', decimals: 18 }, + '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd': { coingeckoId: 'mountain-protocol-usdm', decimals: 18 }, } } diff --git a/projects/macaron-xyz/index.js b/projects/macaron-xyz/index.js index fa3a611c858..7be61a43864 100644 --- a/projects/macaron-xyz/index.js +++ b/projects/macaron-xyz/index.js @@ -1,3 +1,7 @@ const { uniTvlExport } = require('../helper/unknownTokens') +const { mergeExports } = require('../helper/utils') -module.exports = uniTvlExport('btr', '0x05daB9D11A0e14E68862cd08A73A7362Bb93a331') \ No newline at end of file +module.exports = mergeExports([ + uniTvlExport('btr', '0x05daB9D11A0e14E68862cd08A73A7362Bb93a331'), + uniTvlExport('btr', '0x1037E9078df7ab09B9AF78B15D5E7aaD7C1AfDd0'), +]) \ No newline at end of file diff --git a/projects/manta-cedefi/index.js b/projects/manta-cedefi/index.js index 6900413f588..ea9ca86f2b0 100644 --- a/projects/manta-cedefi/index.js +++ b/projects/manta-cedefi/index.js @@ -24,14 +24,13 @@ async function tvl(api) { abi: "erc20:totalSupply", calls: tokens.map((item) => item.address), }); - return tokens.reduce((total, item, index) => { - total[item.coinGeckoId] = balances[index] / 10 ** tokens[index].decimals; - return total; - }, {}); + 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/native-lend/index.js b/projects/native-lend/index.js index f333843a773..8a05ce289fd 100644 --- a/projects/native-lend/index.js +++ b/projects/native-lend/index.js @@ -1,25 +1,22 @@ -const { getCompoundV2Tvl } = require("../helper/compound") +const { compoundExports2 } = require("../helper/compound"); +const { lendingMarket } = require("../helper/methodologies"); module.exports = { - methodology: - "includes the liquidity provided to the infrasturcture and ecosystem of Native", + methodology: lendingMarket }; const config = { - arbitrum: { - vault: "0x795E5cCdd008637EB98c64958d3b8Ba3e6DE2d2B", - fromBlock: 211430925, - }, - zklink: { - vault: "0x4AC97E2727B0e92AE32F5796b97b7f98dc47F059", - vaultFromBlock: 452, - }, + arbitrum: "0x795E5cCdd008637EB98c64958d3b8Ba3e6DE2d2B", + zklink: "0x4AC97E2727B0e92AE32F5796b97b7f98dc47F059", }; Object.keys(config).forEach((chain) => { - const { vault, vaultFromBlock } = config[chain]; - module.exports[chain] = { - tvl: getCompoundV2Tvl(vault, chain) - }; -}); + const comptroller = config[chain]; + module.exports[chain] = compoundExports2({ comptroller }) + module.exports[chain].tvl = async (api) => { + const markets = await api.call({ abi: 'address[]:getAllMarkets', target: comptroller }) + const tokens = await api.multiCall({ abi: 'address:underlying', calls: markets}) + return api.sumTokens({ owner: comptroller, tokens }) + } +}) \ No newline at end of file diff --git a/projects/pearl-v2/index.js b/projects/pearl-v2/index.js new file mode 100644 index 00000000000..cb27a24cc66 --- /dev/null +++ b/projects/pearl-v2/index.js @@ -0,0 +1,11 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +const ownTokens = [ + '0xaec9e50e3397f9ddc635c6c429c8c7eca418a143', + '0x4644066f535ead0cde82d209df78d94572fcbf14', + '0x25ea98ac87a38142561ea70143fd44c4772a16b6', +] + +module.exports = uniV3Export({ + 'real': { factory: '0xeF0b0a33815146b599A8D4d3215B18447F2A8101', fromBlock: 33062, blacklistedTokens: ownTokens,} +}) \ No newline at end of file From c987f263f5041c281f64b33c69f651c0b12f2ccb Mon Sep 17 00:00:00 2001 From: NikolasHai <113891786+NikolasHai@users.noreply.github.com> Date: Thu, 23 May 2024 16:02:45 +0200 Subject: [PATCH 1717/2004] add adapter for ckUSDC (#10348) * add adapter for ckUSDC * rename * rename * merge ckETH & ckUSDC --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/cketh/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/cketh/index.js b/projects/cketh/index.js index d9e7d0c8baa..c524a6a1afe 100644 --- a/projects/cketh/index.js +++ b/projects/cketh/index.js @@ -1,8 +1,15 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); +const { get } = require('../helper/http') +const ADDRESSES = require('../helper/coreAssets.json') const contract = "0xb25eA1D493B49a1DeD42aC5B1208cC618f9A9B80"; async function tvl(api) { + var end = api.timestamp + let start = end - 24 * 60 * 60; + const { data } = await get(`https://icrc-api.internetcomputer.org/api/v1/ledgers/xevnm-gaaaa-aaaar-qafnq-cai/total-supply?start=${start}&end=${end}&step=1`); + let [_, bal] = data.pop() + api.add(ADDRESSES.ethereum.USDC, bal/1e2) return sumTokens2({ tokens: [nullAddress], owner: contract, api }); } From 8ceeab53565d3e7028f110b42fc497d32ebafc69 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 23 May 2024 15:57:44 +0100 Subject: [PATCH 1718/2004] add polygon psm --- projects/qidao/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/qidao/index.js b/projects/qidao/index.js index 3c9e276e1f3..54fb14c59e4 100644 --- a/projects/qidao/index.js +++ b/projects/qidao/index.js @@ -174,6 +174,7 @@ const config = { "0x169d47043cc0c94c39fa327941c56cb0344dc508", "0xb5b31e6a13ae856bc30b3c76b16edad9f432b54f" ], + psm: ["0xdEffF862C76C6f9c7164B44f860fAe64C2A92aF5"], toa: [ [nullAddress, '0xa3fa99a148fa48d14ed51d610c367c61876997f1'], // vaults From 399a3cf318e3a188b3d3232dd85b1242b0a2be8c Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Thu, 23 May 2024 17:58:29 -0400 Subject: [PATCH 1719/2004] Track CHAR for Toucan Protocol (#10351) CHAR is newly listed on Coingecko at https://www.coingecko.com/en/coins/biochar --- projects/toucan-protocol/config.js | 4 ++++ projects/toucan-protocol/index.js | 15 +++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/projects/toucan-protocol/config.js b/projects/toucan-protocol/config.js index 21fe7468ca1..4afefe84d10 100644 --- a/projects/toucan-protocol/config.js +++ b/projects/toucan-protocol/config.js @@ -1,8 +1,12 @@ const ADDRESSES = require('../helper/coreAssets.json') const CONFIG_DATA = { + base: { + char: "0x20b048fA035D5763685D695e66aDF62c5D9F5055", + }, celo: { bct: "0x0CcB0071e8B8B716A2a5998aB4d97b83790873Fe", nct: ADDRESSES.celo.NCT, + char: "0x50E85c754929840B58614F48e29C64BC78C58345", }, polygon: { bct: "0x2F800Db0fdb5223b3C3f354886d907A671414A7F", diff --git a/projects/toucan-protocol/index.js b/projects/toucan-protocol/index.js index 4f14b10255b..97a3add6ab6 100644 --- a/projects/toucan-protocol/index.js +++ b/projects/toucan-protocol/index.js @@ -3,17 +3,21 @@ const { CONFIG_DATA } = require("./config"); const getCalculationMethod = (chain) => { return async (api,) => { - const supplyCalls = [CONFIG_DATA[chain].bct, CONFIG_DATA[chain].nct]; + const supplyCalls = [] + Object.keys(CONFIG_DATA[chain]).map((key) => { + supplyCalls.push(CONFIG_DATA[chain][key]); + }) - let [bct, nct] = await api.multiCall({ abi: 'erc20:totalSupply', calls: supplyCalls, }) + let [bct, nct, char] = await api.multiCall({ abi: 'erc20:totalSupply', calls: supplyCalls, }) // If the current block is later than the date BCT was transferred to KlimaDAO, return 0 if (api.timestamp > 1709828986) bct = 0 return { - 'toucan-protocol-base-carbon-tonne': bct / 1e18, - 'toucan-protocol-nature-carbon-tonne': nct / 1e18, + 'toucan-protocol-base-carbon-tonne': (bct ?? 0) / 1e18, + 'toucan-protocol-nature-carbon-tonne': (nct ?? 0) / 1e18, + 'biochar': (char ?? 0) / 1e18, }; }; }; @@ -34,6 +38,9 @@ const getRegenCredits = () => { module.exports = { start: 1634842800, + base: { + tvl: getCalculationMethod("base") + }, celo: { tvl: getCalculationMethod("celo") }, From 580c1b20d72cf2a6bb09feb6201b0fc72dbf813a Mon Sep 17 00:00:00 2001 From: Michalis Kargakis Date: Fri, 24 May 2024 01:14:35 -0400 Subject: [PATCH 1720/2004] Fix processing CHAR and other Toucan tokens (#10353) 399a3cf was incorrectly setting supplies in the destructured variables (bct, nct, char) as for some networks (eg., base) not all three tokens are found. Here I am fixing this issue so now the final struct returned by getCalculationMethod is created dynamically and always contains the exact tokens with the correct info. --- projects/toucan-protocol/config.js | 13 +++++++++++ projects/toucan-protocol/index.js | 37 ++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/projects/toucan-protocol/config.js b/projects/toucan-protocol/config.js index 4afefe84d10..670406ffa6b 100644 --- a/projects/toucan-protocol/config.js +++ b/projects/toucan-protocol/config.js @@ -16,7 +16,20 @@ const CONFIG_DATA = { 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 index 97a3add6ab6..441843bc51d 100644 --- a/projects/toucan-protocol/index.js +++ b/projects/toucan-protocol/index.js @@ -1,27 +1,44 @@ const sdk = require('@defillama/sdk') -const { CONFIG_DATA } = require("./config"); +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]); }) - let [bct, nct, char] = await api.multiCall({ abi: 'erc20:totalSupply', calls: supplyCalls, }) + 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), + }; + }); - // If the current block is later than the date BCT was transferred to KlimaDAO, return 0 - if (api.timestamp > 1709828986) - bct = 0 + const tokens = tokensArray.reduce((acc, cur) => { + for (const entry of Object.entries(cur)) { + const [key, value] = entry; + acc[key] = value; + } + return acc; + } , {}); - return { - 'toucan-protocol-base-carbon-tonne': (bct ?? 0) / 1e18, - 'toucan-protocol-nature-carbon-tonne': (nct ?? 0) / 1e18, - 'biochar': (char ?? 0) / 1e18, - }; + return tokens; }; }; +const dropDecimals = (num) => { + return (num ?? 0) / 1e18; +} + const getRegenCredits = () => { return async () => { const transferred = (await sdk.api.abi.call({ From 5ed24cd5ba7250accb727d532d5f33d6c7057709 Mon Sep 17 00:00:00 2001 From: tony Date: Fri, 24 May 2024 14:37:38 +0800 Subject: [PATCH 1721/2004] add openocean on rootstock chain (#10357) --- projects/openocean.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/openocean.js b/projects/openocean.js index 7232c740744..16e2e255f88 100644 --- a/projects/openocean.js +++ b/projects/openocean.js @@ -9,6 +9,7 @@ const config = { manta: { factory: '0x8D2B7e5501Eb6D92F8e349f2FEbe785DD070bE74', }, avax: { factory: '0x042AF448582d0a3cE3CFa5b65c2675e88610B18d', s: ['0x4C431b568e8baAB20F004BB16E44570e8E0cD6D7', '0x0ebd9537a25f56713e34c45b38f421a1e7191469'], }, ethereum: { factory: '0x1f8c25f8da3990ecd3632ee4f02c2ea37755c3c6', s: ['0xb99d38eb69214e493b1183ffa3d561fc9f75d519', '0x7778360f035c589fce2f4ea5786cbd8b36e5396b'], }, + rsk: { factory: '0x6Dd434082EaB5cD134B33719ec1ff05fe985B97b', }, } module.exports = { misrepresentedTokens: true } From aa6980aa184c6184e3b68f4989f5934eaaf80515 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 24 May 2024 09:30:26 +0200 Subject: [PATCH 1722/2004] Add defusion feature and refactor code (#10360) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add defusion * code refactor --------- Co-authored-by: khiêm <87562184+khiemsoft@users.noreply.github.com> --- projects/defusion/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/defusion/index.js diff --git a/projects/defusion/index.js b/projects/defusion/index.js new file mode 100644 index 00000000000..90c12c6ed19 --- /dev/null +++ b/projects/defusion/index.js @@ -0,0 +1,8 @@ +async function tvl(api) { + const supply = await api.call({ abi: 'erc20:totalSupply', target: '0xCdde1f5D971A369eB952192F9a5C367f33a0A891'}) + api.add('0xC054751BdBD24Ae713BA3Dc9Bd9434aBe2abc1ce', supply) +} + +module.exports.tomochain = { + tvl +} From 8cd4ae02cc8c0f705d28e168bc860bca3dc1bb40 Mon Sep 17 00:00:00 2001 From: Sujith Somraaj <35634175+sujithsomraaj@users.noreply.github.com> Date: Fri, 24 May 2024 13:00:46 +0530 Subject: [PATCH 1723/2004] chore: add fantom for superform (#10358) --- projects/superform/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/projects/superform/index.js b/projects/superform/index.js index 3d9fd185f8c..16122439a96 100644 --- a/projects/superform/index.js +++ b/projects/superform/index.js @@ -1,9 +1,10 @@ -const superform_chains = ["ethereum", "polygon", "bsc", "avax", "arbitrum", "optimism", "base"]; +const superform_chains = ["ethereum", "polygon", "bsc", "avax", "arbitrum", "optimism", "base", "fantom"]; const factory_contract = "0xD85ec15A9F814D6173bF1a89273bFB3964aAdaEC"; +const fantom_factory_contract = "0xbc85043544CC2b3Fd095d54b6431822979BBB62A"; async function tvl(api) { - const forms = await api.fetchList({ lengthAbi: 'getSuperformCount', itemAbi: "function superforms(uint256) external view returns(uint256)", target: factory_contract }) - const getSuperformRes = await api.multiCall({ abi: "function getSuperform(uint256) external view returns(address, uint32, uint64)", calls: forms, target: factory_contract }) + 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 }) const assets = await api.multiCall({ abi: 'address:asset', calls: super4626 }) From db16487b55642fe8d57d4a829b3b0545c4420ac2 Mon Sep 17 00:00:00 2001 From: silvercondor <32993765+silvercondor@users.noreply.github.com> Date: Fri, 24 May 2024 15:40:22 +0800 Subject: [PATCH 1724/2004] chore: update new deployments (#10361) --- projects/native-lend/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/native-lend/index.js b/projects/native-lend/index.js index 8a05ce289fd..bc24c5182be 100644 --- a/projects/native-lend/index.js +++ b/projects/native-lend/index.js @@ -9,6 +9,10 @@ module.exports = { const config = { arbitrum: "0x795E5cCdd008637EB98c64958d3b8Ba3e6DE2d2B", zklink: "0x4AC97E2727B0e92AE32F5796b97b7f98dc47F059", + bsc: "0x3ba16AC2A67D126BF1DBa0a81E6C75073EFd95d9", + mantle:"0x48A6FE0Fa8DfF6D290Bd21aB6BCC1DDAeb9f2D0e", + ethereum:"0x3ba16AC2A67D126BF1DBa0a81E6C75073EFd95d9" + }; Object.keys(config).forEach((chain) => { From 3628c6c895dbf30a6b981207be068743550a88a3 Mon Sep 17 00:00:00 2001 From: javerett <90236351+javerett@users.noreply.github.com> Date: Fri, 24 May 2024 01:34:22 -0700 Subject: [PATCH 1725/2004] Add C3 Exchange (#10355) * Add C3 Exchange * Correct mapping for USDC to Avalanche * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/c3/index.js | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 projects/c3/index.js diff --git a/projects/c3/index.js b/projects/c3/index.js new file mode 100644 index 00000000000..53e741f5980 --- /dev/null +++ b/projects/c3/index.js @@ -0,0 +1,55 @@ +const { sumTokens } = require("../helper/chain/algorand") +const { chainExports } = require("../helper/exports") + +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 = chainExports(chainTvl, Object.keys(chainMap)) +module.exports.methodology = 'Calculates the TVL from the contract, then remaps assets for accurate value source' From 4fe386b93b3e8e800c32cc73161ac83c534164d0 Mon Sep 17 00:00:00 2001 From: Nico Szerman Date: Fri, 24 May 2024 05:42:59 -0300 Subject: [PATCH 1726/2004] Add Sailing's new trading bots portfolios Adapter (#10352) * added new tickers * parallelized execution * fixed adapter * changes * wip sailingprotocol-portfolios * wip sailing portfolios * wip * wip adapter * sailing-portfolios gg * removed unnecessary * polish * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sailing-portfolios/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 projects/sailing-portfolios/index.js diff --git a/projects/sailing-portfolios/index.js b/projects/sailing-portfolios/index.js new file mode 100644 index 00000000000..4eefd2366bd --- /dev/null +++ b/projects/sailing-portfolios/index.js @@ -0,0 +1,19 @@ +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 }) +} + +module.exports = { + kava: { tvl, }, + methodology: 'The assets in the balancer are detected and counted.' +} From 3cc80492a31f83d3031225103393bf480aa942c9 Mon Sep 17 00:00:00 2001 From: 0xIldefonso <102725012+0xildefonso@users.noreply.github.com> Date: Fri, 24 May 2024 17:00:33 +0800 Subject: [PATCH 1727/2004] add unirouter tvl on b2 (#10362) --- projects/unirouter/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/unirouter/index.js diff --git a/projects/unirouter/index.js b/projects/unirouter/index.js new file mode 100644 index 00000000000..dafc73bc396 --- /dev/null +++ b/projects/unirouter/index.js @@ -0,0 +1,15 @@ +const ADDRESSES = require("../helper/coreAssets.json"); + +async function unirouterLSDTvl(api) { + const uBTCBalance = await api.call({ + abi: "erc20:totalSupply", + target: "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2", + }); + return await api.add(ADDRESSES.null, uBTCBalance); +} + +module.exports = { + bsquared: { + tvl: unirouterLSDTvl, + }, +}; From 5f71fb591b34c5c72cf3e4fe24ae9bccac332c94 Mon Sep 17 00:00:00 2001 From: ST3V3 Date: Fri, 24 May 2024 18:01:58 +0900 Subject: [PATCH 1728/2004] add linea, blast chains to mitosis tvl (#10363) --- projects/mitosis/index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/projects/mitosis/index.js b/projects/mitosis/index.js index 07f53e97676..5da1d01b9dc 100644 --- a/projects/mitosis/index.js +++ b/projects/mitosis/index.js @@ -1,4 +1,12 @@ -const chains = ["ethereum", "arbitrum", "optimism", "mode", "manta"]; +const chains = [ + "ethereum", + "arbitrum", + "optimism", + "mode", + "manta", + "blast", + "linea", +]; const WEETH_ADDRESS = { ethereum: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", @@ -6,18 +14,23 @@ const WEETH_ADDRESS = { optimism: "0x346e03f8cce9fe01dcb3d0da3e9d00dc2c0e08f0", mode: "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", manta: "0x77b6F99970f488cFA8bd41892900b6Ce881C2300", + blast: "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", + linea: "0x1bf74c010e6320bab11e2e5a532b5ac15e0b8aa6", }; const CAP_ADDRESS = { ethereum: "0x451d791b6e9a9b8c9237bb55e58a7757342b16f9", + blast: "0x096430ef0a653c067df32e93ff77090e084169de", + linea: "0xcd32876b9b483eb75e8ca74935e4b51725f33a91", }; chains.forEach((chain) => { module.exports[chain] = { tvl: async (api) => { - const cap = CAP_ADDRESS[chain] ?? '0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2' - const tvl = await api.call({ abi: 'uint256:load', target: cap, }) - api.add(WEETH_ADDRESS[chain], tvl) + const cap = + CAP_ADDRESS[chain] ?? "0xb883ee478d3b7fea8a5357a3c3e27e2d2292b1d2"; + const tvl = await api.call({ abi: "uint256:load", target: cap }); + api.add(WEETH_ADDRESS[chain], tvl); }, }; }); From 5bcabdb25e8a15c6daa0a4b5f37a8ae308c2049e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 24 May 2024 11:51:06 +0200 Subject: [PATCH 1729/2004] track splice-fi --- projects/splice-fi/index.js | 63 +++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 projects/splice-fi/index.js diff --git a/projects/splice-fi/index.js b/projects/splice-fi/index.js new file mode 100644 index 00000000000..19c5c84c352 --- /dev/null +++ b/projects/splice-fi/index.js @@ -0,0 +1,63 @@ +const { getLogs } = require("../helper/cache/getLogs"); + +const config = { + mode: { + factoryV3: "0x9e6d12097339ddd5402FDD39fc0Ef86Eec54AB39", + fromBlockV3: 7764229, + }, +} + +Object.keys(config).forEach((chain) => { + const { factoryV3, fromBlockV3 } = config[chain]; + module.exports[chain] = { + tvl: async (api) => { + const logsV3 = await getLogs({ + api, + target: factoryV3, + topic: [ + "0xae811fae25e2770b6bd1dcb1475657e8c3a976f91d1ebf081271db08eef920af", + ], + eventAbi: + "event CreateNewMarket (address indexed market, address indexed PT, int256 scalarRoot, int256 initialAnchor, uint256 lnFeeRateRoot)", + onlyArgs: true, + fromBlock: fromBlockV3, + }) + + 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); + }); + }, + }; +}); From b322192cdbba2d0288e5daea213c636373ce0550 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 24 May 2024 12:33:39 +0200 Subject: [PATCH 1730/2004] trax yfx v4 --- projects/yfx-v4/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/yfx-v4/index.js diff --git a/projects/yfx-v4/index.js b/projects/yfx-v4/index.js new file mode 100644 index 00000000000..fb9094f965f --- /dev/null +++ b/projects/yfx-v4/index.js @@ -0,0 +1,15 @@ +const manager = '0x29bd0372A8A087e4d34d4098259Cd298d554BAc4'; +const vault = '0x50b516a9DB620aB67A33d895DAF4Bd1c294b9517'; + +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 From fd027d3d68c0d70084ea88e184cc6866f774708b Mon Sep 17 00:00:00 2001 From: Barak Uri <140400738+dev-uri@users.noreply.github.com> Date: Fri, 24 May 2024 16:06:49 +0300 Subject: [PATCH 1731/2004] feat: add Rollspace (#10368) * feat: add Rollspace * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/rollspace/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/rollspace/index.js diff --git a/projects/rollspace/index.js b/projects/rollspace/index.js new file mode 100644 index 00000000000..b6e50ba27a0 --- /dev/null +++ b/projects/rollspace/index.js @@ -0,0 +1,11 @@ +const { nullAddress } = require("../helper/tokenMapping"); +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const BSC_POOL_CONTRACT = '0xB1FcDb8Ed3c2Bc572440b08a5A93984f366BBf3C'; + +module.exports = { + methodology: 'counts the number of BNB tokens in the bsc pool contract.', + bsc: { + tvl: sumTokensExport({ owner: BSC_POOL_CONTRACT, tokens: [nullAddress], }) + } +} \ No newline at end of file From 8aeef9328186d5664ab78c8baa35d08e01b7981b Mon Sep 17 00:00:00 2001 From: Anas Bin Sohail <50760655+anassohail99@users.noreply.github.com> Date: Fri, 24 May 2024 18:07:34 +0500 Subject: [PATCH 1732/2004] Fixed formatting (#10367) * fix config function * add support for linea, polygon and polygon zkevm * fixed formatting --- projects/a51-finance-v3/index.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/projects/a51-finance-v3/index.js b/projects/a51-finance-v3/index.js index 6d2cfa56337..7d3e171b294 100644 --- a/projects/a51-finance-v3/index.js +++ b/projects/a51-finance-v3/index.js @@ -12,17 +12,34 @@ const getStrategyReserves = "function getStrategyReserves(address, int24, int24, 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: [{ target: "0xD4798F142FDb87738eF4eBE82Bd56Eccde19A88C", helper: "0x9c225a02426e3229C073A6132E083561e95000b5", startBlock: 55506149 },], + 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,},], } module.exports = { From 8392b61d1330ab57d6fbe6d12227e310ee38744e Mon Sep 17 00:00:00 2001 From: Eidolon <92181746+imrtlfarm@users.noreply.github.com> Date: Sat, 25 May 2024 01:12:24 -0700 Subject: [PATCH 1733/2004] add glyph-fi (#10370) --- projects/glyph-fi/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/glyph-fi/index.js diff --git a/projects/glyph-fi/index.js b/projects/glyph-fi/index.js new file mode 100644 index 00000000000..8f2617e94ee --- /dev/null +++ b/projects/glyph-fi/index.js @@ -0,0 +1,5 @@ +const { aaveExports } = require('../helper/aave') + +module.exports = { + fraxtal: aaveExports("fraxtal", "0xcD0c5BA79018F37898A58eF56d197828d84f36Ad"), +} \ No newline at end of file From fb00fc4ffb2a5d65c235cf07ca445328f0ab033e Mon Sep 17 00:00:00 2001 From: "Kalax.io" <163113001+Kalaxio@users.noreply.github.com> Date: Sat, 25 May 2024 16:13:51 +0800 Subject: [PATCH 1734/2004] add kalax (#10371) --- projects/kalax/index.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 projects/kalax/index.js diff --git a/projects/kalax/index.js b/projects/kalax/index.js new file mode 100644 index 00000000000..a9a8710ceb7 --- /dev/null +++ b/projects/kalax/index.js @@ -0,0 +1,40 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +const KALAX = "0x2F67F59b3629Bf24962290DB9edE0CD4127e606D"; + +async function tvl(api) { + const FARM = "0xE63153C3360aCa0F4e7Ca7A1FC61c2215FAEF5A1"; + + let pools = await api.call({ abi: abiInfo.poolInfos, target: FARM }); + pools + .filter((i) => i.assets !== KALAX) + .forEach((i) => { + if (i.assets === "0x0000000000000000000000000000000000000001") { + i.assets = "0x0000000000000000000000000000000000000000"; + } + api.add(i.assets, i.tvl); + }); + return await sumTokens2({ api, resolveLP: true }); +} + +async function staking(api) { + const FARM = "0xE63153C3360aCa0F4e7Ca7A1FC61c2215FAEF5A1"; + + let pools = await api.call({ abi: abiInfo.poolInfos, target: FARM }); + let target = pools.find((i) => i.assets === KALAX); + + api.add(target.assets, target.tvl); + return api.getBalances(); +} + +module.exports = { + blast: { + tvl, + staking, + }, +}; + +const abiInfo = { + poolInfos: + "function getPoolTotalTvl() view returns (tuple(uint256 pid, address assets, uint256 tvl)[])", +}; From b5ec379b46a03b9256d57ad66a4113cfbe62e6b5 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Sun, 26 May 2024 08:43:50 +0100 Subject: [PATCH 1735/2004] add more comptrollers --- projects/orbitlending-io/index.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/projects/orbitlending-io/index.js b/projects/orbitlending-io/index.js index e5c480b9ed4..a4d550c3cc7 100644 --- a/projects/orbitlending-io/index.js +++ b/projects/orbitlending-io/index.js @@ -1,9 +1,22 @@ const { compoundExports2 } = require('../helper/compound'); +const { mergeExports } = require('../helper/utils'); -module.exports = { - blast: compoundExports2({ - comptroller: '0x1E18C3cb491D908241D0db14b081B51be7B6e652', - cether: ['0xf9b3b455f5d900f62bc1792a6ca6e1d47b989389', '0x0872b71efc37cb8dde22b2118de3d800427fdba0'], - blacklistedTokens: ['0xf92996ddc677a8dcb032ac5fe62bbf00f92ae2ec'] - }), -}; +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}))) From 6dcaca7784ed37aac3451dff0d066a42796756e3 Mon Sep 17 00:00:00 2001 From: mattt21 Date: Sun, 26 May 2024 11:48:35 -0500 Subject: [PATCH 1736/2004] Add Koi Finance v3 pools (#10376) * dep dmute/mute * add koi v3 pools --- projects/mute-cl/index.js | 10 ++++++++++ projects/mute/index.js | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 projects/mute-cl/index.js diff --git a/projects/mute-cl/index.js b/projects/mute-cl/index.js new file mode 100644 index 00000000000..95093aa3e07 --- /dev/null +++ b/projects/mute-cl/index.js @@ -0,0 +1,10 @@ + +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 index 110a1a2b27d..831e482adb2 100644 --- a/projects/mute/index.js +++ b/projects/mute/index.js @@ -4,6 +4,7 @@ const { getUniTVL } = require('../helper/unknownTokens'); const KOI = "0xa995ad25ce5eb76972ab356168f5e1d9257e4d05" const veKOI = "0x98dB4e3Df6502369dAD7AC99f3aEE5D064721C4C" + module.exports = { misrepresentedTokens: true, era: { @@ -12,3 +13,4 @@ module.exports = { }, methodology: "Counts liquidity in pools and KOI token in the veKOI contract", }; + \ No newline at end of file From 80b7fd26336920cfac97dbc78e3ddaf80601eeed Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Mon, 27 May 2024 05:25:21 +0100 Subject: [PATCH 1737/2004] add bsc tokens --- projects/rehold-v2/index.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/projects/rehold-v2/index.js b/projects/rehold-v2/index.js index 6554925930a..48221eac907 100644 --- a/projects/rehold-v2/index.js +++ b/projects/rehold-v2/index.js @@ -7,7 +7,40 @@ const tvl = sumTokensExport(config) module.exports = { ethereum: { tvl }, - bsc: { tvl }, + bsc: { tvl: sumTokensExport({ + owner: VAULT_V2, fetchCoValentTokens: true, + tokens: [ + "0x55d398326f99059fF775485246999027B3197955", // BSC-USD + "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", //Bpeg ETH + "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", // btcb + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", // 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 + "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", // busd + "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1", // uni + "0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb", // sfp + "0xAD29AbB318791D579433D831ed122aFeAf29dcfe", // ftm + "0xB0D502E938ed5f4df2E681fE6E419ff29631d62b", // stg + "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", // dot + "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", // wbnb + "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", // cake + "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", // dai + "0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0", // axs + "0x031b41e504677879370e9DBcF937283A8691Fa7f", // fet + "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47", // ada + "0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153", // fil + ]}) }, polygon: { tvl }, avax: { tvl }, arbitrum: { tvl }, From 21ef6352182e162617e9ef43237d69aa9c811df5 Mon Sep 17 00:00:00 2001 From: alex-unicrypt <94008455+alex-unicrypt@users.noreply.github.com> Date: Mon, 27 May 2024 05:44:11 +0100 Subject: [PATCH 1738/2004] added base to v2 lp lockers (#10380) --- projects/unicrypt/apiCache.js | 2 +- projects/unicrypt/config.js | 30 ++++++++++++++++++++++++++++++ projects/unicrypt/index.js | 10 +++++++--- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/projects/unicrypt/apiCache.js b/projects/unicrypt/apiCache.js index 9065e8b6dbd..fd106b1c6b3 100644 --- a/projects/unicrypt/apiCache.js +++ b/projects/unicrypt/apiCache.js @@ -1,6 +1,6 @@ const sdk = require('@defillama/sdk'); const { config, protocolPairs, tokens, stakingContracts, - ethereumContractData, bscContractData, polygonContractData, + ethereumContractData, baseContractData, bscContractData, polygonContractData, avalancheContractData, gnosisContractData,arbitrumContractData, } = require('./config') const { getCache, setCache, } = require("../helper/cache") const { vestingHelper, } = require("../helper/unknownTokens") diff --git a/projects/unicrypt/config.js b/projects/unicrypt/config.js index 9b0fd29eaef..fb9ad32d896 100644 --- a/projects/unicrypt/config.js +++ b/projects/unicrypt/config.js @@ -107,6 +107,18 @@ const config = { 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 } } @@ -138,6 +150,23 @@ const ethereumContractData = [ } ] +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, @@ -236,6 +265,7 @@ const arbitrumContractData = [ module.exports = { + baseContractData, ethereumContractData, bscContractData, polygonContractData, diff --git a/projects/unicrypt/index.js b/projects/unicrypt/index.js index 179fbaf629f..614ff0b637f 100644 --- a/projects/unicrypt/index.js +++ b/projects/unicrypt/index.js @@ -1,7 +1,8 @@ const sdk = require('@defillama/sdk'); const { config, protocolPairs, tokens, stakingContracts, ethereumContractData, bscContractData, polygonContractData, - avalancheContractData, gnosisContractData, arbitrumContractData, } = require('./config') + avalancheContractData, gnosisContractData, arbitrumContractData, + baseContractData, } = require('./config') const { stakings } = require("../helper/staking"); const { pool2s } = require("../helper/pool2"); @@ -62,7 +63,7 @@ function tvl(args) { } module.exports = { - methodology: + methodology: `Counts each LP pair's native token and stable balance, adjusted to reflect locked pair's value. Balances and merged across multiple @@ -80,6 +81,9 @@ module.exports = { [protocolPairs.uncx_WETH], config.uniswapv2.chain) }, + base: { + tvl: tvl(baseContractData) + }, bsc: { tvl: tvl(bscContractData), @@ -93,7 +97,7 @@ module.exports = { avax: { tvl: tvl(avalancheContractData) }, - arbitrum: { tvl: tvl(arbitrumContractData) }, + arbitrum: { tvl: tvl(arbitrumContractData) }, xdai: { tvl: tvl(gnosisContractData), pool2: pool2s([config.honeyswap.locker], From 2d4150d82534d7fa010bbaf41d6a878602dc4c47 Mon Sep 17 00:00:00 2001 From: spzmya <127633250+spzmya@users.noreply.github.com> Date: Mon, 27 May 2024 07:10:38 +0200 Subject: [PATCH 1739/2004] Create dragon.js (#10379) * Create dragon.js * Update dragon.js * Update dragon.js * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dragon/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 projects/dragon/index.js diff --git a/projects/dragon/index.js b/projects/dragon/index.js new file mode 100644 index 00000000000..366d1e7f19e --- /dev/null +++ b/projects/dragon/index.js @@ -0,0 +1,13 @@ +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 From c1aa5366b1afca5855501205dc5425d869656069 Mon Sep 17 00:00:00 2001 From: Agnes Lin Date: Mon, 27 May 2024 01:11:03 -0400 Subject: [PATCH 1740/2004] feat: add iswap tvl (#10374) * feat: add iswap tvl config * feat: update pools * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/iswap-tech/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/iswap-tech/index.js diff --git a/projects/iswap-tech/index.js b/projects/iswap-tech/index.js new file mode 100644 index 00000000000..bf7ee1822e9 --- /dev/null +++ b/projects/iswap-tech/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + btr: { factory: '0xad2449234455e0992e1423411df0f8b6fed1feae', fromBlock: 1370065, }, +}) \ No newline at end of file From 1b6c464bde2afe222cc75cc1828bdf3442b10234 Mon Sep 17 00:00:00 2001 From: silvercondor <32993765+silvercondor@users.noreply.github.com> Date: Mon, 27 May 2024 16:45:10 +0800 Subject: [PATCH 1741/2004] chore: update methology info (#10381) --- projects/native/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/native/index.js b/projects/native/index.js index f4a16b19152..41e45ed54b6 100644 --- a/projects/native/index.js +++ b/projects/native/index.js @@ -3,7 +3,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); module.exports = { methodology: - "includes the liquidity provided to the infrasturcture and ecosystem of Native", + "TVL: Counts the inventory held by Native's Partnered Market Makers used to facilitate slippage free swaps on the protocol", }; const config = { From 701bb53d31576215f72dc29bfb17ee2bc76fba17 Mon Sep 17 00:00:00 2001 From: WindowAzure Date: Mon, 27 May 2024 16:45:19 +0800 Subject: [PATCH 1742/2004] hibt cex (#10382) Co-authored-by: Azure --- projects/hibt/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 projects/hibt/index.js diff --git a/projects/hibt/index.js b/projects/hibt/index.js new file mode 100644 index 00000000000..f2544d5e6a4 --- /dev/null +++ b/projects/hibt/index.js @@ -0,0 +1,21 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + '0x89a7f48b79516125c5521d5922a6dc0a085b3b95' + ], + }, + bitcoin: { + owners: [ + 'bc1qpxntlx09kqvpwl7vmjw9f28yvytdqkdx8xh63w' + ] + }, + tron: { + owners: [ + 'TWVCro8i15sJjmwRKfV53gPnCsgz2ThQSc' + ] + }, +} + +module.exports = cexExports(config) \ No newline at end of file From 2eeb1b9a8b6ce893cbaa3249c0f4c51f5a736894 Mon Sep 17 00:00:00 2001 From: gaawai-l Date: Mon, 27 May 2024 16:45:44 +0800 Subject: [PATCH 1743/2004] Jaspervault Add 2 new liquidity pools for selling options (#10383) * add jaspervault tvl * minor fix * Add a new liquidity pool for selling puts. * Add 2 new liquidity pool for selling options --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Co-authored-by: Gary.Leung --- projects/jaspervault/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/jaspervault/index.js b/projects/jaspervault/index.js index ba1ff656c5c..46f54ba173b 100644 --- a/projects/jaspervault/index.js +++ b/projects/jaspervault/index.js @@ -5,8 +5,10 @@ module.exports = { arbitrum: { tvl: sumTokensExport({ owners: [ - '0xE980FD1dEA4E93c25B7f5B27351CF069C4f63a41', // sell WBTC & ETH CALL - '0xE26f15B3cc23e8a5adE4c10CCc69e50520eE2a89' // sell WBTC & ETH PUT + '0xE980FD1dEA4E93c25B7f5B27351CF069C4f63a41', // sell ETH CALL + '0xE26f15B3cc23e8a5adE4c10CCc69e50520eE2a89', // sell ETH PUT + '0xaaa5a76b9397eE41309CC15Bd71a5ae99662d6cd', // sell WBTC CALL + '0xd9344b56AE4C3Eb40a248c2548F128cCcd6208A0' // sell WBTC PUT ], tokens: [ADDRESSES.arbitrum.WBTC, ADDRESSES.null, ADDRESSES.arbitrum.USDT] }) From cba8cf367e874419cba226dd91b21d0078d0f0f6 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 27 May 2024 11:45:44 +0100 Subject: [PATCH 1744/2004] add new wallet bitget CEX (#10386) --- projects/bitget/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/projects/bitget/index.js b/projects/bitget/index.js index 54b01f512a6..82a4da501b3 100644 --- a/projects/bitget/index.js +++ b/projects/bitget/index.js @@ -31,6 +31,17 @@ const config = { '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 ] }, tron: { @@ -46,6 +57,10 @@ const config = { '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 ] }, bitcoin: { @@ -56,6 +71,12 @@ const config = { '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 ] }, arbitrum: { From ac69482d232a15b72db89997a79519078d7ed5af Mon Sep 17 00:00:00 2001 From: Patrick Roy <126775449+patrickroyme@users.noreply.github.com> Date: Mon, 27 May 2024 14:19:08 +0300 Subject: [PATCH 1745/2004] Add Base network to Kinetix V2 and V3 (#10384) --- projects/kinetix-v2/index.js | 7 +++++++ projects/kinetix-v3/index.js | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/projects/kinetix-v2/index.js b/projects/kinetix-v2/index.js index db85f569e49..b8c1fa524f3 100644 --- a/projects/kinetix-v2/index.js +++ b/projects/kinetix-v2/index.js @@ -9,4 +9,11 @@ module.exports = { fetchBalances: true, }), }, + base: { + tvl: getUniTVL({ + factory: "0x8aD3d3e6B1b7B65138bD508E48330B544539b2C3", + useDefaultCoreAssets: true, + fetchBalances: true, + }), + }, }; diff --git a/projects/kinetix-v3/index.js b/projects/kinetix-v3/index.js index 48e18f9b3dd..4f26b6b52c7 100644 --- a/projects/kinetix-v3/index.js +++ b/projects/kinetix-v3/index.js @@ -1,12 +1,12 @@ -const { uniV3GraphExport } = require('../helper/uniswapV3') +const { uniV3Export } = require("../helper/uniswapV3"); -module.exports = { +module.exports = uniV3Export({ kava: { - tvl: uniV3GraphExport({ - // // factory: '0x2dBB6254231C5569B6A4313c6C1F5Fe1340b35C2', - // // fromBlock: 6069472 - graphURL: 'https://kava-graph-node.metavault.trade/subgraphs/name/kinetixfi/v3-subgraph', - name: 'kinetixfi/kava-v3', - }) - } -} + factory: "0x2dBB6254231C5569B6A4313c6C1F5Fe1340b35C2", + fromBlock: 6069472, + }, + base: { + factory: "0xdDF5a3259a88Ab79D5530eB3eB14c1C92CD97FCf", + fromBlock: 14195510, + }, +}); From c01942906a36298a820231b1a2dbe1467b6d6435 Mon Sep 17 00:00:00 2001 From: LidoKing <55234791+LidoKing@users.noreply.github.com> Date: Mon, 27 May 2024 19:39:24 +0800 Subject: [PATCH 1746/2004] add nx finance (#10385) * add nx finance * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/nxfinance/index.js | 20 +++++++++ projects/nxfinance/nx-idl.json | 75 ++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 projects/nxfinance/index.js create mode 100644 projects/nxfinance/nx-idl.json diff --git a/projects/nxfinance/index.js b/projects/nxfinance/index.js new file mode 100644 index 00000000000..77ae92d158b --- /dev/null +++ b/projects/nxfinance/index.js @@ -0,0 +1,20 @@ +const { Program } = require("@project-serum/anchor"); +const { getProvider, } = require("../helper/solana"); +const nxIdl = require("./nx-idl.json"); + +const NX_PROGRAM_ADDR = "JMpxnop5u1HJAqjzpZHo7MmvfBQf5YkFw4nGK9F83x3"; + +async function tvl(api) { + const provider = getProvider(); + const nx_program = new Program(nxIdl, NX_PROGRAM_ADDR, provider); + const accounts = await nx_program.account.marginPool.all() + + for (let { account: pool } of accounts) + 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, }, +}; diff --git a/projects/nxfinance/nx-idl.json b/projects/nxfinance/nx-idl.json new file mode 100644 index 00000000000..44917c201aa --- /dev/null +++ b/projects/nxfinance/nx-idl.json @@ -0,0 +1,75 @@ +{ + "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" + } + ] + } + } + ] +} From 61eb60ca6ec123acc242925e3c0509602977cf22 Mon Sep 17 00:00:00 2001 From: suNrisEinMyeYes <40171291+suNrisEinMyeYes@users.noreply.github.com> Date: Mon, 27 May 2024 14:39:50 +0300 Subject: [PATCH 1747/2004] locus update (#10388) * xUsdVaultRedeployed * code fix * update locus * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/locus/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/locus/index.js b/projects/locus/index.js index 990bc10cb5a..64c94ee9306 100644 --- a/projects/locus/index.js +++ b/projects/locus/index.js @@ -8,7 +8,7 @@ const stLocus = "0xEcc5e0c19806Cf47531F307140e8b042D5Afb952" module.exports = { doublecounted: true, hallmarks: [ - [Math.floor(new Date('2023-12-30')/1e3), 'Was hacked for 321k'], // https://twitter.com/Locus_finance/status/1744374506267767267 + [Math.floor(new Date('2023-12-30') / 1e3), 'Was hacked for 321k'], // https://twitter.com/Locus_finance/status/1744374506267767267 ], } @@ -22,6 +22,7 @@ const config = { arbitrum: { lvTokens: { xARB: "0xF8F045583580C4Ba954CD911a8b161FafD89A9EF", + pendleETH: "0x515f3533a17E2EEFB13313D9248f328C94dBe641" }, lvTokens2: { xUSD: "0x6318938F825F57d439B3a9E25C38F04EF97987D8", @@ -32,7 +33,7 @@ const config = { Object.keys(config).forEach(chain => { const { lvTokens, lvTokens2 } = config[chain] let tvl = sumERC4626VaultsExport({ vaults: Object.values(lvTokens), tokenAbi: 'token', balanceAbi: 'totalAssets' }) - if (lvTokens2) + if (lvTokens2) tvl = sdk.util.sumChainTvls([tvl, sumERC4626VaultsExport({ vaults: Object.values(lvTokens2), tokenAbi: 'wantToken', balanceAbi: 'totalAssets' })]) module.exports[chain] = { tvl From 3127012c99fcef202dd5be3450a396127f4cbe5b Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Mon, 27 May 2024 21:11:36 +0800 Subject: [PATCH 1748/2004] add karak lending vaults into TVL (#10389) --- projects/airpuff/index.js | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index ab58f104ba5..a8b3f14deab 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -1,6 +1,7 @@ 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)", @@ -17,6 +18,45 @@ const contractAbis = { module.exports = { misrepresentedTokens: true, + karak: { + tvl: async (api) => { + // const KUSDC = { + // vault: "0x4c18E80b801AA24066D8B1C6E65ee245497Cb741", + // token: "0x7AFAa2428c379862984A3fdF517BbeaA1487A32c", + // }; + // + // const KWETH = { + // vault: "0x5c7a8e3d4c0e382f8c3b6f6a3b7c9d3d1f9e6b9c", + // token: "0x9a9631F7BEcE5C6E0aBA1f73f0e5796c534dc4db", + // }; + + const wethLending = { + vault: "0xd6034F9147CF7528e857403Dea93bc45743295eb", + token: "0x4200000000000000000000000000000000000006", + }; + + const usdcLending = { + vault: "0x475820E4bCE0E3d233Ad7f6A8c9DD1f66974c5d6", + token: "0xa415021bC5c4C3b5B989116DC35Ae95D9C962c8D", + }; + + // const bal1 = await api.call({ target: KUSDC.token, abi: contractAbis.getDeposits, params: [KUSDC.vault] }); + // + // console.log(bal1); + // + // const bal2 = await api.call({ target: KWETH.token, abi: contractAbis.getDeposits, params: [KWETH.vault] }); + // console.log(bal2); + + const strategies = [wethLending, usdcLending]; + + const tokensAndOwners = []; + + strategies.forEach(({ vault, token }) => tokensAndOwners.push([token, vault])); + + await api.sumTokens({ tokensAndOwners }); + }, + }, + zklink: { tvl: async (api) => { const pufEth1x = { From 72de93048f732b8d2b8add091499b62b86ba58c0 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 27 May 2024 15:44:52 +0200 Subject: [PATCH 1749/2004] track https://daikodex.io/swap --- package-lock.json | 6 +++--- projects/daiko-dex/index.js | 3 +++ projects/helper/chains.json | 1 + projects/helper/env.js | 3 ++- projects/helper/tokenMapping.js | 5 ++++- 5 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 projects/daiko-dex/index.js diff --git a/package-lock.json b/package-lock.json index 4f1deb45ac3..e5913d90852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.56", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.56.tgz", - "integrity": "sha512-91dDh9+EbZ8ABDz4SYhPj/eV8vjobh0uQ7+OkgfHH9V1zH/ajJ2DbN40NJqRL+rMzZqu0CX062wNaxPYmcwASw==", + "version": "5.0.57", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.57.tgz", + "integrity": "sha512-a4xLOQp7Y5vD+6HVuNPmWxOmsg9MDJliTPen8nzjXoxDG/WWHKFwARa035l60zeoq/TWY6JbTFOBoruCBVYN2g==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@supercharge/promise-pool": "^2.1.0", diff --git a/projects/daiko-dex/index.js b/projects/daiko-dex/index.js new file mode 100644 index 00000000000..3b94051348e --- /dev/null +++ b/projects/daiko-dex/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('taiko', '0x2cFAe8F731D6a04f3E868deB03ad73576695271A') \ No newline at end of file diff --git a/projects/helper/chains.json b/projects/helper/chains.json index dcd91477420..8339a572a4d 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -277,6 +277,7 @@ "svm", "sx", "syscoin", + "taiko", "telos", "tenet", "terra", diff --git a/projects/helper/env.js b/projects/helper/env.js index 80961520a73..8e00c39e43f 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -17,7 +17,8 @@ const DEFAULTS = { DEFICHAIN_EVM_RPC_MULTICALL: '0x7fEf77CDe3B41221Cff54B84Ea89D2EBc6b53352', BOUNCEBIT_RPC_MULTICALL: '0x493d616f5F9a64e5B3D527120E406439bdF29272', ZKLINK_RPC_MULTICALL: '0xa8738F57538E3Bb73872d1133F2358c7Fe56FD35', - REAL_RPC: 'https://real.drpc.org', + REAL_RPC: 'https://real.drpc.org', // added manually short name is re-al + TAIKO_RPC: 'https://rpc.taiko.xyz', // added manually short name is tko-mainnet REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 9066558f75a..726dfff8b37 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -116,7 +116,10 @@ const fixBalancesTokens = { '0x90c6e93849e06ec7478ba24522329d14a5954df4': { coingeckoId: 'ethereum', decimals: 18 }, '0x75d0cbf342060b14c2fc756fd6e717dfeb5b1b70': { coingeckoId: 'dai', decimals: 18 }, '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd': { coingeckoId: 'mountain-protocol-usdm', decimals: 18 }, - } + }, + taiko: { + '0xA51894664A773981C6C112C43ce576f315d5b1B6': { coingeckoId: 'ethereum', decimals: 18 } + }, } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) From cbe94197d0a2f05476b4b2fb9c3de5974e0c15b4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 27 May 2024 16:11:29 +0200 Subject: [PATCH 1750/2004] taikoswap --- projects/taikoswap/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/taikoswap/index.js diff --git a/projects/taikoswap/index.js b/projects/taikoswap/index.js new file mode 100644 index 00000000000..3810f942623 --- /dev/null +++ b/projects/taikoswap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('taiko', '0x7c43adafc2337baa16aa2876f9de8da5b3720fdb') \ No newline at end of file From 7d0cfb27a8c4ee5c4f26a13e13855640a8d79ed0 Mon Sep 17 00:00:00 2001 From: bitpartylabs003 Date: Mon, 27 May 2024 23:19:59 +0800 Subject: [PATCH 1751/2004] Create index.js (#10372) --- projects/bitparty/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/bitparty/index.js diff --git a/projects/bitparty/index.js b/projects/bitparty/index.js new file mode 100644 index 00000000000..e7d2ae6e842 --- /dev/null +++ b/projects/bitparty/index.js @@ -0,0 +1,11 @@ +const { sumTokens2, } = require('../helper/unwrapLPs') + +async function tvl(api) { + + return sumTokens2({ owners: [ + '0xb002b938d63fe8762f2a0eff9e49a8e20a0078e8', + ], tokens: ['0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2', '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2', '0x9827431e8b77e87c9894bd50b055d6be56be0030', '0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F', '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0'], api, }) //wbtc and usdt +} +module.exports = { + btr: { tvl, } +} From 526eed54cd3855173262ac95e32f376cd4791f23 Mon Sep 17 00:00:00 2001 From: JohnnyWyles <97029546+JohnnyWyles@users.noreply.github.com> Date: Mon, 27 May 2024 18:58:53 +0100 Subject: [PATCH 1752/2004] Add Astroport Osmosis Deployment (#10392) https://celatone.osmosis.zone/osmosis-1/contracts/osmo1246fnsutktuqqzrru673pqwtt64n288004j5fauyuezwr54llw5sl6drp6 --- projects/astroport/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/astroport/index.js b/projects/astroport/index.js index 02573dbacc7..ed71d81eda1 100644 --- a/projects/astroport/index.js +++ b/projects/astroport/index.js @@ -16,4 +16,7 @@ module.exports = { sei: { tvl: getFactoryTvl("sei1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3shh3qfl") }, -} // node test.js projects/astroport/index.js \ No newline at end of file + osmosis: { + tvl: getFactoryTvl("osmo1246fnsutktuqqzrru673pqwtt64n288004j5fauyuezwr54llw5sl6drp6") + }, +} // node test.js projects/astroport/index.js From c2ae17460d38ce5948f1d6363d32722fab26c478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nekojita=20=28=E7=8C=AB=E8=88=8C=29?= <154665857+nekojitaxyz@users.noreply.github.com> Date: Tue, 28 May 2024 04:05:58 +0700 Subject: [PATCH 1753/2004] Add Henjindex adapter on Taiko (#10391) * Add Henjindex adapter on Taiko * minor fix * add taiko multicall --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 3 ++- projects/henjin/index.js | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 projects/henjin/index.js diff --git a/projects/helper/env.js b/projects/helper/env.js index 8e00c39e43f..d9af5a50f57 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -20,6 +20,7 @@ const DEFAULTS = { REAL_RPC: 'https://real.drpc.org', // added manually short name is re-al TAIKO_RPC: 'https://rpc.taiko.xyz', // added manually short name is tko-mainnet REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', + TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 726dfff8b37..d6b63304d35 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -118,7 +118,8 @@ const fixBalancesTokens = { '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd': { coingeckoId: 'mountain-protocol-usdm', decimals: 18 }, }, taiko: { - '0xA51894664A773981C6C112C43ce576f315d5b1B6': { coingeckoId: 'ethereum', decimals: 18 } + '0xA51894664A773981C6C112C43ce576f315d5b1B6': { coingeckoId: 'ethereum', decimals: 18 }, + '0x07d83526730c7438048d55a4fc0b850e2aab6f0b': { coingeckoId: 'usd-coin', decimals: 6 }, }, } diff --git a/projects/henjin/index.js b/projects/henjin/index.js new file mode 100644 index 00000000000..d0542c8ac28 --- /dev/null +++ b/projects/henjin/index.js @@ -0,0 +1,9 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + taiko: { + factory: "0x42B08e7a9211482d3643a126a7dF1895448d3509", + fromBlock: 400, + isAlgebra: true, + }, +}); From 9da2ebf2dd632727890c2d5906fc1024c57afb0b Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Mon, 27 May 2024 23:17:45 -0700 Subject: [PATCH 1754/2004] Add Manta uni and linea linehub (#10394) --- projects/visor/config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/visor/config.js b/projects/visor/config.js index 0ccba906f30..03b52642240 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -75,6 +75,7 @@ const HYPE_REGISTRY = { ["0xA8E2fD481342976a3259591FBc08999369a43C5A", 3554431], // Uniswap ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 163300], // Lynex ["0x9C3E0445559E6de1fe6391E8e018DcA02B480836", 3952143], // Nile + ["0xFf0D3aBfd3003D4D5Ad7d57C912cca02ebA6036B", 4775887], // Linehub ], base: [ ["0x829432679F69DBd8b2575f006EC0129894a39D86", 12465470], // Uniswap @@ -94,8 +95,9 @@ const HYPE_REGISTRY = { ["0xf14Fb95d6E7E1ab5fCdFfF7Ab203a84b9361E6FC", 10038113], // Thena ], manta: [ - ["0x683292172E2175bd08e3927a5e72FC301b161300", 394949], // Apertureswap + ["0x670003267DDFF9C2c740EC9A1645569cCCDC6Bf7", 2261164], // Uniswap ["0x8a9570ec97534277Ade6e46d100939FbCE4968f0", 689622], // Quickswap + ["0x683292172E2175bd08e3927a5e72FC301b161300", 394949], // Apertureswap ], metis: [ ["0xFc13Ebe7FEB9595D70195E9168aA7F3acE153621", 9080358], // Hercules From 3f896021876a9f3829e891275a6f491400489571 Mon Sep 17 00:00:00 2001 From: Victory <103103236+eric0x01@users.noreply.github.com> Date: Tue, 28 May 2024 14:42:11 +0800 Subject: [PATCH 1755/2004] Add Core-Earn protocol (#10398) * add core-earn protocol * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/core-earn/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/core-earn/index.js diff --git a/projects/core-earn/index.js b/projects/core-earn/index.js new file mode 100644 index 00000000000..ef1dfdc74fc --- /dev/null +++ b/projects/core-earn/index.js @@ -0,0 +1,11 @@ +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 From 44145de1efcc7355d128c38985c7b335cdc2bff9 Mon Sep 17 00:00:00 2001 From: kkexdev Date: Tue, 28 May 2024 14:43:04 +0800 Subject: [PATCH 1756/2004] add kkex (#10396) --- projects/kkex/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/kkex/index.js diff --git a/projects/kkex/index.js b/projects/kkex/index.js new file mode 100644 index 00000000000..1944a944b1d --- /dev/null +++ b/projects/kkex/index.js @@ -0,0 +1,9 @@ +const { gmxExports } = require("../helper/gmx"); + +module.exports = { + zklink: { + tvl: gmxExports({ + vault: "0xC8F6494bD11A12Dd6B676EC87C8b878a1D90e641", + }), + }, +}; From 22d0e198561ea4e63ec95e20b32d51291ed13a53 Mon Sep 17 00:00:00 2001 From: amedrontadora <134207821+amedrontadora@users.noreply.github.com> Date: Tue, 28 May 2024 14:51:14 +0800 Subject: [PATCH 1757/2004] add Ritsu Protocol (#10393) * add ritsu * code refactor --------- Co-authored-by: amedrontadora Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/ritsu/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/ritsu/index.js diff --git a/projects/ritsu/index.js b/projects/ritsu/index.js new file mode 100644 index 00000000000..572b0614dee --- /dev/null +++ b/projects/ritsu/index.js @@ -0,0 +1,32 @@ +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 From 9d3de963fead29d3537e24118476a7a11b638e00 Mon Sep 17 00:00:00 2001 From: JoscelynFarr <130961775+JoscelynFarr@users.noreply.github.com> Date: Tue, 28 May 2024 15:32:25 +0800 Subject: [PATCH 1758/2004] update tvl of jojo (#10399) * remove other chains * update tvl * add fundingRateArbitrage * add fundingRate --------- Co-authored-by: JoscelynFarr --- projects/jojo/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/jojo/index.js b/projects/jojo/index.js index c05697c1ed7..761261f6883 100644 --- a/projects/jojo/index.js +++ b/projects/jojo/index.js @@ -20,7 +20,7 @@ module.exports = { tvl: sumTokensExport( { tokens: [ADDRESSES.base.USDC, ADDRESSES.base.WETH, cbethBase, degenBase, mUsdcBase, ], - owners: ['0x2f7c3cf9d9280b165981311b822becc4e05fe635', '0xf8192489A8015cA1690a556D42F7328Ea1Bb53D0'] + owners: ['0x2f7c3cf9d9280b165981311b822becc4e05fe635', '0xf8192489A8015cA1690a556D42F7328Ea1Bb53D0', '0x8B7e1924fF57EEc8EbD87254E4de6Ff397f039D3'] } ) }, From 1296df7b675f057528915bbb79481b3f0080ed66 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 28 May 2024 11:03:58 +0200 Subject: [PATCH 1759/2004] Add support for Lorenzo in DefiLlama (#10401) * add support lorenzo in DefiLlama * minor fix --------- Co-authored-by: Leven --- projects/lorenzo/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/lorenzo/index.js diff --git a/projects/lorenzo/index.js b/projects/lorenzo/index.js new file mode 100644 index 00000000000..c0ee691cba9 --- /dev/null +++ b/projects/lorenzo/index.js @@ -0,0 +1,23 @@ +const { sumTokensExport } = require("../helper/sumTokens"); + +const LorenzoOwners = [ + "bc1pzd6luyardlle9f7lul2y8fl72c22p6vxspc4k4g4gzgjf8975s0sr042yt", + "bc1p7agkadaau66jtva9n8k5pg3lsctuyqur8a2l5y9hzwqkh5nlmd0skuhws3", + "bc1qaf6laj9m7jteztyz4lulrtcjtpusfcfnd7r7xn", + "bc1qf6cj2z2e2mzuvfrl80vgt53k7jc2vf36ckahgy", + "bc1q5hc68n6krnzgzswf7rknha2aqxzrzup4vlhce8", + "bc1qpxpmr3zdjulqnwa3jdvm83tpaek6dv3kc75ms7", + "bc1qaml9d9mqgfhsfuaa2ymutdl4psj8c2undx9n72", + "bc1qutgngqyrflxrfmk9k28ucvq0s2v8a43nwfwv02", + "bc1qrx3fpr5j6sprxett45c2kl9p4pajyxep0mapfd", + "bc1q00t2ntm46c2nfvcer6ukj6npaxjurujthse4qq", + "bc1q3pzhncle68gct6me08kn5kf9awkevt6ettwrmg", + "bc1qw6cvwx8ajprmp2lzkhrsps2qx4k9r2pj4xj98x" +]; + +module.exports = { + methodology: "Lorenzo, As the Bitcoin Liquidity Finance Layer", + bitcoin: { + tvl: sumTokensExport({ owners : LorenzoOwners }), + } +}; \ No newline at end of file From f5a87159ab87c79ebebb8860690440015a5d5f2f Mon Sep 17 00:00:00 2001 From: Winson Cheng <83229800+0xKMG@users.noreply.github.com> Date: Tue, 28 May 2024 17:05:50 +0800 Subject: [PATCH 1760/2004] add new pools on karak to tvl calculation (#10400) --- projects/airpuff/index.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index a8b3f14deab..d5313c3863b 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -20,15 +20,15 @@ module.exports = { karak: { tvl: async (api) => { - // const KUSDC = { - // vault: "0x4c18E80b801AA24066D8B1C6E65ee245497Cb741", - // token: "0x7AFAa2428c379862984A3fdF517BbeaA1487A32c", - // }; - // - // const KWETH = { - // vault: "0x5c7a8e3d4c0e382f8c3b6f6a3b7c9d3d1f9e6b9c", - // token: "0x9a9631F7BEcE5C6E0aBA1f73f0e5796c534dc4db", - // }; + const KUSDC = { + vault: "0x4c18E80b801AA24066D8B1C6E65ee245497Cb741", + token: "0xa415021bC5c4C3b5B989116DC35Ae95D9C962c8D", + }; + + const KWETH = { + vault: "0x9a9631F7BEcE5C6E0aBA1f73f0e5796c534dc4db", + token: "0x4200000000000000000000000000000000000006", + }; const wethLending = { vault: "0xd6034F9147CF7528e857403Dea93bc45743295eb", @@ -40,12 +40,9 @@ module.exports = { token: "0xa415021bC5c4C3b5B989116DC35Ae95D9C962c8D", }; - // const bal1 = await api.call({ target: KUSDC.token, abi: contractAbis.getDeposits, params: [KUSDC.vault] }); - // - // console.log(bal1); - // - // const bal2 = await api.call({ target: KWETH.token, abi: contractAbis.getDeposits, params: [KWETH.vault] }); - // console.log(bal2); + 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]; @@ -54,6 +51,9 @@ module.exports = { strategies.forEach(({ vault, token }) => tokensAndOwners.push([token, vault])); await api.sumTokens({ tokensAndOwners }); + + api.add(KUSDC.token, KarakUSDCBal); + api.add(KWETH.token, KarakWETHbal); }, }, From 76f5cedc4702d1eaf5559e4d393ba7d155c15399 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 28 May 2024 11:43:58 +0200 Subject: [PATCH 1761/2004] fix broken adapters --- projects/dinopool/index.js | 2 ++ projects/dogsofelon/index.js | 3 +++ projects/liquix/index.js | 12 ++++----- projects/metavault-v3/index.js | 2 +- projects/steadefi/index.js | 45 ++++------------------------------ 5 files changed, 17 insertions(+), 47 deletions(-) diff --git a/projects/dinopool/index.js b/projects/dinopool/index.js index 86bf08fec4d..0a3d344a343 100644 --- a/projects/dinopool/index.js +++ b/projects/dinopool/index.js @@ -15,3 +15,5 @@ const lps = [ 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/dogsofelon/index.js b/projects/dogsofelon/index.js index 31db5325c5e..310e4245d43 100644 --- a/projects/dogsofelon/index.js +++ b/projects/dogsofelon/index.js @@ -21,3 +21,6 @@ module.exports = { }, 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/liquix/index.js b/projects/liquix/index.js index 63eb576fa96..9df6fa82d20 100644 --- a/projects/liquix/index.js +++ b/projects/liquix/index.js @@ -46,12 +46,12 @@ Object.keys(config).forEach((chain) => { fromBlock, }); const vaults = logs.map(i => i.proxyAddress) - for (let i = 0; i < vaults.length; i++) { - const balances = await api.call({ abi: 'function totalUnderlying(address vault_) external view returns ((address,uint256)[] memory)', target: helper, params: vaults[i] }); - for (let j = 0; j < balances.length; j++) { - const token0 = balances[j][0]; - const balance = balances[j][1]; - api.add(token0, balance) + console.log(vaults.length) + 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]) } } } diff --git a/projects/metavault-v3/index.js b/projects/metavault-v3/index.js index c78ab36597b..fa4ae6eac26 100644 --- a/projects/metavault-v3/index.js +++ b/projects/metavault-v3/index.js @@ -4,5 +4,5 @@ const factory = "0x9367c561915f9D062aFE3b57B18e30dEC62b8488" // same on all chai module.exports = uniV3Export({ linea: { factory, fromBlock: 652486, }, - scroll: { factory, fromBlock: 77008, }, + scroll: { factory, fromBlock: 77008, blacklistedTokens: ['0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f'] }, }) \ No newline at end of file diff --git a/projects/steadefi/index.js b/projects/steadefi/index.js index 2b4523c0b65..b7cdbff274d 100644 --- a/projects/steadefi/index.js +++ b/projects/steadefi/index.js @@ -16,47 +16,10 @@ const config = { } module.exports = { - hallmarks : [ + hallmarks: [ [1691373600, "Steadefi exploited"], ], }; -/* -Object.keys(config).forEach(chain => { - const { fsglp } = config[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) - const grailVaults = vaults.filter(i => i.chainId === chainId && i.protocol === 'Camelot').map(i => i.address) - vaults = vaults.filter(i => i.chainId === chainId && i.protocol !== 'Camelot').map(i => i.address) - const lpAssets = await api.multiCall({ abi: 'address:asset', calls: lendingPools }) - const managers = await api.multiCall({ abi: 'address:manager', calls: vaults }) - let lpTokens = await api.multiCall({ abi: 'address:lpToken', calls: managers, permitFailure: true, }) - const glpPoolManagers = managers.filter((_, i) => !lpTokens[i]) - glpPoolManagers.forEach(v => { - lpAssets.push(fsglp) - lendingPools.push(v) - }) - const lpPoolManagers = managers.filter((_, i) => lpTokens[i]) - lpTokens = lpTokens.filter(i => i) - const bals = await api.multiCall({ abi: 'uint256:lpTokenAmt', calls: lpPoolManagers }) - api.addTokens(lpTokens, bals) - // api.add('tether', tokenValue.reduce((a, v) => a + v/1e13, 0), { skipChain: true}) - if (grailVaults.length) { - const grailManagers = await api.multiCall({ abi: 'address:manager', calls: grailVaults }) - const spNfts = await api.multiCall({ abi: 'address:spNft', calls: grailManagers }) - const positionIds = await api.multiCall({ abi: 'uint256:positionId', calls: grailManagers }) - const poolInfos = await api.multiCall({ abi: camelotNFTPoolAbi.getPoolInfo, calls: spNfts }) - const stakedPositionInfo = await api.multiCall({ abi: camelotNFTPoolAbi.getStakingPosition, calls: spNfts.map((v, i) => ({ target: v, params: positionIds[i] })) }) - const lpTokens = poolInfos.map(v => v.lpToken) - const lpBalances = stakedPositionInfo.map(v => v.amount) - api.addTokens(lpTokens, lpBalances) - } - return sumTokens2({ api, tokensAndOwners2: [lpAssets, lendingPools] }) - } - } -}) */ Object.keys(config).forEach(chain => { module.exports[chain] = { @@ -67,8 +30,10 @@ Object.keys(config).forEach(chain => { 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 }) - bals.forEach(([bal0, bal1], i) => { + 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) }) From b56fd38b5c565484d946eaa5681da056fb07b865 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 28 May 2024 11:37:29 +0100 Subject: [PATCH 1762/2004] add xlayer curve --- projects/curve/contracts.json | 5 +++++ projects/curve/index.js | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json index 66c36b1cfc9..8045849a705 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -164,5 +164,10 @@ "wrapped": "0xc86c7c0efbd6a49b35e8714c5f59d99de09a225b", "metapoolBases": {}, "CurveStableswapFactoryNG": "0x1764ee18e8B3ccA4787249Ceb249356192594585" + }, + "xlayer": { + "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "metapoolBases": {}, + "CurveStableswapFactoryNG": "0x5eee3091f747e60a045a2e715a4c71e600e31f6e" } } \ No newline at end of file diff --git a/projects/curve/index.js b/projects/curve/index.js index 4844798d5e5..fccd53fa7cf 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -23,7 +23,8 @@ const chains = [ "celo", "kava", "base", - "fraxtal" + "fraxtal", + "xlayer" ]; // Object.keys(contracts); const registryIds = { stableswap: 0, From 28fd9020b75310bc8537a8787e1fcbee791ebdb5 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 28 May 2024 11:57:50 +0100 Subject: [PATCH 1763/2004] remove crvusd blacklist --- projects/curve/contracts.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json index 8045849a705..6f0c4a5c7e2 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -124,9 +124,6 @@ "stableFactory": "0x3093f9B57A428F3EB6285a589cb35bEA6e78c336", "cryptoFactory": "0x5EF72230578b3e399E6C6F4F6360edF95e83BBfd" }, - "blacklist": [ - "0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93" - ], "CurveStableswapFactoryNG": "0xd2002373543Ce3527023C75e7518C274A51ce712" }, "optimism": { From f451df6d30413e89fc04a566e5b1b5bcefc0f9b5 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 28 May 2024 12:02:57 +0100 Subject: [PATCH 1764/2004] readd more crvusd --- projects/curve/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/curve/index.js b/projects/curve/index.js index fccd53fa7cf..0d39815a9aa 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -182,7 +182,7 @@ async function unwrapPools({ poolList, registry, chain, block }) { } const blacklists = { - ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x95ECDC6caAf7E4805FCeF2679A92338351D24297', '0x5aa00dce91409b58b6a1338639b9daa63eb22be7', '0xEf1385D2b5dc6D14d5fecB86D53CdBefeCA20fcC', ADDRESSES.ethereum.CRVUSD, '0x29b41fe7d754b8b43d4060bb43734e436b0b9a33'], + ethereum: ['0x6b8734ad31d42f5c05a86594314837c416ada984', '0x29b41fe7d754b8b43d4060bb43734e436b0b9a33'], arbitrum: ['0x3aef260cb6a5b469f970fae7a1e233dbd5939378'], } From fb9a94f80c751a8054d87207f738ebd45f1ae052 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 28 May 2024 13:17:51 +0100 Subject: [PATCH 1765/2004] missing wallets safe (#10406) --- projects/treasury/safe.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/treasury/safe.js b/projects/treasury/safe.js index f86dddf3eb6..4bede95630f 100644 --- a/projects/treasury/safe.js +++ b/projects/treasury/safe.js @@ -2,6 +2,10 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const treasury = "0x3EDf6868d7c42863E44072DaEcC16eCA2804Dea1" // +const SAFE = "0x5afe3855358e112b5647b952709e6165e1c1eeee" +const safe_foundation_treasury = "0x1d4f25bc16b68c50b78e1040bc430a8097fd6f45" +const safe_dao_2 = "0x0b00b3227a5f3df3484f03990a87e02ebad2f888" + module.exports = treasuryExports({ optimism: { @@ -11,5 +15,12 @@ module.exports = treasuryExports({ ], owners: [treasury], }, + ethereum: { + tokens: [ + nullAddress, + ], + owners: [safe_foundation_treasury, safe_dao_2], + ownTokens: [SAFE], + }, }) \ No newline at end of file From 26ad1978ad0e2bb2666024079407a074b05708af Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 28 May 2024 13:27:53 +0100 Subject: [PATCH 1766/2004] add manta to uni v3 (#10407) --- projects/uniswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 6e381b717b5..0f16a9b5c9b 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -82,6 +82,7 @@ module.exports = { scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, blast: { factory: "0x792edade80af5fc680d96a2ed80a44247d2cf6fd", fromBlock: 400903, }, linea: { factory: "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", fromBlock: 25247, }, + manta: {factory: "0x06D830e15081f65923674268121FF57Cc54e4e23", fromBlock: 1191705} }), filecoin: { tvl: filecoinTvl }, } From 6b995eb375cee98e17a48028bacc50f5c15177ff Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 28 May 2024 15:45:29 +0100 Subject: [PATCH 1767/2004] taiko --- projects/taiko-bridge/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/taiko-bridge/index.js diff --git a/projects/taiko-bridge/index.js b/projects/taiko-bridge/index.js new file mode 100644 index 00000000000..34c4bc6c92f --- /dev/null +++ b/projects/taiko-bridge/index.js @@ -0,0 +1,15 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: async ({ api }) => + sumTokens2({ + api, + owners: [ + "0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC", + "0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab", + ], + fetchCoValentTokens: true, + }), + }, +}; From 042769a86d9fd3c1875ac6d3f09016c221fbaf49 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 28 May 2024 16:39:22 +0100 Subject: [PATCH 1768/2004] add bsc --- projects/curve/contracts.json | 5 +++++ projects/curve/index.js | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/curve/contracts.json b/projects/curve/contracts.json index 6f0c4a5c7e2..212669dc4bd 100644 --- a/projects/curve/contracts.json +++ b/projects/curve/contracts.json @@ -166,5 +166,10 @@ "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "metapoolBases": {}, "CurveStableswapFactoryNG": "0x5eee3091f747e60a045a2e715a4c71e600e31f6e" + }, + "bsc": { + "gasTokenDummy": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "metapoolBases": {}, + "CurveStableswapFactoryNG": "0xd7e72f3615aa65b92a4dbdc211e296a35512988b" } } \ No newline at end of file diff --git a/projects/curve/index.js b/projects/curve/index.js index 0d39815a9aa..a1ca3c7a6ef 100644 --- a/projects/curve/index.js +++ b/projects/curve/index.js @@ -24,7 +24,8 @@ const chains = [ "kava", "base", "fraxtal", - "xlayer" + "xlayer", + "bsc" ]; // Object.keys(contracts); const registryIds = { stableswap: 0, From 32efa9a920958a64a8be0f9f01c44207c8c30706 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 28 May 2024 18:41:00 +0100 Subject: [PATCH 1769/2004] new puff contracts --- projects/puff-penthouse/index.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/projects/puff-penthouse/index.js b/projects/puff-penthouse/index.js index ceae2c0c6d7..fae3fa70783 100644 --- a/projects/puff-penthouse/index.js +++ b/projects/puff-penthouse/index.js @@ -1,13 +1,14 @@ const { sumTokensExport } = require('../helper/unwrapLPs') -const { staking } = require('../helper/staking') +const { stakings } = require('../helper/staking') module.exports = { mantle: { - staking: staking("0xBeCd6b3D8B06479c83533f0d7E6DF1b0e413AeEa", "0x26a6b0dcdCfb981362aFA56D581e4A7dBA3Be140"), + staking: stakings( + ["0xBeCd6b3D8B06479c83533f0d7E6DF1b0e413AeEa", "0x1260140fEa31cf920D7D890aD1de85cbAC1Fea12", "0x35Ee9e36804d358A2892FA0De336426cC3Cb18e4"], + "0x26a6b0dcdCfb981362aFA56D581e4A7dBA3Be140"), tvl: sumTokensExport({ - tokensAndOwners: [ - ["0xcDA86A272531e8640cD7F1a92c01839911B90bb0", "0x0CC41C11878254aF8E65ca61C03DD03735F2DC6d"] - ] + tokens: ["0xcDA86A272531e8640cD7F1a92c01839911B90bb0"], + owners: ["0x0CC41C11878254aF8E65ca61C03DD03735F2DC6d", "0x1260140fEa31cf920D7D890aD1de85cbAC1Fea12", "0x35Ee9e36804d358A2892FA0De336426cC3Cb18e4"] }), }, }; From eed8e411a5f5b050e44598be915b510600ff3fd0 Mon Sep 17 00:00:00 2001 From: George Date: Wed, 29 May 2024 18:26:31 +0400 Subject: [PATCH 1770/2004] feat: lynx adapter --- projects/lynx/index.js | 125 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 projects/lynx/index.js diff --git a/projects/lynx/index.js b/projects/lynx/index.js new file mode 100644 index 00000000000..1920f7a7d22 --- /dev/null +++ b/projects/lynx/index.js @@ -0,0 +1,125 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); + +const config = { + linea: { + tokenAndOwnerPair: [ + [ + // veLVC Token + "0xcc22F6AA610D1b2a0e89EF228079cB3e1831b1D1", + // OFTChipAdapter (owner) + "0xc5e782e2a4e2cfcb7ed454cf5a7b6aa2bb424b90", + ], + ], + }, + fuse: { + tokenAndOwnerPair: [ + [ + // WFUSE Token + "0x0BE9e53fd7EDaC9F859882AfdDa116645287C629", + // OFTChipAdapter (owner) + "0x962FD1B229c8c775bC2E37A8a90dac4f3C0105B7", + ], + [ + // MST Token + "0x2363Df84fDb7D4ee9d4E1A15c763BB6b7177eAEe", + // OFTChipAdapter (owner) + "0x028815b56433a4AAe10087290d1Ed9Ef7437068F", + ], + [ + // sFUSE Token + "0xb1DD0B683d9A56525cC096fbF5eec6E60FE79871", + // OFTChipAdapter (owner) + "0x707f3d554B47E17F1FDfb408FE091B39D51929CF", + ], + [ + // VOLT Token + "0xC5E782E2A4E2cFCb7eD454CF5a7b6aa2bB424B90", + // OFTChipAdapter (owner) + "0x094DE4d315198Df981D3a20ceFc3381B2182a572", + ], + ], + }, + arbitrum: { + tokenAndOwnerPair: [ + [ + // stEUR Token + "0x004626a008b1acdc4c74ab51644093b155e59a23", + // OFTChipAdapter (owner) + "0xc5e782e2a4e2cfcb7ed454cf5a7b6aa2bb424b90", + ], + [ + // TST Token + "0xf5a27e55c748bcddbfea5477cb9ae924f0f7fd2e", + // OFTChipAdapter (owner) + "0xd22c72ab0f4967edb876d84773bff0b60a92e51a", + ], + [ + // EUROs Token + "0x643b34980e635719c15a2d4ce69571a258f940e9", + // OFTChipAdapter (owner) + "0x3552fe61af3f6d3235dd1cb75402d4281d1fbac6", + ], + [ + // GRAI Token + "0x894134a25a5faC1c2C26F1d8fBf05111a3CB9487", + // OFTChipAdapter (owner) + "0xBe1fa4177fBf43683434CecD5563DA6Ea00FD474", + ], + ], + }, + optimism: { + tokenAndOwnerPair: [ + [ + // SONNE Token + "0x1db2466d9f5e10d7090e7152b68d62703a2245f0", + // OFTChipAdapter (owner) + "0xc5e782e2a4e2cfcb7ed454cf5a7b6aa2bb424b90", + ], + ], + }, + polygon: { + tokenAndOwnerPair: [ + [ + // MAI Token + "0xa3fa99a148fa48d14ed51d610c367c61876997f1", + // OFTChipAdapter (owner) + "0x7279d1cff1510e503b6be64fbbad64088034504c", + ], + [ + // WMATIC Token + "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + // OFTChipAdapter (owner) + "0x028815b56433a4aae10087290d1ed9ef7437068f", + ], + ], + }, + mantle: { + tokenAndOwnerPair: [ + [ + // aUSD Token + "0xD2B4C9B0d70e3Da1fBDD98f469bD02E77E12FC79", + // OFTChipAdapter (owner) + "0xC5E782E2A4E2cFCb7eD454CF5a7b6aa2bB424B90", + ], + ], + }, + bsc: { + tokenAndOwnerPair: [ + [ + // lisUSD Token + "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5", + // OFTChipAdapter (owner) + "0x3b7ed1cdf0fc64d95c0d0428b9cc99b6a9a5cb94", + ], + ], + }, +}; + +Object.keys(config).forEach((chain) => { + const { tokenAndOwnerPair } = config[chain]; + module.exports[chain] = { + tvl: sumTokensExport({ + tokensAndOwners: tokenAndOwnerPair, + }), + }; +}); From a2fbed8012cb577cc82b7b581b6507978c16b056 Mon Sep 17 00:00:00 2001 From: particle-deployer <130306380+particle-deployer@users.noreply.github.com> Date: Wed, 29 May 2024 08:34:03 -0700 Subject: [PATCH 1771/2004] Adding a new vault for Ethena (USDe) integration on Blast (#10424) * ethena connection * minor fix --------- Co-authored-by: Wukong Particle Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/astaria-v2/index.js | 6 ++---- projects/helper/tokenMapping.js | 1 + projects/particle-trade-duo/index.js | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/projects/astaria-v2/index.js b/projects/astaria-v2/index.js index 1e83bbd6875..6af422d549f 100644 --- a/projects/astaria-v2/index.js +++ b/projects/astaria-v2/index.js @@ -1,8 +1,6 @@ const { treasuryExports } = require("../helper/treasury"); -const ADDRESSES = require('../helper/coreAssets.json') module.exports = treasuryExports({ - base: { - owners: ["0x0000000000A6F0986c92cf1EC4d2e77aFBE1466D"], - }, + base: { owners: ["0x0000000000A6F0986c92cf1EC4d2e77aFBE1466D"], }, + ethereum: { owners: ['0x0000000000A6F0986c92cf1EC4d2e77aFBE1466D'], }, }) \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index d6b63304d35..1b8c6abaceb 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -78,6 +78,7 @@ const fixBalancesTokens = { '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, //pirex eth '0xde55b113a27cc0c5893caa6ee1c020b6b46650c0': { coingeckoId: "deus-finance-2", decimals: 18 }, // deus + '0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34': { coingeckoId: "ethena-usde", decimals: 18 }, }, solana: { 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index e8087e409c7..819a47b4d14 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -1,4 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2 } = require('../helper/unwrapLPs') const config = { blast: { weth90d: '0xc932317385fDc794633f612874BD687eA987B151', @@ -24,6 +25,13 @@ const wrappedNativeTokenMap = { } } +const usdeVaults = { + blast: { + vault: '0xeEa70D690C6c9c5534FcB90b6b0aE71199C7d4d3', + fwUSDe: '0x04efc000dC9c27445b092622f42e09E173beE61f', + } +} + Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: async (api) => { @@ -41,6 +49,15 @@ Object.keys(config).forEach(chain => { 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('0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34', wrappedUSDeBalance) + return sumTokens2({ api }) } } }) \ No newline at end of file From 823d48526a8a2797197b0fd6cd05451382dfeb6c Mon Sep 17 00:00:00 2001 From: bitpartylabs003 Date: Wed, 29 May 2024 23:41:38 +0800 Subject: [PATCH 1772/2004] update bitpary token (#10420) * Create index.js * Update index.js supplement token * Update bitparyt index.js supplement token --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bitparty/index.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/projects/bitparty/index.js b/projects/bitparty/index.js index e7d2ae6e842..e6927521d13 100644 --- a/projects/bitparty/index.js +++ b/projects/bitparty/index.js @@ -1,11 +1,24 @@ -const { sumTokens2, } = require('../helper/unwrapLPs') +const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') -async function tvl(api) { - - return sumTokens2({ owners: [ - '0xb002b938d63fe8762f2a0eff9e49a8e20a0078e8', - ], tokens: ['0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2', '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2', '0x9827431e8b77e87c9894bd50b055d6be56be0030', '0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F', '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0'], api, }) //wbtc and usdt -} module.exports = { - btr: { tvl, } + btr: { + tvl: sumTokensExport({ + owners: ['0xb002b938d63fe8762f2a0eff9e49a8e20a0078e8',], + tokens: [ + nullAddress, + '0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2', + '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2', + '0x9827431e8b77e87c9894bd50b055d6be56be0030', + '0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F', + '0x07373d112edc4570b46996ad1187bc4ac9fb5ed0', + '0x2729868df87d062020e4a4867ff507fb52ee697c', + '0x68879ca2af24941fc3b6eb89fdb26a98aa001fc1', + '0xf6718b2701d4a6498ef77d7c152b2137ab28b8a3', + '0xe277aed3ff3eb9824edc52fe7703df0c5ed8b313', + '0xf6fa83e30c7d3978f86141016ee9471d77f48ae0', + '0xbb0cb5c5e49d5c3903932d07831fb8c1bb1651d2', + '0xab7f136bbb18808f0c981d0307d3360ca92ad171' + ], + }), + } } From 40aa7d6d57d72c9c89c0091689afb6bd96b0fb82 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 29 May 2024 17:52:34 +0200 Subject: [PATCH 1773/2004] update dtx --- projects/dtx/index.js | 57 +++++++++++++++++++++++--------------- projects/helper/erc4626.js | 6 ++-- 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/projects/dtx/index.js b/projects/dtx/index.js index c2fcfa9561e..46c6a71b9e8 100644 --- a/projects/dtx/index.js +++ b/projects/dtx/index.js @@ -3,29 +3,40 @@ const sdk = require("@defillama/sdk") const { sumTokensExport } = require("../helper/unwrapLPs") const ADDRESSES = require("../helper/coreAssets.json") -const vaultTvl = sumERC4626VaultsExport({ - vaults: [ - "0x56e0f6DF03883611C9762e78d4091E39aD9c420E", - "0x3D4621fa5ff784dfB2fcDFd5B293224167F239db", - "0xe97D34E531E1b299047A94Fc6854289830362d8f", - "0xBa95FCe6c2683C29bD963dd201CA8ee8f3605801", - "0x037A168876d3027b1384FD1752fEAa52407726dB", - "0x3031F6c8958Cf093377c11b3871BD23AEA5e5865", - "0x802B1f8e092AC4469B30C7560266F9a6f8CA450F", - ], - isOG4626: true, -}) - -const otherTvl = sumTokensExport({ - tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH, ADDRESSES.blast.ezETH], - owners: [ - "0x9AdF2b330697C6816176491E1fd5503BB746d1d8", - "0x0E5b7DDbF37d92B21512Ae5A6CE66aEfA7A7828F", - ], -}) - -module.exports = { +const config = { blast: { - tvl: sdk.util.sumChainTvls([vaultTvl, otherTvl]), + 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'], + tokenConfig: { + tokens: ['0xa51894664a773981c6c112c43ce576f315d5b1b6'], + owners: [ + "0xc0ab776604059D10880dbD219758FF7B82997cc0", + "0xB00231B308B01Dbb90f16F966F62d86fBc78c450", + ], + }, + } } + +Object.keys(config).forEach(chain => { + const { vaults, tokenConfig, } = config[chain] + const vaultTvl = sumERC4626VaultsExport({ vaults, isOG4626: true }) + const otherTvl = sumTokensExport(tokenConfig) + module.exports[chain] = { tvl: sdk.util.sumChainTvls([vaultTvl, otherTvl]), } +}) \ No newline at end of file diff --git a/projects/helper/erc4626.js b/projects/helper/erc4626.js index 0ea9385689d..6813fcc3bba 100644 --- a/projects/helper/erc4626.js +++ b/projects/helper/erc4626.js @@ -1,12 +1,14 @@ +const { sumTokens2 } = require("./unwrapLPs") async function sumERC4626Vaults({ api, ...options }) { await api.erc4626Sum({ ...options }) return api.getBalances() } -function sumERC4626VaultsExport({ vaults, ...options}) { +function sumERC4626VaultsExport({ vaults, ...options }) { return async (api) => { - return sumERC4626Vaults({ ...options, api, calls: vaults }) + await sumERC4626Vaults({ ...options, api, calls: vaults }) + return sumTokens2({ api }) // hack to transform tokens } } From 823c0ff8c076661cf3e54af14d72188d6d158aa5 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 29 May 2024 12:56:22 -0300 Subject: [PATCH 1774/2004] Add blast and base support for metastreet-v2 (#10417) --- projects/metastreet-v2/index.js | 54 +++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/projects/metastreet-v2/index.js b/projects/metastreet-v2/index.js index c957e9f7bc6..d8c8c0c05d7 100644 --- a/projects/metastreet-v2/index.js +++ b/projects/metastreet-v2/index.js @@ -1,20 +1,38 @@ const abi = require("./abi.json"); -const { sumTokens2 } = require("../helper/unwrapLPs") +const { sumTokens2 } = require("../helper/unwrapLPs"); -const METASTREET_POOL_FACTORY = "0x1c91c822F6C5e117A2abe2B33B0E64b850e67095"; +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, abi: abi.getPools, }) - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools, }) - const ct = await api.multiCall({ abi: abi.collateralToken, calls: pools, }) + 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, abi: abi.getPools, }) - const tokens = await api.multiCall({ abi: abi.currencyToken, calls: pools, }) + 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, @@ -23,14 +41,32 @@ async function borrowed(api) { params: [0, MAX_UINT_128], })), }) - ).map((i) => i.reduce((partialSum, node) => partialSum + +node.value - +node.available, 0)); + ).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, + 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.", From 54168664aac10116dacd6a7772603f8b4f8da9b1 Mon Sep 17 00:00:00 2001 From: chirag-phoenix <168807722+chirag-phoenix@users.noreply.github.com> Date: Wed, 29 May 2024 21:32:45 +0530 Subject: [PATCH 1775/2004] feat: Add bluelotusdao project (#10416) * feat: Add bluelotusdao project * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bluelotusdao/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/bluelotusdao/index.js diff --git a/projects/bluelotusdao/index.js b/projects/bluelotusdao/index.js new file mode 100644 index 00000000000..fb24fa08ec5 --- /dev/null +++ b/projects/bluelotusdao/index.js @@ -0,0 +1,3 @@ + +const { uniTvlExport } = require('../helper/unknownTokens') +module.exports = uniTvlExport('genesys', '0x5c4619104985163b3839dA465232B6D2a9588E7B') \ No newline at end of file From 88711c92e853f042280a982e690a9376bdb10cd3 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Wed, 29 May 2024 09:07:01 -0700 Subject: [PATCH 1776/2004] add kinetix base (#10414) --- projects/visor/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index 03b52642240..b2832d59d82 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -86,6 +86,7 @@ const HYPE_REGISTRY = { ["0x39ce2eB762e7bFe19b6AD4D5bA384c67CE4051f0", 7310157], // Swapbased ["0x8118C33513feC13f8cf488CCb4509190650F0e92", 7310111], // Baseswap ["0xf1DF4F17e34Ba710DfFC487F73f1e19476E815a6", 8743213], // Thick + ["0xe1cd1c2d2e4B44dE211D554649BC7dc49eF07784", 15063294], // Kinetix ], kava: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 6384272], // Kinetix From 6f04de262bd804545d6c1bdb8d9d4aba782c5d06 Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 29 May 2024 09:07:44 -0700 Subject: [PATCH 1777/2004] Update/add staking pool (#10413) * Staking pool and TT subgraph url update * Add ztx staking pool * update subgraph endpoint * update avax endpoint * Add stake pool --- projects/steer/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/steer/index.js b/projects/steer/index.js index 24e7646c7c6..c2d3262336e 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -167,7 +167,8 @@ module.exports.arbitrum.staking = stakings( "0x25Ef108B328Cf752F0E0b0169D499Db164173763", "0x0b619438d1E8b8c205656502de59Af2Af71C43e0", "0xaCdC6fC8F84fbA26f065489a7bf5837D7CDf546F", - "0xff46e1B60dD9De89Aa04902D5c3c5ca01f8576A4" + "0xff46e1B60dD9De89Aa04902D5c3c5ca01f8576A4", + "0x1E6a358a1721e0D2B84f39FD328FC03A1b6e863B" ], "0x1C43D05be7E5b54D506e3DdB6f0305e8A66CD04e", "arbitrum" From 7b2ba0b28712cb8a0ca35d7254cc00aa52409887 Mon Sep 17 00:00:00 2001 From: m66260 <117136064+m66260@users.noreply.github.com> Date: Wed, 29 May 2024 12:08:35 -0400 Subject: [PATCH 1778/2004] Update D8X TVL with Arbitrum funds (#10412) * add arbitrum * remove log --- projects/d8x/index.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/projects/d8x/index.js b/projects/d8x/index.js index 0c891e74978..474940d7094 100644 --- a/projects/d8x/index.js +++ b/projects/d8x/index.js @@ -1,9 +1,10 @@ const abi = require("./abi-poolInfo.json"); -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2 } = require("../helper/unwrapLPs"); const config = { - polygon_zkevm: { factory: "0xaB7794EcD2c8e9Decc6B577864b40eBf9204720f", }, - xlayer: { factory: "0xb24dB543749277E8625a59C061aE7574C8235475", }, + polygon_zkevm: { factory: "0xaB7794EcD2c8e9Decc6B577864b40eBf9204720f" }, + xlayer: { factory: "0xb24dB543749277E8625a59C061aE7574C8235475" }, + arbitrum: { factory: "0x8f8BccE4c180B699F81499005281fA89440D1e95" }, }; async function tvl(api) { @@ -15,13 +16,14 @@ async function tvl(api) { }); const marginTokens = exchangeInfo[2]; - return sumTokens2({ api, owner: factory, tokens: marginTokens, }); + return sumTokens2({ api, owner: factory, tokens: marginTokens }); } module.exports = { - methodology: "adds up the balances of all liquidity pools in the D8X exchange", + methodology: + "adds up the balances of all liquidity pools in the D8X exchange", }; -Object.keys(config).forEach(chain => { +Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl }; -}); \ No newline at end of file +}); From 2896598e21e86d169a56daaf5a62e87884c488a1 Mon Sep 17 00:00:00 2001 From: Luren L Date: Wed, 29 May 2024 12:15:38 -0400 Subject: [PATCH 1779/2004] update NAVI tvl (#10410) * update NAVI tvl Add NAVX and VSUI token address to the core token address * revert change --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/coreAssets.json | 2 +- projects/navi/index.js | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index eee6a5af45c..65840e33f1a 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1775,4 +1775,4 @@ "btr": { "ETH": "0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2" } -} +} \ No newline at end of file diff --git a/projects/navi/index.js b/projects/navi/index.js index 4c35743ae7d..24a12baa10c 100644 --- a/projects/navi/index.js +++ b/projects/navi/index.js @@ -13,10 +13,10 @@ 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 dynamicFields = await sui.getDynamicFieldObjects({ parent: reservesId }) dynamicFields.forEach((data) => { const coin = '0x' + data.fields.value.fields.coin_type - const borrowed = data.fields.value.fields.borrow_balance.fields.total_supply + const borrowed = data.fields.value.fields.borrow_balance.fields.total_supply * data.fields.value.fields.current_borrow_index / 1e27 const amount = borrowed * (10 ** (decimalShift[coin] ?? 0)) api.add(coin, amount) }) @@ -27,16 +27,18 @@ 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 dynamicFields = await sui.getDynamicFieldObjects({ parent: reservesId }) + dynamicFields.forEach(object => { const coin = '0x' + object.fields.value.fields.coin_type - const total_supply = object.fields.value.fields.supply_balance.fields.total_supply - const borrowed = object.fields.value.fields.borrow_balance.fields.total_supply + 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 const amount = (total_supply - borrowed) * (10 ** (decimalShift[coin] ?? 0)) api.add(coin, amount) }) } + module.exports = { timetravel: false, sui: { From 82f65910fb86fc7e328dd871980a4eb53020ae90 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Wed, 29 May 2024 17:16:44 +0100 Subject: [PATCH 1780/2004] Symbiosis adds Taiko chain (#10408) * symbiosis adds Core chain support and some new tokens on portals * symbiosis adds Taiko chain --- projects/helper/coreAssets.json | 3 +++ projects/symbiosis-finance/config.js | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 65840e33f1a..a333a8226f2 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1774,5 +1774,8 @@ }, "btr": { "ETH": "0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2" + }, + "taiko": { + "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" } } \ No newline at end of file diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index fb87780cda4..db5d5e84c14 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -319,5 +319,14 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'taiko', + tokens: [ + ADDRESSES.taiko.WETH, + ], + holders: [ + '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 + ] + }, ] } \ No newline at end of file From ef2c2a4efb5f5e28db91dc60f54dd15369ef0b20 Mon Sep 17 00:00:00 2001 From: leeamijo <154820412+leeamijo@users.noreply.github.com> Date: Thu, 30 May 2024 02:20:38 +0800 Subject: [PATCH 1781/2004] add Pell Network (#10405) * add Pell Network * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/helper/tokenMapping.js | 24 +++++++++++++++--------- projects/pell/index.js | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 projects/pell/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 1b8c6abaceb..2e201dc4e92 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -59,7 +59,7 @@ const fixBalancesTokens = { "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17": { coingeckoId: "usd-coin", decimals: 6 }, "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18": { coingeckoId: "tether", decimals: 6 }, }, - + acala: { ACA: { coingeckoId: "acala", decimals: 12 }, LDOT: { coingeckoId: "liquid-staking-dot", decimals: 10 }, @@ -75,7 +75,7 @@ const fixBalancesTokens = { KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, blast: { - '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, + '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, //pirex eth '0xde55b113a27cc0c5893caa6ee1c020b6b46650c0': { coingeckoId: "deus-finance-2", decimals: 18 }, // deus '0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34': { coingeckoId: "ethena-usde", decimals: 18 }, @@ -91,12 +91,18 @@ const fixBalancesTokens = { '0xFb8dBdc644eb54dAe0D7A9757f1e6444a07F8067': { coingeckoId: "bitcoin-trc20", decimals: 18 }, '0x85D431A3a56FDf2d2970635fF627f386b4ae49CC': { coingeckoId: "merlin-s-seal-btc", decimals: 18 }, }, - btr: { - '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, - '0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, - '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2': { coingeckoId: 'tether', decimals: 6 }, - '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, - }, + btr: { + '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, + '0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2': { coingeckoId: 'tether', decimals: 6 }, + '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, + + // fix these by pricing the tokens in coins repo + '0xd53E6f1d37f430d84eFad8060F9Fec558B36F6fa': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0xf6718b2701d4a6498ef77d7c152b2137ab28b8a3': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0x9a6ae5622990ba5ec1691648c3a2872469d161f9': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + '0xA984b70f7B41EE736B487D5F3D9C1e1026476Ea3': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + }, cyeth: { '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, }, @@ -113,7 +119,7 @@ const fixBalancesTokens = { '0x2967e7bb9daa5711ac332caf874bd47ef99b3820': { coingeckoId: 'wrapped-stbtc', decimals: 18 }, }, real: { - '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, + '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, '0x90c6e93849e06ec7478ba24522329d14a5954df4': { coingeckoId: 'ethereum', decimals: 18 }, '0x75d0cbf342060b14c2fc756fd6e717dfeb5b1b70': { coingeckoId: 'dai', decimals: 18 }, '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd': { coingeckoId: 'mountain-protocol-usdm', decimals: 18 }, diff --git a/projects/pell/index.js b/projects/pell/index.js new file mode 100644 index 00000000000..5a8ae0be27e --- /dev/null +++ b/projects/pell/index.js @@ -0,0 +1,15 @@ +const { sumTokens2 } = require('../helper/unwrapLPs') +const { getConfig } = require('../helper/cache') + +const chains = ['merlin', 'bouncebit', 'btr', 'bsc',] + +chains.forEach(chain => { + module.exports[chain] = { + tvl: async function (api) { + const { result } = await getConfig(`pell/${api.chain}`, `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], }) + } + } +}) From 8bfbced3ce93e3f658b503e610edf2b0c61b4053 Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Wed, 29 May 2024 22:29:15 +0400 Subject: [PATCH 1782/2004] Implemented hinkal Tvl calculation --- projects/hinkal/beefyTokens.js | 231 ++++++++++++++++ projects/hinkal/gaugeTokens.js | 250 +++++++++++++++++ projects/hinkal/hinkalUtils.js | 96 +++++++ projects/hinkal/index.js | 82 ++++-- projects/hinkal/owners.js | 19 ++ projects/hinkal/pendleTokens.js | 108 ++++++++ projects/hinkal/registryTokens.js | 443 ++++++++++++++++++++++++++++++ projects/hinkal/relayerUrls.js | 11 + 8 files changed, 1223 insertions(+), 17 deletions(-) create mode 100644 projects/hinkal/beefyTokens.js create mode 100644 projects/hinkal/gaugeTokens.js create mode 100644 projects/hinkal/hinkalUtils.js create mode 100644 projects/hinkal/owners.js create mode 100644 projects/hinkal/pendleTokens.js create mode 100644 projects/hinkal/registryTokens.js create mode 100644 projects/hinkal/relayerUrls.js diff --git a/projects/hinkal/beefyTokens.js b/projects/hinkal/beefyTokens.js new file mode 100644 index 00000000000..5ebae68f131 --- /dev/null +++ b/projects/hinkal/beefyTokens.js @@ -0,0 +1,231 @@ +const ETHEREUM_BEEFY_TOKENS = [ + "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", +]; + +const ARBITRUM_BEEFY_TOKENS = [ + "0xB27c433C1cdb1B42E2601Af2d40dD442fbf1cdc3", + "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", + "0x9dbbBaecACEDf53d5Caa295b8293c1def2055Adc", + "0x8e0B8c8BB9db49a46697F3a5Bb8A308e744821D2", + "0x755D6688AD74661Add2FB29212ef9153D40fcA46", + "0x07Db98358D58Ba9bE90cd0A18cd86AF807ac3B4E", + "0x71c15610F11D669d4A9e02a64e43c6D1E27c6Cad", + "0xBDF4e730ED5152a7AC646BB7b514Ed624E1147C4", + "0xf6a1284Dc2ce247Bca885ac4F36b37E91d3bD032", + "0x994Ff2ab544D00aD4EC0380a1Be8F75f4EC47Cf9", + "0x46034C63ad03254D6E96c655e82393E6C31E07C3", + "0xD496eA90a454eA49e30A8fD9E053C186D4FC897D", + "0xd37025aC6227334C7762AeD5929Ce3272fbb6fdC", + "0xFCb0101503f399B4752E5160ccd5EcE3a71719bd", + "0xa7fC98760331409c1FC0177dECF083cE9d5aed87", + "0x5A8beF2fEb83057bBCcC81cea985a94a62A86208", + "0x5B904f19fb9ccf493b623e5c8cE91603665788b0", + "0xA98070C4a600678a93cEaF4bF629eE255F46f64F", + "0x0594Ec32240C78e056304b4A60f48a67c69179b4", + "0xB2DefC5c3A69abe2B681C714b080A892825B2073", + "0x4D323f77c32EDdC62BF8eAbA11E5C573FD0a2ccd", + "0xeD29730F9FF29ea50D63462D8EC84307d36b8954", + "0x12c997FAdca32dB01E3145DE7Bf9cdB06455391D", + "0x85B10228cd93A6e5E354Ff0f2c60875E8E62F65A", + "0xCF297A94d527A34081Db2A20Eb1c87248cD1ea81", + "0xa0d758b81f8ed6635CDE1DA91C8fe1bD48C28A09", + "0x5892bA611fdC1598b72a30D087d28c989d429eF7", +]; + +const OPTIMISM_BEEFY_TOKENS = [ + "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", + "0x642F04eCAa00D443fBf2de2AaC9A9e0ACfA4FCE7", + "0xdD84190aF336Ee2831eea88B6783958e8F269de9", + "0xB708038C1b4cF9f91CcB918DAD1B9fD757ADa5C1", + "0x81F2F132465Ffb4B3C5d11f3d94582cC5c281c04", + "0x613f54c8836FD2C09B910869AC9d4de5e49Db1d8", + "0x79149B500f0d796aA7f85e0170d16C7e79BAd3C5", + "0x92651E1bBfE0f8423119AfC4B0610C747Fa125a1", +]; + +const POLYGON_BEEFY_TOKENS = [ + "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", + "0x8AAc0f2a6cAE626b656Ca16c58A50C87CBBC7ff5", + "0x964eA598DF006F692105A951a774ff9825a454Fe", + "0x4ec61a96738564CaD591841df0c8B5b6eA785E4C", + "0x4252Da0559960a50FDd50D5bDDe1B78659B7Ea2A", + "0x3325a25A2608EA723cB5D72E27af65AACFfb810e", + "0xb759b56d82C88806bbcBcD60767E39Af5cc51F32", + "0x2C6d11e756986f1537a2c71c851e9a1F7A0008b2", + "0xD74B5df80347cE9c81b91864DF6a50FfAfE44aa5", + "0x5268F5F2a9799f747A55f193d2E266c77653E518", + "0x67FEe70c32097c53B5aeAaCdbee7544eaE2194f8", + "0x0fC4f2DB534Bf7525710DBf64B7081e1a3A6428f", + "0x40c03Cd0B5D1571608D09e6279B4C63660e431F1", + "0xD97FA4474084350D2c96285E1Fca07A9D515c800", + "0xAb4E02911A7d09BC8300F39332F087d51c183038", + "0x8D0663d2d738e6078Bb77589dE4231eD9fcFd014", + "0xec74671f95F0942358016da627b912143100DAF2", + "0xFe2f5e215C0Fe9b5D4fF99cA7cBB5F5a77f5C515", +]; + +const AVALANCHE_BEEFY_TOKENS = [ + "0x79F26046D122d2F26B1D37237D5C056fB580447A", + "0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c", + "0xe1a8EeA58D63Ea64d00365531D266C2AD1f62FC4", + "0x22EafB9C7E2858cfDA712940896464DdAA83d053", + "0x68866acc5C940938B373F55F7009f824c7662F5B", + "0xf3340EdF16563D52C7E7C576F2fCC8f3D52464aB", + "0x595786A3848B1de66C6056C87BA91977935fBC46", + "0xA27BF4d56870A37e37a687B8ab3740d8487Ee2C6", + "0xFeA7976733f47557860f4483f2147a3e99C76b58", + "0x3D81A269E05e6057e4dF9E2D76E254E65a65Eb66", + "0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b", + "0x3C2131A02659343d68c211aAa686750bE37d88c4", + "0x813aB5B3FDc59B143C42284665864b24B794C324", +]; + +const BNB_BEEFY_TOKENS = [ + "0x31e77776b924Cd5f0E624771C9B3d2bD6B9c919E", + "0x4a9945B75E5c860f511CD223E838b213828a0583", + "0x684d86518e6E7d622d24854cBb1C179d6C0E3f75", + "0x62ef49280c0f155afd374fC5Efd1F06318648700", + "0x1542885D6EeD4EE3AC1a110d3f159003a0774101", + "0x6eb020663898c72F8E25958F5f7bcDC732279201", + "0xe47E724c0b4EE9fbC16097AC103b97dc6642fd18", + "0x9A10Cc2024744681fBce1F93Aeee3fd7863B1A12", + "0xD411121C948Cff739857513E1ADF25ED448623f8", + "0x56ec6031dC969CfA035F6D65e65D8595d5660fB4", + "0xC34Ae91312A3c3F9420691922040a5DEe1698E52", + "0xc1fcf50ccaCd1583BD9d3b41657056878C94e592", + "0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE", + "0x33D0F945F77660F4A9e56949500265313f6D08fb", + "0x86b481fCe116DCd01fBeBb963f1358bcc466668C", + "0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc", + "0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0", + "0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA", + "0x960eE6caC56912D94cE5c83D7Fb0CD873b5c5099", + "0x72fC82b9955f04b20166b0Da7e1af4f893F6316a", + "0xe0Af98A11DB57c7282c1f6066d116E13F02BF0E9", + "0x836C6BffB0B08aCa20b9380330D2532A51aA0eAD", + "0x93DB73f79D4fdc5be42C0bd2812e94A271aDC7e2", + "0x5D83D13Fa899451b75f7c465C0A2590Bb3f9067f", + "0x3b3bc8AE6dcAcCeaaC3C19E196ebD3341Cfe9c4e", +]; + +const BASE_BEEFY_TOKENS = [ + "0xbE3F14312B08E9c6AEe6AeB27B37c08B661A7F83", + "0x5A47993216fa6ACaf93418f9830cee485e82d0ba", + "0xd0c3E7f86338403Df99DEa1996f6C9Ed8f9D3d07", + "0xB614A6E6c21202De79DceB95AE2dd4817DD7e14b", + "0xB62F13126fCD0dD49dE8fF811406554197Bd0E11", + "0x507094549509Efdf63ecA34B795094065cB04008", + "0x8bd6dF821513aECDbbaa29C1d5212b43fdCe7819", + "0x98bEAa72230788572e3e3Be58D91C232dda315d4", + "0x74251C0d0B74Fba6e3B3EDe8533D9Da82B4EC4a4", + "0xc005B9833deBcF5fe6cc5bC9ba4fD74Bb382ae55", + "0xC3a5b142a144135D900FC5Ef2Bb7E92a3bcB46F1", + "0x09139A80454609B69700836a9eE12Db4b5DBB15f", + "0x4Fc0E7cDfe0CF92762eaf3CEE9133239A2197391", + "0x06a613d3a056d4b04D7523C11d82c67Bebf9d850", + "0xFB6864F1c14A90E85398B853701B01ef6a0CA3E5", +]; + +const beefyTokensByChain = { + ethereum: ETHEREUM_BEEFY_TOKENS, + arbitrum: ARBITRUM_BEEFY_TOKENS, + optimism: OPTIMISM_BEEFY_TOKENS, + polygon: POLYGON_BEEFY_TOKENS, + avax: AVALANCHE_BEEFY_TOKENS, + bsc: BNB_BEEFY_TOKENS, + base: BASE_BEEFY_TOKENS, +}; + +module.exports = beefyTokensByChain; diff --git a/projects/hinkal/gaugeTokens.js b/projects/hinkal/gaugeTokens.js new file mode 100644 index 00000000000..000ae01d80d --- /dev/null +++ b/projects/hinkal/gaugeTokens.js @@ -0,0 +1,250 @@ +const ETHEREUM_GAUGE_TOKENS = [ + { + erc20TokenAddress: "0x93ce650b8d3a7a7e44121db82a0429a3884db599", + underlyingErc20TokenAddress: "0xbFcF63294aD7105dEa65aA58F8AE5BE2D9d0952A", + }, + { + erc20TokenAddress: "0xE49127B7AEfc043847caDd85B8a41973854D30f5", + underlyingErc20TokenAddress: "0x8dff75976f22db58d7c3fd7b68d782238b0dbe30", + }, + { + erc20TokenAddress: "0x8A31A94bF0926B82083C80E18B331085B84E92D7", + underlyingErc20TokenAddress: "0x689440f2Ff927E1f24c72F1087E1FAF471eCe1c8", + }, + { + erc20TokenAddress: "0xcc26a5246c6a04a85e997d6581c1b4f14363841a", + underlyingErc20TokenAddress: "0xcfc25170633581bf896cb6cdee170e3e3aa59503", + }, + { + erc20TokenAddress: "0x9a7Ce41c96Db8d792497D7BEe70fAfb7F8393D71", + underlyingErc20TokenAddress: "0x7e880867363A7e321f5d260Cade2B0Bb2F717B02", + }, + { + erc20TokenAddress: "0xd4EC67cF6C0Aa65F74eb7F03216Ea23151af21b8", + underlyingErc20TokenAddress: "0x2932a86df44fe8d2a706d8e9c5d51c24883423f5", + }, + { + erc20TokenAddress: "0x4F1546Ce825dB85310aC2c2cfb369543d73FD0a2", + underlyingErc20TokenAddress: "0xbD5445402B0a287cbC77cb67B2a52e2FC635dce4", + }, + { + erc20TokenAddress: "0x394Aa83d0E5D348c7FA39325d2A25993704Faf8f", + underlyingErc20TokenAddress: "0xfb860600f1be1f1c72a89b2ef5caf345aff7d39d", + }, + { + erc20TokenAddress: "0xD1105d6502d3c562B447A75149B00aD366b3212d", + underlyingErc20TokenAddress: "0x6991C1CD588c4e6f6f1de3A0bac5B8BbAb7aAF6d", + }, + { + erc20TokenAddress: "0xE08FF1427b199241506FcdCC23fcc24Dd98a4FA9", + underlyingErc20TokenAddress: "0xDeFd8FdD20e0f34115C7018CCfb655796F6B2168", + }, + { + erc20TokenAddress: "0xC21545c26661ae74b3259B55aE007ACC4Bf5d4e3", + underlyingErc20TokenAddress: "0x9D5C5E364D81DaB193b72db9E9BE9D8ee669B652", + }, + { + erc20TokenAddress: "0xa0Cd8B83B63381895C1854A605315fa7eF50e026", + underlyingErc20TokenAddress: "0x512a68dd5433563bad526c8c2838c39debc9a756", + }, + { + erc20TokenAddress: "0x25aE9BE521898d33c7DF6Ae8c6669Fe038Bb3550", + underlyingErc20TokenAddress: "0xecad6745058377744c09747b2715c0170b5699e5", + }, + { + erc20TokenAddress: "0x9434722bf29750B44649eb1b1A10a335d40edFc1", + underlyingErc20TokenAddress: "0x27cace18f661161661683bba43933b2e6eb1741e", + }, + { + erc20TokenAddress: "0xF2280cBa8e0B9bc9b87b5aFbBeF8C41C20a5ddBe", + underlyingErc20TokenAddress: "0xbe266d68ce3ddfab366bb866f4353b6fc42ba43c", + }, + { + erc20TokenAddress: "0x5F1894e4b409D7199Ea209b9e43C996640BCB691", + underlyingErc20TokenAddress: "0x8605dc0c339a2e7e85eea043bd29d42da2c6d784", + }, + { + erc20TokenAddress: "0xa653510227752632ebf692a77e5032d4afFaB3a2", + underlyingErc20TokenAddress: "0xC94208D230EEdC4cDC4F80141E21aA485A515660", + }, + { + erc20TokenAddress: "0xA1998B87C2935BDbd7fE6ee48542a59a0435a3Ee", + underlyingErc20TokenAddress: "0x245Ec0d447e7f206B43120Ac292dED5E8bB9fe61", + }, + { + erc20TokenAddress: "0xC8c3031fB628Bdf4eA0F7cA5F96E369Dea07624e", + underlyingErc20TokenAddress: "0x0404d05F3992347d2f0dC3a97bdd147D77C85c1c", + }, + { + erc20TokenAddress: "0xDc118133332f703e22C0b0FA7E0DD7d1299A7247", + underlyingErc20TokenAddress: "0xB468dB2E478885B87D7ce0C8DA1D4373A756C138", + }, + { + erc20TokenAddress: "0xC6fDF0921c480Bd7Af89Ab4461D4aCDA24058a65", + underlyingErc20TokenAddress: "0xAE0bFfc3110e69DA8993F11C1CBd9a6eA3d16daF", + }, + { + erc20TokenAddress: "0x6410ee1f8417a7cE1c3E68E3434c1d6beef6944E", + underlyingErc20TokenAddress: "0x277d1424a84b35ec0a8108482551b00b4fc1539b", + }, + { + erc20TokenAddress: "0x9456cB3ae9fA8788ac1af4a7A18b339D4028061D", + underlyingErc20TokenAddress: "0xc2fe9d3c761994897594df63b33b6d843ab7b1cf", + }, + { + erc20TokenAddress: "0x26dA2546602f63b84B3C4dF36476364f6350706E", + underlyingErc20TokenAddress: "0x0e83df148f69965bfe752250835854b0dbeeaf01", + }, + { + erc20TokenAddress: "0x0a3fE1d39E5c60CfdB48Ba2Dc6B7c855289Dec7C", + underlyingErc20TokenAddress: "0x35ad1acf0c4be5d4ba11342128d440fdb9e189eb", + }, + { + erc20TokenAddress: "0xA27fa5E11B121277423aC0b8b372596f2805e36a", + underlyingErc20TokenAddress: "0xe2c422d954db416a69fb29137fe552cce0e160e9", + }, + { + erc20TokenAddress: "0x41e5c3aD70DA89dd7b6AF9Af3cd6861FbC31eA16", + underlyingErc20TokenAddress: "0x621ef98282ac42d2bf4c20fc73912a16599e12fb", + }, +]; + +const ARBITRUM_GAUGE_TOKENS = [ + { + erc20TokenAddress: "0xC3691c157D1B3A431B841230a7B11d5a373097e1", + underlyingErc20TokenAddress: "0xce5f24b7a95e9cba7df4b54e911b4a3dc8cdaf6f", + }, + { + erc20TokenAddress: "0x7Bdc233E5369Ac023b9894645902C9032A72D9Ee", + underlyingErc20TokenAddress: "0x971E732B5c91A59AEa8aa5B0c763E6d648362CF8", + }, + { + erc20TokenAddress: "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", + underlyingErc20TokenAddress: "0xf2ddf89c04d702369ab9ef8399edb99a76e951ce", + }, + { + erc20TokenAddress: "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", + underlyingErc20TokenAddress: "0x098ef55011b6b8c99845128114a9d9159777d697", + }, + { + erc20TokenAddress: "0x59eC3043D7314B9650294Fd800149b53007f804E", + underlyingErc20TokenAddress: "0x95285ea6ff14f80a2fd3989a6bab993bd6b5fa13", + }, + { + erc20TokenAddress: "0x972c6F2b29638b9AD6955c4F0b0c1239b034f053", + underlyingErc20TokenAddress: "0x93729702Bf9E1687Ae2124e191B8fFbcC0C8A0B0", + }, + { + erc20TokenAddress: "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", + underlyingErc20TokenAddress: "0xd6dacdcb438f048cf90e53415872cdb3fcc95421", + }, + { + erc20TokenAddress: "0x886867993080DC3bBFC39CDfc343A0e083bB34E0", + underlyingErc20TokenAddress: "0x6B7B84F6EC1c019aF08C7A2F34D3C10cCB8A8eA6", + }, + { + erc20TokenAddress: "0xB72ea6F99EfA5BD6Fb400BaA4eFddC3cfB075215", + underlyingErc20TokenAddress: "0xc2b1df84112619d190193e48148000e3990bf627", + }, + { + erc20TokenAddress: "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed", + underlyingErc20TokenAddress: "0x7c0ac20c3ca8c6257ea099131081d8199bf6b8f6", + }, +]; + +const OPTIMISM_GAUGE_TOKENS = [ + { + erc20TokenAddress: "0x29c431806E536Fb22ce2Edc8dd6e3C3A0d5689a8", + underlyingErc20TokenAddress: "0xc5ae4b5f86332e70f3205a8151ee9ed9f71e0797", + }, + { + erc20TokenAddress: "0xDaA24E888432b5aa607105e256919Ddfc8b327E9", + underlyingErc20TokenAddress: "0xd53ccbfed6577d8dc82987e766e75e3cb73a8563", + }, + { + erc20TokenAddress: "0xC3691c157D1B3A431B841230a7B11d5a373097e1", + underlyingErc20TokenAddress: "0x15f52286c0ff1d7a7ddbc9e300dd66628d46d4e6", + }, + { + erc20TokenAddress: "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", + underlyingErc20TokenAddress: "0x172a5af37f69c69cc59e748d090a70615830a5dd", + }, + { + erc20TokenAddress: "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", + underlyingErc20TokenAddress: "0xcb8883d1d8c560003489df43b30612aabb8013bb", + }, + { + erc20TokenAddress: "0x59eC3043D7314B9650294Fd800149b53007f804E", + underlyingErc20TokenAddress: "0x2eb49a3eff789d7b2286bf17667acbf12d882c17", + }, + { + erc20TokenAddress: "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", + underlyingErc20TokenAddress: "0xcea806562b757aeffa9fe9d0a03c909b4a204254", + }, +]; + +const POLYGON_GAUGE_TOKENS = [ + { + erc20TokenAddress: "0x9dc8Ee4264923D44F2a33Ea139FC4143C288b172", + underlyingErc20TokenAddress: "0x0e2f214b8f5d0cca011a8298bb907fb62f535160", + }, + { + erc20TokenAddress: "0x1057a796C66ca87EC1e6494f5486006396756083", + underlyingErc20TokenAddress: "0x835cA119fA28515B1F184A5Ce5Ccda2B5b0d9F6D", + }, + { + erc20TokenAddress: "0x350c331F4e5fD9d5D703424F3F14CcC0280B6629", + underlyingErc20TokenAddress: "0x40371aad2a24ed841316ef30938881440fd4426c", + }, + { + erc20TokenAddress: "0xf742B69Bd460F14EB5d8335e06954eba694B552E", + underlyingErc20TokenAddress: "0xA9249f8667cb120F065D9dA1dCb37AD28E1E8FF0", + }, + { + erc20TokenAddress: "0xc44F1103A271BEFF26bB245D760bFbe182CCf121", + underlyingErc20TokenAddress: "0x8b397084699cc64e429f610f81fac13bf061ef55", + }, + { + erc20TokenAddress: "0x195888B86db69C52b54362DB2D71c2d3e411A0bA", + underlyingErc20TokenAddress: "0xc501491b0e4A73B2eFBaC564a412a927D2fc83dD", + }, + { + erc20TokenAddress: "0x22301937028310Cef6530eF3C3Bfe14581eb679F", + underlyingErc20TokenAddress: "0xfc052e70eb6d94afe464a8ce8f43d203109494f2", + }, + { + erc20TokenAddress: "0x90F06727Ba5016eDcf9D8B5def63a5849EcD132f", + underlyingErc20TokenAddress: "0x9633e0749faa6ec6d992265368b88698d6a93ac0", + }, +]; + +const AVALANCHE_GAUGE_TOKENS = []; + +const BNB_GAUGE_TOKENS = []; + +const BASE_GAUGE_TOKENS = [ + { + erc20TokenAddress: "0x3b9860321f03AFe02D3FF9e4Fdd4017DC6F4d7Ca", + underlyingErc20TokenAddress: "0x79edc58C471Acf2244B8f93d6f425fD06A439407", + }, + { + erc20TokenAddress: "0x1f0dbEcDA414F401dB46464864273CaD19368706", + underlyingErc20TokenAddress: "0x93933FA992927284e9d508339153B31eb871e1f4", + }, + { + erc20TokenAddress: "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96", + underlyingErc20TokenAddress: "0x89289DC2192914a9F0674f1E9A17C56456549b8A", + }, +]; + +const gaugeTokensByChain = { + ethereum: ETHEREUM_GAUGE_TOKENS, + arbitrum: ARBITRUM_GAUGE_TOKENS, + optimism: OPTIMISM_GAUGE_TOKENS, + polygon: POLYGON_GAUGE_TOKENS, + avax: AVALANCHE_GAUGE_TOKENS, + bsc: BNB_GAUGE_TOKENS, + base: BASE_GAUGE_TOKENS, +}; + +module.exports = gaugeTokensByChain; diff --git a/projects/hinkal/hinkalUtils.js b/projects/hinkal/hinkalUtils.js new file mode 100644 index 00000000000..72c46e51e3d --- /dev/null +++ b/projects/hinkal/hinkalUtils.js @@ -0,0 +1,96 @@ +const utils = require("../helper/utils"); +const sdk = require("@defillama/sdk"); +const RELAYER_URLS = require("./relayerUrls.js"); +const { ethers } = require("ethers"); +const ownerByChain = require("./owners.js"); + +const nullAddress = "0x0000000000000000000000000000000000000000"; + +const getAllTokenBalances = async (tokenList, chain) => { + const balanceCalls = tokenList.map((token) => ({ + target: token, + params: ownerByChain[chain], + })); + const balances = ( + await sdk.api.abi.multiCall({ + calls: balanceCalls, + abi: "erc20:balanceOf", + chain, + }) + ).output; + + const decimalCalls = tokenList.map((token) => ({ + target: token, + })); + + const decimals = ( + await sdk.api.abi.multiCall({ + calls: decimalCalls, + abi: "erc20:decimals", + chain, + }) + ).output; + + const tokenBalances = balances.map((bal) => { + const token = bal.input.target; + + const tokenBalance = bal.output; + + const tokenDecimal = decimals?.find( + (decimalOutput) => decimalOutput.input.target === token + ).output; + + return { + balance: ethers.formatUnits(tokenBalance, Number(tokenDecimal ?? 18)), + address: token, + }; + }); + + //Add Native token balance. + + const nativeTokenBalance = ( + await sdk.api.eth.getBalance({ + target: ownerByChain[chain], + chain, + }) + ).output; + + tokenBalances.push({ + address: nullAddress, + balance: ethers.formatUnits(nativeTokenBalance, 18), + }); + + return tokenBalances.filter((tokenBal) => Number(tokenBal.balance) > 0); +}; +const fetchTotalValue = async (tokenBalances, chainName) => { + const tokenAddresses = tokenBalances.map((token) => token.address); + const prices = ( + await utils.postURL(`${RELAYER_URLS[chainName]}/get-token-prices`, { + erc20Addresses: tokenAddresses, + }) + ).data.prices; + + const total = tokenBalances.map((token, index) => { + const price = prices[index]; + const tokenBalance = Number(token.balance); + if (!price || !tokenBalance || isNaN(price) || isNaN(tokenBalance)) { + console.log("Some error occured for token", { + token: token.address, + bakance: tokenBalance, + price, + chainName, + }); + return { + tokenAddress: token.address, + tokenBalance: 0, + }; + } + return { + tokenAddress: token.address, + tokenBalance: tokenBalance * price, + }; + }); + return total.filter((token) => token && token.tokenBalance > 0); +}; + +module.exports = { getAllTokenBalances, fetchTotalValue }; diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js index 423a7ddd25f..13e68f8741b 100644 --- a/projects/hinkal/index.js +++ b/projects/hinkal/index.js @@ -1,17 +1,65 @@ -const { sumTokensExport } = require('../helper/unwrapLPs') - -const config = { - ethereum: "0x2ea81946fF675d5Eb88192144ffc1418fA442E28", - arbitrum: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", - optimism: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", - polygon: "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", - avax: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", - bsc: "0x0036E884Cab4F427193839788EDEBB4B92B9a069", - base: "0x41658B0DaF59Bb2FbB2D9A5249207011d2B364De", -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { - tvl: sumTokensExport({ owner: config[chain], fetchCoValentTokens: true, tokenConfig: { onlyWhitelisted: false, } }) - } -}) \ No newline at end of file +const registryTokensByChain = require("./registryTokens.js"); +const gaugeTokensByChain = require("./gaugeTokens.js"); +const beefyTokensByChain = require("./beefyTokens.js"); +const pendleTokensByChain = require("./pendleTokens.js"); +const { getAllTokenBalances, fetchTotalValue } = require("./hinkalUtils.js"); +const { toUSDTBalances } = require("../helper/balances.js"); + +const getRegularTokens = (chain) => { + return [ + registryTokensByChain[chain], + pendleTokensByChain[chain]?.pt, + pendleTokensByChain[chain]?.sy, + beefyTokensByChain[chain], + ].flat(); +}; + +const getTokensWithUnderlyingAddresses = (chain) => { + return [gaugeTokensByChain[chain], pendleTokensByChain[chain]?.yt].flat(); +}; + +const tvl = async (_, _1, _2, { chain }) => { + const regularTokens = getRegularTokens(chain); + const tokensWithUnderlyingAddresses = getTokensWithUnderlyingAddresses(chain); + + const regularTokenBalances = await getAllTokenBalances(regularTokens, chain); + + const tokensWithUnderlyingAddressesBalances = await getAllTokenBalances( + tokensWithUnderlyingAddresses.map((token) => token.erc20TokenAddress), + chain + ); + + const allTokenBalances = [ + ...regularTokenBalances, + ...tokensWithUnderlyingAddressesBalances, + ]; + const totalValue = await fetchTotalValue(allTokenBalances, chain); + + return toUSDTBalances( + totalValue.reduce((acc, token) => acc + token.tokenBalance, 0) + ); +}; + +module.exports = { + ethereum: { + tvl, + }, + base: { + tvl, + }, + arbitrum: { + tvl, + }, + optimism: { + tvl, + }, + polygon: { + tvl, + }, + avax: { + tvl, + }, + bsc: { + tvl, + }, +}; diff --git a/projects/hinkal/owners.js b/projects/hinkal/owners.js new file mode 100644 index 00000000000..cfe9d74c9e8 --- /dev/null +++ b/projects/hinkal/owners.js @@ -0,0 +1,19 @@ +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 ownerByChain = { + ethereum: ETHEREUM_OWNER, + arbitrum: ARBITRUM_OWNER, + optimism: OPTIMISM_OWNER, + polygon: POLYGON_OWNER, + avax: AVALANCHE_OWNER, + bsc: BNB_OWNER, + base: BASE_OWNER, +}; + +module.exports = ownerByChain; diff --git a/projects/hinkal/pendleTokens.js b/projects/hinkal/pendleTokens.js new file mode 100644 index 00000000000..b3287bb2846 --- /dev/null +++ b/projects/hinkal/pendleTokens.js @@ -0,0 +1,108 @@ +const ETHEREUM_YT_TOKENS = [ + { + erc20TokenAddress: "0x019e773bE2D65D5fE30bE17547b89500C7C4CD5E", + underlyingErc20TokenAddress: "0xfb35Fd0095dD1096b1Ca49AD44d8C5812A201677", + }, + { + erc20TokenAddress: "0x1346da36093Fdb8013E1125046f0dCBbBF645b3F", + underlyingErc20TokenAddress: "0x0ED3A1D45DfdCf85BCc6C7BAFDC0170A357B974C", + }, + { + erc20TokenAddress: "0x4E0854085bC5a2fa8031ea5819863BD280e610F3", + underlyingErc20TokenAddress: "0x391B570e81e354a85a496952b66ADc831715f54f", + }, + { + erc20TokenAddress: "0x9Ab43f73054C07b02e02c5468b3eB058ccdAA019", + underlyingErc20TokenAddress: "0x98601E27d41ccff643da9d981dc708cf9eF1F150", + }, + { + erc20TokenAddress: "0x223026549740E2672b3f05c867Fd2B31207338A2", + underlyingErc20TokenAddress: "0x7C2D26182adeEf96976035986cF56474feC03bDa", + }, + { + erc20TokenAddress: "0x3e0A917d4d914e432B82825e6FBEe039b89f4477", + underlyingErc20TokenAddress: "0x029aad400f6092dc735a65be95102efcc2fe64bf", + }, +]; + +const ETHEREUM_PT_TOKENS = [ + "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", + "0x094be6bd31d7b860f7d2c1f280fd09f0463d7e67", + "0x4AE5411F3863CdB640309e84CEDf4B08B8b33FfF", + "0xDDFD5e912C1949B4bDb12579002c44B7A83F9E88", + "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", + "0xB05cABCd99cf9a73b19805edefC5f67CA5d1895E", +]; + +const ETHEREUM_SY_TOKENS = [ + "0xAC0047886a985071476a1186bE89222659970d65", + "0x730A5E2AcEbccAA5e9095723B3CB862739DA793c", + "0x253008ba4aE2f3E6488DC998a5321D4EB1a0c905", + "0x7a493be5c2ce014cd049bf178a1ac0db1b434744", + "0xD7DF7E085214743530afF339aFC420c7c720BFa7", + "0x34349c5569e7b846c3558961552d2202760a9789", +]; + +const ARBITRUM_YT_TOKENS = []; +const ARBITRUM_PT_TOKENS = []; +const ARBITRUM_SY_TOKENS = []; + +const OPTIMISM_YT_TOKENS = []; +const OPTIMISM_PT_TOKENS = []; +const OPTIMISM_SY_TOKENS = []; + +const POLYGON_YT_TOKENS = []; +const POLYGON_PT_TOKENS = []; +const POLYGON_SY_TOKENS = []; + +const AVALANCE_YT_TOKENS = []; +const AVALANCE_PT_TOKENS = []; +const AVALANCE_SY_TOKENS = []; + +const BNB_YT_TOKENS = []; +const BNB_PT_TOKENS = []; +const BNB_SY_TOKENS = []; + +const BASE_YT_TOKENS = []; +const BASE_PT_TOKENS = []; +const BASE_SY_TOKENS = []; + +const pendleTokensByChain = { + ethereum: { + yt: ETHEREUM_YT_TOKENS, + pt: ETHEREUM_PT_TOKENS, + sy: ETHEREUM_SY_TOKENS, + }, + arbitrum: { + yt: ARBITRUM_YT_TOKENS, + pt: ARBITRUM_PT_TOKENS, + sy: ARBITRUM_SY_TOKENS, + }, + optimism: { + yt: OPTIMISM_YT_TOKENS, + pt: OPTIMISM_PT_TOKENS, + sy: OPTIMISM_SY_TOKENS, + }, + polygon: { + yt: POLYGON_YT_TOKENS, + pt: POLYGON_PT_TOKENS, + sy: POLYGON_SY_TOKENS, + }, + avax: { + yt: AVALANCE_YT_TOKENS, + pt: AVALANCE_PT_TOKENS, + sy: AVALANCE_SY_TOKENS, + }, + bsc: { + yt: BNB_YT_TOKENS, + pt: BNB_PT_TOKENS, + sy: BNB_SY_TOKENS, + }, + base: { + yt: BASE_YT_TOKENS, + pt: BASE_PT_TOKENS, + sy: BASE_SY_TOKENS, + }, +}; + +module.exports = pendleTokensByChain; diff --git a/projects/hinkal/registryTokens.js b/projects/hinkal/registryTokens.js new file mode 100644 index 00000000000..50535f196db --- /dev/null +++ b/projects/hinkal/registryTokens.js @@ -0,0 +1,443 @@ +const ETHEREUM_REGISTRY_TOKENS = [ + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0x8E870D67F660D95d5be530380D0eC0bd388289E1", + "0x83F20F44975D03b1b09e64809B757c47f942BEeA", + "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", + "0xc4AD29ba4B3c580e6D59105FFf484999997675Ff", + "0x853d955aCEf822Db058eb8505911ED77F175b99e", + "0xFC2838a17D8e8B1D5456E0a351B0708a09211147", + "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", + "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", + "0xf43211935C781D5ca1a41d2041F397B8A7366C7A", + "0xD533a949740bb3306d119CC777fa900bA034cd52", + "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", + "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", + "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", + "0xC25a3A3b969415c80451098fa907EC722572917F", + "0xb2C35aC676F4A002669e195CF4dc50DDeDF6F0fA", + "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", + "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", + "0x971add32Ea87f10bD192671630be3BE8A11b8623", + "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", + "0x0000000000085d4780B73119b644AE5ecd22b376", + "0x68934F60758243eafAf4D2cFeD27BF8010bede3a", + "0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", + "0xdf55670e27bE5cDE7228dD0A6849181891c9ebA1", + "0x9D0464996170c6B9e75eED71c68B99dDEDf279e8", + "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", + "0xFEEf77d3f69374f66429C91d732A244f074bdf74", + "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9", + "0xB30dA2376F63De30b42dC055C93fa474F31330A5", + "0x828b154032950C8ff7CF8085D841723Db2696056", + "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86", + "0x87650D7bbfC3A9F10587d7778206671719d9910D", + "0x1cEB5cB57C4D4E2b2433641b95Dd330A33185A44", + "0x4647B6D835f3B393C7A955df51EEfcf0db961606", + "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6", + "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", + "0xb79565c01b7Ae53618d9B847b9443aAf4f9011e7", + "0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3", + "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", + "0x39AA39c021dfbaE8faC545936693aC917d5E7563", + "0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2", + "0x0316EB71485b0Ab14103307bf65a021042c6d380", + "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab", + "0x8e595470Ed749b85C6F7669de83EAe304C2ec68F", + "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "0x2ba592F78dB6436527729929AAf6c908497cB200", + "0xE41d2489571d322189246DaFA5ebDe1F4699F498", + "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", + "0x8E870D67F660D95d5be530380D0eC0bd388289E1", + "0x5BC25f649fc4e26069dDF4cF4010F9f706c23831", + "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", + "0x49849C98ae39Fff122806C06791Fa73784FB3675", + "0xA0d69E286B938e21CBf7E51D71F6A4c8918f482F", + "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "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", + "0xAE0bFfc3110e69DA8993F11C1CBd9a6eA3d16daF", + "0x42ED016F826165C2e5976fe5bC3df540C5aD0Af7", + "0x1E19CF2D73a72Ef1332C882F20534B6519Be0276", + "0x3FA8C89704e5d07565444009e5d9e624B40Be813", + "0x32296969Ef14EB0c6d29669C550D4a0449130230", + "0x7F86Bf177Dd4F3494b841a37e810A34dD56c829B", + "0xe6b5CC1B4b47305c58392CE3D359B10282FC36Ea", + "0x2863a328A0B7fC6040f11614FA0728587DB8e353", + "0x642431623AE5d73C19fC931aAeA0d4677303880c", + "0xa2847348b58CEd0cA58d23c7e9106A49f1427Df6", + "0xeaCADc656c9394fb09af25AeBc0897fDfFe484A1", + "0x380aAbE019ed2a9C2d632b51eDDD30fd804d0fAD", + "0x94cc50e4521bd271c1a997a3a4dc815c2f920b41", + "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + "0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1", + "0x8272e1a3dbef607c04aa6e5bd3a1a134c8ac063b", + "0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1", + "0x04c154b66cb340f3ae24111cc767e0184ed00cc6", + "0xf8fde8a259a3698902c88bdb1e13ff28cd7f6f09", + "0x76237BCfDbe8e06FB774663add96216961df4ff3", + "0x0dE54CFdfeD8005176f8b7A9D5438B45c4F1df1e", + "0xb27D1729489d04473631f0AFAca3c3A7389ac9F8", + "0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0", + "0x9961BdBE8B7091E584c2bF9D0a160C583f564A8c", + "0xe035e27a8ed6842b478933820f90093d205f7098", + "0x4253ac4046fbfdafcfe125d067b6d89f6923843e", + "0x67701d67b60a96473bfc4873e7a484035c8609b0", + "0x6685fcfce05e7502bf9f0aa03b36025b09374726", + "0xe3e637f8acc097244a065791142c29fbf5877d18", + "0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447", + "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "0xbf5495efe5db9ce00f80364c8b423567e58d2110", + "0xD9A442856C234a39a81a089C06451EBAa4306a72", +]; + +const ARBITRUM_REGISTRY_TOKENS = [ + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "0xaf88d065e77c8cc2239327c5edb3a432268e5831", + "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", + "0x7f90122BF0700F9E7e1F688fe926940E8839F353", + "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F", + "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978", + "0x64343594Ab9b56e99087BfA6F2335Db24c2d1F17", + "0x641441c631e2F909700d2f41FD87F0aA6A6b4EDb", + "0xEB466342C4d449BC9f53A865D5Cb90586f405215", + "0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5", + "0x5979D7b546E38E414F7E9822514be443A4800529", + "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", + "0xDBf31dF14B66535aF65AaC99C32e9eA844e14501", + "0x93FC1235119c554576D8AB23583371fc25B803ee", + "0x755D6688AD74661Add2FB29212ef9153D40fcA46", + "0x9E75f8298e458B76382870982788988A0799195b", + "0xDa2307A45D298e855415675bF388e2bd64351D5b", + "0xEc7c0205a6f426c2Cb1667d783B5B4fD2f875434", + "0x8cbaAC87FDD9Bb6C3FdB5b3C870b2443D0284fa6", + "0xfd421d60905d2f7cabd49e6a5703a3499367b8f4", + "0xe20F93279fF3538b1ad70D11bA160755625e3400", + "0x4a2f6ae7f3e5d715689530873ec35593dc28951b", + "0xb67c014fa700e69681a673876eb8bafaa36bff71", + "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a", + "0x3c6ef5ed8ad5df0d5e3d05c6e607c60f987fb735", + "0x9cb911cbb270cae0d132689ce11c2c52ab2dedbc", + "0x9791d590788598535278552eecd4b211bfc790cb", + "0xade4a71bb62bec25154cfc7e6ff49a513b491e81", + "0x423a1323c871abc9d89eb06855bf5347048fc4a5", + "0xbf6cbb1f40a542af50839cad01b0dc1747f11e18", + "0x3fd4954a851ead144c2ff72b1f5a38ea5976bd54", + "0x8bc65eed474d1a00555825c91feab6a8255c2107", + "0x892785f33cdee22a30aef750f285e18c18040c3e", + "0x36bf227d6bac96e2ab1ebb5492ecec69c691943f", + "0x5402b5f40310bded796c7d0f3ff6683f5c0cffdf", + "0x905dfcd5649217c42684f23958568e533c711aa3", + "0xB7E50106A5bd3Cf21AF210A755F9C8740890A8c9", + "0xc9f52540976385a84bf416903e1ca3983c539e34", + "0x542f16da0efb162d20bf4358efa095b70a100f9e", + "0x59745774ed5eff903e615f5a2282cae03484985a", + "0xce3b19d820cb8b9ae370e423b0a329c4314335fe", + "0x539bdE0d7Dbd336b79148AA742883198BBF60342", + "0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae", + "0x912CE59144191C1204E64559FE8253a0e49E6548", +]; + +const OPTIMISM_REGISTRY_TOKENS = [ + "0x4200000000000000000000000000000000000006", + "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + "0x4200000000000000000000000000000000000006", + "0x68f180fcce6836688e9084f035309e29bf0a2095", + "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", + "0x061b87122Ed14b9526A813209C8a59a633257bAb", + "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + "0xEfDE221f306152971D8e9f181bFe998447975810", + "0x298B9B95708152ff6968aafd889c6586e9169f1D", + "0x9F2fE3500B1a7E285FDc337acacE94c480e00130", + "0x1337BedC9D22ecbe766dF105c9623922A27963EC", + "0x0994206dfe8de6ec6920ff4d779b0d950605fb53", + "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", + "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", + "0x0df083de449F75691fc5A36477a6f3284C269108", + "0x3DD9556a521d6e57bE480c94da102fedf0429aba", + "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", + "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05", + "0x6806411765Af15Bddd26f8f544A34cC40cb9838B", + "0x484c2D6e3cDd945a8B2DF735e079178C1036578c", + "0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED", + "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", + "0x79af5dd14e855823fa3e9ecacdf001d99647d043", + "0x9560e827aF36c94D2Ac33a39bCE1Fe78631088Db", + "0x4e720dd3ac5cfe1e1fbde4935f386bb1c66f4642", +]; + +const POLYGON_REGISTRY_TOKENS = [ + "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + "0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171", + "0x87ff96aba480f1813aF5c780387d8De7cf7D8261", + "0x2088C47Fc0c78356c622F79dBa4CbE1cCfA84A91", + "0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7", + "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c", + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390", + "0x20D3922b4a1A8560E1aC99FBA4faDe0c849e2142", + "0x1d2a0E5EC8E5bBDCA5CB219e649B565d8e5c3360", + "0x7D645CBbCAdE2A130bF1bf0528b8541d32D3f8Cf", + "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", + "0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89", + "0xA691D34Abf93C0A77998e53B564bEcfaf46Dae27", + "0xaA91CDD7abb47F821Cf07a2d38Cc8668DEAf1bdc", + "0x8343091F2499FD4b6174A46D067A920a3b851FF9", + "0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB", + "0xAd326c253A84e9805559b73A08724e11E49ca651", + "0xE2Aa7db6dA1dAE97C5f5C6914d285fBfCC32A128", + "0x7BDF330f423Ea880FF95fC41A280fD5eCFD3D09f", + "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99", + "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", + "0x750e4C4984a9e0f12978eA6742Bc1c5D248f40ed", + "0x60D55F02A771d515e077c9C2403a1ef324885CeC", + "0xb5DFABd7fF7F83BAB83995E72A52B97ABb7bcf63", + "0x361a5a4993493ce00f61c32d4ecca5512b82ce90", + "0x2C2D8a078B33bf7782a16AcCE2C5BA6653a90D5f", + "0x172370d5Cd63279eFa6d502DAB29171933a610AF", + "0xdAD97F7713Ae9437fa9249920eC8507e5FbB23d3", + "0x8096ac61db23291252574D49f036f0f9ed8ab390", + "0x447646e84498552e62eCF097Cc305eaBFFF09308", + "0xA73EdCf18421B56D9AF1cE08A34E102E23b2C4B6", + "0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4", + "0x600743B1d8A96438bD46836fD34977a00293f6Aa", + "0xa138341185a9D0429B0021A11FB717B225e13e1F", + "0xb0658482b405496C4EE9453cD0a463b134aEf9d0", + "0xb61Ecec987a9529dbA13a8Dd10ea24446ccBB6ae", + "0xe7CEA2F6d7b120174BF3A9Bc98efaF1fF72C997d", + "0xBed1d474DdA97edcEB7b9af13be4cbf1Bb98A2D3", + "0xfBA3b7Bb043415035220b1c44FB4756434639392", + "0x7BD9757FbAc089d60DaFF1Fa6bfE3BC99b0F5735", + "0xAdf577B69eEaC9Df325536cf1aF106372f2Da263", + "0x81c86081d533f280A8DAaE17F672Fb84B6ed65e3", + "0xbb1b19495b8fe7c402427479b9ac14886cbbaaee", + "0x20759F567BB3EcDB55c817c9a1d13076aB215EdC", + "0x8D9649e50A0d1da8E939f800fB926cdE8f18B47D", + "0xa7de0D88D02B9589d3b02cE52174431275169b77", + "0x40379a439D4F6795B6fc9aa5687dB461677A2dBa", + "0x00e8c0E92eB3Ad88189E7125Ec8825eDc03Ab265", + "0x04d521e2c414e6d898c6f2599fdd863edf49e247", + "0xcdedc76bcc6351275acdef823190453ec43b4edf", + "0x184a51465925ab8a0025e47a00cab6d3769b5487", + "0x3f35705479d9d77c619b2aac9dd7a64e57151506", + "0x98b6a5eedc9382e2c4f8a38f985f2e9ac0b0e84c", + "0xb4d852b92148eaa16467295975167e640e1fe57a", + "0x02203f2351E7aC6aB5051205172D3f772db7D814", + "0xBD02973b441Aa83c8EecEA158b98B5984bb1036E", + "0xd17cb0f162f133e339c0bbfc18c36c357e681d6b", + "0xe058e1ffff9b13d3fcd4803fdb55d1cc2fe07ddc", + "0x8711a1a52c34EDe8E61eF40496ab2618a8F6EA4B", + "0xbe4e30b74b558e41f5837dc86562df44af57a013", + "0xfa68fb4628dff1028cfec22b4162fccd0d45efb6", + "0x2ee50c34392e7e7a1d17b0a42328a8d1ad6894e3", + "0x1205f31718499dbf1fca446663b532ef87481fe1", + "0xb95E1C22dd965FafE926b2A793e9D6757b6613F4", + "0x29e38769f23701a2e4a8ef0492e19da4604be62c", + "0x3f69055f203861abfd5d986dc81a2efa7c915b0c", + "0x74c64d1976157e7aaeeed46ef04705f4424b27ec", + "0x3cc20a6795c4b57d9817399f68e83e71c8626580", + "0xe7806b5ba13d4b2ab3eab3061cb31d4a4f3390aa", + "0x513cdee00251f39de280d9e5f771a6eafebcc88e", + "0xa7565dfeb16010153d3368e002ec53cbfaf96e05", + "0x2589469b7a72802ce02484f053cb6df869eb2689", + "0xE193C653B6030a9BB443AE7c6Ef6e35d93348f98", + "0xFbdd194376de19a88118e84E279b977f165d01b8", +]; + +const AVALANCHE_REGISTRY_TOKENS = [ + "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + "0x152b9d0FdC40C096757F570A51E494bd4b943E50", + "0x111111111111ed1D73f860F57b2798b683f2d325", + "0x130966628846BFd36ff31a822705796e8cb8C18D", + "0x40b393cecf8F7D7Fc79b83e8fA40e850511817f6", + "0x28690ec942671aC8d9Bc442B667EC338eDE6dFd3", + "0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b", + "0xb599c3590F42f8F995ECfa0f85D2980B76862fc1", + "0xF14f4CE569cB3679E99d5059909E23B07bd2F387", + "0xAEA2E71b631fA93683BCF256A8689dFa0e094fcD", + "0x6a4aC4DE3bF6bCD2975E2cb15A46954D9bA43fDb", + "0x943F3B750447AbDd61cdF68AE6c3912cd3bedA04", + "0xd39016475200ab8957e9C772C949Ef54bDA69111", + "0x1205f31718499dBf1fCa446663B532Ef87481fe1", + "0xf4003F4efBE8691B60249E6afbD307aBE7758adb", + "0x1dab6560494b04473a0be3e7d83cf3fdf3a51828", + "0xae64d55a6f09e4263421737397d1fdfa71896a69", + "0xFE15c2695F1F920da45C30AAE47d11dE51007AF9", + "0x0e0100ab771e9288e0aa97e11557e6654c3a9665", + "0x32833a12ed3fd5120429fb01564c98ce3c60fc1d", + "0x29e38769f23701A2e4A8Ef0492e19dA4604Be62c", + "0x454E67025631C065d3cFAD6d71E6892f74487a15", + "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", + "0xd6070ae98b8069de6b494332d1a1a81b6179d960", + "0x47536f17f4ff30e64a96a7555826b8f9e66ec468", +]; + +const BNB_REGISTRY_TOKENS = [ + "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", + "0x55d398326f99059fF775485246999027B3197955", + "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", + "0x0827841963Cc8a0515b5baa59782b0a0870b5f88", + "0x483653bcF3a10d9a1c334CE16a19471a614F4385", +]; + +const BASE_REGISTRY_TOKENS = [ + "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", + "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", + "0x8Ee73c484A26e0A5df2Ee2a4960B789967dd0415", + "0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93", + "0xEB466342C4d449BC9f53A865D5Cb90586f405215", + "0x4200000000000000000000000000000000000006", + "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b", + "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "0xd07379a755A8f11B57610154861D694b2A0f615a", + "0xB6fe221Fe9EeF5aBa221c348bA20A1Bf5e73624c", + "0x9EaF8C1E34F05a589EDa6BAfdF391Cf6Ad3CB239", + "0xf6C5F01C7F3148891ad0e19DF78743D31E390D1f", + "0x6e53131F68a034873b6bFA15502aF094Ef0c5854", + "0x6DfE79cecE4f64c1a34F48cF5802492aB595257E", + "0xf213F2D02837012dC0236cC105061e121bB03e37", + "0x0B25c51637c43decd6CC1C1e3da4518D54ddb528", + "0x44Ecc644449fC3a9858d2007CaA8CFAa4C561f91", + "0x6B87B8663eE63191887F18225F79D9eEb2DE0d34", + "0xb5E331615FdbA7DF49e05CdEACEb14Acdd5091c3", + "0xA6385c73961dd9C58db2EF0c4EB98cE4B60651e8", + "0x7A034374C89C463DD65D8C9BCfe63BcBCED41f4F", + "0x61366A4e6b1DB1b85DD701f2f4BFa275EF271197", + "0xA6F8A6bc3deA678d5bA786f2Ad2f5F93d1c87c18", + "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d", + "0x323121CD6F6274c9aeB9f87e0664C8FDa5d343A5", + "0xcDAC0d6c6C59727a65F871236188350531885C43", + "0x27a8Afa3Bd49406e48a074350fB7b2020c43B2bD", + "0x82a0c1a0d4EF0c0cA3cFDA3AD1AA78309Cc6139b", + "0x5BfB340FA9305abB164Fb0248D0D82FC3D82C3bb", +]; + +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, +}; + +module.exports = registryTokensByChain; diff --git a/projects/hinkal/relayerUrls.js b/projects/hinkal/relayerUrls.js new file mode 100644 index 00000000000..5dd2bddf5aa --- /dev/null +++ b/projects/hinkal/relayerUrls.js @@ -0,0 +1,11 @@ +const RELAYER_URLS = { + ethereum: "https://ethMainnet.relayer.hinkal.pro", + arbitrum: "https://arbMainnet.relayer.hinkal.pro", + optimism: "https://optimism.relayer.hinkal.pro", + polygon: "https://polygon.relayer.hinkal.pro", + avax: "https://avalanche.relayer.hinkal.pro", + bsc: "https://bnbMainnet.relayer.hinkal.pro", + base: "https://base.relayer.hinkal.pro", +}; + +module.exports = RELAYER_URLS; From a5b1b84a3b34e6dcc379a54f8793648f5cc46458 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 10:08:55 +0200 Subject: [PATCH 1783/2004] fix unicrypt --- projects/unicrypt/apiCache.js | 110 +--------------------------------- 1 file changed, 1 insertion(+), 109 deletions(-) diff --git a/projects/unicrypt/apiCache.js b/projects/unicrypt/apiCache.js index fd106b1c6b3..dee682a1f29 100644 --- a/projects/unicrypt/apiCache.js +++ b/projects/unicrypt/apiCache.js @@ -1,109 +1 @@ -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"); - -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.toLowerCase() - const cache = await getCache(project, chain) - if (!cache.vaults) cache.vaults = {} - if (!cache.vaults[contract]) cache.vaults[contract] = { tokens: [] } - const cCache = cache.vaults[contract] - let block = chainBlocks[chain] - const { output: totalDepositId } = await sdk.api.abi.call({ - target: contract, - abi: args[i].getNumLockedTokensABI, - chain, block, - }) - - let tokens = cCache.tokens; - let j = cCache.lastTotalDepositId || 0 - cCache.lastTotalDepositId = +totalDepositId - let calls = [] - for (; j < totalDepositId; j++) - calls.push({ target: contract, params: j }) - - const lpAllTokens = ( - await sdk.api.abi.multiCall({ - 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, - }) - - for (const [token, balance] of Object.entries(balances)) - sdk.util.sumSingleBalance(totalBalances, token, balance) - await setCache(project, chain, cache) - } - 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`, - - 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) - }, - 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) - }, -} - +module.exports = require('./index.js') \ No newline at end of file From ba5ef6a3b01f05ba7cdf0afc08a865eca893be61 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 10:14:17 +0200 Subject: [PATCH 1784/2004] fix unicrypt - add cache --- projects/unicrypt/apiCache.js | 113 +++++++++++++++++++++++++++++++++- projects/unicrypt/index.js | 109 +------------------------------- 2 files changed, 113 insertions(+), 109 deletions(-) diff --git a/projects/unicrypt/apiCache.js b/projects/unicrypt/apiCache.js index dee682a1f29..a593eb09301 100644 --- a/projects/unicrypt/apiCache.js +++ b/projects/unicrypt/apiCache.js @@ -1 +1,112 @@ -module.exports = require('./index.js') \ No newline at end of file +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"); + +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.toLowerCase() + const cache = await getCache(project, chain) + if (!cache.vaults) cache.vaults = {} + if (!cache.vaults[contract]) cache.vaults[contract] = { tokens: [] } + const cCache = cache.vaults[contract] + let block = chainBlocks[chain] + const { output: totalDepositId } = await sdk.api.abi.call({ + target: contract, + abi: args[i].getNumLockedTokensABI, + chain, block, + }) + + let tokens = cCache.tokens; + let j = cCache.lastTotalDepositId || 0 + cCache.lastTotalDepositId = +totalDepositId + let calls = [] + for (; j < totalDepositId; j++) + calls.push({ target: contract, params: j }) + + const lpAllTokens = ( + await sdk.api.abi.multiCall({ + 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, + }) + + for (const [token, balance] of Object.entries(balances)) + sdk.util.sumSingleBalance(totalBalances, token, balance) + await setCache(project, chain, cache) + } + 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`, + + 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/index.js b/projects/unicrypt/index.js index 614ff0b637f..3bce8bb712a 100644 --- a/projects/unicrypt/index.js +++ b/projects/unicrypt/index.js @@ -1,108 +1 @@ -const sdk = require('@defillama/sdk'); -const { config, protocolPairs, tokens, stakingContracts, - ethereumContractData, bscContractData, polygonContractData, - avalancheContractData, gnosisContractData, arbitrumContractData, - baseContractData, } = require('./config') - -const { stakings } = require("../helper/staking"); -const { pool2s } = require("../helper/pool2"); - -const { vestingHelper } = require("../helper/unknownTokens") - -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`, - - 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) - }, -} - +module.exports = require('./apiCache') \ No newline at end of file From d8d9775dfaaf3dc46138a9ddee90d18f129e3b0c Mon Sep 17 00:00:00 2001 From: Jean Chambras Date: Thu, 30 May 2024 12:53:35 +0200 Subject: [PATCH 1785/2004] Add spectra TVL adapter --- projects/spectra/index.js | 164 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 projects/spectra/index.js diff --git a/projects/spectra/index.js b/projects/spectra/index.js new file mode 100644 index 00000000000..ccbacd8dfd7 --- /dev/null +++ b/projects/spectra/index.js @@ -0,0 +1,164 @@ +const { getLogs } = require("../helper/cache/getLogs"); +const sdk = require("@defillama/sdk"); + +const abi = { + markets: { + balances: + "function balances(uint256 index) external view returns (uint256)", + }, + pt: { + getIBT: "function getIBT() external view override returns (address)", + balanceOf: + "function balanceOf(address account) external view returns (uint256)", + }, + vault: { + convertToAsset: + "function convertToAssets(uint256 shares) external view returns (uint256 assets)", + asset: "function asset() external view returns (address assetTokenAddress)", + }, +}; + +const config = { + ethereum: { + factory: "0xae4d5d5199265512B2a77Ad675107735B891aBc8", + fromBlock: 19727256, + }, + arbitrum: { + factory: "0x51100574E1CF11ee9fcC96D70ED146250b0Fdb60", + fromBlock: 204418891, + }, +}; + +module.exports = { + methodology: `All deposited underlying in Spectra Principal Tokens and all underlying supplied as liquidity in Spectra Markets`, +}; + +Object.keys(config).forEach((chain) => { + const { factory, fromBlock } = config[chain]; + module.exports[chain] = { + tvl: async (api) => { + const marketData = await getMarkets(api); + const ibtsInMarket = await api.batchCall( + marketData.map((market) => { + return { + target: market[0], + params: 0, + abi: abi.markets.balances, + }; + }) + ); + const marketsIbtsWithBalance = marketData.map((market, i) => [ + market[1], + ibtsInMarket[i], + ]); + + const poolIBTBalances = marketsIbtsWithBalance.reduce( + (acc, [ibt, balance]) => { + if (acc[ibt] === undefined) { + acc[ibt] = BigInt(0); + } + acc[ibt] += sdk.util.convertToBigInt(balance); + return acc; + }, + {} + ); + + const pts = await getPTs(api); + const ptIbts = await api.batchCall( + pts.map((pt) => { + return { + target: pt, + abi: abi.pt.getIBT, + }; + }) + ); + const ibtBalances = await api.batchCall( + pts.map((pt, i) => { + return { + target: ptIbts[i], + params: pt, + abi: abi.pt.balanceOf, + }; + }) + ); + const ptsIbtsWithBalances = ibtBalances.map((balance, i) => [ + ptIbts[i], + balance, + ]); + const ptIBTBalances = ptsIbtsWithBalances.reduce( + (acc, [ibt, balance]) => { + if (acc[ibt] === undefined) { + acc[ibt] = BigInt(0); + } + acc[ibt] += sdk.util.convertToBigInt(balance); + return acc; + }, + {} + ); + + const allIBTBalances = Object.entries({ + ...poolIBTBalances, + ...ptIBTBalances, + }).reduce( + (acc, [key, value]) => ({ + ...acc, + [key]: (poolIBTBalances[key] || 0n) + (ptIBTBalances[key] || 0n), + }), + {} + ); + + const Assets = await api.batchCall( + Object.entries(allIBTBalances).map(([ibt, balance]) => { + return { + target: ibt, + abi: abi.vault.asset, + }; + }) + ); + const AssetsBalances = await api.batchCall( + Object.entries(allIBTBalances).map(([ibt, balance], i) => { + return { + target: ibt, + params: balance, + abi: abi.vault.convertToAsset, + }; + }) + ); + const assetsWithBalances = Assets.map((asset, i) => [ + asset, + sdk.util.convertToBigInt(AssetsBalances[i]), + ]); + assetsWithBalances.forEach(([asset, balance]) => { + api.add(asset, balance); + }); + let balances = api.getBalances(); + return balances; + }, + }; + + async function getMarkets(api) { + const logs = await getLogs({ + api, + target: factory, + eventAbi: + "event CurvePoolDeployed(address indexed poolAddress, address indexed ibt, address indexed pt)", + onlyArgs: true, + fromBlock: fromBlock, + skipCache: true, + }); + return logs.map((i) => [i.poolAddress, i.ibt]); + } + + async function getPTs(api) { + const logs = await getLogs({ + api, + target: factory, + eventAbi: + "event PTDeployed(address indexed pt, address indexed poolCreator)", + onlyArgs: true, + fromBlock: fromBlock, + skipCache: true, + }); + return logs.map((i) => i.pt); + } +}); From 3846afbb70346322fe5b31071fa17ac021688f67 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 15:27:13 +0200 Subject: [PATCH 1786/2004] update sdk version --- package-lock.json | 73 +++++++++++++++++++++++++++++++++-- projects/helper/env.js | 1 - projects/helper/heroku-api.js | 50 +++++++++++++----------- 3 files changed, 97 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index e5913d90852..dab982ba367 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,11 +886,12 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.57", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.57.tgz", - "integrity": "sha512-a4xLOQp7Y5vD+6HVuNPmWxOmsg9MDJliTPen8nzjXoxDG/WWHKFwARa035l60zeoq/TWY6JbTFOBoruCBVYN2g==", + "version": "5.0.59", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.59.tgz", + "integrity": "sha512-9Gxs1OkyPrqfvf9nuvlvwWUCxoJO4uHLOfJaT9p6LwC9xl2+iFY0Yb/+kCt0TgRYRooEP88Z4Rf3PmnmhTsw+g==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", + "@elastic/elasticsearch": "^8.13.1", "@supercharge/promise-pool": "^2.1.0", "axios": "^1.6.5", "ethers": "^6.0.0", @@ -898,6 +899,39 @@ "tron-format-address": "^0.1.11" } }, + "node_modules/@elastic/elasticsearch": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.13.1.tgz", + "integrity": "sha512-2G4Vu6OHw4+XTrp7AGIcOEezpPEoVrWg2JTK1v/exEKSLYquZkUdd+m4yOL3/UZ6bTj7hmXwrmYzW76BnLCkJQ==", + "dependencies": { + "@elastic/transport": "~8.4.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@elastic/transport": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.4.1.tgz", + "integrity": "sha512-/SXVuVnuU5b4dq8OFY4izG+dmGla185PcoqgK6+AJMpmOeY1QYVNbWtCwvSvoAANN5D/wV+EBU8+x7Vf9EphbA==", + "dependencies": { + "debug": "^4.3.4", + "hpagent": "^1.0.0", + "ms": "^2.1.3", + "secure-json-parse": "^2.4.0", + "tslib": "^2.4.0", + "undici": "^5.22.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@elastic/transport/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -954,6 +988,14 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -2363,7 +2405,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -2934,6 +2975,14 @@ "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" }, + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "engines": { + "node": ">=14" + } + }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -3584,6 +3633,11 @@ } ] }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3811,6 +3865,17 @@ "node": ">=14.17" } }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", diff --git a/projects/helper/env.js b/projects/helper/env.js index d9af5a50f57..8e00c39e43f 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -20,7 +20,6 @@ const DEFAULTS = { REAL_RPC: 'https://real.drpc.org', // added manually short name is re-al TAIKO_RPC: 'https://rpc.taiko.xyz', // added manually short name is tko-mainnet REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', - TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', } const ENV_KEYS = [ diff --git a/projects/helper/heroku-api.js b/projects/helper/heroku-api.js index aecb1ec9a41..1cbe02f416c 100644 --- a/projects/helper/heroku-api.js +++ b/projects/helper/heroku-api.js @@ -1,35 +1,41 @@ 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 get(`${endpoint}?project=${protocol}&chain=${chain}`) - if(data[protocol]?.[chain] === undefined){ - throw new Error(`Data for protocol ${protocol} on chain ${chain} is undefined on heroku`) - } - return data[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 - }, {}) + 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 + return chainTvls } -module.exports={ - getExports +module.exports = { + getExports } From 54b413d418c0a58c87fb9763b49d04d2e53dd1d4 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 15:30:12 +0200 Subject: [PATCH 1787/2004] code refactor --- projects/cketh/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/projects/cketh/index.js b/projects/cketh/index.js index c524a6a1afe..0a12acb9731 100644 --- a/projects/cketh/index.js +++ b/projects/cketh/index.js @@ -1,16 +1,16 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); -const { get } = require('../helper/http') +// const { get } = require('../helper/http') const ADDRESSES = require('../helper/coreAssets.json') const contract = "0xb25eA1D493B49a1DeD42aC5B1208cC618f9A9B80"; async function tvl(api) { - var end = api.timestamp - let start = end - 24 * 60 * 60; - const { data } = await get(`https://icrc-api.internetcomputer.org/api/v1/ledgers/xevnm-gaaaa-aaaar-qafnq-cai/total-supply?start=${start}&end=${end}&step=1`); - let [_, bal] = data.pop() - api.add(ADDRESSES.ethereum.USDC, bal/1e2) - return sumTokens2({ tokens: [nullAddress], owner: contract, api }); + // var end = api.timestamp + // let start = end - 24 * 60 * 60; + // const { data } = await get(`https://icrc-api.internetcomputer.org/api/v1/ledgers/xevnm-gaaaa-aaaar-qafnq-cai/total-supply?start=${start}&end=${end}&step=1`); + // let [_, bal] = data.pop() + // api.add(ADDRESSES.ethereum.USDC, bal/1e2) + return sumTokens2({ tokens: [nullAddress, ADDRESSES.ethereum.USDC], owner: contract, api }); } module.exports = { From 2a13caa47fa313dd12c4c9dfa8ca4c355e3391ec Mon Sep 17 00:00:00 2001 From: Jean Chambras Date: Thu, 30 May 2024 15:52:14 +0200 Subject: [PATCH 1788/2004] Refactor adapter code and split in files --- projects/spectra/abi.json | 14 +++ projects/spectra/config.json | 10 ++ projects/spectra/index.js | 171 ++++++++++++----------------------- 3 files changed, 84 insertions(+), 111 deletions(-) create mode 100644 projects/spectra/abi.json create mode 100644 projects/spectra/config.json diff --git a/projects/spectra/abi.json b/projects/spectra/abi.json new file mode 100644 index 00000000000..8a75703679a --- /dev/null +++ b/projects/spectra/abi.json @@ -0,0 +1,14 @@ +{ + "markets": { + "balances": "function balances(uint256 index) external view returns (uint256)" + }, + "pt": { + "getIBT": "function getIBT() external view override returns (address)", + "balanceOf": "function balanceOf(address account) external view returns (uint256)" + }, + "vault": { + "convertToAsset": "function convertToAssets(uint256 shares) external view returns (uint256 assets)", + "asset": "function asset() external view returns (address assetTokenAddress)" + } + } + \ No newline at end of file diff --git a/projects/spectra/config.json b/projects/spectra/config.json new file mode 100644 index 00000000000..1cdebca0c99 --- /dev/null +++ b/projects/spectra/config.json @@ -0,0 +1,10 @@ +{ + "ethereum": { + "factory": "0xae4d5d5199265512B2a77Ad675107735B891aBc8", + "fromBlock": 19727256 + }, + "arbitrum": { + "factory": "0x51100574E1CF11ee9fcC96D70ED146250b0Fdb60", + "fromBlock": 204418891 + } +} diff --git a/projects/spectra/index.js b/projects/spectra/index.js index ccbacd8dfd7..98ab6066db4 100644 --- a/projects/spectra/index.js +++ b/projects/spectra/index.js @@ -1,34 +1,8 @@ const { getLogs } = require("../helper/cache/getLogs"); +const abi = require("./abi.json"); +const config = require("./config.json"); const sdk = require("@defillama/sdk"); -const abi = { - markets: { - balances: - "function balances(uint256 index) external view returns (uint256)", - }, - pt: { - getIBT: "function getIBT() external view override returns (address)", - balanceOf: - "function balanceOf(address account) external view returns (uint256)", - }, - vault: { - convertToAsset: - "function convertToAssets(uint256 shares) external view returns (uint256 assets)", - asset: "function asset() external view returns (address assetTokenAddress)", - }, -}; - -const config = { - ethereum: { - factory: "0xae4d5d5199265512B2a77Ad675107735B891aBc8", - fromBlock: 19727256, - }, - arbitrum: { - factory: "0x51100574E1CF11ee9fcC96D70ED146250b0Fdb60", - fromBlock: 204418891, - }, -}; - module.exports = { methodology: `All deposited underlying in Spectra Principal Tokens and all underlying supplied as liquidity in Spectra Markets`, }; @@ -38,101 +12,76 @@ Object.keys(config).forEach((chain) => { module.exports[chain] = { tvl: async (api) => { const marketData = await getMarkets(api); - const ibtsInMarket = await api.batchCall( - marketData.map((market) => { - return { - target: market[0], - params: 0, - abi: abi.markets.balances, - }; - }) - ); - const marketsIbtsWithBalance = marketData.map((market, i) => [ - market[1], - ibtsInMarket[i], - ]); - - const poolIBTBalances = marketsIbtsWithBalance.reduce( - (acc, [ibt, balance]) => { - if (acc[ibt] === undefined) { - acc[ibt] = BigInt(0); - } - acc[ibt] += sdk.util.convertToBigInt(balance); - return acc; - }, - {} - ); + const marketBatchCalls = marketData.map((market) => ({ + target: market[0], + params: 0, + abi: abi.markets.balances, + })); const pts = await getPTs(api); - const ptIbts = await api.batchCall( - pts.map((pt) => { - return { - target: pt, - abi: abi.pt.getIBT, - }; - }) - ); - const ibtBalances = await api.batchCall( - pts.map((pt, i) => { - return { - target: ptIbts[i], - params: pt, - abi: abi.pt.balanceOf, - }; - }) - ); - const ptsIbtsWithBalances = ibtBalances.map((balance, i) => [ - ptIbts[i], - balance, + const ptIBTCalls = pts.map((pt) => ({ + target: pt, + abi: abi.pt.getIBT, + })); + + const [ibtsInMarket, ptIbts] = await Promise.all([ + api.batchCall(marketBatchCalls), + api.batchCall(ptIBTCalls), ]); - const ptIBTBalances = ptsIbtsWithBalances.reduce( - (acc, [ibt, balance]) => { - if (acc[ibt] === undefined) { - acc[ibt] = BigInt(0); - } - acc[ibt] += sdk.util.convertToBigInt(balance); - return acc; - }, - {} - ); - const allIBTBalances = Object.entries({ - ...poolIBTBalances, - ...ptIBTBalances, - }).reduce( - (acc, [key, value]) => ({ - ...acc, - [key]: (poolIBTBalances[key] || 0n) + (ptIBTBalances[key] || 0n), - }), - {} - ); + const ptIBTBalanceCalls = ptIbts.map((ibt, i) => ({ + target: ibt, + params: pts[i], + abi: abi.pt.balanceOf, + })); + const ibtBalances = await api.batchCall(ptIBTBalanceCalls); - const Assets = await api.batchCall( - Object.entries(allIBTBalances).map(([ibt, balance]) => { - return { - target: ibt, - abi: abi.vault.asset, - }; - }) - ); - const AssetsBalances = await api.batchCall( - Object.entries(allIBTBalances).map(([ibt, balance], i) => { - return { - target: ibt, - params: balance, - abi: abi.vault.convertToAsset, - }; + const poolIBTBalances = marketData.reduce((acc, market, i) => { + const ibt = market[1]; + const balance = sdk.util.convertToBigInt(ibtsInMarket[i]); + acc[ibt] = (acc[ibt] || 0n) + balance; + return acc; + }, {}); + + const ptIBTBalances = ptIbts.reduce((acc, ibt, i) => { + const balance = sdk.util.convertToBigInt(ibtBalances[i]); + acc[ibt] = (acc[ibt] || 0n) + balance; + return acc; + }, {}); + + const allIBTBalances = { ...poolIBTBalances }; + for (const [ibt, balance] of Object.entries(ptIBTBalances)) { + allIBTBalances[ibt] = (allIBTBalances[ibt] || 0n) + balance; + } + + const assetCalls = Object.keys(allIBTBalances).map((ibt) => ({ + target: ibt, + abi: abi.vault.asset, + })); + + const assetBalanceCalls = Object.entries(allIBTBalances).map( + ([ibt, balance]) => ({ + target: ibt, + params: balance, + abi: abi.vault.convertToAsset, }) ); - const assetsWithBalances = Assets.map((asset, i) => [ + + const [assets, assetBalances] = await Promise.all([ + api.batchCall(assetCalls), + api.batchCall(assetBalanceCalls), + ]); + + const assetsWithBalances = assets.map((asset, i) => [ asset, - sdk.util.convertToBigInt(AssetsBalances[i]), + sdk.util.convertToBigInt(assetBalances[i]), ]); + assetsWithBalances.forEach(([asset, balance]) => { api.add(asset, balance); }); - let balances = api.getBalances(); - return balances; + + return api.getBalances(); }, }; From a9337eb3acc2fe7a53f5d9fbf698ad74b876d7e8 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 30 May 2024 14:54:11 +0100 Subject: [PATCH 1789/2004] add hallamark stable (#10437) --- projects/platypus-finance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js index 8a2c8944406..3b8368e1bda 100644 --- a/projects/platypus-finance/index.js +++ b/projects/platypus-finance/index.js @@ -29,5 +29,6 @@ module.exports = { hallmarks: [ [Math.floor(new Date('2023-02-17') / 1e3), 'Protocol was hacked for $8.5m'], [Math.floor(new Date('2023-10-12') / 1e3), 'Protocol was hacked for $2m'], + [1716811215,"Acquired by Stable Jack"] ], }; From ddb8bc3f4a61e52bb325bbbc2df464148935e85e Mon Sep 17 00:00:00 2001 From: Jean Chambras Date: Thu, 30 May 2024 16:39:22 +0200 Subject: [PATCH 1790/2004] Update abi --- projects/spectra/abi.json | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/projects/spectra/abi.json b/projects/spectra/abi.json index 8a75703679a..4378366d8b4 100644 --- a/projects/spectra/abi.json +++ b/projects/spectra/abi.json @@ -1,14 +1,13 @@ { - "markets": { - "balances": "function balances(uint256 index) external view returns (uint256)" - }, - "pt": { - "getIBT": "function getIBT() external view override returns (address)", - "balanceOf": "function balanceOf(address account) external view returns (uint256)" - }, - "vault": { - "convertToAsset": "function convertToAssets(uint256 shares) external view returns (uint256 assets)", - "asset": "function asset() external view returns (address assetTokenAddress)" - } + "markets": { + "balances": "function balances(uint256 index) view returns (uint256)" + }, + "pt": { + "getIBT": "function getIBT() view override 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)" } - \ No newline at end of file +} From 097c2718dbde1d418c6a7d9d0bfe066b8268a946 Mon Sep 17 00:00:00 2001 From: Jean Chambras Date: Thu, 30 May 2024 16:52:38 +0200 Subject: [PATCH 1791/2004] Remove override from ABI --- projects/spectra/abi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/spectra/abi.json b/projects/spectra/abi.json index 4378366d8b4..63026fe2040 100644 --- a/projects/spectra/abi.json +++ b/projects/spectra/abi.json @@ -3,7 +3,7 @@ "balances": "function balances(uint256 index) view returns (uint256)" }, "pt": { - "getIBT": "function getIBT() view override returns (address)", + "getIBT": "function getIBT() view returns (address)", "balanceOf": "function balanceOf(address account) view returns (uint256)" }, "vault": { From 294a2f5045b24652b04a57050ce9e681950cdbe3 Mon Sep 17 00:00:00 2001 From: miler012 <124125686+miler012@users.noreply.github.com> Date: Fri, 31 May 2024 02:33:27 +0800 Subject: [PATCH 1792/2004] satori perp add xlayer (#10439) --- projects/satori/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/satori/index.js b/projects/satori/index.js index d0da28bcc75..84a21cc679c 100644 --- a/projects/satori/index.js +++ b/projects/satori/index.js @@ -51,4 +51,13 @@ module.exports = { tokens: [ADDRESSES.base.USDC], }), }, + xlayer: { + tvl: sumTokensExport({ + owners: [ + "0x80DD5bC934122e56B9536a9F19F2Ea95a38E98c8", + "0xf915391346Fad5a75F31CD00218BB1EFC13e01f2", + ], + tokens: [ADDRESSES.xlayer.USDC], + }), + }, } \ No newline at end of file From d20f027c8a84c77b25afbbde58fd3010a4254f99 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 20:52:47 +0200 Subject: [PATCH 1793/2004] Add SEI EVM chain support (#10440) * symbiosis adds SEI EVM chain support * minor fix --------- Co-authored-by: allush --- projects/helper/chains.json | 1 + projects/helper/coreAssets.json | 3 +++ projects/helper/env.js | 2 ++ projects/helper/tokenMapping.js | 3 +++ projects/symbiosis-finance/config.js | 9 +++++++++ 5 files changed, 18 insertions(+) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 8339a572a4d..ef75ee76527 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -255,6 +255,7 @@ "scroll", "secret", "sei", + "sei_evm", "shibarium", "shiden", "shimmer_evm", diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index a333a8226f2..88be3bab6f7 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1777,5 +1777,8 @@ }, "taiko": { "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" + }, + "sei_evm": { + "USDC": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1" } } \ No newline at end of file diff --git a/projects/helper/env.js b/projects/helper/env.js index 8e00c39e43f..a4ae7ad8c3d 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -20,6 +20,8 @@ const DEFAULTS = { REAL_RPC: 'https://real.drpc.org', // added manually short name is re-al TAIKO_RPC: 'https://rpc.taiko.xyz', // added manually short name is tko-mainnet REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', + TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', + SEI_EVM_RPC: 'https://evm-rpc.sei-apis.com/', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 2e201dc4e92..5f65333ba95 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -128,6 +128,9 @@ const fixBalancesTokens = { '0xA51894664A773981C6C112C43ce576f315d5b1B6': { coingeckoId: 'ethereum', decimals: 18 }, '0x07d83526730c7438048d55a4fc0b850e2aab6f0b': { coingeckoId: 'usd-coin', decimals: 6 }, }, + sei_evm: { + '0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1': { coingeckoId: 'usd-coin', decimals: 6 }, + } } ibcChains.forEach(chain => fixBalancesTokens[chain] = { ...ibcMappings, ...(fixBalancesTokens[chain] || {}) }) diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index db5d5e84c14..a094aeae756 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -328,5 +328,14 @@ module.exports = { '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 ] }, + { + name: 'sei_evm', + tokens: [ + ADDRESSES.sei_evm.USDC, + ], + holders: [ + '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 + ] + }, ] } \ No newline at end of file From 470d02245b512a920b67a9cfbfd6880333457677 Mon Sep 17 00:00:00 2001 From: Shoebill Finance <118880028+ShoebillFinance@users.noreply.github.com> Date: Fri, 31 May 2024 03:54:06 +0900 Subject: [PATCH 1794/2004] add kroma chain eth market (#10434) * add bob-stable market * update kroma chain --- projects/shoebillFinance-v2/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/shoebillFinance-v2/index.js b/projects/shoebillFinance-v2/index.js index 3625ca5c7d2..a411d75fabf 100644 --- a/projects/shoebillFinance-v2/index.js +++ b/projects/shoebillFinance-v2/index.js @@ -68,6 +68,12 @@ module.exports = mergeExports([ bob: compoundExports2({ comptroller: "0x1e514767F5cFe1ddE599dd39a79666E3BeEAaf7d", }), - }, - + }, + { + kroma: compoundExports2({ + comptroller: "0x9f53Cd350c3aC49cE6CE673abff647E5fe79A3CC", + cether: "0xD13bE8b716b18265e294831FCb1330d170840BB3", + }), + }, + ]); From 18243e388938651c12af5749e1af959a9c370b44 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 21:23:57 +0200 Subject: [PATCH 1795/2004] track https://prixmswap.com/home/ --- projects/prixmswap-v3/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 projects/prixmswap-v3/index.js diff --git a/projects/prixmswap-v3/index.js b/projects/prixmswap-v3/index.js new file mode 100644 index 00000000000..5150c4e6040 --- /dev/null +++ b/projects/prixmswap-v3/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require('../helper/uniswapV3') + +module.exports = uniV3Export({ + kroma: { factory: '0x94527f0fdbb1497C77Bb8d409F0dAEbB323ca229', fromBlock: 10032631 } +}) \ No newline at end of file From 00757067c310a1ec2eabc957cd5077a21d98b2eb Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 21:36:17 +0200 Subject: [PATCH 1796/2004] merge sei and sei evm --- projects/helper/coreAssets.json | 6 ++---- projects/helper/env.js | 2 +- projects/helper/tokenMapping.js | 2 +- projects/symbiosis-finance/config.js | 4 ++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 88be3bab6f7..cd79f9eb80f 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1464,7 +1464,8 @@ "USDCar": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/7edDfnf4mku8So3t4Do215GNHwASEwCWrdhM5GqD51xZ", "USDTet": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/HktfLoADCk9mnjv7XJiN4YXK9ayE6xinLzt8wzcsR2rY", "USDTbs": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/871jbn9unTavWsAe83f2Ma9GJWSv6BKsyWYLiQ6z3Pva", - "WBTC": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/7omXa4gryZ5NiBmLep7JsTtTtANCVKXwT9vbN91aS1br" + "WBTC": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/7omXa4gryZ5NiBmLep7JsTtTtANCVKXwT9vbN91aS1br", + "USDC": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1" }, "op_bnb": { "WBNB": "0x4200000000000000000000000000000000000006", @@ -1777,8 +1778,5 @@ }, "taiko": { "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" - }, - "sei_evm": { - "USDC": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1" } } \ No newline at end of file diff --git a/projects/helper/env.js b/projects/helper/env.js index a4ae7ad8c3d..0bb95dda42c 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -21,7 +21,7 @@ const DEFAULTS = { TAIKO_RPC: 'https://rpc.taiko.xyz', // added manually short name is tko-mainnet REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', - SEI_EVM_RPC: 'https://evm-rpc.sei-apis.com/', + SEI_RPC: 'https://evm-rpc.sei-apis.com/', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 5f65333ba95..db6c3724fc5 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -128,7 +128,7 @@ const fixBalancesTokens = { '0xA51894664A773981C6C112C43ce576f315d5b1B6': { coingeckoId: 'ethereum', decimals: 18 }, '0x07d83526730c7438048d55a4fc0b850e2aab6f0b': { coingeckoId: 'usd-coin', decimals: 6 }, }, - sei_evm: { + sei: { '0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1': { coingeckoId: 'usd-coin', decimals: 6 }, } } diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index a094aeae756..d0f1329ed4f 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -329,9 +329,9 @@ module.exports = { ] }, { - name: 'sei_evm', + name: 'sei', tokens: [ - ADDRESSES.sei_evm.USDC, + ADDRESSES.sei.USDC, ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 From 759a423e778e310fbf58162f10e0a8ac391bce47 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 21:38:51 +0200 Subject: [PATCH 1797/2004] merge sei and sei evm --- projects/helper/chains.json | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index ef75ee76527..8339a572a4d 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -255,7 +255,6 @@ "scroll", "secret", "sei", - "sei_evm", "shibarium", "shiden", "shimmer_evm", From e83031d8e0583699666ae9a4586c9367a5b25606 Mon Sep 17 00:00:00 2001 From: Aymen <146243083+aymentrosh@users.noreply.github.com> Date: Thu, 30 May 2024 20:39:29 +0100 Subject: [PATCH 1798/2004] add mantle to karak (#10441) --- projects/karak/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/karak/index.js b/projects/karak/index.js index 5a163ec01a7..345fd55a23b 100644 --- a/projects/karak/index.js +++ b/projects/karak/index.js @@ -4,6 +4,7 @@ const config = { ethereum: { factory: '0x54e44dbb92dba848ace27f44c0cb4268981ef1cc', }, arbitrum: { factory: '0x399f22ae52a18382a67542b3de9bed52b7b9a4ad', }, karak: { factory: '0xB308474350D75447cA8731B7Ce87c9ee9DA03B1C', }, + mantle: { factory: '0x4a2b015CcB8658998692Db9eD4522B8e846962eD' }, } Object.keys(config).forEach(chain => { From eb05259409e74e7433cba2d0e580bbd833564a7e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 30 May 2024 21:42:24 +0200 Subject: [PATCH 1799/2004] "Add SNSY project and staking functionality" (#10442) * Add SNSY project * snsy --------- Co-authored-by: Panagiotis Apostolidis --- projects/snsy/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/snsy/index.js diff --git a/projects/snsy/index.js b/projects/snsy/index.js new file mode 100644 index 00000000000..c0dac1260e8 --- /dev/null +++ b/projects/snsy/index.js @@ -0,0 +1,11 @@ +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 From adaa78f3ced4bf166c0eeb5358039584d2eb04dd Mon Sep 17 00:00:00 2001 From: GausPeerzade <116433573+GausPeerzade@users.noreply.github.com> Date: Fri, 31 May 2024 01:13:15 +0530 Subject: [PATCH 1800/2004] New chains and vault of Rivera Money (#10431) * Added Arbitrum vaults * Added new chains --- projects/rivera_money/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/projects/rivera_money/index.js b/projects/rivera_money/index.js index 33f1739f235..d743e285f26 100644 --- a/projects/rivera_money/index.js +++ b/projects/rivera_money/index.js @@ -33,6 +33,19 @@ const config = { arbitrum: [ "0x8E99B66dE170b53b39D9B54f189a12D7c6AC0cd9" ], + + degen: [ + "0xA95417805d18d00844c3C6FB7742577Cd263fE05" + ], + + bsquared: [ + "0xBC91a7a0eE37085af193C61747ecE693979Ec0C1", + "0xD57a87a9101d567C4139247CdF149b1DA4c8604A" + ], + + polygon: [ + "0x67e07BFfce318ADbA7b08618CBf4B8E271499197" + ], } module.exports = { From 44b2cefbcb701cc552e105e713c542eb27fdde94 Mon Sep 17 00:00:00 2001 From: Barak Uri <140400738+dev-uri@users.noreply.github.com> Date: Thu, 30 May 2024 22:44:54 +0300 Subject: [PATCH 1801/2004] feat: update Rollspace chains list (#10430) --- projects/rollspace/index.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/projects/rollspace/index.js b/projects/rollspace/index.js index b6e50ba27a0..82f3cb7aa0b 100644 --- a/projects/rollspace/index.js +++ b/projects/rollspace/index.js @@ -2,10 +2,22 @@ const { nullAddress } = require("../helper/tokenMapping"); const { sumTokensExport } = require("../helper/unwrapLPs"); const BSC_POOL_CONTRACT = '0xB1FcDb8Ed3c2Bc572440b08a5A93984f366BBf3C'; +const BLAST_POOL_CONTRACT = '0x4E927c4bc1432dc7608d2199a77e630cc1676eD7'; +const BASE_POOL_CONTRACT = '0x35a7E7f5A8ECe30585364c28EE5974E3ECe375DC'; +const MODE_POOL_CONTRACT = '0xbADaC8BDFdC6Ef7be408e94AbE3ddC6bec783E59'; module.exports = { - methodology: 'counts the number of BNB tokens in the bsc pool contract.', + 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 From 789267cd9abdfa9b1a9371ac0ee2f7335b25ec6b Mon Sep 17 00:00:00 2001 From: amedrontadora <134207821+amedrontadora@users.noreply.github.com> Date: Fri, 31 May 2024 14:35:38 +0800 Subject: [PATCH 1802/2004] SyncSwap: Add SyncSwap factory contract address (#10447) * add ritsu * code refactor * SyncSwap: add factories --------- Co-authored-by: amedrontadora Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/syncswap/index.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/projects/syncswap/index.js b/projects/syncswap/index.js index 33d497e213c..dd75d9ebd2e 100644 --- a/projects/syncswap/index.js +++ b/projects/syncswap/index.js @@ -43,19 +43,21 @@ async function tvl(api) { const config = { era: { fromBlock: 9775, - stableFactorys: ['0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3'], - classicFactorys: ['0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb'], - aquaFactorys: ['0x20b28B1e4665FFf290650586ad76E977EAb90c5D'] + stableFactorys: ['0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3','0x81251524898774F5F2FCaE7E7ae86112Cb5C317f'], + classicFactorys: ['0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb','0x0a34FBDf37C246C0B401da5f00ABd6529d906193'], + aquaFactorys: ['0x20b28B1e4665FFf290650586ad76E977EAb90c5D','0xFfa499b019394d9bEB5e21FC54AD572E4942302b'] }, linea: { fromBlock: 716, - stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727'], - classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d'], + stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727','0x61Abf754fc031C544236053495a193f3518e9101','0x024A096bAb43587d24004C95C3e20FcB7518Ad86'], + classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d','0x9573994Ae6C9b35627976d26FA89e507e71FBaA2','0xb8AbaEa25E42DA5ac6897C9DAb0a8157885fE32b'], + aquaFactorys: ['0x7a31060d8524c21496a352BE65549eEf1e864fb0','0x1080EE857D165186aF7F8d63e8ec510C28A6d1Ea'] }, scroll: { fromBlock: 80875, - stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727'], - classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d'], + stableFactorys: ['0xE4CF807E351b56720B17A59094179e7Ed9dD3727','0x5BEBDA7E264b03bB963CB2418f40C5ffcefb7A9e','0xA2acA673C00495A184F88De533BBa8e1b7f38D00'], + classicFactorys: ['0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d','0xDAEdEcF3F1Caf8d9050A0C973B77E40bA8024F69','0x76f549af692efA64952d02c075226df9878Fb54C'], + aquaFactorys: ['0xa033eAbcCfd9b71543E34dec43935467A230Ce2d','0x87aeb51d606056F48D241C4072f55ACd9D937018'] }, } From be45b84e7cc919ae4af4020b6087105007789cd3 Mon Sep 17 00:00:00 2001 From: kulikov-yldr <161155762+kulikov-yldr@users.noreply.github.com> Date: Fri, 31 May 2024 08:35:59 +0200 Subject: [PATCH 1803/2004] Update index.js (#10446) --- projects/yldr/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/yldr/index.js b/projects/yldr/index.js index c97f9ee996d..b601e17d0e2 100644 --- a/projects/yldr/index.js +++ b/projects/yldr/index.js @@ -10,6 +10,7 @@ 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)' From 370092f9a8f28f5cd380210be5161583fbf08e1c Mon Sep 17 00:00:00 2001 From: hxzaifa13 <121883195+hxzaifa13@users.noreply.github.com> Date: Fri, 31 May 2024 02:36:40 -0400 Subject: [PATCH 1804/2004] Blackwing: Add shib / pepe / egeth / pufeth tokens (#10445) * add blackwing project * add pendle token * nit * add pendle tokens * add shib / pepe / egeth / pufeth --------- Co-authored-by: Huzaifa Nasir Co-authored-by: Huzaifa Nasir --- projects/blackwing/index.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index a3e6beeefd9..cfe27b8300f 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -17,7 +17,6 @@ const ETHEREUM_MAINNET_RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7"; const ETHEREUM_MAINNET_WEETH = "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee"; const ETHEREUM_MAINNET_EZETH = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110"; - const ETHEREUM_MAINNET_PENDLE_RSWETH_27JUN2024 = "0x5cb12D56F5346a016DBBA8CA90635d82e6D1bcEa"; const ETHEREUM_MAINNET_PT_EZETH_26DEC2024 = "0xf7906f274c174a52d444175729e3fa98f9bde285"; const ETHEREUM_MAINNET_PT_RSETH_27JUN2024 = "0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e"; @@ -28,6 +27,11 @@ const ETHEREUM_MAINNET_PT_SUSDE_25JUL2024 = "0xd810362556296c834e30c9a61d8e21a5c const ETHEREUM_MAINNET_PT_WEETH_26DEC2024 = "0x6ee2b5e19ecba773a352e5b21415dc419a700d1d"; const ETHEREUM_MAINNET_PT_WEETH_27JUN2024 = "0xc69ad9bab1dee23f4605a82b3354f8e40d1e5966"; +const ETHEREUM_MAINNET_SHIB_ADDRESS = "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"; +const ETHEREUM_MAINNET_PEPE_ADDRESS = "0x6982508145454Ce325dDbE47a25d4ec3d2311933"; +const ETHEREUM_MAINNET_EGETH_ADDRESS = "0x18f313Fc6Afc9b5FD6f0908c1b3D476E3feA1DD9"; +const ETHEREUM_MAINNET_PUFETH_ADDRESS = "0xD9A442856C234a39a81a089C06451EBAa4306a72"; + module.exports = { arbitrum: { tvl: sumTokensExport({ tokens: [ @@ -63,6 +67,10 @@ module.exports = { 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 ], owner: BLACKWING_VAULT_ETH, fetchCoValentTokens: true, }) }, @@ -70,7 +78,8 @@ module.exports = { tvl: sumTokensExport({ tokens: [ ADDRESSES.bsc.USDT, - ADDRESSES.bsc.WBNB], + ADDRESSES.bsc.WBNB + ], owner: BLACKWING_VAULT_BSC, fetchCoValentTokens: true, }) } From af93998662b63e4b860f0873eec036ed4045d2c7 Mon Sep 17 00:00:00 2001 From: 0xYFLOW <139814596+0xYFLOW@users.noreply.github.com> Date: Fri, 31 May 2024 10:37:10 +0400 Subject: [PATCH 1805/2004] Update index.js (#10444) --- projects/yieldflow/index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/yieldflow/index.js b/projects/yieldflow/index.js index cccb078f2ed..1fd1903ae69 100644 --- a/projects/yieldflow/index.js +++ b/projects/yieldflow/index.js @@ -51,9 +51,15 @@ const managers = [ '0x8702800D715461Fb7D9C89C74DDB7bE73F5a37C6', '0xb6F1E82e7AE822DE9eD64967D04359Fe4D58A569', '0xE0213546258ABd7EF0D689D26Cf6d6BCEeE20e8a', - '0xf732Fc726B3a4bE9f6c86a710Fd3367259DB456e' + '0xf732Fc726B3a4bE9f6c86a710Fd3367259DB456e', - + '0x16A3EBd3D55b27FF6e2839DA2078889cA148C040', + '0xf4447cCFeE677A5b0BaD6bcD5f92A1929c171b48', + '0x538A753B616F5aAD60852ca039572e5C4B72cA85', + + '0x780A252d7C797cFB255fe2EAa4E1a257a897B6ed', + '0xffF3c0063f2Fc1Af569C359480b5b62841357169', + '0xEFF4A3260263A927D0707190C931bE13292bD4Ba', ] async function tvl(api) { From a4a49c0ebfb6f06d4a1c129effc34295a0bfbcb9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 31 May 2024 09:33:56 +0200 Subject: [PATCH 1806/2004] update astar dapp staking --- projects/astar-dapps-staking/api.js | 16 ++++++++++++ projects/astar-dapps-staking/index.js | 37 +++++---------------------- 2 files changed, 22 insertions(+), 31 deletions(-) create mode 100644 projects/astar-dapps-staking/api.js diff --git a/projects/astar-dapps-staking/api.js b/projects/astar-dapps-staking/api.js new file mode 100644 index 00000000000..1d1d743a21f --- /dev/null +++ b/projects/astar-dapps-staking/api.js @@ -0,0 +1,16 @@ +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 index ba6b5489061..37b1546c4d0 100644 --- a/projects/astar-dapps-staking/index.js +++ b/projects/astar-dapps-staking/index.js @@ -1,34 +1,9 @@ -// const { ApiPromise, WsProvider } = require("@polkadot/api"); -// const ASTR_DECIMALS = 18; - -// async function tvl() { -// const provider = new WsProvider("wss://astar.api.onfinality.io/public-ws"); -// 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().staked.valueOf(); -// const AstrLocked = tvl / 10 ** ASTR_DECIMALS; - -// return { -// astar: AstrLocked, -// }; -// } - -// module.exports = { -// methodology: -// "TVL considers ASTR tokens deposited to the Dapps-Staking program", -// astar: { tvl }, -// }; - -// This has been delisted +const { getExports } = require("../helper/heroku-api"); module.exports = { - astar: { - tvl: () => ({}) - } -} + 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 From 3833754d9f31c50e332b7d008ff9e4239cc31365 Mon Sep 17 00:00:00 2001 From: Jason Mansfield Date: Fri, 31 May 2024 03:36:24 -0400 Subject: [PATCH 1807/2004] Add Polkadex (#10436) --- projects/helper/chains.json | 1 + projects/polkadex/api.js | 73 +++++++++++++++++++++++++++++++++++++ projects/polkadex/index.js | 6 +++ 3 files changed, 80 insertions(+) create mode 100644 projects/polkadex/api.js create mode 100644 projects/polkadex/index.js diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 8339a572a4d..ad06386d264 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -227,6 +227,7 @@ "planq", "pokt", "polis", + "polkadex", "polkadot", "polygon", "polygon_zkevm", diff --git a/projects/polkadex/api.js b/projects/polkadex/api.js new file mode 100644 index 00000000000..e8b856d185f --- /dev/null +++ b/projects/polkadex/api.js @@ -0,0 +1,73 @@ +const { ApiPromise, WsProvider } = require("@polkadot/api"); +const sdk = require('@defillama/sdk') + +const rpcNodes = ["wss://polkadex.api.onfinality.io/public-ws", "wss://polkadex.public.curie.radiumblock.co/ws"]; +const orderbookWallet = "esoEt6uZ3GuFV8EzKB2EAREe3KE9WuRVfmhK1RRtwffY78ArH" + +const assetMapping = { + '193492391581201937291053139015355410612': 'pha', + '182269558229932594457975666948556356791': 'moonbeam', + '313524628741076911470961827389955394913': 'voucher-dot', + '130314105136721928300689838359167097187': 'bifrost-native-coin', + '95930534000017180603917534864279132680': 'polkadot', + '119367686984583275840673742485354142551': 'dot-is-ded', + '32595388462891559990827225517299393930': 'unique-network', + '3496813586714279103986568049643838918': 'tether', + '222121451965151777636299756141619631150': 'astar', + '226557799181424065994173367616174607641': 'interbtc', +} + +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 pdexBalance = await api.query.system.account(orderbookWallet) + add(_api,'polkadex', pdexBalance.data.free / 1e12) + + let requestedAssets = []; + Object.keys(assetMapping).forEach(function(key) { + 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() +} + +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 new file mode 100644 index 00000000000..851d22d04af --- /dev/null +++ b/projects/polkadex/index.js @@ -0,0 +1,6 @@ +const { getExports } = require('../helper/heroku-api') + +module.exports = { + timetravel: false, + ...getExports("polkadex", ['polkadex']), +} \ No newline at end of file From 65854d6d61e5f5c4e5ec1ec42657993e2fece559 Mon Sep 17 00:00:00 2001 From: soilking <157099073+soilking@users.noreply.github.com> Date: Fri, 31 May 2024 01:06:58 -0700 Subject: [PATCH 1808/2004] Beanstalk (#10429) * sums whitelisted tokens in contract * Report staking beans according to the amount in silo deposit * Include tokens underlying deposited lp * remove treasury * overall tvl function * unripe and include 3crv * lowercase + fix and final comments * revert deletion * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bean/index.js | 292 +++++++++++++++++++++++++++++++++++------ 1 file changed, 250 insertions(+), 42 deletions(-) diff --git a/projects/bean/index.js b/projects/bean/index.js index c7743075b2d..09207c32199 100644 --- a/projects/bean/index.js +++ b/projects/bean/index.js @@ -1,53 +1,261 @@ -const { sumTokens } = require('../helper/unwrapLPs'); +const BEANSTALK = "0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5"; -const BEAN_DIA_ADDR = "0xC1E088fC1323b20BCBee9bd1B9fC9546db5624C5"; +const BEAN_ERC20_V1 = "0xdc59ac4fefa32293a95889dc396682858d52e5db"; +const BEANETH_V1 = "0x87898263b6c5babe34b4ec53f22d98430b91e371"; +const BEAN3CRV_V1 = "0x3a70dfa7d2262988064a2d051dd47521e43c9bdd"; +const BEANLUSD_V1 = "0xd652c40fbb3f06d6b58cb9aa9cff063ee63d465d"; -const BEAN_TOKEN_ADDR = "0xdc59ac4fefa32293a95889dc396682858d52e5db"; -const NEW_BEAN_TOKEN_ADDR = "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab"; -const BEAN_ETH_ADDR = "0x87898263B6C5BABe34b4ec53F22d98430b91e371"; +const BEAN_ERC20 = "0xbea0000029ad1c77d3d5d23ba2d8893db9d1efab"; +const UNRIPE_BEAN_ERC20 = "0x1bea0050e63e05fbb5d8ba2f10cf5800b6224449"; +const UNRIPE_LP_ERC20 = "0x1bea3ccd22f4ebd3d37d731ba31eeca95713716d"; +const BEAN3CRV_V2 = "0xc9c32cd16bf7efb85ff14e0c8603cc90f6f2ee49"; +const BEANETH_V2 = "0xbea0e11282e2bb5893bece110cf199501e872bad"; -// To add new curve pools to the TVL: -// add their LP token address and the number of tokens in the pool -const BEAN_CRV_POOLS = [ - { addr: "0xD652c40fBb3f06d6B58Cb9aa9CFF063eE63d465D", numToken: 2 }, - { addr: "0x3a70DfA7d2262988064A2D051dd47521E43c9BdD", numToken: 2 }, - { addr: "0xc9C32cd16Bf7eFB85Ff14e0c8603cc90F6F2eE49", numToken: 2 } -]; +// Underlying non-bean tokens +const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const CRV3 = "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490"; +const LUSD = "0x5f98805a4e8be255a32880fdec7f6728c6568ba0"; -async function staking(time, block) { - const balances = {}; - // add balance of siloed Beans - await sumTokens(balances, [[NEW_BEAN_TOKEN_ADDR,BEAN_TOKEN_ADDR,],[NEW_BEAN_TOKEN_ADDR, BEAN_DIA_ADDR] ], block) +/// 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 - return balances; +const EXPLOIT_TIME = 1650198256; +const REPLANT_TIME = 1659657966; +const BIP12_TIME = 1645038020; + +// List of pools and time time periods they were valid within beanstalk +const ALL_POOLS = { + [BEANETH_V1]: { + startTime: 1628288832, + endTime: EXPLOIT_TIME, + underlying: [BEAN_ERC20_V1, WETH] + }, + [BEAN3CRV_V1]: { + startTime: 1645038020, + endTime: EXPLOIT_TIME, + underlying: [BEAN_ERC20_V1, CRV3] + }, + [BEANLUSD_V1]: { + startTime: 1649451979, + endTime: EXPLOIT_TIME, + underlying: [BEAN_ERC20_V1, LUSD] + }, + [BEAN3CRV_V2]: { + startTime: 1659645914, + endTime: 999999999999, + // endTime: 1716407627, // Dewhitelisted upon BIP-45 deployment, but some tokens are still deposited and receive yield + underlying: [BEAN_ERC20, CRV3] + }, + [BEANETH_V2]: { + startTime: 1693412759, + endTime: 999999999999, + underlying: [BEAN_ERC20, WETH] + } +}; + +// Returns the relevant tokens for the given timestamp +function getBean(timestamp) { + if (timestamp <= EXPLOIT_TIME) { + return BEAN_ERC20_V1; + } else if (timestamp >= REPLANT_TIME) { + return BEAN_ERC20; + } + throw new Error("There was no Bean token during the requested timestamp"); +} + +// Returns the relevant pools for the given timestamp +function getPools(timestamp) { + const pools = []; + for (const contract in ALL_POOLS) { + const pool = ALL_POOLS[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[pool].underlying.map(token => ({ + target: token, + params: pool + })), + abi: 'erc20:balanceOf' + }); + + return poolBalances.map((balance, i) => ({ token: ALL_POOLS[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 === BEAN_ERC20_V1 + ? "function totalDepositedBeans() public view returns (uint256)" + : "function totalDepositedLP() public view returns (uint256)", + target: BEANSTALK + }); + } else { + result = await api.call({ + abi: "function getTotalDeposited(address) external view returns (uint256)", + target: 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; } -async function pool2(time, block) { - const balances = {}; +// Gets the balances associated with the ripe portion of deposited unripe tokens +async function getRipePooledBalances(api, unripeToken) { - // add balance of siloed BEAN:ETH from uniswap pool - const toa = [[BEAN_ETH_ADDR, BEAN_DIA_ADDR]] + const ripePooledTokenBalances = {}; - // add balances of all siloed curve pools - // this is the block when SiloV2Facet with getTotalDeposited() was introduced - if (block >= 14218934) { - BEAN_CRV_POOLS.forEach(i => toa.push([i.addr, BEAN_DIA_ADDR])) + // 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: BEANSTALK, + params: unripeToken + }), + api.call({ + abi: "function getUnderlyingPerUnripeToken(address) external view returns (uint256)", + target: BEANSTALK, + params: unripeToken + }), + getSiloDeposited(api, unripeToken), + ]); + + // Add the underlying pooled token balances + const underlyingAmount = underlyingPerUnripe * depositedUnripe / Math.pow(10, 6); + if (underlyingToken.toLowerCase() == BEAN_ERC20) { + ripePooledTokenBalances[BEAN_ERC20] = (ripePooledTokenBalances[BEAN_ERC20] ?? 0) + underlyingAmount; + } else { + const underlyingSupply = await getTotalSupply(api, underlyingToken); + const ratio = underlyingAmount / underlyingSupply; + const balances = await getPooledBalances(api, [underlyingToken], [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 (api.timestamp >= EXPLOIT_TIME && api.timestamp <= REPLANT_TIME) { + return {}; + } + + // Bean deposits + ripe beans from unripe beans + const bean = getBean(api.timestamp); + const [siloBeans, unripeSiloBeans] = await Promise.all([ + getSiloDeposited(api, bean), + getRipePooledBalances(api, UNRIPE_BEAN_ERC20) + ]); + const totalStaked = siloBeans + unripeSiloBeans[BEAN_ERC20]; + + return { + [`ethereum:${bean.toLowerCase()}`]: totalStaked + } +} + +// Tokens in liquidity pools corresponding to lp tokens that are deposited in the silo +async function pool2(api) { + if (api.timestamp >= EXPLOIT_TIME && api.timestamp <= REPLANT_TIME) { + return {}; + } + + // Get the amount of lp tokens deposited in the silo + const pools = getPools(api.timestamp); + 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, 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[`ethereum:${token.toLowerCase()}`] = pool2Balances[token]; + } + return retval; +} - return sumTokens(balances, toa, block,) -} - -module.exports={ - doublecounted: true, - methodology: "Counts all beans and current LPs in the silo.", - start: 12974077, - ethereum: { - tvl: async () => ({}), - pool2, - staking, - }, - hallmarks: [ - [1650153600, "Governance proposal hack"], - [1659602715, "Replant"] - ] -}; \ No newline at end of file +module.exports = { + methodology: "Counts the value of deposited Beans and LP tokens in the silo.", + start: 12974077, + ethereum: { + tvl: () => ({}), + pool2, + staking + }, + hallmarks: [ + [1650153600, "Governance Exploit"], + [1659602715, "Replant"] + ] +}; From 6054429b231ce9a5e736f6712334d5275a25cad1 Mon Sep 17 00:00:00 2001 From: harold-awaken <167839386+harold-awaken@users.noreply.github.com> Date: Fri, 31 May 2024 17:37:00 +0800 Subject: [PATCH 1809/2004] Add Awaken (#10448) * Add Awaken * rename folder --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/awaken/index.js | 45 +++++++++++++++++++++++++++++++++++++ projects/helper/chains.json | 1 + 2 files changed, 46 insertions(+) create mode 100644 projects/awaken/index.js diff --git a/projects/awaken/index.js b/projects/awaken/index.js new file mode 100644 index 00000000000..b40ea52d2cc --- /dev/null +++ b/projects/awaken/index.js @@ -0,0 +1,45 @@ +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://dapp.awaken.finance/AElfIndexer_Swap/SwapIndexerSchema/graphql", +}); + +module.exports = { + misrepresentedTokens: true, + methodology: `Counts the tokens locked on AMM pools, pulling the data from the 'AElfIndexer_Swap' subgraph`, + start: 1706745600, + aelf: { + tvl: v2graph("aelf"), + }, +}; diff --git a/projects/helper/chains.json b/projects/helper/chains.json index ad06386d264..95829f49172 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -1,6 +1,7 @@ [ "acala", "ace", + "aelf", "airdao", "alephium", "algorand", From 516a78d83cd2887bae73cbbe2fba1d617daeb50c Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 31 May 2024 11:35:40 +0100 Subject: [PATCH 1810/2004] hashkey adapter CEX (#10451) --- projects/hashkey/index.js | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 projects/hashkey/index.js diff --git a/projects/hashkey/index.js b/projects/hashkey/index.js new file mode 100644 index 00000000000..290412aafc4 --- /dev/null +++ b/projects/hashkey/index.js @@ -0,0 +1,56 @@ +const { cexExports } = require('../helper/cex') + +const config = { + ethereum: { + owners: [ + "0x5569fd6991d1802dbee9bdd67e763fe7be67c7a9", + "0xcBEA7739929cc6A2B4e46A1F6D26841D8d668b9E" + ], + }, + bitcoin: { + owners: [ + "bc1qyvppkaa74d9jvtz664a6uxmj09hf0eyg3uhx4h", + "1DywJMqHHMWuP7xyfkRqJZCEe7GdEKFRcp" + ], + }, + bsc: { + owners: [ + "0x83455d6c365dcbac10855c623da884b552aaefdd", + ], + }, + tron: { + owners: [ + "TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe", + ], + }, + litecoin: { + owners: [ + "ltc1qzjsgswkenmy9v6vm2jvkddeczwfuy9q7rshtxh", + "LXeSRVh6WPan3u5AxEZkvvn1srKnN5BiAm" + ], + }, + optimism: { + owners: [ + "0x5691a157ce38f1b362ab4a686ec7616fb04ba6f1", + "0xC7556Bb9EB188888b1cce25c3587C36Be0809EC4" + ], + }, + arbitrum: { + owners: [ + "0x03248f4759Ef5c4FdDd959aa07a5294e00B03e44", + "0x25a58cee7928b3d6c1d392ebe1a97318aa5ff2f2" + ], + }, + avax: { + owners: [ + "0x9bc72c8bb18d27bad9d0936be5d5e68fe2d37a29", + ], + }, + polygon: { + owners: [ + "0xAa0400E5a90f697230638DbE76D9C49e4aC745B4", + ], + }, +} + +module.exports = cexExports(config) From e35ff17d602cba57d80b8cce5514e8ddf2199986 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 31 May 2024 11:57:36 +0100 Subject: [PATCH 1811/2004] git push origin hashkey-final (#10452) --- projects/hashkey/index.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/projects/hashkey/index.js b/projects/hashkey/index.js index 290412aafc4..5694e7c5e02 100644 --- a/projects/hashkey/index.js +++ b/projects/hashkey/index.js @@ -13,16 +13,6 @@ const config = { "1DywJMqHHMWuP7xyfkRqJZCEe7GdEKFRcp" ], }, - bsc: { - owners: [ - "0x83455d6c365dcbac10855c623da884b552aaefdd", - ], - }, - tron: { - owners: [ - "TJDENsfBJs4RFETt1X1W8wMDc8M5XnJhCe", - ], - }, litecoin: { owners: [ "ltc1qzjsgswkenmy9v6vm2jvkddeczwfuy9q7rshtxh", From 92bc3e5a5a79a5c311e73534be07c0c009f77677 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 31 May 2024 17:46:46 +0500 Subject: [PATCH 1812/2004] Upgrade Clip Finance adapter: Add NileCl vaultType (#10453) * Add NileCl vaultType * fix typo --- projects/clip-finance/index.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/clip-finance/index.js b/projects/clip-finance/index.js index 618798dd484..f52cb9124cc 100644 --- a/projects/clip-finance/index.js +++ b/projects/clip-finance/index.js @@ -18,15 +18,18 @@ const VaultType = { MendiLending: 3, Aero: 4, LynexAlgebra: 5, + NileCl: 6, }; const typesDataInterfaces = { any: ["uint256"], // has only vaultType + amm: ["uint256", "address"], // vaultType, amm pool address [VaultType.PancakeV3]: ["uint256", "address"], // vaultType, v3 pool address [VaultType.Stargate]: ["uint256"], // vaultType [VaultType.MendiLending]: ["uint256", "address"], //vaultType, mendiLeverage 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 }; const tvl = async (api) => { @@ -38,14 +41,16 @@ const tvl = async (api) => { const vaults = vaultDatas.map((i) => ({ ...i, vaultType: decoder.decode(typesDataInterfaces.any, i.data) })); //ammVaults - const appTypes = [VaultType.PancakeV3, VaultType.LynexAlgebra]; - const ammVaults = vaults.filter((i) => appTypes.includes(Number(i.vaultType.toString()))).map((i) => i.vault); + const ammTypes = [VaultType.PancakeV3, VaultType.LynexAlgebra, VaultType.NileCl]; + const ammVaults = vaults.filter((i) => ammTypes.includes(Number(i.vaultType.toString()))).map((i) => i.vault); const ammPools = vaults - .filter((i) => appTypes.includes(Number(i.vaultType.toString()))) - .map((i) => "0x" + i.data.slice(-40)); + .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); From f13300d190b2b01a5fad773c212d7a37adfa18bc Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Fri, 31 May 2024 16:50:25 +0400 Subject: [PATCH 1813/2004] Added blast, removed unnecessary bits, fixed mistakes --- projects/hinkal/beefyTokens.js | 231 ------------ projects/hinkal/gaugeTokens.js | 250 ------------- projects/hinkal/hinkalUtils.js | 32 +- projects/hinkal/index.js | 34 +- projects/hinkal/owners.js | 6 + projects/hinkal/pendleTokens.js | 108 ------ projects/hinkal/registryTokens.js | 590 ++++++++++++++++++++++++++++-- projects/hinkal/relayerUrls.js | 1 + 8 files changed, 604 insertions(+), 648 deletions(-) delete mode 100644 projects/hinkal/beefyTokens.js delete mode 100644 projects/hinkal/gaugeTokens.js delete mode 100644 projects/hinkal/pendleTokens.js diff --git a/projects/hinkal/beefyTokens.js b/projects/hinkal/beefyTokens.js deleted file mode 100644 index 5ebae68f131..00000000000 --- a/projects/hinkal/beefyTokens.js +++ /dev/null @@ -1,231 +0,0 @@ -const ETHEREUM_BEEFY_TOKENS = [ - "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", -]; - -const ARBITRUM_BEEFY_TOKENS = [ - "0xB27c433C1cdb1B42E2601Af2d40dD442fbf1cdc3", - "0x30dF229cefa463e991e29D42DB0bae2e122B2AC7", - "0x9dbbBaecACEDf53d5Caa295b8293c1def2055Adc", - "0x8e0B8c8BB9db49a46697F3a5Bb8A308e744821D2", - "0x755D6688AD74661Add2FB29212ef9153D40fcA46", - "0x07Db98358D58Ba9bE90cd0A18cd86AF807ac3B4E", - "0x71c15610F11D669d4A9e02a64e43c6D1E27c6Cad", - "0xBDF4e730ED5152a7AC646BB7b514Ed624E1147C4", - "0xf6a1284Dc2ce247Bca885ac4F36b37E91d3bD032", - "0x994Ff2ab544D00aD4EC0380a1Be8F75f4EC47Cf9", - "0x46034C63ad03254D6E96c655e82393E6C31E07C3", - "0xD496eA90a454eA49e30A8fD9E053C186D4FC897D", - "0xd37025aC6227334C7762AeD5929Ce3272fbb6fdC", - "0xFCb0101503f399B4752E5160ccd5EcE3a71719bd", - "0xa7fC98760331409c1FC0177dECF083cE9d5aed87", - "0x5A8beF2fEb83057bBCcC81cea985a94a62A86208", - "0x5B904f19fb9ccf493b623e5c8cE91603665788b0", - "0xA98070C4a600678a93cEaF4bF629eE255F46f64F", - "0x0594Ec32240C78e056304b4A60f48a67c69179b4", - "0xB2DefC5c3A69abe2B681C714b080A892825B2073", - "0x4D323f77c32EDdC62BF8eAbA11E5C573FD0a2ccd", - "0xeD29730F9FF29ea50D63462D8EC84307d36b8954", - "0x12c997FAdca32dB01E3145DE7Bf9cdB06455391D", - "0x85B10228cd93A6e5E354Ff0f2c60875E8E62F65A", - "0xCF297A94d527A34081Db2A20Eb1c87248cD1ea81", - "0xa0d758b81f8ed6635CDE1DA91C8fe1bD48C28A09", - "0x5892bA611fdC1598b72a30D087d28c989d429eF7", -]; - -const OPTIMISM_BEEFY_TOKENS = [ - "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", - "0x642F04eCAa00D443fBf2de2AaC9A9e0ACfA4FCE7", - "0xdD84190aF336Ee2831eea88B6783958e8F269de9", - "0xB708038C1b4cF9f91CcB918DAD1B9fD757ADa5C1", - "0x81F2F132465Ffb4B3C5d11f3d94582cC5c281c04", - "0x613f54c8836FD2C09B910869AC9d4de5e49Db1d8", - "0x79149B500f0d796aA7f85e0170d16C7e79BAd3C5", - "0x92651E1bBfE0f8423119AfC4B0610C747Fa125a1", -]; - -const POLYGON_BEEFY_TOKENS = [ - "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", - "0x8AAc0f2a6cAE626b656Ca16c58A50C87CBBC7ff5", - "0x964eA598DF006F692105A951a774ff9825a454Fe", - "0x4ec61a96738564CaD591841df0c8B5b6eA785E4C", - "0x4252Da0559960a50FDd50D5bDDe1B78659B7Ea2A", - "0x3325a25A2608EA723cB5D72E27af65AACFfb810e", - "0xb759b56d82C88806bbcBcD60767E39Af5cc51F32", - "0x2C6d11e756986f1537a2c71c851e9a1F7A0008b2", - "0xD74B5df80347cE9c81b91864DF6a50FfAfE44aa5", - "0x5268F5F2a9799f747A55f193d2E266c77653E518", - "0x67FEe70c32097c53B5aeAaCdbee7544eaE2194f8", - "0x0fC4f2DB534Bf7525710DBf64B7081e1a3A6428f", - "0x40c03Cd0B5D1571608D09e6279B4C63660e431F1", - "0xD97FA4474084350D2c96285E1Fca07A9D515c800", - "0xAb4E02911A7d09BC8300F39332F087d51c183038", - "0x8D0663d2d738e6078Bb77589dE4231eD9fcFd014", - "0xec74671f95F0942358016da627b912143100DAF2", - "0xFe2f5e215C0Fe9b5D4fF99cA7cBB5F5a77f5C515", -]; - -const AVALANCHE_BEEFY_TOKENS = [ - "0x79F26046D122d2F26B1D37237D5C056fB580447A", - "0x7E5bC7088aB3Da3e7fa1Aa7ceF1dC73F5B00681c", - "0xe1a8EeA58D63Ea64d00365531D266C2AD1f62FC4", - "0x22EafB9C7E2858cfDA712940896464DdAA83d053", - "0x68866acc5C940938B373F55F7009f824c7662F5B", - "0xf3340EdF16563D52C7E7C576F2fCC8f3D52464aB", - "0x595786A3848B1de66C6056C87BA91977935fBC46", - "0xA27BF4d56870A37e37a687B8ab3740d8487Ee2C6", - "0xFeA7976733f47557860f4483f2147a3e99C76b58", - "0x3D81A269E05e6057e4dF9E2D76E254E65a65Eb66", - "0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b", - "0x3C2131A02659343d68c211aAa686750bE37d88c4", - "0x813aB5B3FDc59B143C42284665864b24B794C324", -]; - -const BNB_BEEFY_TOKENS = [ - "0x31e77776b924Cd5f0E624771C9B3d2bD6B9c919E", - "0x4a9945B75E5c860f511CD223E838b213828a0583", - "0x684d86518e6E7d622d24854cBb1C179d6C0E3f75", - "0x62ef49280c0f155afd374fC5Efd1F06318648700", - "0x1542885D6EeD4EE3AC1a110d3f159003a0774101", - "0x6eb020663898c72F8E25958F5f7bcDC732279201", - "0xe47E724c0b4EE9fbC16097AC103b97dc6642fd18", - "0x9A10Cc2024744681fBce1F93Aeee3fd7863B1A12", - "0xD411121C948Cff739857513E1ADF25ED448623f8", - "0x56ec6031dC969CfA035F6D65e65D8595d5660fB4", - "0xC34Ae91312A3c3F9420691922040a5DEe1698E52", - "0xc1fcf50ccaCd1583BD9d3b41657056878C94e592", - "0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE", - "0x33D0F945F77660F4A9e56949500265313f6D08fb", - "0x86b481fCe116DCd01fBeBb963f1358bcc466668C", - "0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc", - "0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0", - "0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA", - "0x960eE6caC56912D94cE5c83D7Fb0CD873b5c5099", - "0x72fC82b9955f04b20166b0Da7e1af4f893F6316a", - "0xe0Af98A11DB57c7282c1f6066d116E13F02BF0E9", - "0x836C6BffB0B08aCa20b9380330D2532A51aA0eAD", - "0x93DB73f79D4fdc5be42C0bd2812e94A271aDC7e2", - "0x5D83D13Fa899451b75f7c465C0A2590Bb3f9067f", - "0x3b3bc8AE6dcAcCeaaC3C19E196ebD3341Cfe9c4e", -]; - -const BASE_BEEFY_TOKENS = [ - "0xbE3F14312B08E9c6AEe6AeB27B37c08B661A7F83", - "0x5A47993216fa6ACaf93418f9830cee485e82d0ba", - "0xd0c3E7f86338403Df99DEa1996f6C9Ed8f9D3d07", - "0xB614A6E6c21202De79DceB95AE2dd4817DD7e14b", - "0xB62F13126fCD0dD49dE8fF811406554197Bd0E11", - "0x507094549509Efdf63ecA34B795094065cB04008", - "0x8bd6dF821513aECDbbaa29C1d5212b43fdCe7819", - "0x98bEAa72230788572e3e3Be58D91C232dda315d4", - "0x74251C0d0B74Fba6e3B3EDe8533D9Da82B4EC4a4", - "0xc005B9833deBcF5fe6cc5bC9ba4fD74Bb382ae55", - "0xC3a5b142a144135D900FC5Ef2Bb7E92a3bcB46F1", - "0x09139A80454609B69700836a9eE12Db4b5DBB15f", - "0x4Fc0E7cDfe0CF92762eaf3CEE9133239A2197391", - "0x06a613d3a056d4b04D7523C11d82c67Bebf9d850", - "0xFB6864F1c14A90E85398B853701B01ef6a0CA3E5", -]; - -const beefyTokensByChain = { - ethereum: ETHEREUM_BEEFY_TOKENS, - arbitrum: ARBITRUM_BEEFY_TOKENS, - optimism: OPTIMISM_BEEFY_TOKENS, - polygon: POLYGON_BEEFY_TOKENS, - avax: AVALANCHE_BEEFY_TOKENS, - bsc: BNB_BEEFY_TOKENS, - base: BASE_BEEFY_TOKENS, -}; - -module.exports = beefyTokensByChain; diff --git a/projects/hinkal/gaugeTokens.js b/projects/hinkal/gaugeTokens.js deleted file mode 100644 index 000ae01d80d..00000000000 --- a/projects/hinkal/gaugeTokens.js +++ /dev/null @@ -1,250 +0,0 @@ -const ETHEREUM_GAUGE_TOKENS = [ - { - erc20TokenAddress: "0x93ce650b8d3a7a7e44121db82a0429a3884db599", - underlyingErc20TokenAddress: "0xbFcF63294aD7105dEa65aA58F8AE5BE2D9d0952A", - }, - { - erc20TokenAddress: "0xE49127B7AEfc043847caDd85B8a41973854D30f5", - underlyingErc20TokenAddress: "0x8dff75976f22db58d7c3fd7b68d782238b0dbe30", - }, - { - erc20TokenAddress: "0x8A31A94bF0926B82083C80E18B331085B84E92D7", - underlyingErc20TokenAddress: "0x689440f2Ff927E1f24c72F1087E1FAF471eCe1c8", - }, - { - erc20TokenAddress: "0xcc26a5246c6a04a85e997d6581c1b4f14363841a", - underlyingErc20TokenAddress: "0xcfc25170633581bf896cb6cdee170e3e3aa59503", - }, - { - erc20TokenAddress: "0x9a7Ce41c96Db8d792497D7BEe70fAfb7F8393D71", - underlyingErc20TokenAddress: "0x7e880867363A7e321f5d260Cade2B0Bb2F717B02", - }, - { - erc20TokenAddress: "0xd4EC67cF6C0Aa65F74eb7F03216Ea23151af21b8", - underlyingErc20TokenAddress: "0x2932a86df44fe8d2a706d8e9c5d51c24883423f5", - }, - { - erc20TokenAddress: "0x4F1546Ce825dB85310aC2c2cfb369543d73FD0a2", - underlyingErc20TokenAddress: "0xbD5445402B0a287cbC77cb67B2a52e2FC635dce4", - }, - { - erc20TokenAddress: "0x394Aa83d0E5D348c7FA39325d2A25993704Faf8f", - underlyingErc20TokenAddress: "0xfb860600f1be1f1c72a89b2ef5caf345aff7d39d", - }, - { - erc20TokenAddress: "0xD1105d6502d3c562B447A75149B00aD366b3212d", - underlyingErc20TokenAddress: "0x6991C1CD588c4e6f6f1de3A0bac5B8BbAb7aAF6d", - }, - { - erc20TokenAddress: "0xE08FF1427b199241506FcdCC23fcc24Dd98a4FA9", - underlyingErc20TokenAddress: "0xDeFd8FdD20e0f34115C7018CCfb655796F6B2168", - }, - { - erc20TokenAddress: "0xC21545c26661ae74b3259B55aE007ACC4Bf5d4e3", - underlyingErc20TokenAddress: "0x9D5C5E364D81DaB193b72db9E9BE9D8ee669B652", - }, - { - erc20TokenAddress: "0xa0Cd8B83B63381895C1854A605315fa7eF50e026", - underlyingErc20TokenAddress: "0x512a68dd5433563bad526c8c2838c39debc9a756", - }, - { - erc20TokenAddress: "0x25aE9BE521898d33c7DF6Ae8c6669Fe038Bb3550", - underlyingErc20TokenAddress: "0xecad6745058377744c09747b2715c0170b5699e5", - }, - { - erc20TokenAddress: "0x9434722bf29750B44649eb1b1A10a335d40edFc1", - underlyingErc20TokenAddress: "0x27cace18f661161661683bba43933b2e6eb1741e", - }, - { - erc20TokenAddress: "0xF2280cBa8e0B9bc9b87b5aFbBeF8C41C20a5ddBe", - underlyingErc20TokenAddress: "0xbe266d68ce3ddfab366bb866f4353b6fc42ba43c", - }, - { - erc20TokenAddress: "0x5F1894e4b409D7199Ea209b9e43C996640BCB691", - underlyingErc20TokenAddress: "0x8605dc0c339a2e7e85eea043bd29d42da2c6d784", - }, - { - erc20TokenAddress: "0xa653510227752632ebf692a77e5032d4afFaB3a2", - underlyingErc20TokenAddress: "0xC94208D230EEdC4cDC4F80141E21aA485A515660", - }, - { - erc20TokenAddress: "0xA1998B87C2935BDbd7fE6ee48542a59a0435a3Ee", - underlyingErc20TokenAddress: "0x245Ec0d447e7f206B43120Ac292dED5E8bB9fe61", - }, - { - erc20TokenAddress: "0xC8c3031fB628Bdf4eA0F7cA5F96E369Dea07624e", - underlyingErc20TokenAddress: "0x0404d05F3992347d2f0dC3a97bdd147D77C85c1c", - }, - { - erc20TokenAddress: "0xDc118133332f703e22C0b0FA7E0DD7d1299A7247", - underlyingErc20TokenAddress: "0xB468dB2E478885B87D7ce0C8DA1D4373A756C138", - }, - { - erc20TokenAddress: "0xC6fDF0921c480Bd7Af89Ab4461D4aCDA24058a65", - underlyingErc20TokenAddress: "0xAE0bFfc3110e69DA8993F11C1CBd9a6eA3d16daF", - }, - { - erc20TokenAddress: "0x6410ee1f8417a7cE1c3E68E3434c1d6beef6944E", - underlyingErc20TokenAddress: "0x277d1424a84b35ec0a8108482551b00b4fc1539b", - }, - { - erc20TokenAddress: "0x9456cB3ae9fA8788ac1af4a7A18b339D4028061D", - underlyingErc20TokenAddress: "0xc2fe9d3c761994897594df63b33b6d843ab7b1cf", - }, - { - erc20TokenAddress: "0x26dA2546602f63b84B3C4dF36476364f6350706E", - underlyingErc20TokenAddress: "0x0e83df148f69965bfe752250835854b0dbeeaf01", - }, - { - erc20TokenAddress: "0x0a3fE1d39E5c60CfdB48Ba2Dc6B7c855289Dec7C", - underlyingErc20TokenAddress: "0x35ad1acf0c4be5d4ba11342128d440fdb9e189eb", - }, - { - erc20TokenAddress: "0xA27fa5E11B121277423aC0b8b372596f2805e36a", - underlyingErc20TokenAddress: "0xe2c422d954db416a69fb29137fe552cce0e160e9", - }, - { - erc20TokenAddress: "0x41e5c3aD70DA89dd7b6AF9Af3cd6861FbC31eA16", - underlyingErc20TokenAddress: "0x621ef98282ac42d2bf4c20fc73912a16599e12fb", - }, -]; - -const ARBITRUM_GAUGE_TOKENS = [ - { - erc20TokenAddress: "0xC3691c157D1B3A431B841230a7B11d5a373097e1", - underlyingErc20TokenAddress: "0xce5f24b7a95e9cba7df4b54e911b4a3dc8cdaf6f", - }, - { - erc20TokenAddress: "0x7Bdc233E5369Ac023b9894645902C9032A72D9Ee", - underlyingErc20TokenAddress: "0x971E732B5c91A59AEa8aa5B0c763E6d648362CF8", - }, - { - erc20TokenAddress: "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", - underlyingErc20TokenAddress: "0xf2ddf89c04d702369ab9ef8399edb99a76e951ce", - }, - { - erc20TokenAddress: "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", - underlyingErc20TokenAddress: "0x098ef55011b6b8c99845128114a9d9159777d697", - }, - { - erc20TokenAddress: "0x59eC3043D7314B9650294Fd800149b53007f804E", - underlyingErc20TokenAddress: "0x95285ea6ff14f80a2fd3989a6bab993bd6b5fa13", - }, - { - erc20TokenAddress: "0x972c6F2b29638b9AD6955c4F0b0c1239b034f053", - underlyingErc20TokenAddress: "0x93729702Bf9E1687Ae2124e191B8fFbcC0C8A0B0", - }, - { - erc20TokenAddress: "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", - underlyingErc20TokenAddress: "0xd6dacdcb438f048cf90e53415872cdb3fcc95421", - }, - { - erc20TokenAddress: "0x886867993080DC3bBFC39CDfc343A0e083bB34E0", - underlyingErc20TokenAddress: "0x6B7B84F6EC1c019aF08C7A2F34D3C10cCB8A8eA6", - }, - { - erc20TokenAddress: "0xB72ea6F99EfA5BD6Fb400BaA4eFddC3cfB075215", - underlyingErc20TokenAddress: "0xc2b1df84112619d190193e48148000e3990bf627", - }, - { - erc20TokenAddress: "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed", - underlyingErc20TokenAddress: "0x7c0ac20c3ca8c6257ea099131081d8199bf6b8f6", - }, -]; - -const OPTIMISM_GAUGE_TOKENS = [ - { - erc20TokenAddress: "0x29c431806E536Fb22ce2Edc8dd6e3C3A0d5689a8", - underlyingErc20TokenAddress: "0xc5ae4b5f86332e70f3205a8151ee9ed9f71e0797", - }, - { - erc20TokenAddress: "0xDaA24E888432b5aa607105e256919Ddfc8b327E9", - underlyingErc20TokenAddress: "0xd53ccbfed6577d8dc82987e766e75e3cb73a8563", - }, - { - erc20TokenAddress: "0xC3691c157D1B3A431B841230a7B11d5a373097e1", - underlyingErc20TokenAddress: "0x15f52286c0ff1d7a7ddbc9e300dd66628d46d4e6", - }, - { - erc20TokenAddress: "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", - underlyingErc20TokenAddress: "0x172a5af37f69c69cc59e748d090a70615830a5dd", - }, - { - erc20TokenAddress: "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", - underlyingErc20TokenAddress: "0xcb8883d1d8c560003489df43b30612aabb8013bb", - }, - { - erc20TokenAddress: "0x59eC3043D7314B9650294Fd800149b53007f804E", - underlyingErc20TokenAddress: "0x2eb49a3eff789d7b2286bf17667acbf12d882c17", - }, - { - erc20TokenAddress: "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", - underlyingErc20TokenAddress: "0xcea806562b757aeffa9fe9d0a03c909b4a204254", - }, -]; - -const POLYGON_GAUGE_TOKENS = [ - { - erc20TokenAddress: "0x9dc8Ee4264923D44F2a33Ea139FC4143C288b172", - underlyingErc20TokenAddress: "0x0e2f214b8f5d0cca011a8298bb907fb62f535160", - }, - { - erc20TokenAddress: "0x1057a796C66ca87EC1e6494f5486006396756083", - underlyingErc20TokenAddress: "0x835cA119fA28515B1F184A5Ce5Ccda2B5b0d9F6D", - }, - { - erc20TokenAddress: "0x350c331F4e5fD9d5D703424F3F14CcC0280B6629", - underlyingErc20TokenAddress: "0x40371aad2a24ed841316ef30938881440fd4426c", - }, - { - erc20TokenAddress: "0xf742B69Bd460F14EB5d8335e06954eba694B552E", - underlyingErc20TokenAddress: "0xA9249f8667cb120F065D9dA1dCb37AD28E1E8FF0", - }, - { - erc20TokenAddress: "0xc44F1103A271BEFF26bB245D760bFbe182CCf121", - underlyingErc20TokenAddress: "0x8b397084699cc64e429f610f81fac13bf061ef55", - }, - { - erc20TokenAddress: "0x195888B86db69C52b54362DB2D71c2d3e411A0bA", - underlyingErc20TokenAddress: "0xc501491b0e4A73B2eFBaC564a412a927D2fc83dD", - }, - { - erc20TokenAddress: "0x22301937028310Cef6530eF3C3Bfe14581eb679F", - underlyingErc20TokenAddress: "0xfc052e70eb6d94afe464a8ce8f43d203109494f2", - }, - { - erc20TokenAddress: "0x90F06727Ba5016eDcf9D8B5def63a5849EcD132f", - underlyingErc20TokenAddress: "0x9633e0749faa6ec6d992265368b88698d6a93ac0", - }, -]; - -const AVALANCHE_GAUGE_TOKENS = []; - -const BNB_GAUGE_TOKENS = []; - -const BASE_GAUGE_TOKENS = [ - { - erc20TokenAddress: "0x3b9860321f03AFe02D3FF9e4Fdd4017DC6F4d7Ca", - underlyingErc20TokenAddress: "0x79edc58C471Acf2244B8f93d6f425fD06A439407", - }, - { - erc20TokenAddress: "0x1f0dbEcDA414F401dB46464864273CaD19368706", - underlyingErc20TokenAddress: "0x93933FA992927284e9d508339153B31eb871e1f4", - }, - { - erc20TokenAddress: "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96", - underlyingErc20TokenAddress: "0x89289DC2192914a9F0674f1E9A17C56456549b8A", - }, -]; - -const gaugeTokensByChain = { - ethereum: ETHEREUM_GAUGE_TOKENS, - arbitrum: ARBITRUM_GAUGE_TOKENS, - optimism: OPTIMISM_GAUGE_TOKENS, - polygon: POLYGON_GAUGE_TOKENS, - avax: AVALANCHE_GAUGE_TOKENS, - bsc: BNB_GAUGE_TOKENS, - base: BASE_GAUGE_TOKENS, -}; - -module.exports = gaugeTokensByChain; diff --git a/projects/hinkal/hinkalUtils.js b/projects/hinkal/hinkalUtils.js index 72c46e51e3d..01739c1f620 100644 --- a/projects/hinkal/hinkalUtils.js +++ b/projects/hinkal/hinkalUtils.js @@ -6,11 +6,25 @@ const ownerByChain = require("./owners.js"); const nullAddress = "0x0000000000000000000000000000000000000000"; +const nativeVolatileChains = ["blast"]; + const getAllTokenBalances = async (tokenList, chain) => { - const balanceCalls = tokenList.map((token) => ({ + let balanceCalls = tokenList.map((token) => ({ target: token, - params: ownerByChain[chain], + 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, @@ -46,11 +60,11 @@ const getAllTokenBalances = async (tokenList, chain) => { }; }); - //Add Native token balance. - const nativeTokenBalance = ( await sdk.api.eth.getBalance({ - target: ownerByChain[chain], + target: nativeVolatileChains.includes(chain) + ? ownerByChain[chain].volatileOwner ?? "" + : ownerByChain[chain], chain, }) ).output; @@ -62,6 +76,7 @@ const getAllTokenBalances = async (tokenList, chain) => { return tokenBalances.filter((tokenBal) => Number(tokenBal.balance) > 0); }; + const fetchTotalValue = async (tokenBalances, chainName) => { const tokenAddresses = tokenBalances.map((token) => token.address); const prices = ( @@ -76,7 +91,7 @@ const fetchTotalValue = async (tokenBalances, chainName) => { if (!price || !tokenBalance || isNaN(price) || isNaN(tokenBalance)) { console.log("Some error occured for token", { token: token.address, - bakance: tokenBalance, + balance: tokenBalance, price, chainName, }); @@ -93,4 +108,7 @@ const fetchTotalValue = async (tokenBalances, chainName) => { return total.filter((token) => token && token.tokenBalance > 0); }; -module.exports = { getAllTokenBalances, fetchTotalValue }; +module.exports = { + getAllTokenBalances, + fetchTotalValue, +}; diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js index 13e68f8741b..19bf0c387f7 100644 --- a/projects/hinkal/index.js +++ b/projects/hinkal/index.js @@ -1,39 +1,14 @@ const registryTokensByChain = require("./registryTokens.js"); -const gaugeTokensByChain = require("./gaugeTokens.js"); -const beefyTokensByChain = require("./beefyTokens.js"); -const pendleTokensByChain = require("./pendleTokens.js"); const { getAllTokenBalances, fetchTotalValue } = require("./hinkalUtils.js"); const { toUSDTBalances } = require("../helper/balances.js"); -const getRegularTokens = (chain) => { - return [ - registryTokensByChain[chain], - pendleTokensByChain[chain]?.pt, - pendleTokensByChain[chain]?.sy, - beefyTokensByChain[chain], - ].flat(); -}; - -const getTokensWithUnderlyingAddresses = (chain) => { - return [gaugeTokensByChain[chain], pendleTokensByChain[chain]?.yt].flat(); -}; - const tvl = async (_, _1, _2, { chain }) => { - const regularTokens = getRegularTokens(chain); - const tokensWithUnderlyingAddresses = getTokensWithUnderlyingAddresses(chain); - - const regularTokenBalances = await getAllTokenBalances(regularTokens, chain); - - const tokensWithUnderlyingAddressesBalances = await getAllTokenBalances( - tokensWithUnderlyingAddresses.map((token) => token.erc20TokenAddress), + const tokenBalances = await getAllTokenBalances( + registryTokensByChain[chain], chain ); - const allTokenBalances = [ - ...regularTokenBalances, - ...tokensWithUnderlyingAddressesBalances, - ]; - const totalValue = await fetchTotalValue(allTokenBalances, chain); + const totalValue = await fetchTotalValue(tokenBalances, chain); return toUSDTBalances( totalValue.reduce((acc, token) => acc + token.tokenBalance, 0) @@ -62,4 +37,7 @@ module.exports = { bsc: { tvl, }, + blast: { + tvl, + }, }; diff --git a/projects/hinkal/owners.js b/projects/hinkal/owners.js index cfe9d74c9e8..893c5de86d2 100644 --- a/projects/hinkal/owners.js +++ b/projects/hinkal/owners.js @@ -5,6 +5,8 @@ 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, @@ -14,6 +16,10 @@ const ownerByChain = { 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/pendleTokens.js b/projects/hinkal/pendleTokens.js deleted file mode 100644 index b3287bb2846..00000000000 --- a/projects/hinkal/pendleTokens.js +++ /dev/null @@ -1,108 +0,0 @@ -const ETHEREUM_YT_TOKENS = [ - { - erc20TokenAddress: "0x019e773bE2D65D5fE30bE17547b89500C7C4CD5E", - underlyingErc20TokenAddress: "0xfb35Fd0095dD1096b1Ca49AD44d8C5812A201677", - }, - { - erc20TokenAddress: "0x1346da36093Fdb8013E1125046f0dCBbBF645b3F", - underlyingErc20TokenAddress: "0x0ED3A1D45DfdCf85BCc6C7BAFDC0170A357B974C", - }, - { - erc20TokenAddress: "0x4E0854085bC5a2fa8031ea5819863BD280e610F3", - underlyingErc20TokenAddress: "0x391B570e81e354a85a496952b66ADc831715f54f", - }, - { - erc20TokenAddress: "0x9Ab43f73054C07b02e02c5468b3eB058ccdAA019", - underlyingErc20TokenAddress: "0x98601E27d41ccff643da9d981dc708cf9eF1F150", - }, - { - erc20TokenAddress: "0x223026549740E2672b3f05c867Fd2B31207338A2", - underlyingErc20TokenAddress: "0x7C2D26182adeEf96976035986cF56474feC03bDa", - }, - { - erc20TokenAddress: "0x3e0A917d4d914e432B82825e6FBEe039b89f4477", - underlyingErc20TokenAddress: "0x029aad400f6092dc735a65be95102efcc2fe64bf", - }, -]; - -const ETHEREUM_PT_TOKENS = [ - "0xc69Ad9baB1dEE23F4605a82b3354F8E40d1E5966", - "0x094be6bd31d7b860f7d2c1f280fd09f0463d7e67", - "0x4AE5411F3863CdB640309e84CEDf4B08B8b33FfF", - "0xDDFD5e912C1949B4bDb12579002c44B7A83F9E88", - "0xC58aa33Ce619c7f7Ac4929DF357D0Ef762edbD23", - "0xB05cABCd99cf9a73b19805edefC5f67CA5d1895E", -]; - -const ETHEREUM_SY_TOKENS = [ - "0xAC0047886a985071476a1186bE89222659970d65", - "0x730A5E2AcEbccAA5e9095723B3CB862739DA793c", - "0x253008ba4aE2f3E6488DC998a5321D4EB1a0c905", - "0x7a493be5c2ce014cd049bf178a1ac0db1b434744", - "0xD7DF7E085214743530afF339aFC420c7c720BFa7", - "0x34349c5569e7b846c3558961552d2202760a9789", -]; - -const ARBITRUM_YT_TOKENS = []; -const ARBITRUM_PT_TOKENS = []; -const ARBITRUM_SY_TOKENS = []; - -const OPTIMISM_YT_TOKENS = []; -const OPTIMISM_PT_TOKENS = []; -const OPTIMISM_SY_TOKENS = []; - -const POLYGON_YT_TOKENS = []; -const POLYGON_PT_TOKENS = []; -const POLYGON_SY_TOKENS = []; - -const AVALANCE_YT_TOKENS = []; -const AVALANCE_PT_TOKENS = []; -const AVALANCE_SY_TOKENS = []; - -const BNB_YT_TOKENS = []; -const BNB_PT_TOKENS = []; -const BNB_SY_TOKENS = []; - -const BASE_YT_TOKENS = []; -const BASE_PT_TOKENS = []; -const BASE_SY_TOKENS = []; - -const pendleTokensByChain = { - ethereum: { - yt: ETHEREUM_YT_TOKENS, - pt: ETHEREUM_PT_TOKENS, - sy: ETHEREUM_SY_TOKENS, - }, - arbitrum: { - yt: ARBITRUM_YT_TOKENS, - pt: ARBITRUM_PT_TOKENS, - sy: ARBITRUM_SY_TOKENS, - }, - optimism: { - yt: OPTIMISM_YT_TOKENS, - pt: OPTIMISM_PT_TOKENS, - sy: OPTIMISM_SY_TOKENS, - }, - polygon: { - yt: POLYGON_YT_TOKENS, - pt: POLYGON_PT_TOKENS, - sy: POLYGON_SY_TOKENS, - }, - avax: { - yt: AVALANCE_YT_TOKENS, - pt: AVALANCE_PT_TOKENS, - sy: AVALANCE_SY_TOKENS, - }, - bsc: { - yt: BNB_YT_TOKENS, - pt: BNB_PT_TOKENS, - sy: BNB_SY_TOKENS, - }, - base: { - yt: BASE_YT_TOKENS, - pt: BASE_PT_TOKENS, - sy: BASE_SY_TOKENS, - }, -}; - -module.exports = pendleTokensByChain; diff --git a/projects/hinkal/registryTokens.js b/projects/hinkal/registryTokens.js index 50535f196db..8ea8f5f0275 100644 --- a/projects/hinkal/registryTokens.js +++ b/projects/hinkal/registryTokens.js @@ -1,7 +1,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", "0x6B175474E89094C44Da98b954EedeAC495271d0F", "0x8E870D67F660D95d5be530380D0eC0bd388289E1", @@ -13,6 +13,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", "0xf43211935C781D5ca1a41d2041F397B8A7366C7A", + "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", "0xD533a949740bb3306d119CC777fa900bA034cd52", "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", @@ -20,10 +21,25 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xC25a3A3b969415c80451098fa907EC722572917F", "0xb2C35aC676F4A002669e195CF4dc50DDeDF6F0fA", "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", + "0xA3D87FffcE63B53E0d54fAa1cc983B7eB0b74A9c", + "0xFCc5c47bE19d06BF83eB04298b026F81069ff65b", + "0x99f5aCc8EC2Da2BC0771c32814EFF52b712de1E5", + "0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6", + "0x051d7e5609917Bd9b73f04BAc0DED8Dd46a74301", + "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "0x5E8422345238F34275888049021821E8E08CAa1f", "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", + "0x865377367054516e17014CcdED1e7d814EDC9ce4", + "0x3A283D9c08E8b55966afb64C515f5143cf907611", + "0x06325440D014e39736583c165C2963BA99fAf14E", + "0x4d9f9D15101EEC665F77210cB999639f760F831E", + "0xae78736Cd615f374D3085123A210448E74Fc6393", + "0x6c38cE8984a890F5e46e6dF6117C26b3F1EcfC9C", + "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", "0x971add32Ea87f10bD192671630be3BE8A11b8623", - "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", "0x0000000000085d4780B73119b644AE5ecd22b376", + "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", + "0xb40b6608B2743E691C9B54DdBDEe7bf03cd79f1c", "0x68934F60758243eafAf4D2cFeD27BF8010bede3a", "0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6", "0xdf55670e27bE5cDE7228dD0A6849181891c9ebA1", @@ -40,23 +56,35 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6", "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", "0xb79565c01b7Ae53618d9B847b9443aAf4f9011e7", + "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", + "0x29059568bB40344487d62f7450E78b8E6C74e0e5", + "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "0x5b6C539b224014A09B3388e51CaAA8e354c959C8", + "0xd7C9F0e536dC865Ae858b0C0453Fe76D13c3bEAc", + "0x326290A1B0004eeE78fa6ED4F1d8f4b2523ab669", + "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab", + "0xc9C32cd16Bf7eFB85Ff14e0c8603cc90F6F2eE49", + "0x836A808d4828586A69364065A1e064609F5078c7", + "0x43b4FdFD4Ff969587185cDB6f0BD875c5Fc83f8c", + "0x21E27a5E5513D6e65C4f830167390997aA84843a", + "0xdB25f211AB05b1c97D595516F45794528a807ad8", + "0x3D229E1B4faab62F621eF2F6A610961f7BD7b23B", "0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3", + "0x94B17476A93b3262d87B9a326965D1E91f9c13E7", + "0xF95AAa7EBB1620e46221B73588502960Ef63dBa0", + "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "0xa2E3356610840701BDf5611a53974510Ae27E2e1", "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", "0x39AA39c021dfbaE8faC545936693aC917d5E7563", "0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2", "0x0316EB71485b0Ab14103307bf65a021042c6d380", - "0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab", + "0xb19059ebb43466C323583928285a49f558E572Fd", "0x8e595470Ed749b85C6F7669de83EAe304C2ec68F", - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "0x514910771AF9Ca656af840dff83E8264EcF986CA", - "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", - "0x2ba592F78dB6436527729929AAf6c908497cB200", - "0xE41d2489571d322189246DaFA5ebDe1F4699F498", - "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", - "0x8E870D67F660D95d5be530380D0eC0bd388289E1", - "0x5BC25f649fc4e26069dDF4cF4010F9f706c23831", + "0x76Eb2FE28b36B3ee97F3Adae0C69606eeDB2A37c", + "0x48759F220ED983dB51fA7A8C0D2AAb8f3ce4166a", + "0x5282a4eF67D9C33135340fB3289cc1711c13638C", "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", + "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D", "0x49849C98ae39Fff122806C06791Fa73784FB3675", "0xA0d69E286B938e21CBf7E51D71F6A4c8918f482F", "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", @@ -89,6 +117,10 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x49b562bDcd28dB124f6bA51DEB8Ca483563c067a", "0xBE2bD093B8F342e060E79Fad6059B1057F016Ba4", "0x3fe43D4ba0a5BAcC800c7E7E782466a27ab108bf", + "0x4dd0cF20237deb5F2bE76340838B9e2D7c70E852", + "0xE0d5f9DA3613C047003b77cAa31270aBE3EdA6b0", + "0xB9911AB699FD781efDA446e7FD995d375B437c8B", + "0x37925b6319cD41014583A6476a7a1d52Ea404b2f", "0xAE0bFfc3110e69DA8993F11C1CBd9a6eA3d16daF", "0x42ED016F826165C2e5976fe5bC3df540C5aD0Af7", "0x1E19CF2D73a72Ef1332C882F20534B6519Be0276", @@ -101,12 +133,43 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xa2847348b58CEd0cA58d23c7e9106A49f1427Df6", "0xeaCADc656c9394fb09af25AeBc0897fDfFe484A1", "0x380aAbE019ed2a9C2d632b51eDDD30fd804d0fAD", - "0x94cc50e4521bd271c1a997a3a4dc815c2f920b41", + "0x101816545F6bd2b1076434B54383a1E633390A2E", + "0x4d224452801ACEd8B2F0aebE155379bb5D594381", + "0x20a61B948E33879ce7F23e535CC7BAA3BC66c5a9", + "0x5870700f1272a1adbb87c3140bd770880a95e55d", + "0x93ce650b8d3a7a7e44121db82a0429a3884db599", + "0xE49127B7AEfc043847caDd85B8a41973854D30f5", + "0x8A31A94bF0926B82083C80E18B331085B84E92D7", + "0xcc26a5246c6a04a85e997d6581c1b4f14363841a", + "0x9a7Ce41c96Db8d792497D7BEe70fAfb7F8393D71", + "0xd4EC67cF6C0Aa65F74eb7F03216Ea23151af21b8", + "0x4F1546Ce825dB85310aC2c2cfb369543d73FD0a2", + "0x394Aa83d0E5D348c7FA39325d2A25993704Faf8f", + "0xD1105d6502d3c562B447A75149B00aD366b3212d", + "0xE08FF1427b199241506FcdCC23fcc24Dd98a4FA9", + "0xC21545c26661ae74b3259B55aE007ACC4Bf5d4e3", + "0x9ee91F9f426fA633d227f7a9b000E28b9dfd8599", "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", + "0x35fA164735182de50811E8e2E824cFb9B6118ac2", "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - "0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1", + "0xa0Cd8B83B63381895C1854A605315fa7eF50e026", + "0x25aE9BE521898d33c7DF6Ae8c6669Fe038Bb3550", + "0x9434722bf29750B44649eb1b1A10a335d40edFc1", + "0xF2280cBa8e0B9bc9b87b5aFbBeF8C41C20a5ddBe", + "0x5F1894e4b409D7199Ea209b9e43C996640BCB691", + "0xa653510227752632ebf692a77e5032d4afFaB3a2", + "0xA1998B87C2935BDbd7fE6ee48542a59a0435a3Ee", + "0xC8c3031fB628Bdf4eA0F7cA5F96E369Dea07624e", + "0xDc118133332f703e22C0b0FA7E0DD7d1299A7247", + "0x94cc50e4521bd271c1a997a3a4dc815c2f920b41", + "0xfef79304c80a694dfd9e603d624567d470e1a0e7", "0x8272e1a3dbef607c04aa6e5bd3a1a134c8ac063b", "0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1", + "0xaeda92e6a3b1028edc139a4ae56ec881f3064d4f", + "0xacdf0dba4b9839b96221a8487e9ca660a48212be", + "0x514910771af9ca656af840dff83e8264ecf986ca", + "0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32", "0x04c154b66cb340f3ae24111cc767e0184ed00cc6", "0xf8fde8a259a3698902c88bdb1e13ff28cd7f6f09", "0x76237BCfDbe8e06FB774663add96216961df4ff3", @@ -114,16 +177,78 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xb27D1729489d04473631f0AFAca3c3A7389ac9F8", "0x38D64ce1Bdf1A9f24E0Ec469C9cAde61236fB4a0", "0x9961BdBE8B7091E584c2bF9D0a160C583f564A8c", + "0xe2Ed1dAc3A9547BC6057e32bf8133b5268D7d987", + "0x6307e6688819951cf8d6b6066018243d2496952f", "0xe035e27a8ed6842b478933820f90093d205f7098", + "0x4ef4c7519023f30a78647eeab321d6cfabc2513c", "0x4253ac4046fbfdafcfe125d067b6d89f6923843e", "0x67701d67b60a96473bfc4873e7a484035c8609b0", "0x6685fcfce05e7502bf9f0aa03b36025b09374726", "0xe3e637f8acc097244a065791142c29fbf5877d18", "0x1BB9b64927e0C5e207C9DB4093b3738Eef5D8447", + "0xC6fDF0921c480Bd7Af89Ab4461D4aCDA24058a65", + "0x6410ee1f8417a7cE1c3E68E3434c1d6beef6944E", + "0x9456cB3ae9fA8788ac1af4a7A18b339D4028061D", + "0x26dA2546602f63b84B3C4dF36476364f6350706E", + "0x0a3fE1d39E5c60CfdB48Ba2Dc6B7c855289Dec7C", + "0xA27fa5E11B121277423aC0b8b372596f2805e36a", + "0x41e5c3aD70DA89dd7b6AF9Af3cd6861FbC31eA16", "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", "0xbf5495efe5db9ce00f80364c8b423567e58d2110", "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", + "0x4c9edd5852cd905f086c759e8383e09bff1e68b3", + "0xaea46a60368a7bd060eec7df8cba43b7ef41ad85", + "0x4a220e6096b25eadb88358cb44068a3248254675", + "0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce", + "0x57e114b691db790c35207b2e685d4a43181e6061", + "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "0xEEda34A377dD0ca676b9511EE1324974fA8d980D", ]; const ARBITRUM_REGISTRY_TOKENS = [ @@ -145,11 +270,49 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", "0xDBf31dF14B66535aF65AaC99C32e9eA844e14501", "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", @@ -159,8 +322,10 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0x9cb911cbb270cae0d132689ce11c2c52ab2dedbc", "0x9791d590788598535278552eecd4b211bfc790cb", "0xade4a71bb62bec25154cfc7e6ff49a513b491e81", + "0xced06c9330b02c378c31c7b12570b1c38abfcea6", "0x423a1323c871abc9d89eb06855bf5347048fc4a5", "0xbf6cbb1f40a542af50839cad01b0dc1747f11e18", + "0x5892bA611fdC1598b72a30D087d28c989d429eF7", "0x3fd4954a851ead144c2ff72b1f5a38ea5976bd54", "0x8bc65eed474d1a00555825c91feab6a8255c2107", "0x892785f33cdee22a30aef750f285e18c18040c3e", @@ -175,10 +340,33 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0x539bdE0d7Dbd336b79148AA742883198BBF60342", "0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae", "0x912CE59144191C1204E64559FE8253a0e49E6548", + "0xC3691c157D1B3A431B841230a7B11d5a373097e1", + "0x7Bdc233E5369Ac023b9894645902C9032A72D9Ee", + "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", + "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", + "0x59eC3043D7314B9650294Fd800149b53007f804E", + "0x972c6F2b29638b9AD6955c4F0b0c1239b034f053", + "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", + "0x886867993080DC3bBFC39CDfc343A0e083bB34E0", + "0xB72ea6F99EfA5BD6Fb400BaA4eFddC3cfB075215", + "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed", + "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", + "0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0", + "0x9623063377ad1b27544c965ccd7342f7ea7e88c7", + "0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91", + "0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60", + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", + "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf", + "0x078f358208685046a11C85e8ad32895DED33A249", + "0x724dc807b04555b71ed48a6896b6F41593b8C637", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", + "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", + "0x4186BFC76E2E237523CBC30FD220FE055156b41F", + "0x2416092f143378750bb29b79eD961ab195CcEea5", ]; const OPTIMISM_REGISTRY_TOKENS = [ - "0x4200000000000000000000000000000000000006", "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", @@ -227,8 +415,65 @@ const OPTIMISM_REGISTRY_TOKENS = [ "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", @@ -258,15 +503,47 @@ const OPTIMISM_REGISTRY_TOKENS = [ "0x73cb180bf0521828d8849bc8CF2B920918e23032", "0x970D50d09F3a656b43E11B0D45241a84e3a6e011", "0x1DB2466d9F5e10D7090E7152B68d62703a2245F0", + "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819", + "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A", + "0xdFA46478F9e5EA86d57387849598dbFB2e964b02", "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05", - "0x6806411765Af15Bddd26f8f544A34cC40cb9838B", + "0x4200000000000000000000000000000000000042", + "0x2e3d870790dc77a83dd1d18184acc7439a53f475", + "0xfdb794692724153d1488ccdbe0c56c252596735f", + "0x1e925De1c68ef83bD98eE3E130eF14a50309C01B", + "0xC03b43d492d904406db2d7D57e67C7e8234bA752", + "0x920cf626a271321c151d027030d5d08af699456b", "0x484c2D6e3cDd945a8B2DF735e079178C1036578c", + "0x6806411765Af15Bddd26f8f544A34cC40cb9838B", + "0x3E29D3A9316dAB217754d13b28646B76607c5f04", + "0x8aE125E8653821E851F12A49F7765db9a9ce7384", + "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", "0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED", "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", "0x79af5dd14e855823fa3e9ecacdf001d99647d043", "0x9560e827aF36c94D2Ac33a39bCE1Fe78631088Db", "0x4e720dd3ac5cfe1e1fbde4935f386bb1c66f4642", + "0x29c431806E536Fb22ce2Edc8dd6e3C3A0d5689a8", + "0xDaA24E888432b5aa607105e256919Ddfc8b327E9", + "0xC3691c157D1B3A431B841230a7B11d5a373097e1", + "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", + "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5", + "0x59eC3043D7314B9650294Fd800149b53007f804E", + "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19", + "0x6fd9d7ad17242c41f7131d257212c54a0e816691", + "0x76fb31fb4af56892a25e32cfc43de717950c9278", + "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + "0x23ee2343b892b1bb63503a4fabc840e0e2c6810f", + "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6", + "0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1", + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", + "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA", + "0x078f358208685046a11C85e8ad32895DED33A249", + "0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", + "0x4186BFC76E2E237523CBC30FD220FE055156b41F", + "0x346e03F8Cce9fE01dCB3d0Da3e9D00dC2c0E08f0", ]; const POLYGON_REGISTRY_TOKENS = [ @@ -280,13 +557,15 @@ const POLYGON_REGISTRY_TOKENS = [ "0x87ff96aba480f1813aF5c780387d8De7cf7D8261", "0x2088C47Fc0c78356c622F79dBa4CbE1cCfA84A91", "0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7", - "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c", - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390", - "0x20D3922b4a1A8560E1aC99FBA4faDe0c849e2142", - "0x1d2a0E5EC8E5bBDCA5CB219e649B565d8e5c3360", + "0xDBf31dF14B66535aF65AaC99C32e9eA844e14501", + "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", + "0xa3FC7E0021970f5AF674aD837a8dc09e2F12F37B", "0x7D645CBbCAdE2A130bF1bf0528b8541d32D3f8Cf", "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", + "0x20D3922b4a1A8560E1aC99FBA4faDe0c849e2142", + "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c", + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "0xf8a57c1d3b9629b77b6726a042ca48990A84Fb49", "0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89", "0xA691D34Abf93C0A77998e53B564bEcfaf46Dae27", "0xaA91CDD7abb47F821Cf07a2d38Cc8668DEAf1bdc", @@ -298,17 +577,16 @@ const POLYGON_REGISTRY_TOKENS = [ "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99", "0xa3Fa99A148fA48D14Ed51d610c367C61876997F1", "0x750e4C4984a9e0f12978eA6742Bc1c5D248f40ed", - "0x60D55F02A771d515e077c9C2403a1ef324885CeC", "0xb5DFABd7fF7F83BAB83995E72A52B97ABb7bcf63", "0x361a5a4993493ce00f61c32d4ecca5512b82ce90", "0x2C2D8a078B33bf7782a16AcCE2C5BA6653a90D5f", "0x172370d5Cd63279eFa6d502DAB29171933a610AF", "0xdAD97F7713Ae9437fa9249920eC8507e5FbB23d3", "0x8096ac61db23291252574D49f036f0f9ed8ab390", - "0x447646e84498552e62eCF097Cc305eaBFFF09308", "0xA73EdCf18421B56D9AF1cE08A34E102E23b2C4B6", "0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4", "0x600743B1d8A96438bD46836fD34977a00293f6Aa", + "0x447646e84498552e62eCF097Cc305eaBFFF09308", "0xa138341185a9D0429B0021A11FB717B225e13e1F", "0xb0658482b405496C4EE9453cD0a463b134aEf9d0", "0xb61Ecec987a9529dbA13a8Dd10ea24446ccBB6ae", @@ -324,32 +602,113 @@ const POLYGON_REGISTRY_TOKENS = [ "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", "0xfa68fb4628dff1028cfec22b4162fccd0d45efb6", + "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", + "0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD", ]; const AVALANCHE_REGISTRY_TOKENS = [ @@ -358,7 +717,9 @@ const AVALANCHE_REGISTRY_TOKENS = [ "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + "0x50b7545627a5162F82A992c33b87aDc75187B218", "0x152b9d0FdC40C096757F570A51E494bd4b943E50", "0x111111111111ed1D73f860F57b2798b683f2d325", "0x130966628846BFd36ff31a822705796e8cb8C18D", @@ -367,22 +728,58 @@ const AVALANCHE_REGISTRY_TOKENS = [ "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", "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", + "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 = [ @@ -393,8 +790,106 @@ const BNB_REGISTRY_TOKENS = [ "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", "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", + "0x51bd63F240fB13870550423D208452cA87c44444", + "0xbCFcE18C5c33463316f93A067b1f50d75b00dc09", + "0x10bf6e7B28b1cfFb1c047D7F815953931e5Ee947", + "0x56ec6031dC969CfA035F6D65e65D8595d5660fB4", + "0x5c73804FeDd39f3388E03F4aa1fE06a1C0e60c8e", + "0x77c9a64C88Ad5e5467B53E20E66AD2F8800BBf3d", + "0x2ecBD508c00Bbc8aA0cdc9100bf3956fCabE7677", + "0xC34Ae91312A3c3F9420691922040a5DEe1698E52", + "0xa8Bb71facdd46445644C277F9499Dd22f6F0A30C", + "0xeDe45f9dC994a66F1aD1ac68974Abb28086f909d", + "0x6321B57b6fdc14924be480c54e93294617E672aB", + "0xc1fcf50ccaCd1583BD9d3b41657056878C94e592", + "0x9cb73F20164e399958261c289Eb5F9846f4D1404", + "0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE", + "0x0eD7e52944161450477ee417DE9Cd3a859b14fD0", + "0x33D0F945F77660F4A9e56949500265313f6D08fb", + "0x86b481fCe116DCd01fBeBb963f1358bcc466668C", + "0x164fb78cAf2730eFD63380c2a645c32eBa1C52bc", + "0xDA8ceb724A06819c0A5cDb4304ea0cB27F8304cF", + "0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0", + "0x9aA83081AA06AF7208Dcc7A4cB72C94d057D2cda", + "0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA", + "0xAA20E8Cb61299df2357561C2AC2e1172bC68bc25", + "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", + "0x2416092f143378750bb29b79eD961ab195CcEea5", ]; const BASE_REGISTRY_TOKENS = [ @@ -408,11 +903,27 @@ const BASE_REGISTRY_TOKENS = [ "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b", "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", "0xd07379a755A8f11B57610154861D694b2A0f615a", + "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22", "0xB6fe221Fe9EeF5aBa221c348bA20A1Bf5e73624c", "0x9EaF8C1E34F05a589EDa6BAfdF391Cf6Ad3CB239", "0xf6C5F01C7F3148891ad0e19DF78743D31E390D1f", "0x6e53131F68a034873b6bFA15502aF094Ef0c5854", "0x6DfE79cecE4f64c1a34F48cF5802492aB595257E", + "0xbE3F14312B08E9c6AEe6AeB27B37c08B661A7F83", + "0x5A47993216fa6ACaf93418f9830cee485e82d0ba", + "0xd0c3E7f86338403Df99DEa1996f6C9Ed8f9D3d07", + "0xB614A6E6c21202De79DceB95AE2dd4817DD7e14b", + "0xB62F13126fCD0dD49dE8fF811406554197Bd0E11", + "0x507094549509Efdf63ecA34B795094065cB04008", + "0x8bd6dF821513aECDbbaa29C1d5212b43fdCe7819", + "0x98bEAa72230788572e3e3Be58D91C232dda315d4", + "0x74251C0d0B74Fba6e3B3EDe8533D9Da82B4EC4a4", + "0xc005B9833deBcF5fe6cc5bC9ba4fD74Bb382ae55", + "0xC3a5b142a144135D900FC5Ef2Bb7E92a3bcB46F1", + "0x09139A80454609B69700836a9eE12Db4b5DBB15f", + "0x4Fc0E7cDfe0CF92762eaf3CEE9133239A2197391", + "0x06a613d3a056d4b04D7523C11d82c67Bebf9d850", + "0xFB6864F1c14A90E85398B853701B01ef6a0CA3E5", "0xf213F2D02837012dC0236cC105061e121bB03e37", "0x0B25c51637c43decd6CC1C1e3da4518D54ddb528", "0x44Ecc644449fC3a9858d2007CaA8CFAa4C561f91", @@ -428,6 +939,36 @@ const BASE_REGISTRY_TOKENS = [ "0x27a8Afa3Bd49406e48a074350fB7b2020c43B2bD", "0x82a0c1a0d4EF0c0cA3cFDA3AD1AA78309Cc6139b", "0x5BfB340FA9305abB164Fb0248D0D82FC3D82C3bb", + "0x3b9860321f03AFe02D3FF9e4Fdd4017DC6F4d7Ca", + "0x1f0dbEcDA414F401dB46464864273CaD19368706", + "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96", + "0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91", + "0x23ee2343b892b1bb63503a4fabc840e0e2c6810f", + "0x940181a94a35a4569e4529a3cdfb74e38fd98631", + "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7", + "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D", + "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB", + "0x2416092f143378750bb29b79eD961ab195CcEea5", + "0x1Bc71130A0e39942a7658878169764Bbd8A45993", + "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", +]; + +const BLAST_REGISTRY_TOKENS = [ + "0x4300000000000000000000000000000000000004", + "0x4300000000000000000000000000000000000003", + "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", + "0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7", + "0x96F6b70f8786646E0FF55813621eF4c03823139C", + "0x5ffd9ebd27f2fcab044c0f0a26a45cb62fa29c06", + "0xa4c7aa67189ec5623121c6c94ec757dfed932d4b", + "0x764933fbAd8f5D04Ccd088602096655c2ED9879F", + "0x9e20461bc2c4c980f62f1B279D71734207a6A356", + "0x837fe561e9c5dfa73f607fda679295dbc2be5e40", + "0xb9dfCd4CF589bB8090569cb52FaC1b88Dbe4981F", + "0x42e12d42b3d6c4a74a88a61063856756ea2db357", + "0x76da31d7c9cbeae102aff34d3398bc450c8374c1", + "0x47c337bd5b9344a6f3d6f58c474d9d8cd419d8ca", + "0x216a5a1135a9dab49fa9ad865e0f22fe22b5630a", ]; const registryTokensByChain = { @@ -438,6 +979,7 @@ const registryTokensByChain = { avax: AVALANCHE_REGISTRY_TOKENS, bsc: BNB_REGISTRY_TOKENS, base: BASE_REGISTRY_TOKENS, + blast: BLAST_REGISTRY_TOKENS, }; module.exports = registryTokensByChain; diff --git a/projects/hinkal/relayerUrls.js b/projects/hinkal/relayerUrls.js index 5dd2bddf5aa..e7ca0abf1ad 100644 --- a/projects/hinkal/relayerUrls.js +++ b/projects/hinkal/relayerUrls.js @@ -6,6 +6,7 @@ const RELAYER_URLS = { avax: "https://avalanche.relayer.hinkal.pro", bsc: "https://bnbMainnet.relayer.hinkal.pro", base: "https://base.relayer.hinkal.pro", + blast: "https://blast.relayer.hinkal.pro", }; module.exports = RELAYER_URLS; From d52fa77e3ce418e7ae6155e9d3072915d3ac68f8 Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Fri, 31 May 2024 17:07:03 +0400 Subject: [PATCH 1814/2004] Commented out blast temporarily --- projects/hinkal/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js index 19bf0c387f7..787c12e4a4b 100644 --- a/projects/hinkal/index.js +++ b/projects/hinkal/index.js @@ -37,7 +37,7 @@ module.exports = { bsc: { tvl, }, - blast: { - tvl, - }, + // blast: { + // tvl, + // }, }; From 26dc0ecd5d16af9eeb5dfdb92fdda00973cf6e6d Mon Sep 17 00:00:00 2001 From: Tomwhh <30361751+Tomwhh@users.noreply.github.com> Date: Fri, 31 May 2024 14:25:55 +0100 Subject: [PATCH 1815/2004] Tracking TVL for 21co Tokens on Solana (#10449) * Tracking TVL for 21co Tokens on Solana * track new bitcoin wallet --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/21-co/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/21-co/index.js b/projects/21-co/index.js index 7dcd5740a2b..1d5299a08af 100644 --- a/projects/21-co/index.js +++ b/projects/21-co/index.js @@ -3,7 +3,8 @@ const { cexExports } = require('../helper/cex') const config = { bitcoin: { owners: [ - '1HTGi4tfXSEtcXD4pk6S3vBs3s64hWY1pW' + '1HTGi4tfXSEtcXD4pk6S3vBs3s64hWY1pW', + '12WZhMFFLHQ4rCMSkeBfbJXRk7aGWyBh1M', ], }, solana: { From 8ed787b7f171f1b7f26dbca65725b0e9f2632429 Mon Sep 17 00:00:00 2001 From: bleenCN <132842163+bleenCN@users.noreply.github.com> Date: Fri, 31 May 2024 21:26:17 +0800 Subject: [PATCH 1816/2004] update program address (#10450) nx-finance will be launched on June 3, 2024. Updated the program address of nx-finance for production environment --- projects/nxfinance/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/nxfinance/index.js b/projects/nxfinance/index.js index 77ae92d158b..98400c018ac 100644 --- a/projects/nxfinance/index.js +++ b/projects/nxfinance/index.js @@ -2,7 +2,7 @@ const { Program } = require("@project-serum/anchor"); const { getProvider, } = require("../helper/solana"); const nxIdl = require("./nx-idl.json"); -const NX_PROGRAM_ADDR = "JMpxnop5u1HJAqjzpZHo7MmvfBQf5YkFw4nGK9F83x3"; +const NX_PROGRAM_ADDR = "EHBN9YKtMmrZhj8JZqyBQRGqyyeHw5xUB1Q5eAHszuMt"; async function tvl(api) { const provider = getProvider(); From 300a5f5ef889f2a6745ad9e33c6ff50f0a5e42ff Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Fri, 31 May 2024 17:33:54 +0400 Subject: [PATCH 1817/2004] Added blast back in --- projects/hinkal/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js index 787c12e4a4b..19bf0c387f7 100644 --- a/projects/hinkal/index.js +++ b/projects/hinkal/index.js @@ -37,7 +37,7 @@ module.exports = { bsc: { tvl, }, - // blast: { - // tvl, - // }, + blast: { + tvl, + }, }; From c1afa23c0432e2761084794064c46db6d46ebef7 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Fri, 31 May 2024 15:09:22 +0100 Subject: [PATCH 1818/2004] immutablezkevm --- projects/immutable-zkevm/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/immutable-zkevm/index.js diff --git a/projects/immutable-zkevm/index.js b/projects/immutable-zkevm/index.js new file mode 100644 index 00000000000..7ef8cdc2176 --- /dev/null +++ b/projects/immutable-zkevm/index.js @@ -0,0 +1,12 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); + +module.exports = { + ethereum: { + tvl: async ({ api }) => + sumTokens2({ + api, + owner: "0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6", + fetchCoValentTokens: true, + }), + }, +}; From 01c7e2769f66d3959e4bb8d7ca5496828de77dfd Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 31 May 2024 15:10:09 +0100 Subject: [PATCH 1819/2004] AEVO treasury (#10457) --- projects/treasury/ribbon.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/treasury/ribbon.js b/projects/treasury/ribbon.js index 899bc9c364f..752a9b3d058 100644 --- a/projects/treasury/ribbon.js +++ b/projects/treasury/ribbon.js @@ -6,6 +6,7 @@ const treasury = "0xDAEada3d210D2f45874724BeEa03C7d4BBD41674"; const treasury2 = "0x42c1357aaa3243ea30c713cdfed115d09f10a71d" const treasury3 = "0x6adeb4fddb63f08e03d6f5b9f653be8b65341b35" const RBN = "0x6123B0049F904d730dB3C36a31167D9d4121fA6B"; +const AEVO = "0xb528edbef013aff855ac3c50b381f253af13b997" module.exports = treasuryExports({ ethereum: { @@ -31,6 +32,7 @@ module.exports = treasuryExports({ ownTokens: [ RBN, "0xd590931466cdD6d488A25da1E89dD0539723800c", // 50RBN-50USDC + AEVO ], }, }); From 54765ed2f34ac0dc76c769af41b048eb84512ee7 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Fri, 31 May 2024 18:09:46 +0100 Subject: [PATCH 1820/2004] add new multisig --- projects/treasury/unore.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/treasury/unore.js b/projects/treasury/unore.js index b7cd8bbc6ca..d12966f9d2c 100644 --- a/projects/treasury/unore.js +++ b/projects/treasury/unore.js @@ -1,6 +1,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const { treasuryExports, nullAddress } = require("../helper/treasury"); -const multisig='0x46488d2D36D8983de980Ff3b9f046DCd0a9DC2ae' +const multisig='0x46488d2D36D8983de980Ff3b9f046DCd0a9DC2ae'; +const multisig2='0x4aede441085398BD74FeB9eeFCfe08E709e69ABF' const UNO = "0x474021845c4643113458ea4414bdb7fb74a01a77"; @@ -13,7 +14,7 @@ module.exports = treasuryExports({ ADDRESSES.ethereum.WETH,//WETH ADDRESSES.ethereum.USDT,//USDT ], - owners: [multisig], + owners: [multisig,multisig2], ownTokens: [UNO], }, }); From 626d1eec394404851a40eb7839ab5fd0d09f81dd Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Sat, 1 Jun 2024 02:02:17 +0100 Subject: [PATCH 1821/2004] add core chain tokens --- projects/helper/tokenMapping.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index db6c3724fc5..847f6e76b67 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -130,6 +130,10 @@ const fixBalancesTokens = { }, sei: { '0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1': { coingeckoId: 'usd-coin', decimals: 6 }, + }, + core: { + '0x5832f53d147b3d6cd4578b9cbd62425c7ea9d0bd': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, + '0x5B1Fb849f1F76217246B8AAAC053b5C7b15b7dc3': { coingeckoId: 'solv-btc', decimals: 18 }, } } From 9d944a80ba337958b47c0c0a9afad491e7352c57 Mon Sep 17 00:00:00 2001 From: aster <39130640+aster2709@users.noreply.github.com> Date: Sun, 2 Jun 2024 13:08:35 +0530 Subject: [PATCH 1822/2004] feat(nftperp): ordinals tvl (#10461) --- projects/nftperp/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/nftperp/index.js b/projects/nftperp/index.js index 78cac076faf..21642440bd8 100644 --- a/projects/nftperp/index.js +++ b/projects/nftperp/index.js @@ -19,6 +19,16 @@ module.exports = { [ADDRESSES.blast.WETH, "0xFfc0555EC5F5C44A6B529Cef94b9055799696272"], // Insurance fund [ADDRESSES.blast.WETH, "0xe2F4A2845D4183F7913EC66945b20E4c0c15DAFf"], + // DEX Ordinals + [ + "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", + "0x0C2309C6554AabBFBcA7d5219545795DcAF6f4A9", + ], + // Insurance fund Ordinals + [ + "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", + "0x0b32E91C276377b3b3CdB332e902207Defe542bd", + ], ], }), }, From 55e463d66486bff1da90c25d68ac50221b369045 Mon Sep 17 00:00:00 2001 From: soilking <157099073+soilking@users.noreply.github.com> Date: Sun, 2 Jun 2024 01:38:50 -0700 Subject: [PATCH 1823/2004] Basin Exchange (#10459) * Identifies deployed wells * Sums all tokens across all wells * skipCache * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/basin/index.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 projects/basin/index.js diff --git a/projects/basin/index.js b/projects/basin/index.js new file mode 100644 index 00000000000..f7b341d6c7b --- /dev/null +++ b/projects/basin/index.js @@ -0,0 +1,34 @@ +const { getLogs2 } = require('../helper/cache/getLogs'); + +// Aquifer +const FACTORY = "0xba51aaaa95aeefc1292515b36d86c51dc7877773"; +const BORE_WELL_ABI = "event BoreWell (address well, address implementation, address[] tokens, (address, bytes) wellFunction, (address, bytes)[] pumps, bytes wellData)"; + +const startBlocks = { + ethereum: 17977905 +} + +function chainTvl(chain) { + return async (api) => { + // Find all BoreWell events + const START_BLOCK = startBlocks[chain]; + const logs = await getLogs2({ + api, + target: FACTORY, + fromBlock: START_BLOCK, + eventAbi: BORE_WELL_ABI, + topics: ['0xff64a5823907c85a1e7c0400576024f76bd1640c74350033bd0d689f793202f2'], + }); + + const ownerTokens = logs.map(log => [log.tokens, log.well]) + return api.sumTokens({ ownerTokens }) + } +} + +module.exports = { + methodology: "Counts the value of token reserves inside all deployed Wells.", + start: 17977905, + ethereum: { + tvl: chainTvl('ethereum') + } +}; From 7edd1c421de0ed07405055bbfd27bcd7728bd8a8 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:59:19 +0100 Subject: [PATCH 1824/2004] add stake blastfutures (#10467) --- projects/blastfutures/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/blastfutures/index.js b/projects/blastfutures/index.js index 291de172054..d1f05185285 100644 --- a/projects/blastfutures/index.js +++ b/projects/blastfutures/index.js @@ -7,4 +7,7 @@ module.exports = { tvl: sumTokensExport({ owner: '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), staking: staking('0x67dBA61709D78806395acDBa3EF9Df686aF5dc24', '0x236bb48fcF61ce996B2C8C196a9258c176100c7d'), }, + ethereum: { + staking: staking('0x0c378FB17E87B180256a87e3f671cd83Bf3236DB', '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e'), + }, } From bb1b663ca2ad5581f325a2c89d200ebd225deea9 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 3 Jun 2024 10:15:42 +0100 Subject: [PATCH 1825/2004] Revert "add stake blastfutures (#10467)" (#10468) This reverts commit 7edd1c421de0ed07405055bbfd27bcd7728bd8a8. --- projects/blastfutures/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/blastfutures/index.js b/projects/blastfutures/index.js index d1f05185285..291de172054 100644 --- a/projects/blastfutures/index.js +++ b/projects/blastfutures/index.js @@ -7,7 +7,4 @@ module.exports = { tvl: sumTokensExport({ owner: '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e', tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]}), staking: staking('0x67dBA61709D78806395acDBa3EF9Df686aF5dc24', '0x236bb48fcF61ce996B2C8C196a9258c176100c7d'), }, - ethereum: { - staking: staking('0x0c378FB17E87B180256a87e3f671cd83Bf3236DB', '0x3Ba925fdeAe6B46d0BB4d424D829982Cb2F7309e'), - }, } From 53b9566be850c4aaf9cda34b413627cea505dafd Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 3 Jun 2024 11:48:03 +0100 Subject: [PATCH 1826/2004] move zun to own tokens (#10470) --- projects/treasury/zunami.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/treasury/zunami.js b/projects/treasury/zunami.js index 04bc565e908..fe860711528 100644 --- a/projects/treasury/zunami.js +++ b/projects/treasury/zunami.js @@ -2,6 +2,7 @@ const { nullAddress, treasuryExports } = require("../helper/treasury"); const ADDRESSES = require("../helper/coreAssets.json"); const treasury = "0xb056b9a45f09b006ec7a69770a65339586231a34"; +const ZUN = "0x6b5204b0be36771253cc38e88012e02b752f0f36" module.exports = treasuryExports({ ethereum: { @@ -16,6 +17,7 @@ module.exports = treasuryExports({ "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", // SDT "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0" // FXS ], - owners: [treasury] + owners: [treasury], + ownTokens: [ZUN] } }); \ No newline at end of file From 6b061f91d054e7304a5abdbcf8c4ec322362a468 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 3 Jun 2024 17:04:12 +0200 Subject: [PATCH 1827/2004] Add Dunes.fi and refactor code (#10473) * add Dunes.fi * code refactor --------- Co-authored-by: Sunshine <167001185+0xSunshine@users.noreply.github.com> --- projects/dunes/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/dunes/index.js diff --git a/projects/dunes/index.js b/projects/dunes/index.js new file mode 100644 index 00000000000..628a2e924d1 --- /dev/null +++ b/projects/dunes/index.js @@ -0,0 +1,16 @@ +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 From e9d79f1cc98a6ce9d50052e7d853454849db87ea Mon Sep 17 00:00:00 2001 From: kdayski <58617773+kdayski@users.noreply.github.com> Date: Mon, 3 Jun 2024 20:05:12 +0500 Subject: [PATCH 1828/2004] Add new project tymio.com (#10469) * Obtaining all authorized assets on deployed project contracts * Fix eslint rejection * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/tymio/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/tymio/index.js diff --git a/projects/tymio/index.js b/projects/tymio/index.js new file mode 100644 index 00000000000..9116ba67711 --- /dev/null +++ b/projects/tymio/index.js @@ -0,0 +1,18 @@ +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 From b419caad5f9c5da0f19b31e84a5ca4c3982f8560 Mon Sep 17 00:00:00 2001 From: Stone <125890624+Stonepapa@users.noreply.github.com> Date: Tue, 4 Jun 2024 00:01:00 +0800 Subject: [PATCH 1829/2004] add some assets for BSquared Network. (#10472) --- projects/helper/coreAssets.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index cd79f9eb80f..0b62a31df9d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1755,7 +1755,14 @@ "bsquared": { "WBTC": "0x4200000000000000000000000000000000000006", "USDT": "0x681202351a488040fa4fdcc24188afb582c9dd62", - "USDC": "0xe544e8a38add9b1abf21922090445ba93f74b9e5" + "USDC": "0xe544e8a38add9b1abf21922090445ba93f74b9e5", + "ETH": "0xD48d3A551757ac47655fCe25BDE1B0B6b1Cb2a5A", + "MATIC": "0xc3ee2Df14B1Bc526c24ED802f1873d49664a0d5c", + "FDUSD": "0xC2Fe4f673455Ef92299770a09CDB5E8756A525D5", + "BSTONE": "0x7537C1F80c9E157ED7AFD93a494be3e1f04f1462", + "ORDI": "0xa0f4470B714677AEEcE0d20074c540b3Cf6a477E", + "SATS": "0x7eBFcE05E418C380a2b6EB0F65995cA04ef4bc00", + "UBTC": "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2" }, "planq": { "WPLANQ": "0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a" From 3227adef948ef1820d9cb834125ed49116a24e38 Mon Sep 17 00:00:00 2001 From: Jake Date: Mon, 3 Jun 2024 11:45:44 -0700 Subject: [PATCH 1830/2004] feat: fix Dinari tvl (#10354) * feat: fix Dinari tvl * feat: remove prices from tvl adapter --- projects/dinari/index.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/projects/dinari/index.js b/projects/dinari/index.js index 76fbbd368ee..88adad9c2e5 100644 --- a/projects/dinari/index.js +++ b/projects/dinari/index.js @@ -1,22 +1,27 @@ const config = { arbitrum: { - "AAPL.d": { oracle: "0x8d0CC5f38f9E802475f2CFf4F9fc7000C2E1557c", token: '0xCe38e140fC3982a6bCEbc37b040913EF2Cd6C5a7' }, - "AMZN.d": { oracle: "0xd6a77691f071E98Df7217BED98f38ae6d2313EBA", token: '0x5a8A18673aDAA0Cd1101Eb4738C05cc6967b860f' }, - "GOOGL.d": { oracle: "0x1D1a83331e9D255EB1Aaf75026B60dFD00A252ba", token: '0x9bd7A08cD17d10E02F596Aa760dfE397C57668b4' }, - "META.d": { oracle: "0xcd1bd86fDc33080DCF1b5715B6FCe04eC6F85845", token: '0xa40c0975607BDbF7B868755E352570454b5B2e48' }, - "MSFT.d": { oracle: "0xDde33fb9F21739602806580bdd73BAd831DcA867", token: '0x20f11c1aBca831E235B15A4714b544Bb968f8CDF' }, - "TSLA.d": { oracle: "0x3609baAa0a9b1f0FE4d6CC01884585d0e191C3E3", token: '0x2888c0aC959484e53bBC6CdaBf2b8b39486225C6' }, - "SPY.d": { oracle: "0x46306F3795342117721D8DEd50fbcF6DF2b3cc10", token: '0xF4BD09B048248876E39Fcf2e0CDF1aee1240a9D2' }, - // "COIN.d": { oracle: "", token: '0x46b979440AC257151EE5a5bC9597B76386907FA1' }, + factory: "0xB4Ca72eA4d072C779254269FD56093D3ADf603b8", + getTokensAbi: "function getDShares() external view returns (address[] memory, address[] memory)", + processor: "0xFA922457873F750244D93679df0d810881E4131D", + latestPriceAbi: "function latestFillPrice(address assetToken, address paymentToken) view returns (tuple(uint256 price, uint64 blocktime))", + usdplus: "0xfc90518D5136585ba45e34ED5E1D108BD3950CFa" } } -Object.keys(config).forEach(chain => { - const tokens = Object.values(config[chain]).map(v => v.token) +async function getTokens(api, chain) { + return (await api.call({ + chain: chain, + target: config[chain].factory, + abi: config[chain].getTokensAbi + }))[0]; +} + +Object.keys(config).forEach( chain => { module.exports[chain] = { tvl: async (api) => { + const tokens = await getTokens(api, chain) const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) api.add(tokens, bals) } } -}) \ No newline at end of file +}) From 64c48c1726b0bd2e63f29e3fbda8289c5555914b Mon Sep 17 00:00:00 2001 From: OxC0 <147254343+OxC0@users.noreply.github.com> Date: Tue, 4 Jun 2024 08:59:55 +0800 Subject: [PATCH 1831/2004] Dex on ICP, called ICPEx (#10477) * Add files via upload * Update index.js * Update index.js * Update index.js * Update index.js * Update index.js --- projects/icpex/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/icpex/index.js diff --git a/projects/icpex/index.js b/projects/icpex/index.js new file mode 100644 index 00000000000..e0d3deac96a --- /dev/null +++ b/projects/icpex/index.js @@ -0,0 +1,18 @@ + +const { get } = require('../helper/http') +const { toUSDTBalances } = require('../helper/balances') + +module.exports = { + misrepresentedTokens: true, + icp: { tvl }, +} + +async function tvl() { + let result = await get('https://metrics.icpex.org/llama/tvl'); + if (result.retCode === 1 && result.retMsg === "success") { + const tvl = result.data; + return toUSDTBalances(tvl); + } else { + throw new Error(`API error! message: ${result.retMsg}`); + } +} From d60b69940310afcc1fc0cd0230736d4b4f05369d Mon Sep 17 00:00:00 2001 From: silvercondor <32993765+silvercondor@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:01:47 +0800 Subject: [PATCH 1832/2004] chore: remove extra TVL wording on methology (#10478) --- projects/native/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/native/index.js b/projects/native/index.js index 41e45ed54b6..af1278d2f88 100644 --- a/projects/native/index.js +++ b/projects/native/index.js @@ -3,7 +3,7 @@ const { sumTokens2, nullAddress } = require("../helper/unwrapLPs"); module.exports = { methodology: - "TVL: Counts the inventory held by Native's Partnered Market Makers used to facilitate slippage free swaps on the protocol", + "Counts the inventory held by Native's Partnered Market Makers used to facilitate slippage free swaps on the protocol", }; const config = { From 81b557b60144b2a38c3606a695ddb39d3e1cb3bc Mon Sep 17 00:00:00 2001 From: Renat Date: Tue, 4 Jun 2024 04:08:33 +0300 Subject: [PATCH 1833/2004] Add BOB TVL for Sovryn DEX (#10480) --- projects/sovryn-dex/index.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js index 55d3973860c..24c607f7348 100644 --- a/projects/sovryn-dex/index.js +++ b/projects/sovryn-dex/index.js @@ -1,4 +1,6 @@ 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') @@ -8,8 +10,10 @@ async function tvl(api) { // const impl = await api.call({ abi: 'address:swapsImpl', target: '0x5a0d867e0d70fcc6ade25c3f1b89d618b5b4eaa7' }) - const protocolContract = '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 = [] @@ -31,14 +35,27 @@ async function tvl(api) { }) await Promise.all(promises) - ownerTokens.push([allTokens, protocolContract]) + 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 } + } + ` + 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') // does not work + }, rsk: { tvl, staking: staking('0x5684a06cab22db16d901fee2a5c081b4c91ea40e', '0xefc78fc7d48b64958315949279ba181c2114abbd') } -} \ No newline at end of file +} From a046ec096e8c2ae1b5482c3bedf0e13d3067d17a Mon Sep 17 00:00:00 2001 From: Viyozc Date: Tue, 4 Jun 2024 11:10:59 +0800 Subject: [PATCH 1834/2004] update cal --- projects/repl/abi.json | 6 ++++-- projects/repl/index.js | 23 ++++++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/projects/repl/abi.json b/projects/repl/abi.json index fb2a47eee72..4cbec303147 100644 --- a/projects/repl/abi.json +++ b/projects/repl/abi.json @@ -1,7 +1,9 @@ { - "getAllActiveAgents": "function getAllActiveAgents() 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)[])", + "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)[])", "getTVLComponents": "function getTVLComponents() view returns ((uint256))", + "getUpgradedAgentList": "function getUpgradedAgentList() view returns (address[])", "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" + "PFILPerToken": "uint256:PFILPerToken", + "getAllAgentsCount": "function getAllAgentsCount() view returns ((uint256))" } diff --git a/projects/repl/index.js b/projects/repl/index.js index 5a350506d4c..e9e0808881e 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -5,12 +5,25 @@ const { json } = require('starknet'); const { ethers } = require('ethers'); const http = require('../helper/http'); -const WFIL_WPFIL_POOL_ADDRESS = '0x443A6243A36Ef0ae1C46523d563c15abD787F4E9'; -const PFIL_CONTRACT = '0xAaa93ac72bECfbBc9149f293466bbdAa4b5Ef68C'; -const WPFIL_CONTRACT = '0x57E3BB9F790185Cfe70Cc2C15Ed5d6B84dCf4aDb'; -const WFIL_CONTRACT = '0x60E1773636CF5E4A227d9AC24F20fEca034ee25A'; const REPL_HELPER_CONTRACT = '0x65846aECBF23385F76B73ef1EDD1ebdFf7Ac258D'; +const getAllValidAgents = async (api) => { + const [total, upgradedList] = await Promise.all([ + api.call({ abi: abi.getAllAgentsCount, target: REPL_HELPER_CONTRACT }), + api.call({ abi: abi.getUpgradedAgentList, target: REPL_HELPER_CONTRACT }), + ]) + const COUNT = 40 + 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 => Number(agent.curBeneficiary) === Number(agent.agentID) || upgradedList.includes(agent.agent)) +} + // Total Assets of Miners pledged to the protocol const getMinerAssets = (agents) => { return agents.reduce((sum, agent) => sum + +agent.minerBalance, 0); @@ -21,7 +34,7 @@ module.exports = { tvl: async (api) => { const [tvlComponents, activeAgents] = await Promise.all([ api.call({ abi: abi.getTVLComponents, target: REPL_HELPER_CONTRACT }), - api.call({ abi: abi.getAllActiveAgents, target: REPL_HELPER_CONTRACT }), + getAllValidAgents(api), ]); const minerAssets = getMinerAssets(activeAgents); From c48dbfcad65effc2b25cc7f378b48c5fe4abd351 Mon Sep 17 00:00:00 2001 From: Viyozc Date: Tue, 4 Jun 2024 11:44:28 +0800 Subject: [PATCH 1835/2004] update cal --- projects/repl/abi.json | 3 +-- projects/repl/index.js | 7 ++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/projects/repl/abi.json b/projects/repl/abi.json index 4cbec303147..22d7e0cd83a 100644 --- a/projects/repl/abi.json +++ b/projects/repl/abi.json @@ -1,7 +1,6 @@ { - "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)[])", + "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))", - "getUpgradedAgentList": "function getUpgradedAgentList() view returns (address[])", "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", diff --git a/projects/repl/index.js b/projects/repl/index.js index e9e0808881e..dfe476a329c 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -8,10 +8,7 @@ const http = require('../helper/http'); const REPL_HELPER_CONTRACT = '0x65846aECBF23385F76B73ef1EDD1ebdFf7Ac258D'; const getAllValidAgents = async (api) => { - const [total, upgradedList] = await Promise.all([ - api.call({ abi: abi.getAllAgentsCount, target: REPL_HELPER_CONTRACT }), - api.call({ abi: abi.getUpgradedAgentList, target: REPL_HELPER_CONTRACT }), - ]) + const total = await api.call({ abi: abi.getAllAgentsCount, target: REPL_HELPER_CONTRACT }) const COUNT = 40 const loop = Math.ceil(total / COUNT) const query = new Array(loop) @@ -21,7 +18,7 @@ const getAllValidAgents = async (api) => { (pre, cur) => [...pre, ...cur], [] ) - return lists.filter(agent => Number(agent.curBeneficiary) === Number(agent.agentID) || upgradedList.includes(agent.agent)) + return lists.filter(agent => !!agent.isValid) } // Total Assets of Miners pledged to the protocol From 7576916ea75881541b2b55823c38d7b1bd782a44 Mon Sep 17 00:00:00 2001 From: Viyozc Date: Tue, 4 Jun 2024 11:45:23 +0800 Subject: [PATCH 1836/2004] fix count --- projects/repl/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/repl/index.js b/projects/repl/index.js index dfe476a329c..833e739754a 100644 --- a/projects/repl/index.js +++ b/projects/repl/index.js @@ -9,7 +9,7 @@ const REPL_HELPER_CONTRACT = '0x65846aECBF23385F76B73ef1EDD1ebdFf7Ac258D'; const getAllValidAgents = async (api) => { const total = await api.call({ abi: abi.getAllAgentsCount, target: REPL_HELPER_CONTRACT }) - const COUNT = 40 + const COUNT = 30 const loop = Math.ceil(total / COUNT) const query = new Array(loop) .fill(0) From 1db62527b4732c6557ac181eb8796c33c68a201e Mon Sep 17 00:00:00 2001 From: mortinp Date: Tue, 4 Jun 2024 00:17:56 -0400 Subject: [PATCH 1837/2004] Added Adapter for Mantra Protocol to compute TVL in 4 chains: shibarium, dogechain, cronos and smartbch --- projects/MantraProtocol/index.js | 65 ++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 projects/MantraProtocol/index.js diff --git a/projects/MantraProtocol/index.js b/projects/MantraProtocol/index.js new file mode 100644 index 00000000000..c7f0190bb7d --- /dev/null +++ b/projects/MantraProtocol/index.js @@ -0,0 +1,65 @@ +const sdk = require('@defillama/sdk') + +const NATIVE_TOKEN_INTERNAL_ADDRESS = '0x0000000000000000000000000000000000000000' + +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 + }) + + + // -- BALANCE OF NATIVE COIN + const balanceNative = await sdk.api.eth.getBalance({ + target: MANTRA_CONTRACT, + chain: api.chain + }) + + api.add(NATIVE_TOKEN_INTERNAL_ADDRESS, balanceNative.output) + + + // -- BALANCE OF OTHER TOKENS (non native) + + // Filter out native coin from whitelistedTokens + const nonNativeTokens = whitelistedTokens.filter(t => t != NATIVE_TOKEN_INTERNAL_ADDRESS) + + const balanceCalls = [] + for (let i = 0; i < nonNativeTokens.length; i++) { + balanceCalls.push({ + abi: 'erc20:balanceOf', + target: nonNativeTokens[i], + params: [MANTRA_CONTRACT], + }); + } + + balances = await api.batchCall(balanceCalls) + + api.addTokens(nonNativeTokens, balances) +} + +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 From d7614dea041c5971a702d78371fc1a709dd10872 Mon Sep 17 00:00:00 2001 From: mortinp Date: Tue, 4 Jun 2024 01:02:35 -0400 Subject: [PATCH 1838/2004] Declared balances as const to please ESLint --- projects/MantraProtocol/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/MantraProtocol/index.js b/projects/MantraProtocol/index.js index c7f0190bb7d..22ba79f2158 100644 --- a/projects/MantraProtocol/index.js +++ b/projects/MantraProtocol/index.js @@ -43,7 +43,7 @@ async function tvl(api) { }); } - balances = await api.batchCall(balanceCalls) + const balances = await api.batchCall(balanceCalls) api.addTokens(nonNativeTokens, balances) } From 3ab148a0ba087115d8c11c16c58db6541244e33f Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Tue, 4 Jun 2024 09:48:07 +0400 Subject: [PATCH 1839/2004] Added Web3 Dollar to registry --- projects/hinkal/registryTokens.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/hinkal/registryTokens.js b/projects/hinkal/registryTokens.js index 8ea8f5f0275..ac1bf27a818 100644 --- a/projects/hinkal/registryTokens.js +++ b/projects/hinkal/registryTokens.js @@ -249,6 +249,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", "0xEEda34A377dD0ca676b9511EE1324974fA8d980D", + "0x0d86883faf4ffd7aeb116390af37746f45b6f378", ]; const ARBITRUM_REGISTRY_TOKENS = [ From 67723aca5dc63d4d4aca30f37fb907dd10e5b5a4 Mon Sep 17 00:00:00 2001 From: dtx-devs Date: Tue, 4 Jun 2024 14:59:10 +0800 Subject: [PATCH 1840/2004] feat: add uniTvl on DTX --- projects/dtx/index.js | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/projects/dtx/index.js b/projects/dtx/index.js index 46c6a71b9e8..e286201253a 100644 --- a/projects/dtx/index.js +++ b/projects/dtx/index.js @@ -1,6 +1,8 @@ const { sumERC4626VaultsExport } = require("../helper/erc4626") -const sdk = require("@defillama/sdk") const { sumTokensExport } = require("../helper/unwrapLPs") +const { getUniTVL } = require("../helper/unknownTokens") + +const sdk = require("@defillama/sdk") const ADDRESSES = require("../helper/coreAssets.json") const config = { @@ -15,7 +17,11 @@ const config = { "0x802B1f8e092AC4469B30C7560266F9a6f8CA450F", ], tokenConfig: { - tokens: [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH, ADDRESSES.blast.ezETH], + tokens: [ + ADDRESSES.blast.USDB, + ADDRESSES.blast.WETH, + ADDRESSES.blast.ezETH, + ], owners: [ "0x9AdF2b330697C6816176491E1fd5503BB746d1d8", "0x0E5b7DDbF37d92B21512Ae5A6CE66aEfA7A7828F", @@ -23,20 +29,33 @@ const config = { }, }, taiko: { - vaults: ['0xdA6a745740Bbdbe5F588b79FEe57f2e10ad4Da11'], + vaults: ["0xdA6a745740Bbdbe5F588b79FEe57f2e10ad4Da11"], tokenConfig: { - tokens: ['0xa51894664a773981c6c112c43ce576f315d5b1b6'], + tokens: ["0xa51894664a773981c6c112c43ce576f315d5b1b6"], owners: [ "0xc0ab776604059D10880dbD219758FF7B82997cc0", "0xB00231B308B01Dbb90f16F966F62d86fBc78c450", ], }, - } + factory: "0x2EA9051d5a48eA2350b26306f2b959D262cf67e1", + }, } -Object.keys(config).forEach(chain => { - const { vaults, tokenConfig, } = config[chain] +Object.keys(config).forEach((chain) => { + const { vaults, tokenConfig, factory } = config[chain] const vaultTvl = sumERC4626VaultsExport({ vaults, isOG4626: true }) const otherTvl = sumTokensExport(tokenConfig) - module.exports[chain] = { tvl: sdk.util.sumChainTvls([vaultTvl, otherTvl]), } -}) \ No newline at end of file + + let tvlCalculators = [vaultTvl, otherTvl] + + if (factory) { + const uniTvl = getUniTVL({ + chain, + factory, + }) + tvlCalculators.push(uniTvl) + } + module.exports[chain] = { + tvl: sdk.util.sumChainTvls(tvlCalculators), + } +}) From eaec8c778604d400d865d9d067cab12ca59e7b93 Mon Sep 17 00:00:00 2001 From: supermonster Date: Tue, 4 Jun 2024 04:27:28 -0400 Subject: [PATCH 1841/2004] Add Vesta Equity to DefiLlama (#10390) * Add Vesta Equity to projects * remove outdated libraries --- projects/vestaequity/index.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 projects/vestaequity/index.js diff --git a/projects/vestaequity/index.js b/projects/vestaequity/index.js new file mode 100644 index 00000000000..0d2d5655b7a --- /dev/null +++ b/projects/vestaequity/index.js @@ -0,0 +1,24 @@ +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, + } +}; From 393c7468c77c6c267965e4086479f099b1918058 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:03:56 +0100 Subject: [PATCH 1842/2004] add bob to sovryn dex (#10489) --- projects/sovryn-dex/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js index 24c607f7348..12c6e192801 100644 --- a/projects/sovryn-dex/index.js +++ b/projects/sovryn-dex/index.js @@ -57,5 +57,8 @@ module.exports = { rsk: { tvl, staking: staking('0x5684a06cab22db16d901fee2a5c081b4c91ea40e', '0xefc78fc7d48b64958315949279ba181c2114abbd') + }, + bob: { + staking: staking('0xc17c6462ceafe9a8819258c6ba168bef5544fc21', '0xba20a5e63eeEFfFA6fD365E7e540628F8fC61474') } } From 58dff77ff99be4b81fa081d675552f20253a1fda Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:45:46 +0100 Subject: [PATCH 1843/2004] fix sovry problem (#10490) --- projects/sovryn-dex/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js index 12c6e192801..96bf85e1be6 100644 --- a/projects/sovryn-dex/index.js +++ b/projects/sovryn-dex/index.js @@ -48,17 +48,16 @@ module.exports = { pools { base quote } } ` + // eslint-disable-next-line no-undef pools = await request(`https://bob-ambient-subgraph.sovryn.app/subgraphs/name/DistributedCollective/bob-ambient-subgraph`, query) + // eslint-disable-next-line no-undef const tokens = pools.pools.map(i => [i.base, i.quote]).flat() return sumTokens2({ chain: "bob", owner: '0xe5bc234A484A912A61Aa74501960cFc202e773dA', tokens, }); }, - //staking: staking('0xc17C6462cEAFE9A8819258c6bA168BEF5544Fc21') // does not work + staking: staking('0xc17c6462ceafe9a8819258c6ba168bef5544fc21', '0xba20a5e63eeEFfFA6fD365E7e540628F8fC61474') }, rsk: { tvl, staking: staking('0x5684a06cab22db16d901fee2a5c081b4c91ea40e', '0xefc78fc7d48b64958315949279ba181c2114abbd') }, - bob: { - staking: staking('0xc17c6462ceafe9a8819258c6ba168bef5544fc21', '0xba20a5e63eeEFfFA6fD365E7e540628F8fC61474') - } } From b91efa646707c6653227a5f5677b456e0447ee2c Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:09:47 +0100 Subject: [PATCH 1844/2004] Add Lukso Chain (#10492) --- projects/helper/coreAssets.json | 3 +++ projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 7 +++++-- projects/universal-swaps/index.js | 5 +++++ 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 projects/universal-swaps/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 0b62a31df9d..9e09dd0ed40 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1785,5 +1785,8 @@ }, "taiko": { "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" + }, + "lukso": { + "WLYX": "0x2db41674f2b882889e5e1bd09a3f3613952bc472" } } \ No newline at end of file diff --git a/projects/helper/env.js b/projects/helper/env.js index 0bb95dda42c..9a25c7e5617 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -22,6 +22,7 @@ const DEFAULTS = { REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', SEI_RPC: 'https://evm-rpc.sei-apis.com/', + LUKSO_RPC: 'https://rpc.lukso.sigmacore.io', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 847f6e76b67..3b38b86fae9 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -100,8 +100,8 @@ const fixBalancesTokens = { // fix these by pricing the tokens in coins repo '0xd53E6f1d37f430d84eFad8060F9Fec558B36F6fa': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, '0xf6718b2701d4a6498ef77d7c152b2137ab28b8a3': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, - '0x9a6ae5622990ba5ec1691648c3a2872469d161f9': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, - '0xA984b70f7B41EE736B487D5F3D9C1e1026476Ea3': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + //REMOVE '0x9a6ae5622990ba5ec1691648c3a2872469d161f9': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, + //REMOVE '0xA984b70f7B41EE736B487D5F3D9C1e1026476Ea3': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, }, cyeth: { '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, @@ -134,6 +134,9 @@ const fixBalancesTokens = { core: { '0x5832f53d147b3d6cd4578b9cbd62425c7ea9d0bd': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, '0x5B1Fb849f1F76217246B8AAAC053b5C7b15b7dc3': { coingeckoId: 'solv-btc', decimals: 18 }, + }, + lukso: { + '0x2db41674f2b882889e5e1bd09a3f3613952bc472': { coingeckoId: 'wrapped-lyx-universalswaps-2', decimals: 18 }, } } diff --git a/projects/universal-swaps/index.js b/projects/universal-swaps/index.js new file mode 100644 index 00000000000..56d0a3aa59c --- /dev/null +++ b/projects/universal-swaps/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + lukso: { factory: "0x8130c332dddf8964b08eab86aad3999017436a6e", fromBlock: 1939261, }, +}); \ No newline at end of file From 9d3a4cf8e4ab2b2810127b932d711f0801642b8a Mon Sep 17 00:00:00 2001 From: Christopher Mercer <120351727+chris-mercer@users.noreply.github.com> Date: Tue, 4 Jun 2024 07:10:10 -0600 Subject: [PATCH 1845/2004] Add ETCSwap V3 (#10482) Co-authored-by: leon-do --- projects/etcswap-v3/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/etcswap-v3/index.js diff --git a/projects/etcswap-v3/index.js b/projects/etcswap-v3/index.js new file mode 100644 index 00000000000..a358219cc48 --- /dev/null +++ b/projects/etcswap-v3/index.js @@ -0,0 +1,8 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + ethereumclassic: { + factory: "0x2624E907BcC04f93C8f29d7C7149a8700Ceb8cDC", + fromBlock: 19714286, + }, +}); From 1d1ead21789e4539d1143d88392a2195247f3535 Mon Sep 17 00:00:00 2001 From: yanfu-mercurylabs <155401479+yanfu-mercurylabs@users.noreply.github.com> Date: Tue, 4 Jun 2024 23:17:10 +1000 Subject: [PATCH 1846/2004] Add Earlyfans adapter (#10486) * add earlyfans adapter * update wording * Update index.js --------- Co-authored-by: Yan Fu Co-authored-by: Yan Fu Co-authored-by: Define101 <93603962+Define101@users.noreply.github.com> --- projects/earlyfans/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 projects/earlyfans/index.js diff --git a/projects/earlyfans/index.js b/projects/earlyfans/index.js new file mode 100644 index 00000000000..e7801fcb37e --- /dev/null +++ b/projects/earlyfans/index.js @@ -0,0 +1,18 @@ +const { sumTokens2 } = require("../helper/unwrapLPs"); +const ADDRESSES = require('../helper/coreAssets.json') +const { staking } = require('../helper/staking') + +const contract = "0x4b17a9318238403ddac8E3a790C3b06D18132Bf4"; +const early = "0x7135B32e9903BdB4e19a8b1D22fC2038964B8451"; + +async function tvl(api) { + return sumTokens2({ tokens: [ADDRESSES.null], owners: [contract], api }); +} + +module.exports = { + methodology: `TVL counts the EARLY on ${early} and ETH on ${contract}`, + blast: { + tvl, + staking: staking(contract, early) // early token + }, +}; From 0632e537d2d3b4ec3132491cc6910961ec4fe63d Mon Sep 17 00:00:00 2001 From: yb <43601702+yasha-black@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:18:59 +0300 Subject: [PATCH 1847/2004] fix: split ergodex and splash adapters (#10491) --- projects/ergodex.js | 12 ------------ projects/splash.js | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 projects/splash.js diff --git a/projects/ergodex.js b/projects/ergodex.js index e7caf7509ae..fb17071d94d 100644 --- a/projects/ergodex.js +++ b/projects/ergodex.js @@ -1,21 +1,9 @@ const { sumTokensExport } = require('./helper/chain/ergo') -const { sumTokensExport: steCardano } = require('./helper/chain/cardano') -const { get } = require('./helper/http'); - -async function cardanoTVL() { - let { tvlAda } = await get('https://api.splash.trade/platform-api/v1/platform/stats') - - return { cardano: tvlAda }; -} module.exports = { timetravel: false, misrepresentedTokens: true, ergo: { tvl: sumTokensExport({ owner: '5vSUZRZbdVbnk4sJWjg2uhL94VZWRg4iatK9VgMChufzUgdihgvhR8yWSUEJKszzV7Vmi6K8hCyKTNhUaiP8p5ko6YEU9yfHpjVuXdQ4i5p4cRCzch6ZiqWrNukYjv7Vs5jvBwqg5hcEJ8u1eerr537YLWUoxxi1M4vQxuaCihzPKMt8NDXP4WcbN6mfNxxLZeGBvsHVvVmina5THaECosCWozKJFBnscjhpr3AJsdaL8evXAvPfEjGhVMoTKXAb2ZGGRmR8g1eZshaHmgTg2imSiaoXU5eiF3HvBnDuawaCtt674ikZ3oZdekqswcVPGMwqqUKVsGY4QuFeQoGwRkMqEYTdV2UDMMsfrjrBYQYKUBFMwsQGMNBL1VoY78aotXzdeqJCBVKbQdD3ZZWvukhSe4xrz8tcF3PoxpysDLt89boMqZJtGEHTV9UBTBEac6sDyQP693qT3nKaErN8TCXrJBUmHPqKozAg9bwxTqMYkpmb9iVKLSoJxG7MjAj72SRbcqQfNCVTztSwN3cRxSrVtz4p87jNFbVtFzhPg7UqDwNFTaasySCqM', }) - }, - cardano: { - tvl: cardanoTVL, - // tvl: steCardano({ owner: 'addr1x94ec3t25egvhqy2n265xfhq882jxhkknurfe9ny4rl9k6dj764lvrxdayh2ux30fl0ktuh27csgmpevdu89jlxppvrst84slu'}) } } diff --git a/projects/splash.js b/projects/splash.js new file mode 100644 index 00000000000..0e4c15d75fa --- /dev/null +++ b/projects/splash.js @@ -0,0 +1,15 @@ +const { get } = require('./helper/http'); + +async function cardanoTVL() { + let { tvlAda } = await get('https://api2.splash.trade/platform-api/v1/platform/stats') + + return { cardano: tvlAda }; +} + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + cardano: { + tvl: cardanoTVL, + } +} From f13797a91c22ae8b2cb3e3d8e3074c47941e765e Mon Sep 17 00:00:00 2001 From: MindGamesM <66219051+MindGamesM@users.noreply.github.com> Date: Tue, 4 Jun 2024 15:37:41 +0200 Subject: [PATCH 1848/2004] Add BlastUp Adapter (#10493) * add blastup project * Update index.js --------- Co-authored-by: MindGames Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blastup/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/blastup/index.js diff --git a/projects/blastup/index.js b/projects/blastup/index.js new file mode 100644 index 00000000000..a44fce37bd9 --- /dev/null +++ b/projects/blastup/index.js @@ -0,0 +1,10 @@ +const { staking } = require("../helper/staking") +const stakingpool = "0x0E84461a00C661A18e00Cab8888d146FDe10Da8D" + +const ADDRESSES = require("../helper/coreAssets.json") + +module.exports = { + blast: { + tvl: staking(stakingpool, [ADDRESSES.blast.USDB, ADDRESSES.blast.WETH]), + }, +} From 680560cae24e92a3fddcdc067da205125adb8df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20L=C3=BCcke?= Date: Tue, 4 Jun 2024 15:39:40 +0200 Subject: [PATCH 1849/2004] Add USK on Telos (#10494) --- projects/kuma/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/kuma/index.js b/projects/kuma/index.js index d29162875c0..8b5c2a80fcf 100644 --- a/projects/kuma/index.js +++ b/projects/kuma/index.js @@ -13,6 +13,9 @@ const allAddresses = { }, linea: { USK: "0x7a6AA80B49017f3E091574ab5C6977d863ff3865", + }, + telos: { + USK: "0x09B88f74Fb9E243c4A3F4D2FfE3d1BA4287a476c", } } From e20339e72a9215ad69deb80065beef730e7c0201 Mon Sep 17 00:00:00 2001 From: charq <73696209+buchaoqun@users.noreply.github.com> Date: Tue, 4 Jun 2024 21:41:40 +0800 Subject: [PATCH 1850/2004] Eliminate SolvBTC (#10487) * Changed to get all vault raise balances * Add judgment * add network * del console log * fix bug * fix bug * Update index.js * update subgraph url * fix bug * revert * Excluding Fof Funds * add other Deposit * add solvbtc Solv Funds del solvbtc * update graphql query * add mirro balance * Eliminate SolvBTC * Remove unusable code * Format --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Co-authored-by: qwen-solv --- projects/solv-protocol-funds/abi.json | 3 +- projects/solv-protocol-funds/index.js | 56 +++++++++++---------------- 2 files changed, 24 insertions(+), 35 deletions(-) diff --git a/projects/solv-protocol-funds/abi.json b/projects/solv-protocol-funds/abi.json index a0495db17d1..1435ab0f58e 100644 --- a/projects/solv-protocol-funds/abi.json +++ b/projects/solv-protocol-funds/abi.json @@ -11,5 +11,6 @@ "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)" + "stakedMlpAmount": "function stakedMlpAmount(address account) view returns (uint256)", + "symbol": "string:symbol" } \ No newline at end of file diff --git a/projects/solv-protocol-funds/index.js b/projects/solv-protocol-funds/index.js index bac24c4908f..efdf9aec3ae 100644 --- a/projects/solv-protocol-funds/index.js +++ b/projects/solv-protocol-funds/index.js @@ -93,6 +93,13 @@ async function borrowed(api) { } } + const symbols = await api.multiCall({ + abi: abi.symbol, + calls: poolBaseInfos.map((index) => ({ + target: index[1] + })), + }) + const balances = await api.multiCall({ abi: abi.balanceOf, calls: Object.values(vaults).map((index) => ({ @@ -113,7 +120,9 @@ async function borrowed(api) { vaultbalances[`${pools[i]['vault'].toLowerCase()}-${poolBaseInfos[i][1].toLowerCase()}`] = undefined } if (balance > 0) { - api.add(poolBaseInfos[i][1], balance) + if (symbols[i] !== "SolvBTC") { + api.add(poolBaseInfos[i][1], balance) + } } } } @@ -249,8 +258,8 @@ async function liquidity(api, iziswap, owner) { tokenList.forEach((token, index) => { const amounts = getAmounts(state[index], liquidities[index]) - api.add(token[0], amounts.amountX) - api.add(token[1], amounts.amountY) + api.add(token[0], amounts.amountX); + api.add(token[1], amounts.amountY); }) } @@ -320,6 +329,13 @@ async function vaultBalance(api, graphData) { } } + const symbols = await api.multiCall({ + abi: abi.symbol, + calls: Object.values(vaults).map((index) => ({ + target: index[0] + })), + }) + const balances = await api.multiCall({ abi: abi.balanceOf, calls: Object.values(vaults).map((index) => ({ @@ -329,7 +345,9 @@ async function vaultBalance(api, graphData) { }) for (const key in balances) { - api.add(Object.values(vaults)[key][0], balances[key]) + if (symbols[key] !== "SolvBTC") { + api.add(Object.values(vaults)[key][0], balances[key]) + } } } } @@ -432,36 +450,6 @@ async function ceffuBalance(api, address, graphData) { } } - -async function getGraphSoltData(timestamp, chain, api, slot) { - console.log("slot", slot) - const poolSlotDataQuery = `query PoolOrderInfos { - poolOrderInfos(first: 1000 where:{fundraisingEndTime_gt:${timestamp}, openFundShareSlot:"${slot["slot"]}") { - marketContractAddress - contractAddress - navOracle - poolId - vault - openFundShareSlot - } - }`; - - console.log("slotDataQuery", poolSlotDataQuery); - let data; - if (graphUrlList[chain]) { - data = (await cachedGraphQuery(`solv-protocol/funds-graph-data/${chain}`, graphUrlList[chain], poolSlotDataQuery, { api, fetchById: true })); - } - - let poolList = []; - if (data != undefined && data.poolOrderInfos != undefined) { - poolList = data.poolOrderInfos; - } - - return { - pools: poolList - }; -} - async function getGraphData(timestamp, chain, api) { let rwaSlot = (await getConfig('solv-protocol/slots', slotListUrl)); From 192cd8bdd855b6f85d2a72c9c6f172b42b6a9dc1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jun 2024 15:54:54 +0200 Subject: [PATCH 1851/2004] split adapter (#10495) --- projects/dtx-dex/index.js | 4 ++++ projects/dtx/index.js | 11 +---------- projects/helper/unknownTokens.js | 11 +++++++++++ 3 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 projects/dtx-dex/index.js diff --git a/projects/dtx-dex/index.js b/projects/dtx-dex/index.js new file mode 100644 index 00000000000..a9afb34a4b9 --- /dev/null +++ b/projects/dtx-dex/index.js @@ -0,0 +1,4 @@ +const { uniTvlExports } = require('../helper/unknownTokens') +module.exports = uniTvlExports({ + taiko: '0x2EA9051d5a48eA2350b26306f2b959D262cf67e1' +}) diff --git a/projects/dtx/index.js b/projects/dtx/index.js index e286201253a..db223b152f5 100644 --- a/projects/dtx/index.js +++ b/projects/dtx/index.js @@ -1,6 +1,5 @@ const { sumERC4626VaultsExport } = require("../helper/erc4626") const { sumTokensExport } = require("../helper/unwrapLPs") -const { getUniTVL } = require("../helper/unknownTokens") const sdk = require("@defillama/sdk") const ADDRESSES = require("../helper/coreAssets.json") @@ -37,7 +36,6 @@ const config = { "0xB00231B308B01Dbb90f16F966F62d86fBc78c450", ], }, - factory: "0x2EA9051d5a48eA2350b26306f2b959D262cf67e1", }, } @@ -47,14 +45,7 @@ Object.keys(config).forEach((chain) => { const otherTvl = sumTokensExport(tokenConfig) let tvlCalculators = [vaultTvl, otherTvl] - - if (factory) { - const uniTvl = getUniTVL({ - chain, - factory, - }) - tvlCalculators.push(uniTvl) - } + module.exports[chain] = { tvl: sdk.util.sumChainTvls(tvlCalculators), } diff --git a/projects/helper/unknownTokens.js b/projects/helper/unknownTokens.js index c722bc96ee4..cf07b1d5f98 100644 --- a/projects/helper/unknownTokens.js +++ b/projects/helper/unknownTokens.js @@ -9,6 +9,16 @@ const { getTokenPrices, sumUnknownTokens, getLPData, } = require('./cache/sumUnk const { getUniTVL } = require('./cache/uniswap') const { getUniqueAddresses, } = require('./utils') +function uniTvlExports(config, commonOptions) { + const exportsObj = { + misrepresentedTokens: true, + } + Object.keys(config).forEach(chain => { + exportsObj[chain] = uniTvlExport(chain, config[chain],commonOptions )[chain] + }) + return exportsObj +} + function unknownTombs({ token = [], shares = [], rewardPool = [], masonry = [], lps, chain = "ethereum", coreAssets = [], useDefaultCoreAssets = false, }) { let getPrices @@ -256,4 +266,5 @@ module.exports = { sumTokensExport, yieldHelper, uniTvlExport, + uniTvlExports, }; \ No newline at end of file From 0cd636266b3aa87da4f82819050c196c5496da5b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:43:16 +0200 Subject: [PATCH 1852/2004] Add Joltify adapter and move mapping to server (#10498) * add joltify adapter * move mapping to server --------- Co-authored-by: briangarden --- projects/helper/chain/cosmos.js | 4 +++- projects/helper/chains.json | 3 ++- projects/helper/tokenMapping.js | 2 +- projects/joltify-lending/index.js | 24 ++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 projects/joltify-lending/index.js diff --git a/projects/helper/chain/cosmos.js b/projects/helper/chain/cosmos.js index c7b392745cf..fda290201eb 100644 --- a/projects/helper/chain/cosmos.js +++ b/projects/helper/chain/cosmos.js @@ -41,7 +41,8 @@ const endPoints = { sifchain: "https://sifchain-api.polkachu.com", nolus: "https://pirin-cl.nolus.network:1317", nibiru: "https://lcd.nibiru.fi", - bostrom: "https://lcd.bostrom.cybernode.ai" + bostrom: "https://lcd.bostrom.cybernode.ai", + joltify: "https://lcd.joltify.io" }; const chainSubpaths = { @@ -50,6 +51,7 @@ const chainSubpaths = { comdex: "comdex", umee: "umee", kava: "kava", + joltify: "joltify", }; // some contract calls need endpoint with higher gas limit diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 95829f49172..6b6056b39ad 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -319,5 +319,6 @@ "zklink", "zksync", "zora", - "zyx" + "zyx", + "joltify" ] \ No newline at end of file diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3b38b86fae9..b3c55dcd0b8 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -17,7 +17,7 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList -const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret', 'aura', 'xpla', 'bostrom'] +const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret', 'aura', 'xpla', 'bostrom', 'joltify'] const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc', 'renec', 'doge'] const transformTokens = { diff --git a/projects/joltify-lending/index.js b/projects/joltify-lending/index.js new file mode 100644 index 00000000000..931d31b53ce --- /dev/null +++ b/projects/joltify-lending/index.js @@ -0,0 +1,24 @@ +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 From fc56d8ed199a8950444c5336755b6cd0a2a812c1 Mon Sep 17 00:00:00 2001 From: Brian Bodollo Date: Tue, 4 Jun 2024 23:44:26 +0800 Subject: [PATCH 1853/2004] Stride Hyperlane Adapter (#10497) * feat: added stride-hyperlane tvl for defillama * chore: added final new line on index file * chore: removed redemption_rate and changed methodology * fix: fixed not showing balances properly * chore: added note for address denom reference * chore: changed methodology --- projects/stride-hyperlane/index.js | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 projects/stride-hyperlane/index.js diff --git a/projects/stride-hyperlane/index.js b/projects/stride-hyperlane/index.js new file mode 100644 index 00000000000..71f6a8371c2 --- /dev/null +++ b/projects/stride-hyperlane/index.js @@ -0,0 +1,38 @@ +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-fleet.main.stridenet.co/api/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 From 3140371e40008b3a51a6e95d9723f2726e20836d Mon Sep 17 00:00:00 2001 From: ivanshukhov <45999338+ivanshukhov@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:00:32 +0200 Subject: [PATCH 1854/2004] add physica, usdc tokens to planq (#10499) --- projects/helper/coreAssets.json | 6 ++++-- projects/helper/tokenMapping.js | 4 ++++ projects/physica-finance/index.js | 5 +++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 projects/physica-finance/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 9e09dd0ed40..02dbb4df6ef 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1765,7 +1765,9 @@ "UBTC": "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2" }, "planq": { - "WPLANQ": "0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a" + "WPLANQ": "0x5ebcdf1de1781e8b5d41c016b0574ad53e2f6e1a", + "USDC": "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265", + "USDC_1": "0x75E20C5d4aade76143b8b74d1C5E2865347f9d3B" }, "lac": { "LAC": "0x2911a1ab18546cb501628be8625c7503a2a7db54" @@ -1789,4 +1791,4 @@ "lukso": { "WLYX": "0x2db41674f2b882889e5e1bd09a3f3613952bc472" } -} \ No newline at end of file +} diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index b3c55dcd0b8..4794c30e227 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -137,6 +137,10 @@ const fixBalancesTokens = { }, lukso: { '0x2db41674f2b882889e5e1bd09a3f3613952bc472': { coingeckoId: 'wrapped-lyx-universalswaps-2', decimals: 18 }, + }, + planq: { + "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265": { coingeckoId: 'usd-coin', decimals: 6 }, + "0x75E20C5d4aade76143b8b74d1C5E2865347f9d3B": { coingeckoId: 'usd-coin', decimals: 18 }, } } diff --git a/projects/physica-finance/index.js b/projects/physica-finance/index.js new file mode 100644 index 00000000000..99bea7e259b --- /dev/null +++ b/projects/physica-finance/index.js @@ -0,0 +1,5 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + planq: { factory: "0xFF4F8f857fd60142a135aB139C16370da89c76c2", fromBlock: 9020194, }, +}); From 38f766b6d58d606cf63d754338bc1580661afdb8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:01:01 +0200 Subject: [PATCH 1855/2004] update sdk version --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dab982ba367..2143492e47f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.59", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.59.tgz", - "integrity": "sha512-9Gxs1OkyPrqfvf9nuvlvwWUCxoJO4uHLOfJaT9p6LwC9xl2+iFY0Yb/+kCt0TgRYRooEP88Z4Rf3PmnmhTsw+g==", + "version": "5.0.61", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.61.tgz", + "integrity": "sha512-t7nOMdpQ29y1eZmQothokRqsrfmGSTcu/ZHauvl/CvDEcUuWK+uNpdSAYG0cf93Z3XUXKH4eyRI7XLZcYR7/6w==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@elastic/elasticsearch": "^8.13.1", From 9c08ea20e5bc9f4afef4457b31cb7ac3d5e89bf8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:20:51 +0200 Subject: [PATCH 1856/2004] Update sei deployment and contract calls (#10500) * Add carbondefi sei evm deployment * Use sei instead of sei_evm * Use contract call to get pairs instead of getLogs * minor fix --------- Co-authored-by: Tiago Silva --- projects/carbondefi/index.js | 42 +++++++++++++++++++-------------- projects/helper/tokenMapping.js | 2 ++ 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/projects/carbondefi/index.js b/projects/carbondefi/index.js index 2d365672677..beacc231a1e 100644 --- a/projects/carbondefi/index.js +++ b/projects/carbondefi/index.js @@ -1,21 +1,27 @@ -const { getLogs } = require('../helper/cache/getLogs') -const { sumTokens2 } = require('../helper/unwrapLPs') +const { sumTokens2 } = require("../helper/unwrapLPs"); -const controller = '0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1' +const config = { + ethereum: { + fromBlock: 17087375, + controller: "0xC537e898CD774e2dCBa3B14Ea6f34C93d5eA45e1", + }, + sei: { + fromBlock: 79146720, + controller: "0xe4816658ad10bF215053C533cceAe3f59e1f1087", + }, +}; -async function tvl(api) { - const logs = await getLogs({ - api, - target: controller, - topic: 'PairCreated(uint128,address,address)', - eventAbi: 'event PairCreated(uint128 indexed pairId, address indexed token0, address indexed token1)', - onlyArgs: true, - fromBlock: 17087375, - }) - const tokens = logs.map(i => [i.token0, i.token1]).flat() +Object.keys(config).forEach((chain) => { + const { controller, fromBlock } = 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.flat().map(i => i.toLowerCase()) - return sumTokens2({ api, owner: controller, tokens, }) -} - - -module.exports = { ethereum: { tvl } } \ No newline at end of file + return sumTokens2({ api, owner: controller, tokens }); + }, + }; +}); diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4794c30e227..193d816cb61 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -130,6 +130,8 @@ const fixBalancesTokens = { }, sei: { '0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1': { coingeckoId: 'usd-coin', decimals: 6 }, + '0x0000000000000000000000000000000000000000': { coingeckoId: 'sei-network', decimals: 18 }, + '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7': { coingeckoId: 'sei-network', decimals: 18 }, }, core: { '0x5832f53d147b3d6cd4578b9cbd62425c7ea9d0bd': { coingeckoId: 'wrapped-bitcoin', decimals: 8 }, From 45169e95ec4feef73e9b8d4574a55fe75c54b158 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:23:59 +0200 Subject: [PATCH 1857/2004] minor fix --- projects/helper/tokenMapping.js | 2 +- projects/helper/utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 193d816cb61..3e85616ff94 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -138,7 +138,7 @@ const fixBalancesTokens = { '0x5B1Fb849f1F76217246B8AAAC053b5C7b15b7dc3': { coingeckoId: 'solv-btc', decimals: 18 }, }, lukso: { - '0x2db41674f2b882889e5e1bd09a3f3613952bc472': { coingeckoId: 'wrapped-lyx-universalswaps-2', decimals: 18 }, + '0x2db41674f2b882889e5e1bd09a3f3613952bc472': { coingeckoId: 'lukso-token-2', decimals: 18 }, }, planq: { "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265": { coingeckoId: 'usd-coin', decimals: 6 }, diff --git a/projects/helper/utils.js b/projects/helper/utils.js index e4c8cbda8cb..0e4dccd218e 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -262,7 +262,7 @@ async function debugBalances({ balances = {}, chain, log = false, tableLabel = ' labelMapping[label] = token }) - if (tokens.length > 100) { + if (tokens.length > 400) { sdk.log('too many unknowns') return; } From fab519dc18808ef2eaa7e7ae6f099f534d20691d Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:33:20 +0100 Subject: [PATCH 1858/2004] fix errrs --- projects/sovryn-dex/index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/projects/sovryn-dex/index.js b/projects/sovryn-dex/index.js index 96bf85e1be6..81cd541b03f 100644 --- a/projects/sovryn-dex/index.js +++ b/projects/sovryn-dex/index.js @@ -47,10 +47,8 @@ module.exports = { { pools { base quote } } - ` - // eslint-disable-next-line no-undef - pools = await request(`https://bob-ambient-subgraph.sovryn.app/subgraphs/name/DistributedCollective/bob-ambient-subgraph`, query) - // eslint-disable-next-line no-undef + `; + 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, }); }, From be4a7c510a21b70bdc843bec67ce5dd1726cab18 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 4 Jun 2024 21:50:50 +0200 Subject: [PATCH 1859/2004] track yei fi --- projects/bancor/index.js | 98 ++++++-------------------------- projects/bancor/v3.js | 36 ++---------- projects/carbondefi/index.js | 2 +- projects/dragonswap-sei/index.js | 3 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 2 + projects/yei-fi/index.js | 5 ++ 7 files changed, 34 insertions(+), 113 deletions(-) create mode 100644 projects/dragonswap-sei/index.js create mode 100644 projects/yei-fi/index.js diff --git a/projects/bancor/index.js b/projects/bancor/index.js index d73bdfdd7e9..835254bea24 100644 --- a/projects/bancor/index.js +++ b/projects/bancor/index.js @@ -1,51 +1,27 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const ADDRESSES = require('../helper/coreAssets.json'); +const { sumTokens2 } = require('../helper/unwrapLPs'); const abi = require('./abi.json'); -const sdk = require('@defillama/sdk'); -const { sumTokens } = require('../helper/unwrapLPs'); -const ethAddress = ADDRESSES.null; -const ethReserveAddresses = ['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee']; - -async function generateCallsByBlockchain(block) { +async function generateCallsByBlockchain(api) { + const block = api.block const registryAddress = '0x52Ae12ABe5D8BD778BD5397F99cA900624CfADD4'; const converterRegistryHex = '0x42616e636f72436f6e7665727465725265676973747279000000000000000000'; - let result; let converterRegistryAddress; - if (block < 9195218) { + if (block && block < 9195218) { converterRegistryAddress = '0xf6E2D7F616B67E46D708e4410746E9AAb3a4C518'; } else { // get converter registry address - result = await sdk.api.abi.call({ - target: registryAddress, - abi: abi['abiContractRegistryAddressOf'], - params: [converterRegistryHex], - block - }); - - converterRegistryAddress = result.output; + converterRegistryAddress = await api.call({ abi: abi.abiContractRegistryAddressOf, target: registryAddress, params: [converterRegistryHex] }); } // get pool anchor addresses - result = await sdk.api.abi.call({ - target: converterRegistryAddress, - abi: abi['abiConverterRegistryGetPools'], - block - }); - - // get converter addresses - result = await sdk.api.abi.call({ - target: converterRegistryAddress, - abi: abi['abiRegistryGetConvertersBySmartTokens'], - params: [result.output], - block - }); - - // get reserve token addresses (currently limited to 2) - const converterAddresses = result.output; + const poolAnchorAddresses = await api.call({ abi: abi.abiConverterRegistryGetPools, target: converterRegistryAddress }); + const converterAddresses = await api.call({ abi: abi.abiRegistryGetConvertersBySmartTokens, target: converterRegistryAddress, params: [poolAnchorAddresses] }); const reserveTokenCalls = []; + const owners = []; for (let i = 0; i < converterAddresses.length; i++) { reserveTokenCalls.push({ target: converterAddresses[i], @@ -55,62 +31,22 @@ async function generateCallsByBlockchain(block) { target: converterAddresses[i], params: [1] }); + owners.push(converterAddresses[i]); + owners.push(converterAddresses[i]); } - result = await sdk.api.abi.multiCall({ - calls: reserveTokenCalls, - abi: abi['abiConverterConnectorTokens'], - block - }); - - // create reserve balance calls - const balanceCalls = []; - for (let i = 0; i < result.output.length; i++) { - const item = result.output[i]; - balanceCalls.push({ - target: item.output, - params: [item.input.target] - }); - } - - return balanceCalls; -} - -/*================================================== - TVL - ==================================================*/ - -async function tvl(timestamp, block) { - let balanceCalls = await generateCallsByBlockchain(block); - - // get ETH balances - let balances = {}; - - const ethBalanceCalls = balanceCalls.filter((call) => ethReserveAddresses.includes(call.target.toLowerCase())).map(call => call.params[0]) - ethBalanceCalls.push('0xc0829421C1d260BD3cB3E0F06cfE2D52db2cE315') - - - const { output: ethBalances } = await sdk.api.eth.getBalances({ targets: ethBalanceCalls, block }) - ethBalances.forEach(bal => sdk.util.sumSingleBalance(balances, ethAddress, bal.balance)) - - // get reserve balances - let result = await sdk.api.abi.multiCall({ - calls: balanceCalls.filter(c => c.target.toLowerCase() !== "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE".toLowerCase()), - abi: 'erc20:balanceOf', - block - }); - - sdk.util.sumMultiBalanceOf(balances, result); - - return balances; + const tokens = await api.multiCall({ calls: reserveTokenCalls, abi: abi['abiConverterConnectorTokens'], }); + tokens.push(ADDRESSES.null); + owners.push('0xc0829421C1d260BD3cB3E0F06cfE2D52db2cE315'); + return sumTokens2({ api, tokensAndOwners2: [tokens, owners] }) } module.exports = { start: 1501632000, // 08/02/2017 @ 12:00am (UTC) ethereum: { - tvl, + tvl: generateCallsByBlockchain, }, - hallmarks:[ + hallmarks: [ [1588114800, "V2.0 Launch"], // 29/04/2020 @ 12:00am (UTC) [1602457200, "V2.1 Launch"] // 12/10/2020 @ 12:00am (UTC) ], diff --git a/projects/bancor/v3.js b/projects/bancor/v3.js index 37fbea3109b..266cd459a2f 100644 --- a/projects/bancor/v3.js +++ b/projects/bancor/v3.js @@ -1,47 +1,21 @@ -const ADDRESSES = require('../helper/coreAssets.json') +const { sumTokens2 } = require('../helper/unwrapLPs'); const abi = require('./abi.json'); -const sdk = require('@defillama/sdk'); -const { sumTokens } = require('../helper/unwrapLPs'); -const ethAddress = ADDRESSES.null; -const ethReserveAddresses = ['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee']; const bancor = '0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' -async function addV3Balance(balances, block) { +async function addV3Balance(api) { const masterVault = '0x649765821D9f64198c905eC0B2B037a4a52Bc373' const networkSettings = '0xeEF417e1D5CC832e619ae18D2F140De2999dD4fB' - const { output: tokens } = await sdk.api.abi.call({ - target: networkSettings, block, abi: abi.liquidityPools - }) - + const tokens = await api.call({ abi: abi.liquidityPools, target: networkSettings}) tokens.push(bancor) - - const toa = tokens - .filter(t => !ethReserveAddresses.includes(t.toLowerCase())) - .map(t => [t, masterVault]) - - const { output: balance } = await sdk.api.eth.getBalance({ target: masterVault, block }) - sdk.util.sumSingleBalance(balances, ethAddress, balance) - return sumTokens(balances, toa, block) -} - -/*================================================== - TVL - ==================================================*/ - -async function tvl(timestamp, block) { - - // get ETH balances - let balances = {}; - - return addV3Balance(balances, block) + return sumTokens2({ api, owner: masterVault, tokens }) } module.exports = { start: 1650283200, // 18/04/2022 @ 1:00pm (UTC) methodology: `Counts the tokens in the Master Vault Contract.`, ethereum: { - tvl, + tvl: addV3Balance, }, hallmarks:[ [1650322800, "V3 Beta"], // 19/04/2022 @ 12:00am (UTC) diff --git a/projects/carbondefi/index.js b/projects/carbondefi/index.js index beacc231a1e..85a5897ddfd 100644 --- a/projects/carbondefi/index.js +++ b/projects/carbondefi/index.js @@ -19,7 +19,7 @@ Object.keys(config).forEach((chain) => { target:controller, abi: 'function pairs() view returns (address[2][])', }) - const tokens = pairs.flat().map(i => i.toLowerCase()) + const tokens = pairs.flat() return sumTokens2({ api, owner: controller, tokens }); }, diff --git a/projects/dragonswap-sei/index.js b/projects/dragonswap-sei/index.js new file mode 100644 index 00000000000..a26d9a7cacf --- /dev/null +++ b/projects/dragonswap-sei/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require("../helper/unknownTokens"); + +module.exports = uniTvlExport('sei', '0x71f6b49ae1558357bbb5a6074f1143c46cbca03d') diff --git a/projects/helper/env.js b/projects/helper/env.js index 9a25c7e5617..d4f517ebf5b 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -20,6 +20,7 @@ const DEFAULTS = { REAL_RPC: 'https://real.drpc.org', // added manually short name is re-al TAIKO_RPC: 'https://rpc.taiko.xyz', // added manually short name is tko-mainnet REAL_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', + SEI_RPC_MULTICALL: '0xcA11bde05977b3631167028862bE2a173976CA11', TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', SEI_RPC: 'https://evm-rpc.sei-apis.com/', LUKSO_RPC: 'https://rpc.lukso.sigmacore.io', diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 3e85616ff94..35b60d19db6 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -130,6 +130,7 @@ const fixBalancesTokens = { }, sei: { '0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1': { coingeckoId: 'usd-coin', decimals: 6 }, + '0xb75d0b03c06a926e488e2659df1a861f860bd3d1': { coingeckoId: 'tether', decimals: 6 }, '0x0000000000000000000000000000000000000000': { coingeckoId: 'sei-network', decimals: 18 }, '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7': { coingeckoId: 'sei-network', decimals: 18 }, }, @@ -185,6 +186,7 @@ function getCoreAssets(chain = 'ethereum') { 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() } diff --git a/projects/yei-fi/index.js b/projects/yei-fi/index.js new file mode 100644 index 00000000000..c66083025c0 --- /dev/null +++ b/projects/yei-fi/index.js @@ -0,0 +1,5 @@ +const { aaveExports } = require('../helper/aave'); + +module.exports = { + sei: aaveExports(undefined, '', undefined, ['0x60c82a40c57736a9c692c42e87a8849fb407f0d6']), +}; From d8e79588abc6be9da67deb35a6523bf23bdc058e Mon Sep 17 00:00:00 2001 From: Noah Hanover Date: Wed, 5 Jun 2024 02:18:12 -0500 Subject: [PATCH 1860/2004] Add Season2 of Munchables (#10503) * bringing back s * added season 2 --- projects/munchables-season2/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/munchables-season2/index.js diff --git a/projects/munchables-season2/index.js b/projects/munchables-season2/index.js new file mode 100644 index 00000000000..8c8a101bdbd --- /dev/null +++ b/projects/munchables-season2/index.js @@ -0,0 +1,11 @@ +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], + }), + }, +}; \ No newline at end of file From 698e6595b4f9aa93108296fc6fde070b313b028f Mon Sep 17 00:00:00 2001 From: Ncookie Date: Wed, 5 Jun 2024 04:27:01 -0300 Subject: [PATCH 1861/2004] added base and arbitrum pooltogether vault factories (#10501) --- projects/pooltogether-v5/index.js | 2 +- projects/pooltogether/v5.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/pooltogether-v5/index.js b/projects/pooltogether-v5/index.js index 7c02208969c..879280fd6d6 100644 --- a/projects/pooltogether-v5/index.js +++ b/projects/pooltogether-v5/index.js @@ -1,6 +1,6 @@ const { tvl } = require('../pooltogether/v5.js') -const chains = ['optimism'] +const chains = ['optimism', 'base', 'arbitrum'] module.exports = { doublecounted: true, diff --git a/projects/pooltogether/v5.js b/projects/pooltogether/v5.js index 888a11c4d5b..b69a502a81a 100644 --- a/projects/pooltogether/v5.js +++ b/projects/pooltogether/v5.js @@ -2,7 +2,9 @@ const abi = require('./abi.json') const { sumTokens2 } = require('../helper/unwrapLPs') const V5_VAULT_FACTORIES = { - optimism: ['0xF65FA202907D6046D1eF33C521889B54BdE08081', '0x6B17EE3a95BcCd605340454c5919e693Ef8EfF0E', '0xF0F151494658baE060034c8f4f199F74910ea806', '0x0C379e9b71ba7079084aDa0D1c1Aeb85d24dFD39'] + optimism: ['0xF65FA202907D6046D1eF33C521889B54BdE08081', '0x6B17EE3a95BcCd605340454c5919e693Ef8EfF0E', '0xF0F151494658baE060034c8f4f199F74910ea806', '0x0C379e9b71ba7079084aDa0D1c1Aeb85d24dFD39'], + base: ['0xE32F6344875494ca3643198d87524519Dc396DDf'], + arbitrum: ['0x44Be003E55e7cE8a2e0ECC3266f8a9A9de2c07BC'] } async function tvl(api) { @@ -16,7 +18,7 @@ async function tvl(api) { 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, }) + return sumTokens2({ api, resolveLP: true }) } module.exports = { From f84da28a14daea5d89be83639afa936e94313ae2 Mon Sep 17 00:00:00 2001 From: shafu Date: Wed, 5 Jun 2024 09:27:22 +0200 Subject: [PATCH 1862/2004] DYAD v2 (#10502) * Update index.js * Update coreAssets.json * Update coreAssets.json * refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/dyad/index.js | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/projects/dyad/index.js b/projects/dyad/index.js index d8f921d39d7..c7e27744d3f 100644 --- a/projects/dyad/index.js +++ b/projects/dyad/index.js @@ -1,19 +1,21 @@ const ADDRESSES = require("../helper/coreAssets.json"); -const { sumTokensExport } = require("../helper/unwrapLPs"); +const vaults = [ + "0xcF97cEc1907CcF9d4A0DC4F492A3448eFc744F6c", + "0x7aE80418051b2897729Cbdf388b07C5158C557A1", + "0x4fde0131694ae08c549118c595923ce0b42f8299", + "0x7e5f2b8f089a4cd27f5b6b846306020800df45bd", + // "0xf3768D6e78E65FC64b8F12ffc824452130BD5394", // Kerosene is own token +] + +async function tvl(api) { + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) + tokens.push(ADDRESSES.null) + vaults.push('0xdc400bbe0b8b79c07a962ea99a642f5819e3b712') + return api.sumTokens({ tokensAndOwners2: [tokens, vaults] }) +} module.exports = { ethereum: { - tvl: sumTokensExport({ - owners: [ - "0xdc400bbe0b8b79c07a962ea99a642f5819e3b712", - "0xcF97cEc1907CcF9d4A0DC4F492A3448eFc744F6c", - "0x7aE80418051b2897729Cbdf388b07C5158C557A1", - ], - tokens: [ - ADDRESSES.null, - ADDRESSES.ethereum.WETH, - ADDRESSES.ethereum.WSTETH, - ], - }), + tvl, }, -}; +} \ No newline at end of file From 1ea73cd98ca8b04bb5c8447937dc477943a16914 Mon Sep 17 00:00:00 2001 From: dojo-trading <153982231+dojo-trading@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:30:23 +0800 Subject: [PATCH 1863/2004] feat: injera project (#10504) Co-authored-by: dojo --- projects/injera/index.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 projects/injera/index.js diff --git a/projects/injera/index.js b/projects/injera/index.js new file mode 100644 index 00000000000..0b7fd40df0b --- /dev/null +++ b/projects/injera/index.js @@ -0,0 +1,29 @@ +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, + }, +}; From d38c12ddbd27fe0b1962ba3874c51348c32ebca1 Mon Sep 17 00:00:00 2001 From: LeeRyanj <138840879+LeeRyanj@users.noreply.github.com> Date: Wed, 5 Jun 2024 16:39:14 +0800 Subject: [PATCH 1864/2004] Update index.js add taiko config (#10506) --- projects/kiloex/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/kiloex/index.js b/projects/kiloex/index.js index 0ffd836d483..47ba4bfea13 100644 --- a/projects/kiloex/index.js +++ b/projects/kiloex/index.js @@ -5,6 +5,7 @@ const owners = ["0x1c3f35F7883fc4Ea8C4BCA1507144DC6087ad0fb", "0xfE03be1b0504031 const opbnb_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46"]; const manta_owners = ["0xA2E2F3726DF754C1848C8fd1CbeA6aAFF84FC5B2", "0x1EbEd4024308afcb05E6938eF8Ebd1ec5d6E8C46", "0x471C5e8Cc0fEC9aeeb7ABA6697105fD6aaaDFf99"]; const manta_stone_token = "0xEc901DA9c68E90798BbBb74c11406A32A70652C3"; +const taiko_owners = ["0x735D00A9368164B9dcB2e008d5Cd15b367649aD5", "0x235C5C450952C12C8b815086943A7bBCF96bc619"]; module.exports = { start: 1690971144, @@ -15,4 +16,7 @@ module.exports = { manta: { tvl: sumTokensExport({ owners: manta_owners, tokens: [ADDRESSES.manta.USDT, manta_stone_token] }) }, + taiko: { + tvl: sumTokensExport({ owners: taiko_owners, tokens: ['0x07d83526730c7438048D55A4fc0b850e2aaB6f0b'] }) + }, }; From 64b5f072155ee0baf4f9a03872f22ffac1238f6b Mon Sep 17 00:00:00 2001 From: BAICE <48044642+libaice@users.noreply.github.com> Date: Wed, 5 Jun 2024 18:55:09 +0800 Subject: [PATCH 1865/2004] add uBTC lending market on b2 ecosystem (#10509) --- projects/bitlen/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/bitlen/index.js b/projects/bitlen/index.js index 89c4c904d9d..0dc80f0a054 100644 --- a/projects/bitlen/index.js +++ b/projects/bitlen/index.js @@ -3,6 +3,7 @@ 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'; @@ -12,7 +13,7 @@ const CORE_USDC_POOL = '0x514C4876e239a248dD6d40F54491Cc1C7b2D044A'; const config = { bsquared: { - pools: [WBTC_POOL, USDT_POOL, USDC_POOL,] + pools: [WBTC_POOL, USDT_POOL, USDC_POOL,UBTC_POOL] }, core: { pools: [CORE_POOL, COREBTC_POOL, CORE_USDT_POOL, CORE_USDC_POOL] From 6f214908849b1b8822670cd539f2d90b9d75f557 Mon Sep 17 00:00:00 2001 From: Harrirbl <131149828+Harrirbl@users.noreply.github.com> Date: Wed, 5 Jun 2024 13:59:58 +0300 Subject: [PATCH 1866/2004] feat: add adapter for sceptre staked flr (#10510) * feat: add adapter for sceptre staked flr * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/sceptre-staked-flr/index.js | 13 +++++++++++++ projects/sceptre-staked-flr/sflr.json | 4 ++++ 2 files changed, 17 insertions(+) create mode 100644 projects/sceptre-staked-flr/index.js create mode 100644 projects/sceptre-staked-flr/sflr.json diff --git a/projects/sceptre-staked-flr/index.js b/projects/sceptre-staked-flr/index.js new file mode 100644 index 00000000000..c3a6ed5ca93 --- /dev/null +++ b/projects/sceptre-staked-flr/index.js @@ -0,0 +1,13 @@ +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/sceptre-staked-flr/sflr.json b/projects/sceptre-staked-flr/sflr.json new file mode 100644 index 00000000000..aba69c17f93 --- /dev/null +++ b/projects/sceptre-staked-flr/sflr.json @@ -0,0 +1,4 @@ +{ + "totalPooledFlr": "uint256:totalPooledFlr", + "getSharesByPooledFlr": "function getSharesByPooledFlr(uint256 flrAmount) view returns (uint256)" +} \ No newline at end of file From fafd7dbb31f0805585975b9e955eb083f26a2820 Mon Sep 17 00:00:00 2001 From: mootz12 <38118608+mootz12@users.noreply.github.com> Date: Wed, 5 Jun 2024 09:52:21 -0400 Subject: [PATCH 1867/2004] add Blend adapters (#10479) * add Blend adapters * revert change to package-lock.json * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blend-backstop/api.js | 30 ++++++++++++++++ projects/blend-backstop/index.js | 8 +++++ projects/blend-pools/api.js | 60 ++++++++++++++++++++++++++++++++ projects/blend-pools/index.js | 8 +++++ projects/helper/coreAssets.json | 4 +++ projects/helper/tokenMapping.js | 7 +++- 6 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 projects/blend-backstop/api.js create mode 100644 projects/blend-backstop/index.js create mode 100644 projects/blend-pools/api.js create mode 100644 projects/blend-pools/index.js diff --git a/projects/blend-backstop/api.js b/projects/blend-backstop/api.js new file mode 100644 index 00000000000..7bb971541ec --- /dev/null +++ b/projects/blend-backstop/api.js @@ -0,0 +1,30 @@ +const { BackstopConfig, BackstopToken } = require("@blend-capital/blend-sdk"); + +const BACKSTOP_ID = "CAO3AGAMZVRMHITL36EJ2VZQWKYRPWMQAPDQD5YEOF3GIF7T44U4JAL3"; + +const network = { + rpc: "https://soroban-rpc.creit.tech/", + passphrase: "Public Global Stellar Network ; September 2015", +}; + +async function tvl(api) { + let backstop = await BackstopConfig.load(network, BACKSTOP_ID); + let backstop_token = await BackstopToken.load( + network, + backstop.backstopTkn, + backstop.blndTkn, + backstop.usdcTkn + ); + + // backstop token is a 80% BLND 20% USDC Comet pool (Balancer v1 fork) + // since BLND has no coingecko price, use USDC held in LP shares by the + // backstop to approximate total USDC held + api.addCGToken("usd-coin", (Number(backstop_token.usdc) / 1e7) * 5); + return api.getBalances(); +} + +module.exports = { + stellar: { + tvl, + }, +}; diff --git a/projects/blend-backstop/index.js b/projects/blend-backstop/index.js new file mode 100644 index 00000000000..2d3fc4f32d4 --- /dev/null +++ b/projects/blend-backstop/index.js @@ -0,0 +1,8 @@ +const { getExports } = require("../helper/heroku-api"); + +module.exports = { + timetravel: false, + misrepresentedTokens: true, + methodology: `Counts the total amount of BLND-USDC LP shares held by the Blend backstop contract. The shares are converted to a USDC value based on the liquidity pool weights.`, + ...getExports("blend-backstop", ['stellar']) +}; diff --git a/projects/blend-pools/api.js b/projects/blend-pools/api.js new file mode 100644 index 00000000000..fa85d3cb59f --- /dev/null +++ b/projects/blend-pools/api.js @@ -0,0 +1,60 @@ +const { + PoolConfig, + ReserveData, + BackstopConfig, +} = require("@blend-capital/blend-sdk"); +const { PromisePool } = require("@supercharge/promise-pool"); +const { sumTokens2 } = require('../helper/unwrapLPs') + +const BACKSTOP_ID = "CAO3AGAMZVRMHITL36EJ2VZQWKYRPWMQAPDQD5YEOF3GIF7T44U4JAL3"; + +const network = { + rpc: "https://soroban-rpc.creit.tech/", + passphrase: "Public Global Stellar Network ; September 2015", +}; + +async function getReserveDeposits(poolId, reserveId, isBorrowed = false) { + const data = await ReserveData.load(network, poolId, reserveId) + const rate = Number(data.bRate) / 1e9 + const supply = Number(data.bSupply) + const borrowed = Number(data.dSupply) + if (isBorrowed) + return borrowed * rate + return (supply - borrowed) * rate +} + + +async function addPoolTVL(poolId, api, isBorrowed = false) { + let pool_config = await PoolConfig.load(network, poolId); + const { errors } = await PromisePool.withConcurrency(4) + .for(pool_config.reserveList) + .process(async (reserveId) => { + // pools have unique reserves + let pool_deposit = await getReserveDeposits(poolId, reserveId, isBorrowed); + api.add(reserveId, pool_deposit) + }); + if (errors.length > 0) + throw new Error(errors) +} + +async function tvl(api) { + let backstop = await BackstopConfig.load(network, BACKSTOP_ID); + for (const pool of backstop.rewardZone) + await addPoolTVL(pool, api); + + return sumTokens2({ api }) +} + +async function borrowed(api) { + let backstop = await BackstopConfig.load(network, BACKSTOP_ID); + for (const pool of backstop.rewardZone) + await addPoolTVL(pool, api, true); + + return sumTokens2({ api }) +} + +module.exports = { + stellar: { + tvl, borrowed, + }, +}; diff --git a/projects/blend-pools/index.js b/projects/blend-pools/index.js new file mode 100644 index 00000000000..a50560012b0 --- /dev/null +++ b/projects/blend-pools/index.js @@ -0,0 +1,8 @@ +const { getExports } = require("../helper/heroku-api"); +const methodologies = require("../helper/methodologies"); + +module.exports = { + timetravel: false, + methodology: `${methodologies.lendingMarket}. TVL is calculated and totaled for all Blend pools in the Blend reward zone.`, + ...getExports("blend-pools", ['stellar'], ['borrowed']) +}; diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 02dbb4df6ef..bf40f4c0eb7 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1788,6 +1788,10 @@ "taiko": { "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" }, + "stellar": { + "XLM": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA", + "USDC": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75" + }, "lukso": { "WLYX": "0x2db41674f2b882889e5e1bd09a3f3613952bc472" } diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 35b60d19db6..75315f1bbc1 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -17,8 +17,9 @@ coreAssets = JSON.parse(JSON.stringify(coreAssets)) // carbon: https://api-insights.carbon.network/info/denom_gecko_map // orbit brige: https://bridge.orbitchain.io/open/v1/api/monitor/rawTokenList + const ibcChains = ['ibc', 'terra', 'terra2', 'crescent', 'osmosis', 'kujira', 'stargaze', 'juno', 'injective', 'cosmos', 'comdex', 'umee', 'orai', 'persistence', 'fxcore', 'neutron', 'quasar', 'chihuahua', 'sei', 'archway', 'migaloo', 'secret', 'aura', 'xpla', 'bostrom', 'joltify'] -const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc', 'renec', 'doge'] +const caseSensitiveChains = [...ibcChains, 'solana', 'tezos', 'ton', 'algorand', 'aptos', 'near', 'bitcoin', 'waves', 'tron', 'litecoin', 'polkadot', 'ripple', 'elrond', 'cardano', 'stacks', 'sui', 'ergo', 'mvc', 'renec', 'doge', 'stellar', ] const transformTokens = { // Sample Code @@ -35,6 +36,10 @@ const ibcMappings = { } const fixBalancesTokens = { + stellar: { + "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA": { coingeckoId: "stellar", decimals: 7}, + "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75": { coingeckoId: "usd-coin", decimals: 7}, + }, defichain_evm: { '0x49febbf9626b2d39aba11c01d83ef59b3d56d2a4': { coingeckoId: "defichain", decimals: 18 }, '0xff0000000000000000000000000000000000000d': { coingeckoId: "usd-coin", decimals: 18 }, From 9600ad996fe3a1757f0989f1d0a8f262bd90fbf2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 5 Jun 2024 19:38:37 +0530 Subject: [PATCH 1868/2004] track iotaevm (#10514) * added new chain polygon_zkevm * added marker for new chain launch on Polygon zkEVM * added new chain arbitrum * fixed type in methodology * added shimmersea adapter * added shimmersea adapter * added shimmer_evm to chainlist * added shimmer_evm as new chain to Swapline DEX * added shimmer_evm as new chain to Swapline DEX * added IOTA EVM as new chain to MagicSea DEX * code refactor --------- Co-authored-by: 0xjosaphat Co-authored-by: 0xjosaphat <120175614+0xjosaphat@users.noreply.github.com> --- projects/helper/chains.json | 1 + projects/helper/tokenMapping.js | 4 +++- projects/shimmersea/index.js | 8 +++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/helper/chains.json b/projects/helper/chains.json index 6b6056b39ad..b294f0282d3 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -143,6 +143,7 @@ "inevm", "injective", "interlay", + "iotaevm", "iotex", "islm", "jbc", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 75315f1bbc1..24098fff64f 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -64,7 +64,9 @@ const fixBalancesTokens = { "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-17": { coingeckoId: "usd-coin", decimals: 6 }, "KT18fp5rcTW7mbWDmzFwjLDUhs5MeJmagDSZ-18": { coingeckoId: "tether", decimals: 6 }, }, - + iotaevm: { + "0x6e47f8d48a01b44DF3fFF35d258A10A3AEdC114c": { coingeckoId: 'iota', decimals: 18 }, + }, acala: { ACA: { coingeckoId: "acala", decimals: 12 }, LDOT: { coingeckoId: "liquid-staking-dot", decimals: 10 }, diff --git a/projects/shimmersea/index.js b/projects/shimmersea/index.js index 235b4b878ee..a5a63a83adf 100644 --- a/projects/shimmersea/index.js +++ b/projects/shimmersea/index.js @@ -1,3 +1,5 @@ -const { uniTvlExport } = require('../helper/unknownTokens'); - -module.exports = uniTvlExport('shimmer_evm', '0x4fb5d3a06f5de2e88ce490e2e11d22b840d5ac47') +const { uniTvlExports } = require('../helper/unknownTokens'); +module.exports = uniTvlExports({ + shimmer_evm: '0x4fb5d3a06f5de2e88ce490e2e11d22b840d5ac47', + iotaevm: '0x349aaAc3a500014981CBA11b64C76c66a6c1e8D0' +}) From 81cc25a60f1b2bffb5191d7935919adede72a4b7 Mon Sep 17 00:00:00 2001 From: Jonathan Smirnoff <7558841+jonathansmirnoff@users.noreply.github.com> Date: Wed, 5 Jun 2024 11:12:34 -0300 Subject: [PATCH 1869/2004] fix: update rif on chain contract address because USDRIF v2 (#10513) --- projects/rif-on-chain/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/rif-on-chain/index.js b/projects/rif-on-chain/index.js index 21c0b004820..5bca62e4309 100644 --- a/projects/rif-on-chain/index.js +++ b/projects/rif-on-chain/index.js @@ -2,6 +2,6 @@ const { sumTokensExport } = require('../helper/unwrapLPs') module.exports = { rsk: { - tvl: sumTokensExport({ owner: '0xCff3FCaEc2352C672C38d77cB1A064B7d50CE7e1', tokens: ['0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5']}) + tvl: sumTokensExport({ owner: '0xA27024eD70035E46DBa712609FC2AFA1c97aa36a', tokens: ['0x2aCc95758f8b5F583470bA265Eb685a8f45fC9D5']}) } } \ No newline at end of file From fea9b5629075a1075cf27e389186665e3920a3be Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Wed, 5 Jun 2024 18:51:16 +0400 Subject: [PATCH 1870/2004] Refactored to remove in-house API usage --- projects/hinkal/hinkalUtils.js | 56 +--- projects/hinkal/index.js | 19 +- .../registryTokensWithUnderlyingAddresses.js | 267 ++++++++++++++++++ projects/hinkal/relayerUrls.js | 12 - 4 files changed, 283 insertions(+), 71 deletions(-) create mode 100644 projects/hinkal/registryTokensWithUnderlyingAddresses.js delete mode 100644 projects/hinkal/relayerUrls.js diff --git a/projects/hinkal/hinkalUtils.js b/projects/hinkal/hinkalUtils.js index 01739c1f620..fd8768e9800 100644 --- a/projects/hinkal/hinkalUtils.js +++ b/projects/hinkal/hinkalUtils.js @@ -1,7 +1,4 @@ -const utils = require("../helper/utils"); const sdk = require("@defillama/sdk"); -const RELAYER_URLS = require("./relayerUrls.js"); -const { ethers } = require("ethers"); const ownerByChain = require("./owners.js"); const nullAddress = "0x0000000000000000000000000000000000000000"; @@ -33,29 +30,12 @@ const getAllTokenBalances = async (tokenList, chain) => { }) ).output; - const decimalCalls = tokenList.map((token) => ({ - target: token, - })); - - const decimals = ( - await sdk.api.abi.multiCall({ - calls: decimalCalls, - abi: "erc20:decimals", - chain, - }) - ).output; - const tokenBalances = balances.map((bal) => { const token = bal.input.target; - const tokenBalance = bal.output; - const tokenDecimal = decimals?.find( - (decimalOutput) => decimalOutput.input.target === token - ).output; - return { - balance: ethers.formatUnits(tokenBalance, Number(tokenDecimal ?? 18)), + balance: tokenBalance, address: token, }; }); @@ -71,44 +51,12 @@ const getAllTokenBalances = async (tokenList, chain) => { tokenBalances.push({ address: nullAddress, - balance: ethers.formatUnits(nativeTokenBalance, 18), + balance: nativeTokenBalance, }); return tokenBalances.filter((tokenBal) => Number(tokenBal.balance) > 0); }; -const fetchTotalValue = async (tokenBalances, chainName) => { - const tokenAddresses = tokenBalances.map((token) => token.address); - const prices = ( - await utils.postURL(`${RELAYER_URLS[chainName]}/get-token-prices`, { - erc20Addresses: tokenAddresses, - }) - ).data.prices; - - const total = tokenBalances.map((token, index) => { - const price = prices[index]; - const tokenBalance = Number(token.balance); - if (!price || !tokenBalance || isNaN(price) || isNaN(tokenBalance)) { - console.log("Some error occured for token", { - token: token.address, - balance: tokenBalance, - price, - chainName, - }); - return { - tokenAddress: token.address, - tokenBalance: 0, - }; - } - return { - tokenAddress: token.address, - tokenBalance: tokenBalance * price, - }; - }); - return total.filter((token) => token && token.tokenBalance > 0); -}; - module.exports = { getAllTokenBalances, - fetchTotalValue, }; diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js index 19bf0c387f7..93bedf76c89 100644 --- a/projects/hinkal/index.js +++ b/projects/hinkal/index.js @@ -1,17 +1,26 @@ const registryTokensByChain = require("./registryTokens.js"); -const { getAllTokenBalances, fetchTotalValue } = require("./hinkalUtils.js"); +const registryTokensWithUnderlyingAddressesByChain = require("./registryTokensWithUnderlyingAddresses.js"); +const { getAllTokenBalances } = require("./hinkalUtils.js"); const { toUSDTBalances } = require("../helper/balances.js"); -const tvl = async (_, _1, _2, { chain }) => { +const tvl = async (_, _1, _2, { chain, api }) => { const tokenBalances = await getAllTokenBalances( registryTokensByChain[chain], chain ); - const totalValue = await fetchTotalValue(tokenBalances, chain); + const mappedTokens = tokenBalances.map((token) => { + const underlyingAddress = + registryTokensWithUnderlyingAddressesByChain[token.address]; + return { + address: underlyingAddress ? underlyingAddress : token.address, + balance: token.balance, + }; + }); - return toUSDTBalances( - totalValue.reduce((acc, token) => acc + token.tokenBalance, 0) + return api.addTokens( + mappedTokens.map((token) => token.address), + mappedTokens.map((token) => token.balance) ); }; diff --git a/projects/hinkal/registryTokensWithUnderlyingAddresses.js b/projects/hinkal/registryTokensWithUnderlyingAddresses.js new file mode 100644 index 00000000000..40ca2f6e6b1 --- /dev/null +++ b/projects/hinkal/registryTokensWithUnderlyingAddresses.js @@ -0,0 +1,267 @@ +const ETHEREUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { + "0x93ce650b8d3a7a7e44121db82a0429a3884db599": + "0xbFcF63294aD7105dEa65aA58F8AE5BE2D9d0952A", + "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": + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0x0B925eD163218f6662a35e0f0371Ac234f9E9371": + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8": + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c": + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a": + "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0x018008bfb33d285247A21d44E50697654f754e63": + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656": + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e": + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "0xBcca60bB61934080951369a648Fb03DF4F96263C": + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811": + "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "0x028171bCA77440897B824Ca71D1c56caC55b68A3": + "0x6B175474E89094C44Da98b954EedeAC495271d0F", +}; + +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": + "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf": + "0x5979D7b546E38E414F7E9822514be443A4800529", + "0x078f358208685046a11C85e8ad32895DED33A249": + "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + "0x724dc807b04555b71ed48a6896b6F41593b8C637": + "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": + "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", +}; + +const OPTIMISM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { + "0x29c431806E536Fb22ce2Edc8dd6e3C3A0d5689a8": + "0xc5ae4b5f86332e70f3205a8151ee9ed9f71e0797", + "0xDaA24E888432b5aa607105e256919Ddfc8b327E9": + "0xd53ccbfed6577d8dc82987e766e75e3cb73a8563", + "0xC3691c157D1B3A431B841230a7B11d5a373097e1": + "0x15f52286c0ff1d7a7ddbc9e300dd66628d46d4e6", + "0xCC26A5246C6A04a85E997d6581C1b4f14363841a": + "0x172a5af37f69c69cc59e748d090a70615830a5dd", + "0xeEeeb52E36c78b153caaB2761c369a50b066cDD5": + "0xcb8883d1d8c560003489df43b30612aabb8013bb", + "0x59eC3043D7314B9650294Fd800149b53007f804E": + "0x2eb49a3eff789d7b2286bf17667acbf12d882c17", + "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19": + "0xcea806562b757aeffa9fe9d0a03c909b4a204254", + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": + "0x4200000000000000000000000000000000000006", + "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA": + "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + "0x078f358208685046a11C85e8ad32895DED33A249": + "0x68f180fcCe6836688e9084f035309E29Bf0A2095", + "0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5": + "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": + "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", +}; + +const POLYGON_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { + "0x9dc8Ee4264923D44F2a33Ea139FC4143C288b172": + "0x0e2f214b8f5d0cca011a8298bb907fb62f535160", + "0x1057a796C66ca87EC1e6494f5486006396756083": + "0x835cA119fA28515B1F184A5Ce5Ccda2B5b0d9F6D", + "0x350c331F4e5fD9d5D703424F3F14CcC0280B6629": + "0x40371aad2a24ed841316ef30938881440fd4426c", + "0xf742B69Bd460F14EB5d8335e06954eba694B552E": + "0xA9249f8667cb120F065D9dA1dCb37AD28E1E8FF0", + "0xc44F1103A271BEFF26bB245D760bFbe182CCf121": + "0x8b397084699cc64e429f610f81fac13bf061ef55", + "0x195888B86db69C52b54362DB2D71c2d3e411A0bA": + "0xc501491b0e4A73B2eFBaC564a412a927D2fc83dD", + "0x22301937028310Cef6530eF3C3Bfe14581eb679F": + "0xfc052e70eb6d94afe464a8ce8f43d203109494f2", + "0x90F06727Ba5016eDcf9D8B5def63a5849EcD132f": + "0x9633e0749faa6ec6d992265368b88698d6a93ac0", + "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97": + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": + "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "0xf59036CAEBeA7dC4b86638DFA2E3C97dA9FcCd40": + "0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD", + "0x078f358208685046a11C85e8ad32895DED33A249": + "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + "0xA4D94019934D8333Ef880ABFFbF2FDd611C762BD": + "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": + "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4": + "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390": + "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "0x5c2ed810328349100A66B82b78a1791B101C9D61": + "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F": + "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "0x60D55F02A771d515e077c9C2403a1ef324885CeC": + "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + "0x27F8D03b3a2196956ED754baDc28D73be8830A6e": + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", +}; + +const AVALANCHE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": + "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97": + "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "0x8ffDf2DE812095b1D19CB146E4c004587C0A0692": + "0x152b9d0FdC40C096757F570A51E494bd4b943E50", + "0x625E7708f30cA75bfd92586e17077590C60eb4cD": + "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": + "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + "0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21": + "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + "0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B": + "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "0x46A51127C3ce23fb7AB1DE06226147F446e4a857": + "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + "0x532E6537FEA298397212F09A61e03311686f548e": + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + "0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a": + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", +}; + +const BNB_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { + "0x2E94171493fAbE316b6205f1585779C887771E2F": + "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + "0x56a7ddc4e848EbF43845854205ad71D5D5F72d3D": + "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + "0x9B00a09492a626678E5A3009982191586C444Df9": + "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "0x00901a076785e0906d1028c7d6372d247bec7d61": + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", + "0xa9251ca9DE909CB71783723713B21E4233fbf1B1": + "0x55d398326f99059fF775485246999027B3197955", +}; + +const BASE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { + "0x3b9860321f03AFe02D3FF9e4Fdd4017DC6F4d7Ca": + "0x79edc58C471Acf2244B8f93d6f425fD06A439407", + "0x1f0dbEcDA414F401dB46464864273CaD19368706": + "0x93933FA992927284e9d508339153B31eb871e1f4", + "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96": + "0x89289DC2192914a9F0674f1E9A17C56456549b8A", + "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7": + "0x4200000000000000000000000000000000000006", + "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D": + "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", + "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB": + "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", +}; + +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/hinkal/relayerUrls.js b/projects/hinkal/relayerUrls.js deleted file mode 100644 index e7ca0abf1ad..00000000000 --- a/projects/hinkal/relayerUrls.js +++ /dev/null @@ -1,12 +0,0 @@ -const RELAYER_URLS = { - ethereum: "https://ethMainnet.relayer.hinkal.pro", - arbitrum: "https://arbMainnet.relayer.hinkal.pro", - optimism: "https://optimism.relayer.hinkal.pro", - polygon: "https://polygon.relayer.hinkal.pro", - avax: "https://avalanche.relayer.hinkal.pro", - bsc: "https://bnbMainnet.relayer.hinkal.pro", - base: "https://base.relayer.hinkal.pro", - blast: "https://blast.relayer.hinkal.pro", -}; - -module.exports = RELAYER_URLS; From 361e6fc66315bd24e13c04dba76a2f3e027186ee Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Wed, 5 Jun 2024 19:50:35 +0400 Subject: [PATCH 1871/2004] Fixed a mistake --- projects/hinkal/index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/hinkal/index.js b/projects/hinkal/index.js index 93bedf76c89..91a310be268 100644 --- a/projects/hinkal/index.js +++ b/projects/hinkal/index.js @@ -9,11 +9,16 @@ const tvl = async (_, _1, _2, { chain, api }) => { chain ); + const chainTokensWithUnderlyingAddresses = + registryTokensWithUnderlyingAddressesByChain[chain]; + const mappedTokens = tokenBalances.map((token) => { - const underlyingAddress = - registryTokensWithUnderlyingAddressesByChain[token.address]; + const tokenUnderlyingAddress = chainTokensWithUnderlyingAddresses + ? chainTokensWithUnderlyingAddresses[token.address] + : undefined; + return { - address: underlyingAddress ? underlyingAddress : token.address, + address: tokenUnderlyingAddress ? tokenUnderlyingAddress : token.address, balance: token.balance, }; }); From c6ba7eec92dd5be2e58ba5e73dc183873d2ee363 Mon Sep 17 00:00:00 2001 From: Edd Date: Wed, 5 Jun 2024 17:07:39 +0100 Subject: [PATCH 1872/2004] update vega protocol tvl calculation (#10515) Vega Protocol now has an Arbitrum asset bridge. This PR adds Arbitrum assets in the new asset pool to the total TVL. Staking calculations are unchanged. - Add arbritrum contract & asset pool addresses --- projects/vega-protocol/index.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/projects/vega-protocol/index.js b/projects/vega-protocol/index.js index 57d6692f7b3..1e04155ce6b 100644 --- a/projects/vega-protocol/index.js +++ b/projects/vega-protocol/index.js @@ -2,16 +2,22 @@ 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, + fromBlock: 17343884, vega: '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e', stakingContract: '0x195064D33f09e0c42cF98E665D9506e0dC17de68', assetPool: '0xA226E2A13e07e750EfBD2E5839C5c3Be80fE7D4d', bridge: '0x23872549cE10B40e31D6577e0A920088B0E0666a', vestingContract: '0x23d1bFE8fA50a167816fBD79D7932577c06011f4' + }, + arbitrum: { + fromBlock: 213213680, + bridge: "0x475B597652bCb2769949FD6787b1DC6916518407", + assetPool: "0xCc006887FE2bfABB535030b3a9877Bb8C1e35201" } } @@ -25,23 +31,24 @@ module.exports = { Object.keys(config).forEach(chain => { const { bridge, fromBlock, vega, stakingContract, assetPool, vestingContract } = config[chain] - module.exports[chain] = { + const sums = { tvl: async (api) => { - const logs = await getLogs({ + const listedAssets = await getLogs({ api, target: bridge, - topics: ['0x4180d77d05ff0d31650c548c23f2de07a3da3ad42e3dd6edd817b438a150452e'], + topics: [assetListedTopic], eventAbi: assetListedEvent, onlyArgs: true, fromBlock, }) const blacklistedTokens = [] if (vega) blacklistedTokens.push(vega) - return sumTokens2({ api, blacklistedTokens, owner: assetPool, tokens: logs.map(i => i.asset_source) }) - }, - //staking: staking(stakingContract, vega) - staking: async (_, _b, cb, { chain, block, api } = {}) => { + 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 @@ -56,9 +63,8 @@ Object.keys(config).forEach(chain => { return { '0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e': BigNumber(vegaStakedInVesting).plus(BigNumber(vegaStakedInStaking)).toFixed(0) } - } } - + module.exports[chain] = sums }) From 2560b67743551dbe877a55e1c5ff6c64636155f8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 5 Jun 2024 18:11:41 +0200 Subject: [PATCH 1873/2004] remove unused --- projects/sceptre-staked-flr/sflr.json | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 projects/sceptre-staked-flr/sflr.json diff --git a/projects/sceptre-staked-flr/sflr.json b/projects/sceptre-staked-flr/sflr.json deleted file mode 100644 index aba69c17f93..00000000000 --- a/projects/sceptre-staked-flr/sflr.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "totalPooledFlr": "uint256:totalPooledFlr", - "getSharesByPooledFlr": "function getSharesByPooledFlr(uint256 flrAmount) view returns (uint256)" -} \ No newline at end of file From 2ace15d7318896a721bec88d2c1c6a8f54246c05 Mon Sep 17 00:00:00 2001 From: PossumLabsCrypto <136654177+PossumLabsCrypto@users.noreply.github.com> Date: Wed, 5 Jun 2024 18:16:12 +0200 Subject: [PATCH 1874/2004] Update Possum Labs (add V2 contracts) (#10516) * Add HLP Portal and Hallmarks * Adjust timestamp * Fix export and contract address * remove double chain ID from export * try on-chain price for HLP * roll back on-chain price * full overhaul * code refactor * Added Possum-V2 tvl and hallmarks * code refactor --------- Co-authored-by: defichad23 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Co-authored-by: James Osunkiyesi --- projects/possumLabs/index.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/projects/possumLabs/index.js b/projects/possumLabs/index.js index acad6bf323c..07e33b7b14a 100644 --- a/projects/possumLabs/index.js +++ b/projects/possumLabs/index.js @@ -1,15 +1,25 @@ const portalsContractAddress = "0x24b7d3034C711497c81ed5f70BEE2280907Ea1Fa"; -const timeRiftContractAddress = "0x6df4EF024089ab148078fdD88f5BF0Ee63248D3E"; -const hlpToken = "0x4307fbDCD9Ec7AEA5a1c2958deCaa6f316952bAb"; -const flashToken = "0xc628534100180582E43271448098cb2c185795BD"; +const portalsV2 = { + USDC: "0x9167CFf02D6f55912011d6f498D98454227F4e16", + USDCE: "0xE8EfFf304D01aC2D9BA256b602D736dB81f20984", + ETH: "0xe771545aaDF6feC3815B982fe2294F7230C9c55b", + WBTC: "0x919B37b5f2f1DEd2a1f6230Bf41790e27b016609", + ARB: "0x523a93037c47Ba173E9080FE8EBAeae834c24082", + LINK: "0x51623b54753E07Ba9B3144Ba8bAB969D427982b6", +}; async function tvl(api) { - const portalsStaked = await api.call({ target: portalsContractAddress, abi: "uint256:totalPrincipalStaked", }); - api.add(hlpToken, portalsStaked) - return api.sumTokens({ owner: timeRiftContractAddress, tokens: [flashToken] }) + 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 and TimeRift contracts", + methodology: + "TVL is equal to the amount staked in the Portals V1 and Portals V2 contracts.", arbitrum: { tvl }, -}; \ No newline at end of file + hallmarks: [ + [1715776637, "Portals V2 Launch"], + ], +}; From 6ada1302decabeacc2fca480387c2a358c597380 Mon Sep 17 00:00:00 2001 From: lsblk07 <154802093+lsblk07@users.noreply.github.com> Date: Thu, 6 Jun 2024 00:19:11 +0800 Subject: [PATCH 1875/2004] blasterswap-v3 adapter (#10508) Co-authored-by: lsblk07 --- projects/blasterswap-v3/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 projects/blasterswap-v3/index.js diff --git a/projects/blasterswap-v3/index.js b/projects/blasterswap-v3/index.js new file mode 100644 index 00000000000..34138e18422 --- /dev/null +++ b/projects/blasterswap-v3/index.js @@ -0,0 +1,9 @@ +const sdk = require('@defillama/sdk') +const { uniV3Export } = require("../helper/uniswapV3"); +const { mergeExports } = require('../helper/utils') + +module.exports = mergeExports([ + uniV3Export({ blast: { factory: "0xb7a92633Bc7074c8216Dc53566fD58A77b5D32D9", fromBlock: 4308657, }, }), +]) + +module.exports.blast.tvl = sdk.util.sumChainTvls([module.exports.blast.tvl]) From 37f487ceb1dfed3e46fdfd2fcf032052cdb4b50c Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi Date: Wed, 5 Jun 2024 22:39:10 +0400 Subject: [PATCH 1876/2004] Changed wrong underlying address --- projects/hinkal/registryTokensWithUnderlyingAddresses.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/hinkal/registryTokensWithUnderlyingAddresses.js b/projects/hinkal/registryTokensWithUnderlyingAddresses.js index 40ca2f6e6b1..4185fd3f16c 100644 --- a/projects/hinkal/registryTokensWithUnderlyingAddresses.js +++ b/projects/hinkal/registryTokensWithUnderlyingAddresses.js @@ -1,6 +1,6 @@ const ETHEREUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x93ce650b8d3a7a7e44121db82a0429a3884db599": - "0xbFcF63294aD7105dEa65aA58F8AE5BE2D9d0952A", + "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", "0xE49127B7AEfc043847caDd85B8a41973854D30f5": "0x8dff75976f22db58d7c3fd7b68d782238b0dbe30", "0x8A31A94bF0926B82083C80E18B331085B84E92D7": From 0151029c737c5bd108a2144c13a8ed3b27c836bf Mon Sep 17 00:00:00 2001 From: rogi-sh <46889545+rogi-sh@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:30:44 +0200 Subject: [PATCH 1877/2004] Add Javsphere staker and freezer (#10528) * add staker and freezer * add stakings correct * fix staking * add vesting * fix vesting token --------- Co-authored-by: igorshelkovenkov --- projects/javsphere/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/javsphere/index.js b/projects/javsphere/index.js index 68bd33d975e..415910ea316 100644 --- a/projects/javsphere/index.js +++ b/projects/javsphere/index.js @@ -1,4 +1,6 @@ const { get } = require('../helper/http') +const { staking } = require("../helper/staking.js"); +const {stakings} = require("../helper/staking"); const vaultUrl = "https://mainnet.ocean.jellyfishsdk.com/v0/mainnet/address/df1q7zkdpw6hd5wzcxudx28k72vjvpefa4pyqls2grnahhyw4u8kf0zqu2cnz6/vaults"; const ONE_YEAR_LOCKING_MAINNET = '0xD88Bb8359D694c974C9726b6201479a123212333' @@ -18,9 +20,12 @@ async function defichainTvl(api) { module.exports = { methodology: `We count the total value locked in DUSD from all current products (dusd staking is a vault in defichain L1, - 1 year bond and 2 year bond are smart contracts on defimetachain L2). `, + 1 year bond and 2 year bond are smart contracts on defimetachain L2. We also track staking and freezer of javsphers native token JAV). `, defichain_evm: { - tvl + tvl, + staking: stakings( ['0x4e15D4225623D07Adb43e9D546E57E1E6097e869', '0xF923f0828c56b27C8f57bc698c99543f63091E9A'], + '0x66F3Cf265D2D146A0348F6fC67E3Da0835e0968E'), + vesting: staking('0x7246ad1ac72715c5fd6c1FD7460A63afB8289104','0x66F3Cf265D2D146A0348F6fC67E3Da0835e0968E') }, defichain: { tvl: defichainTvl }, From ea4d2be13d44cbc3af4b3b0aecee74f487fbd588 Mon Sep 17 00:00:00 2001 From: zk-linkswap <165469536+zk-linkswap@users.noreply.github.com> Date: Thu, 6 Jun 2024 01:31:10 -0700 Subject: [PATCH 1878/2004] add linkswap tvl (#10527) Co-authored-by: dev --- projects/linkswap/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 projects/linkswap/index.js diff --git a/projects/linkswap/index.js b/projects/linkswap/index.js new file mode 100644 index 00000000000..4f8dd3961e5 --- /dev/null +++ b/projects/linkswap/index.js @@ -0,0 +1,10 @@ +const { getUniTVL } = require("../helper/unknownTokens"); + +module.exports = { + zklink: { + tvl: getUniTVL({ + factory: "0x87929083ac2215cF3CE4936857D314aF6687C978", + useDefaultCoreAssets: true, + }), + }, +}; From cb7ef93606bd8e462dcafd7605467f34c16de8a6 Mon Sep 17 00:00:00 2001 From: LpcAries <101619245+LpcAries@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:32:07 +0800 Subject: [PATCH 1879/2004] add taiko config (#10526) --- projects/izumi-iziswap/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/izumi-iziswap/index.js b/projects/izumi-iziswap/index.js index 6970edde859..63ce4f8601b 100644 --- a/projects/izumi-iziswap/index.js +++ b/projects/izumi-iziswap/index.js @@ -33,6 +33,7 @@ const poolHelpers = { 'mode': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], 'xlayer': ['0xF42C48f971bDaA130573039B6c940212EeAb8496'], 'bob': ['0x19b683A2F45012318d9B2aE1280d68d3eC54D663'], + 'taiko': ['0x33531bDBFE34fa6Fd5963D0423f7699775AacaaF'], } // iziswap liquidityManager contracts const blacklistedTokens = [ From 58d313f182b9f41f7a02e957e7da8c769e11c53d Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Thu, 6 Jun 2024 09:32:26 +0100 Subject: [PATCH 1880/2004] symbiosis adds USDT on Sei EVM chain (#10525) --- projects/helper/coreAssets.json | 3 ++- projects/symbiosis-finance/config.js | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index bf40f4c0eb7..125a0ed160f 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1465,7 +1465,8 @@ "USDTet": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/HktfLoADCk9mnjv7XJiN4YXK9ayE6xinLzt8wzcsR2rY", "USDTbs": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/871jbn9unTavWsAe83f2Ma9GJWSv6BKsyWYLiQ6z3Pva", "WBTC": "factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/7omXa4gryZ5NiBmLep7JsTtTtANCVKXwT9vbN91aS1br", - "USDC": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1" + "USDC": "0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1", + "USDT": "0xB75D0B03c06A926e488e2659DF1A861F860bD3d1" }, "op_bnb": { "WBNB": "0x4200000000000000000000000000000000000006", diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index d0f1329ed4f..e06ef05c253 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -332,6 +332,7 @@ module.exports = { name: 'sei', tokens: [ ADDRESSES.sei.USDC, + ADDRESSES.sei.USDT, ], holders: [ '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 From a68867ba965967519ec990a4e2855d3f64fef405 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 6 Jun 2024 01:33:04 -0700 Subject: [PATCH 1881/2004] Add telos and xlayer (#10524) --- projects/steer/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/projects/steer/index.js b/projects/steer/index.js index c2d3262336e..39ef515ba7f 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -129,6 +129,18 @@ const supportedChains = [ chainId: 3776, identifier: 'astrzk' }, + { + name: 'Telos', + subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-telos/1.0.1/gn', + chainId: 40, + identifier: 'telos' + }, + { + name: 'X Layer', + subgraphEndpoint: 'https://api.goldsky.com/api/public/project_clohj3ta78ok12nzs5m8yag0b/subgraphs/steer-protocol-x-layer/1.0.1/gn', + chainId: 196, + identifier: 'xlayer' + }, // { // name: 'Celo', // subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/steer-test-celo', From 819f2f27368696eeb900c11ae47ea43a66880b07 Mon Sep 17 00:00:00 2001 From: dtx-devs <164329664+dtx-devs@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:33:25 +0800 Subject: [PATCH 1882/2004] chore: add taiko tokenConfig and usdcVault in DTX (#10523) --- projects/dtx/index.js | 9 ++++++--- projects/helper/coreAssets.json | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/dtx/index.js b/projects/dtx/index.js index db223b152f5..9f72076e0a7 100644 --- a/projects/dtx/index.js +++ b/projects/dtx/index.js @@ -28,9 +28,12 @@ const config = { }, }, taiko: { - vaults: ["0xdA6a745740Bbdbe5F588b79FEe57f2e10ad4Da11"], + vaults: [ + "0xdA6a745740Bbdbe5F588b79FEe57f2e10ad4Da11", + "0xE3e6818bbC193D454f38772D34FA4cf8C19684d5", + ], tokenConfig: { - tokens: ["0xa51894664a773981c6c112c43ce576f315d5b1b6"], + tokens: [ADDRESSES.taiko.USDC, ADDRESSES.taiko.WETH], owners: [ "0xc0ab776604059D10880dbD219758FF7B82997cc0", "0xB00231B308B01Dbb90f16F966F62d86fBc78c450", @@ -45,7 +48,7 @@ Object.keys(config).forEach((chain) => { const otherTvl = sumTokensExport(tokenConfig) let tvlCalculators = [vaultTvl, otherTvl] - + module.exports[chain] = { tvl: sdk.util.sumChainTvls(tvlCalculators), } diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 125a0ed160f..546ca718290 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1787,6 +1787,7 @@ "ETH": "0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2" }, "taiko": { + "USDC": "0x07d83526730c7438048D55A4fc0b850e2aaB6f0b", "WETH": "0xA51894664A773981C6C112C43ce576f315d5b1B6" }, "stellar": { From 9baec01b3aa68cb2a75d4690035daf2242adcb67 Mon Sep 17 00:00:00 2001 From: hamur dev <122794657+tpktpj@users.noreply.github.com> Date: Thu, 6 Jun 2024 01:53:30 -0700 Subject: [PATCH 1883/2004] Add: avalon finance coredao market (#10519) Co-authored-by: jsmjsm --- projects/avalon-finance/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js index 578bf4a14a5..2c5e1018f13 100644 --- a/projects/avalon-finance/index.js +++ b/projects/avalon-finance/index.js @@ -8,6 +8,7 @@ const mainMarket = { btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F'], { v3: true }), bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39'], { v3: true }), + core: aaveExports('', '0x410d2D3Dc79ec66A2Cfc3A4a0AD4af3a38D38bd0', undefined, ['0x802CB61844325dc9A161bC3A498E3BE1B7b6FE00'], { v3: true }), } const innovativeMarket = { From a60703c3d7d6edabb1cb53df0ed6b09476f190a6 Mon Sep 17 00:00:00 2001 From: Yieldfarming24 <165474414+Yieldfarming24@users.noreply.github.com> Date: Thu, 6 Jun 2024 11:24:28 +0200 Subject: [PATCH 1884/2004] Add bbqswap (#10517) * Add bbqswap * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/BBQSwap/index.js | 3 +++ projects/helper/chains.json | 1 + projects/helper/env.js | 1 + projects/helper/tokenMapping.js | 3 +++ 4 files changed, 8 insertions(+) create mode 100644 projects/BBQSwap/index.js diff --git a/projects/BBQSwap/index.js b/projects/BBQSwap/index.js new file mode 100644 index 00000000000..7db1599e9a6 --- /dev/null +++ b/projects/BBQSwap/index.js @@ -0,0 +1,3 @@ +const { uniTvlExport } = require('../helper/unknownTokens') + +module.exports = uniTvlExport('ham', '0x7304e5751973113fA7c4FFf677871B926258f27e') diff --git a/projects/helper/chains.json b/projects/helper/chains.json index b294f0282d3..5fe8d95cb35 100644 --- a/projects/helper/chains.json +++ b/projects/helper/chains.json @@ -129,6 +129,7 @@ "gravitybridge", "grove", "harmony", + "ham", "heco", "hedera", "heiko", diff --git a/projects/helper/env.js b/projects/helper/env.js index d4f517ebf5b..7fc7c2ebc61 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -24,6 +24,7 @@ const DEFAULTS = { TAIKO_RPC_MULTICALL: '0xcb2436774C3e191c85056d248EF4260ce5f27A9D', SEI_RPC: 'https://evm-rpc.sei-apis.com/', LUKSO_RPC: 'https://rpc.lukso.sigmacore.io', + HAM_RPC: 'https://rpc.ham.fun', } const ENV_KEYS = [ diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 24098fff64f..95d8a211dce 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -81,6 +81,9 @@ const fixBalancesTokens = { KINT: { coingeckoId: "kintsugi", decimals: 12 }, KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, + ham: { + '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + }, blast: { '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, //pirex eth From feea58e21621873ab7c25ec4656bc60288a28bbc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jun 2024 11:26:45 +0200 Subject: [PATCH 1885/2004] add ham multicall --- projects/helper/env.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/helper/env.js b/projects/helper/env.js index 7fc7c2ebc61..91c86eb67f3 100644 --- a/projects/helper/env.js +++ b/projects/helper/env.js @@ -25,6 +25,7 @@ const DEFAULTS = { SEI_RPC: 'https://evm-rpc.sei-apis.com/', LUKSO_RPC: 'https://rpc.lukso.sigmacore.io', HAM_RPC: 'https://rpc.ham.fun', + HAM_RPC_MULTICALL: '0xB7c3Ea932649fBD594C881aDCb3F19415e2EA2d5', } const ENV_KEYS = [ From aa8adb0546f8d78e4a41dd9c1981fb20e105a7c5 Mon Sep 17 00:00:00 2001 From: Mykola Bezruk Date: Thu, 6 Jun 2024 12:34:17 +0300 Subject: [PATCH 1886/2004] Add sei chain to myso v2 (#10518) * add sei network to myso v2 * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/myso-v2/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/myso-v2/index.js b/projects/myso-v2/index.js index 6b7bd72a44c..f6957fd3805 100644 --- a/projects/myso-v2/index.js +++ b/projects/myso-v2/index.js @@ -107,6 +107,9 @@ const config = { linea: { fromBlock: 2118418, }, + sei: { + fromBlock: 79773668, + }, }; Object.keys(config).forEach((chain) => { From dcfb16ff3aa8a369852116fd3506c32742cbd216 Mon Sep 17 00:00:00 2001 From: smithmonnnnnnn <130979786+smithmonnnnnnn@users.noreply.github.com> Date: Thu, 6 Jun 2024 17:59:41 +0800 Subject: [PATCH 1887/2004] Fix the Nibiru Chain Tvl query error (#10531) * Kryptonite:SEI Liquid Staking Platform TVL * Add STSEI-USEI-LP to the statistics of Pool2 * Add staking tvl on the Nibiru chain * fix nibiru tvl query error --- projects/kryptonite/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/kryptonite/index.js b/projects/kryptonite/index.js index 2ebb4b89035..d2584d3830c 100644 --- a/projects/kryptonite/index.js +++ b/projects/kryptonite/index.js @@ -58,8 +58,8 @@ Object.keys(config).forEach(chain => { module.exports[chain] = { tvl: async (api) => { // Logic for calculating TVL excluding staked LP tokens - const { total_bond_stsei_amount } = await queryContractWithRetries({ contract: hub, chain, data: { state: {} } }); - api.add(coinGeckoId, total_bond_stsei_amount / 10 ** 6, { skipChain: true }); + 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) => { From d417d79577cde6cd07ffee56a4750a19f4a5c69c Mon Sep 17 00:00:00 2001 From: Austin <128147981+austinjfi@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:58:08 +0530 Subject: [PATCH 1888/2004] feat: new contracts and tokens (#10533) --- projects/brine/index.js | 48 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/projects/brine/index.js b/projects/brine/index.js index de87774c273..74cb4d2069e 100644 --- a/projects/brine/index.js +++ b/projects/brine/index.js @@ -3,6 +3,11 @@ 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, @@ -10,17 +15,58 @@ const ethereumTokens = [ ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WBTC, ADDRESSES.ethereum.MATIC, - '0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1', + '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.USDT, +] + +const arbitrumTokens = [ + ADDRESSES.null, + ADDRESSES.arbitrum.USDC, + 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: 1685817000, 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}) }, }; From 3186d31fc8ea668f5dc18c065ad30ebf8903fcc8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:45:01 +0200 Subject: [PATCH 1889/2004] track rosen bridge --- projects/rosen-bridge/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/rosen-bridge/index.js diff --git a/projects/rosen-bridge/index.js b/projects/rosen-bridge/index.js new file mode 100644 index 00000000000..9dcc3196fa2 --- /dev/null +++ b/projects/rosen-bridge/index.js @@ -0,0 +1,30 @@ +const { sumTokensExport } = require("../helper/sumTokens"); +const ADDRESSES = require('../helper/coreAssets.json'); + +module.exports = { + timetravel: false, + ergo: { + tvl: sumTokensExport({ + owners: [ + "nB3L2PD3J4rMmyGk7nnNdESpPXxhPRQ4t1chF8LTXtceMQjKCEgL2pFjPY6cehGjyEFZyHEomBTFXZyqfonvxDozrTtK5JzatD8SdmcPeJNWPvdRb5UxEMXE4WQtpAFzt2veT8Z6bmoWN", + ], + tokens: [ + ADDRESSES.null, + '0cd8c9f416e5b1ca9f986a7f10a84191dfb85941619e49e53c0dc30ebf83324b', + '9a06d9e545a41fd51eeffc5e20d818073bf820c635e2a9d922269913e0de369d', + '03faf2cb329f2e90d6d23b58d91bbb6c046aa143261cc21f52fbe2824bfcbf04', + ] + }), + }, + cardano: { + tvl: sumTokensExport({ + owners: [ + "addr1v8kqhz5lkdxqm8qtkn4lgd9f4890v0j6advjfmk5k9amu4c535lsu", + ], + tokens: [ + ADDRESSES.null, + 'a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59' + ] + }), + }, +}; From be209010ecfbef3f34f33d17e6aaebdeb3c4498a Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:47:49 +0200 Subject: [PATCH 1890/2004] PR #10532: rosen bridge --- projects/rosen-bridge/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/rosen-bridge/index.js b/projects/rosen-bridge/index.js index 9dcc3196fa2..92b66bfe621 100644 --- a/projects/rosen-bridge/index.js +++ b/projects/rosen-bridge/index.js @@ -7,6 +7,8 @@ module.exports = { tvl: sumTokensExport({ owners: [ "nB3L2PD3J4rMmyGk7nnNdESpPXxhPRQ4t1chF8LTXtceMQjKCEgL2pFjPY6cehGjyEFZyHEomBTFXZyqfonvxDozrTtK5JzatD8SdmcPeJNWPvdRb5UxEMXE4WQtpAFzt2veT8Z6bmoWN", + "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZDqS2BRcPkmovmt7SZCKD95zoNgsitrYdmv2JhoC8Wmq7aM3DpwmhejCZ59n1ZYCAL7LsKw4zX45tH3sGLXxmeBNCCkcT2yxiziEAn2C3ybXqqab7cMhkoNdRMwXpUUpk3489kfyTY7SjbUPqPKhkH9veUS6H4U7a4HaEi7tPyueHTbjjQZjCZd5uGi5tC7jMvrgjYqByUG9PA9oeXHj89RxK5TPbbmkmsZVHVtdBzfHiexJh32LMszDRHuUc6YfisZKx9kNSSzadBdLbJUGHeCd8XaBg6w3e1uUBQDghpx2z44C2GZbAmUQSUQ2jqY8BBwEhtaxzZ69NK3dEjTFgsZ1R3nkbhbAu5Xs5fabBWZo6RvaPf8jTKRwKaNgQZrL93QV2JEZoapbRHCdvzaHHpBLr1p6nkDg2kB3rUTj6kmaabxswG8bSLAA9qYZhDCyh1QdSyUnd9T2o7qHybaoeEuqG1kEWYon4741ut8HCqbwEjKze6rDuEbnPUYzSr7kiwoPeV2GrdsVFRLgxwgHJoENgjUhj1VVKZB2q7n8S6smwf7CJyYZZCZGkg5bLpywJddmegJjk2FuLwA2VEmnrDKRGpFkhxBc2rbj974XgGcBZ66mPTtwrXUwjY9G5hUArtYs8WhsCDAH58yaHFFViaAhBNDQ3HBtFbXwh6b1osdv8zDSvncYXPx2iikhmf6TRC2DE2ENYtzhLHJmgyXmQkm7yXp6nWxJaeLnUuxRaWdxxQSPy1Wnm1GvKJYzRBhv9RdcmDnEgKs21ex5uSSdqJ4H53Qs6StxGyQ4HyjTjEVUxTbUZpnzvECgAufKkuSPyC2mYkKKGrzWmvv5sh6fyo4eAq9QnfXB9YMETMpJbx5dFpc6ZXYimSCfJbJfP1bpCe1hXkhTPWeZJ9aPX6HZEfu89ChZiX32MaSM3QnnUhRbSnzdQ2jVAtqqwjNN5SeNNvXNxS6B1UHj52TGvGrLnNUp4BWgNKAAwpBxAAB7wny9tUSXt6jHVnGHBG1vJWF7S9DeaVjKg3qR8j1bUsGqh9bVkarag4SREopK8cHwFpb2yFcdGERfaKHyekAUjVkhqySH3Vb8GiAdDbRArKV2ip4eveocsFwjoCD5i9rotksNysgi9RDjkApYm7aJegC79omCujHVYFpU6HtV2AhNVFRvVBG2xDW9YEKEm3RxrjoCttM6sFkbNX61CSiQ3LsBPvcd5Aix9NUESjbNxFwARZ75UgquvFddApn13yxSqfzVoE9L3eRnAMxd7KHudBWQsnDK", + "ChTbcUHgBNqNMVjzV1dvCb2UDrX9nh6rGGcURCFEYXuH5ykKh7Ea3FvpFhHb9AnxXJkgAZ6WASN7Rdn7VMgkFaqP5Z5RWp84cDTmsZkhYrgAVGN7mjeLs8UxqUvRi2ArZbm35Xqk8Y88Uq2MJzmDVHLHzCYRGym8XPxFM4YEVxqzHSKYYDvaMLgKvoskFXKrvceAqEiyih26hjpekCmefiF1VmrPwwShrYYxgHLFCZdigw5JWKV4DmewuR1FH3oNtGoFok859SXeuRbpQfrTjHhGVfDsbXEo3GYP2imAh1APKyLEsG9LcE5WZnJV8eseQnYA8sACLDKZ8Tbpp9KUE7QZNFpnwGnkYx7eybbrCeFDFjTGpsBzaS6fRKrWj2J4Wy3TTyTU1F8iMCrHBF8inZPw9Kg9YEZuJMdXDFNtuaK15u86mF2s2Z5B1vdL5MtZfWThFLnixKds8ABEmGbe8n75Dym5Wv3pkEXQ6XPpaMjUxHfRJB3EfcoFM5nsZHWSTfbFBcHxSRnEiiU67cgJsBUpQn7FvEvqNLiKM4fL3yyykMtQ6RjAS8rhycszphvQa5qFrDHie4vPuTq8", ], tokens: [ ADDRESSES.null, From 27e73737959685db96033173fd3b76d71343cdcf Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:31:47 +0200 Subject: [PATCH 1891/2004] track rosen collateral --- projects/rosen-bridge/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/rosen-bridge/index.js b/projects/rosen-bridge/index.js index 92b66bfe621..0d575bcff0a 100644 --- a/projects/rosen-bridge/index.js +++ b/projects/rosen-bridge/index.js @@ -17,6 +17,11 @@ module.exports = { '03faf2cb329f2e90d6d23b58d91bbb6c046aa143261cc21f52fbe2824bfcbf04', ] }), + staking: sumTokensExport({ + owners: [ + "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZBwceKrx1KHjeRRQBwBgxTkfButyeLtHgMELArAC9DDaZbYg7o2t98LMUZyArDzmK5fmhdKgeo6Dw4oZ1ENbepgqG35kR2pS63heXUeEuhH4nvqfLGHwSTanzhsQeBmYH9iqxSFfCvoRFnasoEPkWAv6PwGURqUk23wS5J9CaSadgPYRNdB915Vjf2kvxxmPFwoW9Uq1ZRo5DDS49goU3YbMgDJPnekbGQ9u9jMcwvo8FGRMiJVyEy2zdncnqPUaipekDaDowgf8EKYxBRYPo93DGga9FCVAoMC2PzRXRN1Q4X2zCx9onwMPoTWu2nFjYdx58bqzqs2ToK4S7UXZw4vpt6oSam7XN2miAfSN8WJmYRJ3FSGNfUz1ryo6N8uoecwEGeFksvbkobAvykuDGzeCNgdeNnRnMFZrco3kPvdzMf75tsRJu5ZTpTMW5mJWm6NbPJwxgV5JdxUvHPd8SCCmFKxhFywqVifp6WRMMqfVKaBdmXWG7zzN6hJZhf9EHupjR4KZExmuShvpx5bA1YyMUz1MpE9VP7vkLJWDYXfpJHJEWFRiADfSHt2RE5LzepxScfoHfpE7C6e4TBQBZd3dndxWDRREZSV45A1iXdq14AYqcsoBJ5Y8JCGHzXaGCLiBHvsXFMfUdTHhbPA8cegddhhZ2tK29UhR3veSGcjVZ1YwzVthQeJZK8RMbbbdf2s3f7dr8a7YGLU31T2jjy4tPR26ZFSadcuuMFR6QQisRP7qBKpgmUJc68fWdwNsLr8FLW8q2yipH1YnsWG389BQ9aXM4Zfb2WmXUT6JCpaeABWUFCLv6w3BkuBHyUFmmfiiHNx1E9u1VEuibAJYEkC6BEuoCKDqxMV62wdjbahsAn4fZdpQyVMK6xADbY2FXrREeaq4KDGzY4XYVZxaEZs3CEeedoZjFLbBe7ysm4MWqCiK7tucARTFF4XaxoH1C5JqqiraqRm4HBGVcjfzcyMwMHUC15m2N4AoQycb97Dn8W4Qp7s7gmchThLotvP2E7t7CXDa21cwKdVx9nh2xTJRPaXzMjt49L4AbXqT9RJ9PeRsYzKcQLcgugdDoB3vDtFBTZeoNNvf43JFpapTozoQtSfj7iNrPYfaEkNvCEzLjqJVyMPZ7gt13aySy5jDPp2vF5hGd5f6yv21PAiwQtfV47hn7y5hZfKv4T3gDE4sD6UQ2HFmhrAXmcuZ4AtfZZXpC3vgw6vhraKUFsHKjLZU3WKKAwnPW1HJC61jiutpnaBK1hDhop6FHkjvNtGrSnti", + ], + }), }, cardano: { tvl: sumTokensExport({ From 718fe2e495c982654e90cd9de2749ddfdd7f4a9e Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:34:38 +0200 Subject: [PATCH 1892/2004] track rosen collateral --- projects/rosen-bridge/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/rosen-bridge/index.js b/projects/rosen-bridge/index.js index 0d575bcff0a..acd2ceb0f63 100644 --- a/projects/rosen-bridge/index.js +++ b/projects/rosen-bridge/index.js @@ -7,7 +7,6 @@ module.exports = { tvl: sumTokensExport({ owners: [ "nB3L2PD3J4rMmyGk7nnNdESpPXxhPRQ4t1chF8LTXtceMQjKCEgL2pFjPY6cehGjyEFZyHEomBTFXZyqfonvxDozrTtK5JzatD8SdmcPeJNWPvdRb5UxEMXE4WQtpAFzt2veT8Z6bmoWN", - "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZDqS2BRcPkmovmt7SZCKD95zoNgsitrYdmv2JhoC8Wmq7aM3DpwmhejCZ59n1ZYCAL7LsKw4zX45tH3sGLXxmeBNCCkcT2yxiziEAn2C3ybXqqab7cMhkoNdRMwXpUUpk3489kfyTY7SjbUPqPKhkH9veUS6H4U7a4HaEi7tPyueHTbjjQZjCZd5uGi5tC7jMvrgjYqByUG9PA9oeXHj89RxK5TPbbmkmsZVHVtdBzfHiexJh32LMszDRHuUc6YfisZKx9kNSSzadBdLbJUGHeCd8XaBg6w3e1uUBQDghpx2z44C2GZbAmUQSUQ2jqY8BBwEhtaxzZ69NK3dEjTFgsZ1R3nkbhbAu5Xs5fabBWZo6RvaPf8jTKRwKaNgQZrL93QV2JEZoapbRHCdvzaHHpBLr1p6nkDg2kB3rUTj6kmaabxswG8bSLAA9qYZhDCyh1QdSyUnd9T2o7qHybaoeEuqG1kEWYon4741ut8HCqbwEjKze6rDuEbnPUYzSr7kiwoPeV2GrdsVFRLgxwgHJoENgjUhj1VVKZB2q7n8S6smwf7CJyYZZCZGkg5bLpywJddmegJjk2FuLwA2VEmnrDKRGpFkhxBc2rbj974XgGcBZ66mPTtwrXUwjY9G5hUArtYs8WhsCDAH58yaHFFViaAhBNDQ3HBtFbXwh6b1osdv8zDSvncYXPx2iikhmf6TRC2DE2ENYtzhLHJmgyXmQkm7yXp6nWxJaeLnUuxRaWdxxQSPy1Wnm1GvKJYzRBhv9RdcmDnEgKs21ex5uSSdqJ4H53Qs6StxGyQ4HyjTjEVUxTbUZpnzvECgAufKkuSPyC2mYkKKGrzWmvv5sh6fyo4eAq9QnfXB9YMETMpJbx5dFpc6ZXYimSCfJbJfP1bpCe1hXkhTPWeZJ9aPX6HZEfu89ChZiX32MaSM3QnnUhRbSnzdQ2jVAtqqwjNN5SeNNvXNxS6B1UHj52TGvGrLnNUp4BWgNKAAwpBxAAB7wny9tUSXt6jHVnGHBG1vJWF7S9DeaVjKg3qR8j1bUsGqh9bVkarag4SREopK8cHwFpb2yFcdGERfaKHyekAUjVkhqySH3Vb8GiAdDbRArKV2ip4eveocsFwjoCD5i9rotksNysgi9RDjkApYm7aJegC79omCujHVYFpU6HtV2AhNVFRvVBG2xDW9YEKEm3RxrjoCttM6sFkbNX61CSiQ3LsBPvcd5Aix9NUESjbNxFwARZ75UgquvFddApn13yxSqfzVoE9L3eRnAMxd7KHudBWQsnDK", "ChTbcUHgBNqNMVjzV1dvCb2UDrX9nh6rGGcURCFEYXuH5ykKh7Ea3FvpFhHb9AnxXJkgAZ6WASN7Rdn7VMgkFaqP5Z5RWp84cDTmsZkhYrgAVGN7mjeLs8UxqUvRi2ArZbm35Xqk8Y88Uq2MJzmDVHLHzCYRGym8XPxFM4YEVxqzHSKYYDvaMLgKvoskFXKrvceAqEiyih26hjpekCmefiF1VmrPwwShrYYxgHLFCZdigw5JWKV4DmewuR1FH3oNtGoFok859SXeuRbpQfrTjHhGVfDsbXEo3GYP2imAh1APKyLEsG9LcE5WZnJV8eseQnYA8sACLDKZ8Tbpp9KUE7QZNFpnwGnkYx7eybbrCeFDFjTGpsBzaS6fRKrWj2J4Wy3TTyTU1F8iMCrHBF8inZPw9Kg9YEZuJMdXDFNtuaK15u86mF2s2Z5B1vdL5MtZfWThFLnixKds8ABEmGbe8n75Dym5Wv3pkEXQ6XPpaMjUxHfRJB3EfcoFM5nsZHWSTfbFBcHxSRnEiiU67cgJsBUpQn7FvEvqNLiKM4fL3yyykMtQ6RjAS8rhycszphvQa5qFrDHie4vPuTq8", ], tokens: [ @@ -19,8 +18,13 @@ module.exports = { }), staking: sumTokensExport({ owners: [ + "ChTbcUHgBNqNMVjzV1dvCb2UDrX9nh6rGGcURCFEYXuH5ykKh7Ea3FvpFhHb9AnxXJkgAZ6WASN7Rdn7VMgkFaqP5Z5RWp84cDTmsZkhYrgAVGN7mjeLs8UxqUvRi2ArZbm35Xqk8Y88Uq2MJzmDVHLHzCYRGym8XPxFM4YEVxqzHSKYYDvaMLgKvoskFXKrvceAqEiyih26hjpekCmefiF1VmrPwwShrYYxgHLFCZdigw5JWKV4DmewuR1FH3oNtGoFok859SXeuRbpQfrTjHhGVfDsbXEo3GYP2imAh1APKyLEsG9LcE5WZnJV8eseQnYA8sACLDKZ8Tbpp9KUE7QZNFpnwGnkYx7eybbrCeFDFjTGpsBzaS6fRKrWj2J4Wy3TTyTU1F8iMCrHBF8inZPw9Kg9YEZuJMdXDFNtuaK15u86mF2s2Z5B1vdL5MtZfWThFLnixKds8ABEmGbe8n75Dym5Wv3pkEXQ6XPpaMjUxHfRJB3EfcoFM5nsZHWSTfbFBcHxSRnEiiU67cgJsBUpQn7FvEvqNLiKM4fL3yyykMtQ6RjAS8rhycszphvQa5qFrDHie4vPuTq8", + "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZDqS2BRcPkmovmt7SZCKD95zoNgsitrYdmv2JhoC8Wmq7aM3DpwmhejCZ59n1ZYCAL7LsKw4zX45tH3sGLXxmeBNCCkcT2yxiziEAn2C3ybXqqab7cMhkoNdRMwXpUUpk3489kfyTY7SjbUPqPKhkH9veUS6H4U7a4HaEi7tPyueHTbjjQZjCZd5uGi5tC7jMvrgjYqByUG9PA9oeXHj89RxK5TPbbmkmsZVHVtdBzfHiexJh32LMszDRHuUc6YfisZKx9kNSSzadBdLbJUGHeCd8XaBg6w3e1uUBQDghpx2z44C2GZbAmUQSUQ2jqY8BBwEhtaxzZ69NK3dEjTFgsZ1R3nkbhbAu5Xs5fabBWZo6RvaPf8jTKRwKaNgQZrL93QV2JEZoapbRHCdvzaHHpBLr1p6nkDg2kB3rUTj6kmaabxswG8bSLAA9qYZhDCyh1QdSyUnd9T2o7qHybaoeEuqG1kEWYon4741ut8HCqbwEjKze6rDuEbnPUYzSr7kiwoPeV2GrdsVFRLgxwgHJoENgjUhj1VVKZB2q7n8S6smwf7CJyYZZCZGkg5bLpywJddmegJjk2FuLwA2VEmnrDKRGpFkhxBc2rbj974XgGcBZ66mPTtwrXUwjY9G5hUArtYs8WhsCDAH58yaHFFViaAhBNDQ3HBtFbXwh6b1osdv8zDSvncYXPx2iikhmf6TRC2DE2ENYtzhLHJmgyXmQkm7yXp6nWxJaeLnUuxRaWdxxQSPy1Wnm1GvKJYzRBhv9RdcmDnEgKs21ex5uSSdqJ4H53Qs6StxGyQ4HyjTjEVUxTbUZpnzvECgAufKkuSPyC2mYkKKGrzWmvv5sh6fyo4eAq9QnfXB9YMETMpJbx5dFpc6ZXYimSCfJbJfP1bpCe1hXkhTPWeZJ9aPX6HZEfu89ChZiX32MaSM3QnnUhRbSnzdQ2jVAtqqwjNN5SeNNvXNxS6B1UHj52TGvGrLnNUp4BWgNKAAwpBxAAB7wny9tUSXt6jHVnGHBG1vJWF7S9DeaVjKg3qR8j1bUsGqh9bVkarag4SREopK8cHwFpb2yFcdGERfaKHyekAUjVkhqySH3Vb8GiAdDbRArKV2ip4eveocsFwjoCD5i9rotksNysgi9RDjkApYm7aJegC79omCujHVYFpU6HtV2AhNVFRvVBG2xDW9YEKEm3RxrjoCttM6sFkbNX61CSiQ3LsBPvcd5Aix9NUESjbNxFwARZ75UgquvFddApn13yxSqfzVoE9L3eRnAMxd7KHudBWQsnDK", "LXwmG9jPiXvYd6Z1DWRazpc2wTdpW2awCB9NV5qjJx4UFoncqYxve6G1gzTVBNCsDwSu5ZPEi6LNLuPdzM1r9DUMgAzEfGghKeoGebPAyLCerZ8Us4ukQSJPj8j3TQY5JLZBwceKrx1KHjeRRQBwBgxTkfButyeLtHgMELArAC9DDaZbYg7o2t98LMUZyArDzmK5fmhdKgeo6Dw4oZ1ENbepgqG35kR2pS63heXUeEuhH4nvqfLGHwSTanzhsQeBmYH9iqxSFfCvoRFnasoEPkWAv6PwGURqUk23wS5J9CaSadgPYRNdB915Vjf2kvxxmPFwoW9Uq1ZRo5DDS49goU3YbMgDJPnekbGQ9u9jMcwvo8FGRMiJVyEy2zdncnqPUaipekDaDowgf8EKYxBRYPo93DGga9FCVAoMC2PzRXRN1Q4X2zCx9onwMPoTWu2nFjYdx58bqzqs2ToK4S7UXZw4vpt6oSam7XN2miAfSN8WJmYRJ3FSGNfUz1ryo6N8uoecwEGeFksvbkobAvykuDGzeCNgdeNnRnMFZrco3kPvdzMf75tsRJu5ZTpTMW5mJWm6NbPJwxgV5JdxUvHPd8SCCmFKxhFywqVifp6WRMMqfVKaBdmXWG7zzN6hJZhf9EHupjR4KZExmuShvpx5bA1YyMUz1MpE9VP7vkLJWDYXfpJHJEWFRiADfSHt2RE5LzepxScfoHfpE7C6e4TBQBZd3dndxWDRREZSV45A1iXdq14AYqcsoBJ5Y8JCGHzXaGCLiBHvsXFMfUdTHhbPA8cegddhhZ2tK29UhR3veSGcjVZ1YwzVthQeJZK8RMbbbdf2s3f7dr8a7YGLU31T2jjy4tPR26ZFSadcuuMFR6QQisRP7qBKpgmUJc68fWdwNsLr8FLW8q2yipH1YnsWG389BQ9aXM4Zfb2WmXUT6JCpaeABWUFCLv6w3BkuBHyUFmmfiiHNx1E9u1VEuibAJYEkC6BEuoCKDqxMV62wdjbahsAn4fZdpQyVMK6xADbY2FXrREeaq4KDGzY4XYVZxaEZs3CEeedoZjFLbBe7ysm4MWqCiK7tucARTFF4XaxoH1C5JqqiraqRm4HBGVcjfzcyMwMHUC15m2N4AoQycb97Dn8W4Qp7s7gmchThLotvP2E7t7CXDa21cwKdVx9nh2xTJRPaXzMjt49L4AbXqT9RJ9PeRsYzKcQLcgugdDoB3vDtFBTZeoNNvf43JFpapTozoQtSfj7iNrPYfaEkNvCEzLjqJVyMPZ7gt13aySy5jDPp2vF5hGd5f6yv21PAiwQtfV47hn7y5hZfKv4T3gDE4sD6UQ2HFmhrAXmcuZ4AtfZZXpC3vgw6vhraKUFsHKjLZU3WKKAwnPW1HJC61jiutpnaBK1hDhop6FHkjvNtGrSnti", ], + tokens: [ + '8b08cdd5449a9592a9e79711d7d79249d7a03c535d17efaee83e216e80a44c4b', + ] }), }, cardano: { From 4e0321fd79e5262420c1e88d8e3ebabc229b49a1 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 6 Jun 2024 19:35:11 +0530 Subject: [PATCH 1893/2004] add divvy.bet (#10530) * Add: divvy.bet * refactor code * chore: house authority PDA and whitelisted house keys (#10534) * chore: house authority PDA and whitelisted house keys * chore: add SOL owner * bugfix: Max seed length exceeded * bugfix: Max seed length exceeded * chore: aggregate house accounts more scalable * bugfix: update solOwners mapper * bugfix: missing params in PDA helper * bugfix: PDA helper --------- Co-authored-by: kdevdivvy Co-authored-by: kdevdivvy <119331575+kdevdivvy@users.noreply.github.com> --- projects/clone/index.js | 11 +++++---- projects/divvy-bet/index.js | 47 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 projects/divvy-bet/index.js diff --git a/projects/clone/index.js b/projects/clone/index.js index 88136f79d80..13dabc9eaf3 100644 --- a/projects/clone/index.js +++ b/projects/clone/index.js @@ -1,16 +1,17 @@ -const anchor = require("@coral-xyz/anchor"); +const { Program } = require("@project-serum/anchor"); const { sumTokens2, getProvider, } = require("../helper/solana"); +const { PublicKey } = require("@solana/web3.js") -const programId = new anchor.web3.PublicKey('C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr') +const programId = new PublicKey('C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr') async function tvl() { const provider = getProvider() - const idl = await anchor.Program.fetchIdl(programId, provider) - const program = new anchor.Program(idl, programId, provider) + const idl = await Program.fetchIdl(programId, provider) + const program = new Program(idl, programId, provider) let tokenAccounts = [] - const cloneAccountAddress = anchor.web3.PublicKey.findProgramAddressSync( + const cloneAccountAddress = PublicKey.findProgramAddressSync( [Buffer.from("clone")], programId)[0] const cloneAccount = await program.account.clone.fetch(cloneAccountAddress) diff --git a/projects/divvy-bet/index.js b/projects/divvy-bet/index.js new file mode 100644 index 00000000000..fe8a3d9d62c --- /dev/null +++ b/projects/divvy-bet/index.js @@ -0,0 +1,47 @@ +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 = "So11111111111111111111111111111111111111112"; + 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, + }, +}; From b8f92a60a85b01af1c15c301b314b50a75613d0e Mon Sep 17 00:00:00 2001 From: mul53 Date: Thu, 6 Jun 2024 16:07:06 +0200 Subject: [PATCH 1894/2004] Update voltageswap adapter - add fusdv3 and pegswap (#10535) * add more assets to fuse core assets * add WETH_2 * add fusdv3 and pegswap --- projects/helper/coreAssets.json | 9 ++++++++- projects/voltage-stableswap/index.js | 28 ++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 546ca718290..0f548bbf34f 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -281,7 +281,14 @@ "USDT": "0xfadbbf8ce7d5b7041be672561bba99f79c532e10", "KNC": "0x43b17749b246fd2a96de25d9e4184e27e09765b0", "BUSD": "0x6a5f6a8121592becd6747a38d67451b310f7f156", - "null": "0x0000000000000000000000000000000000000000" + "null": "0x0000000000000000000000000000000000000000", + "USDC_2": "0x28c3d1cd466ba22f6cae51b1a4692a831696391a", + "USDT_2": "0x68c9736781e9316ebf5c3d49fe0c1f45d2d104cd", + "VOLT": "0x34ef2cc892a88415e9f02b91bfa9c91fc0be6bd4", + "FUSD_3": "0xce86a1cf3cff48139598de6bf9b1df2e0f79f86f", + "WETH_2": "0x5622f6dc93e08a8b717b149677930c38d5d50682", + "BNB": "0x6acb34b1df86e254b544189ec32cf737e2482058", + "BNB_2": "0x117c0419352ddb6fe575a67faa70315bdc4a93f3" }, "evmos": { "WEVMOS": "0xd4949664cd82660aae99bedc034a0dea8a0bd517", diff --git a/projects/voltage-stableswap/index.js b/projects/voltage-stableswap/index.js index f6b1af3c59a..1b44e9007d3 100644 --- a/projects/voltage-stableswap/index.js +++ b/projects/voltage-stableswap/index.js @@ -1,13 +1,33 @@ const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs') -const FUSD_ADDRESS = '0xd0ce1b4a349c35e61af02f5971e71ac502441e49'.toLowerCase() +const FUSD_ADDRESS = '0xd0ce1b4a349c35e61af02f5971e71ac502441e49' const STABLESWAP_ADDRESS = '0x2a68D7C6Ea986fA06B2665d08b4D08F5e7aF960c'.toLowerCase() +const FUSD_V3_ADDRESS = '0xce86a1cf3cff48139598de6bf9b1df2e0f79f86f' +const PEGSWAP_ADDRESS = '0x56ee525bb9056bed23a6055e60b2a2c5c225d1db' -const STABLES = [ADDRESSES.fuse.USDC, ADDRESSES.fuse.USDT, ADDRESSES.fuse.BUSD] +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, +] module.exports = { fuse: { - tvl: sumTokensExport({ owners: [STABLESWAP_ADDRESS, FUSD_ADDRESS], tokens: STABLES, }) - } + tvl: sumTokensExport({ + owners: [ + STABLESWAP_ADDRESS, + FUSD_ADDRESS, + FUSD_V3_ADDRESS, + PEGSWAP_ADDRESS, + ], + tokens: STABLES, + }), + }, } From d4fa16bb3e3f7e068d06d3553b2b32491b15d698 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 6 Jun 2024 15:52:24 +0100 Subject: [PATCH 1895/2004] add wenmarkets --- projects/wenmarkets/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/wenmarkets/index.js diff --git a/projects/wenmarkets/index.js b/projects/wenmarkets/index.js new file mode 100644 index 00000000000..b1bcd2437c7 --- /dev/null +++ b/projects/wenmarkets/index.js @@ -0,0 +1,14 @@ +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 From fc2d0ab9d688b4f7917a73369239367ddec19897 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:26:02 +0100 Subject: [PATCH 1896/2004] add rsk to sushiswap (#10537) --- projects/sushiswap/api.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index 02737ea89f4..2c3e0c53af6 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -95,6 +95,7 @@ module.exports = { }, blast: { tvl: getUniTVL({ factory: '0x42Fa929fc636e657AC568C0b5Cf38E203b67aC2b', useDefaultCoreAssets: true, }) }, core: { tvl: tvl2 }, + rsk: { tvl: tvl2 }, } module.exports.polygon.tvl = getChainTVL('polygon') From 4a94a9dc917f78b9be3f32fc510b2230bafa0c11 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 6 Jun 2024 17:18:24 +0100 Subject: [PATCH 1897/2004] add taiko to uni v3 (#10538) --- projects/uniswap/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 0f16a9b5c9b..96e2f770709 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -82,7 +82,9 @@ module.exports = { scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, blast: { factory: "0x792edade80af5fc680d96a2ed80a44247d2cf6fd", fromBlock: 400903, }, linea: { factory: "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", fromBlock: 25247, }, - manta: {factory: "0x06D830e15081f65923674268121FF57Cc54e4e23", fromBlock: 1191705} + manta: {factory: "0x06D830e15081f65923674268121FF57Cc54e4e23", fromBlock: 1191705}, + taiko: {factory: "0x75FC67473A91335B5b8F8821277262a13B38c9b3", fromBlock: 961} + }), filecoin: { tvl: filecoinTvl }, } From 5a2043b100662d1bc8c807845129a879b6fce77b Mon Sep 17 00:00:00 2001 From: stabble-devops <110252704+stabble-devops@users.noreply.github.com> Date: Thu, 6 Jun 2024 23:40:50 +0700 Subject: [PATCH 1898/2004] Add: stabble (#10522) * stabble adapter * feat: track tokens by pools * bugfix: IDL type * bugfix: IDL type * bugfix: IDL type * bugfix: unique tokens array mapping * bugfix: get tokens --- projects/stabble/index.js | 256 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 projects/stabble/index.js diff --git a/projects/stabble/index.js b/projects/stabble/index.js new file mode 100644 index 00000000000..82b83afeab2 --- /dev/null +++ b/projects/stabble/index.js @@ -0,0 +1,256 @@ +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]) }, +}; + +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: [], +}; From 9bd8bfd135307e09d4e240cb7d24937da140d98c Mon Sep 17 00:00:00 2001 From: Jason Mansfield Date: Thu, 6 Jun 2024 13:02:42 -0400 Subject: [PATCH 1899/2004] Update existing Polkadex adapter - Add staking TVL (#10520) * Add Polkadex * Add Polkadex staking TVL * Change export to include staking --- projects/polkadex/api.js | 33 +++++++++++++++++++-------------- projects/polkadex/index.js | 2 +- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/projects/polkadex/api.js b/projects/polkadex/api.js index e8b856d185f..2a3caf7d112 100644 --- a/projects/polkadex/api.js +++ b/projects/polkadex/api.js @@ -1,22 +1,10 @@ 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" -const assetMapping = { - '193492391581201937291053139015355410612': 'pha', - '182269558229932594457975666948556356791': 'moonbeam', - '313524628741076911470961827389955394913': 'voucher-dot', - '130314105136721928300689838359167097187': 'bifrost-native-coin', - '95930534000017180603917534864279132680': 'polkadot', - '119367686984583275840673742485354142551': 'dot-is-ded', - '32595388462891559990827225517299393930': 'unique-network', - '3496813586714279103986568049643838918': 'tether', - '222121451965151777636299756141619631150': 'astar', - '226557799181424065994173367616174607641': 'interbtc', -} - function add(_api, token, bal) { _api.add(token, bal, { skipChain: true }) } @@ -26,12 +14,15 @@ async function tvl(_api) { 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) { - requestedAssets.push([key, orderbookWallet]); + if(key !== "PDEX") + requestedAssets.push([key, orderbookWallet]); }) const results = await api.query.assets.account.multi(requestedAssets); @@ -65,6 +56,20 @@ async function staking(_api) { 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, diff --git a/projects/polkadex/index.js b/projects/polkadex/index.js index 851d22d04af..542615642dd 100644 --- a/projects/polkadex/index.js +++ b/projects/polkadex/index.js @@ -2,5 +2,5 @@ const { getExports } = require('../helper/heroku-api') module.exports = { timetravel: false, - ...getExports("polkadex", ['polkadex']), + ...getExports("polkadex", ['polkadex'], ['staking']) } \ No newline at end of file From dde5940d98b68e6ee72d82a3ba07b4b5d5779149 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 6 Jun 2024 21:43:18 +0100 Subject: [PATCH 1900/2004] v3 rsk sushi (#10540) --- projects/sushiswap-v3/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/sushiswap-v3/index.js b/projects/sushiswap-v3/index.js index 93f9064367f..3cbc37b1b41 100644 --- a/projects/sushiswap-v3/index.js +++ b/projects/sushiswap-v3/index.js @@ -75,6 +75,7 @@ module.exports = uniV3Export({ zeta: { factory: '0xB45e53277a7e0F1D35f2a77160e91e25507f1763', fromBlock: 1551069, }, islm: { factory, fromBlock: 6541826, }, blast: { factory: '0x7680d4b43f3d1d54d6cfeeb2169463bfa7a6cf0d', fromBlock: 284122, }, + rsk: { factory: '0x46B3fDF7B5cde91Ac049936bF0Bdb12C5D22202E', fromBlock: 6365060, }, //this one }); const config = { From 00ad930a4abf9d84ebabbcea17027635f0944a3e Mon Sep 17 00:00:00 2001 From: MathPoem <79817711+MathPoem@users.noreply.github.com> Date: Thu, 6 Jun 2024 23:43:38 +0300 Subject: [PATCH 1901/2004] Update fabric (#10541) * blasterswap-v3 adapter * Update index.js * Update index.js --------- Co-authored-by: lsblk07 --- projects/blasterswap-v3/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/blasterswap-v3/index.js b/projects/blasterswap-v3/index.js index 34138e18422..e741dead563 100644 --- a/projects/blasterswap-v3/index.js +++ b/projects/blasterswap-v3/index.js @@ -3,7 +3,7 @@ const { uniV3Export } = require("../helper/uniswapV3"); const { mergeExports } = require('../helper/utils') module.exports = mergeExports([ - uniV3Export({ blast: { factory: "0xb7a92633Bc7074c8216Dc53566fD58A77b5D32D9", fromBlock: 4308657, }, }), + uniV3Export({ blast: { factory: "0x1A8027625C830aAC43aD82a3f7cD6D5fdCE89d78", fromBlock: 4308657, }, }), ]) module.exports.blast.tvl = sdk.util.sumChainTvls([module.exports.blast.tvl]) From 3c55b52946c50e93bdec88ed2a45eb6c2b85dd3c Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 6 Jun 2024 23:27:11 +0100 Subject: [PATCH 1902/2004] maple syrup --- projects/maple-syrup/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/maple-syrup/index.js diff --git a/projects/maple-syrup/index.js b/projects/maple-syrup/index.js new file mode 100644 index 00000000000..bf031ef8e11 --- /dev/null +++ b/projects/maple-syrup/index.js @@ -0,0 +1,14 @@ +const rwaPools = [ + '0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b', +] + +async function tvl(api) { + const tokens = await api.multiCall({ abi: 'address:asset', calls: rwaPools }) + const bals = await api.multiCall({ abi: 'uint256:totalAssets', calls: rwaPools }) + api.addTokens(tokens, bals) +} + +module.exports = { + doublecounted: true, + ethereum: { tvl, } +} \ No newline at end of file From 6790196adc4120e2e20fa287541713bd50ce6929 Mon Sep 17 00:00:00 2001 From: Austin <128147981+austinjfi@users.noreply.github.com> Date: Fri, 7 Jun 2024 14:18:12 +0530 Subject: [PATCH 1903/2004] add usdc circle tokens (#10546) --- projects/brine/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/brine/index.js b/projects/brine/index.js index 74cb4d2069e..89402f93018 100644 --- a/projects/brine/index.js +++ b/projects/brine/index.js @@ -33,12 +33,14 @@ const polygonTokens = [ 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, ] From 191299d8a9290a0069d10ce947c6fcc07add7dd8 Mon Sep 17 00:00:00 2001 From: amedrontadora <134207821+amedrontadora@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:48:24 +0800 Subject: [PATCH 1904/2004] SyncSwap: Add SyncSwap Aqua v2 factory (#10545) * add ritsu * code refactor * SyncSwap: add factories * SyncSwap: add aquaV2 factory --------- Co-authored-by: amedrontadora Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/syncswap/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/syncswap/index.js b/projects/syncswap/index.js index dd75d9ebd2e..b24b4c8d103 100644 --- a/projects/syncswap/index.js +++ b/projects/syncswap/index.js @@ -45,7 +45,7 @@ const config = { fromBlock: 9775, stableFactorys: ['0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3','0x81251524898774F5F2FCaE7E7ae86112Cb5C317f'], classicFactorys: ['0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb','0x0a34FBDf37C246C0B401da5f00ABd6529d906193'], - aquaFactorys: ['0x20b28B1e4665FFf290650586ad76E977EAb90c5D','0xFfa499b019394d9bEB5e21FC54AD572E4942302b'] + aquaFactorys: ['0x20b28B1e4665FFf290650586ad76E977EAb90c5D','0xFfa499b019394d9bEB5e21FC54AD572E4942302b','0x0754870C1aAb00eDCFABDF4e6FEbDD30e90f327d'] }, linea: { fromBlock: 716, From eaea8753c37c5449e280e021a3b76e23c58b367e Mon Sep 17 00:00:00 2001 From: plonkai <167075793+plonkai@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:51:05 +0800 Subject: [PATCH 1905/2004] add tradoor (#10544) --- projects/tradoor/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/tradoor/index.js diff --git a/projects/tradoor/index.js b/projects/tradoor/index.js new file mode 100644 index 00000000000..8d44d395b7f --- /dev/null +++ b/projects/tradoor/index.js @@ -0,0 +1,11 @@ +const { sumTokensExport } = require("../helper/chain/ton"); +const ADDRESSES = require("../helper/coreAssets.json"); + +const evaaScAddr = "EQBPAMNu5Eud9AEvplOjNlRhxI4EkuJEhEMAmxh9erxmImKs" + +module.exports = { + methodology: 'Counts EVAA smartcontract balance as TVL.', + ton: { + tvl: sumTokensExport({ owner: evaaScAddr, tokens: [ADDRESSES.null]}), + } +} From 83dbafa31fb65e86bd5a96eae2f850066de3d816 Mon Sep 17 00:00:00 2001 From: creamD3v <141406164+creamD3v@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:55:32 +0800 Subject: [PATCH 1906/2004] Update CREAM adapter (#10548) * Update README.md * update cream adapter --------- Co-authored-by: DefiLlama <73503892+DefiLlama@users.noreply.github.com> --- projects/cream/index.js | 182 +++------------------------------------- 1 file changed, 11 insertions(+), 171 deletions(-) diff --git a/projects/cream/index.js b/projects/cream/index.js index 9de10783b74..3f60a31e7ba 100644 --- a/projects/cream/index.js +++ b/projects/cream/index.js @@ -1,178 +1,18 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require("@defillama/sdk"); -const utils = require("../helper/utils"); -const { unwrapUniswapLPs, nullAddress } = require("../helper/unwrapLPs"); -const { getCompoundV2Tvl, compoundExports } = require("../helper/compound"); -const { getConfig } = require('../helper/cache') - -const abiCerc20 = require("./cerc20.json"); -const abiCereth2 = require("./creth2.json"); -const BigNumber = require("bignumber.js"); - -// -const wETH = ADDRESSES.ethereum.WETH; -const CRETH2 = "0xcBc1065255cBc3aB41a6868c22d1f1C573AB89fd"; -const crvIB = "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7"; - -const replacements = { - "0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7": wETH, // yWETH -> WETH - //'0x27b7b1ad7288079A66d12350c828D3C00A6F07d7': ADDRESSES.ethereum.DAI, // yearn: yCRV-IB -> DAI - "0x986b4AFF588a109c09B50A03f42E4110E29D353F": wETH, // yearn: yCRV/sETH - "0xdCD90C7f6324cfa40d7169ef80b12031770B4325": wETH, // yearn: yCRV/stETH - "0x9cA85572E6A3EbF24dEDd195623F188735A5179f": - "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", // yearn: y3Crv -> 3Crv -}; - -async function ethereumTvl(timestamp, block) { - let balances = {}; - - let tokens_ethereum = ( - await getConfig('cream/ethereum', - "https://api.cream.finance/api/v1/crtoken?comptroller=eth" - ) - ); - - // --- Grab all the getCash values of crERC20 (Lending Contract Addresses) --- - let cashValues = ( - await sdk.api.abi.multiCall({ - block, - calls: tokens_ethereum.map((token) => ({ target: token.token_address })), - abi: abiCerc20["getCash"], - }) - ).output; - - let underlyings = ( - await sdk.api.abi.multiCall({ - block, - calls: tokens_ethereum.map((token) => ({ target: token.token_address })), - abi: abiCerc20["underlying"], - permitFailure: true, - }) - ).output; - - const lpPositions = []; - cashValues.map((cashVal, idx) => { - if (underlyings[idx].output === null) { - // It's ETH - sdk.util.sumSingleBalance( - balances, - ADDRESSES.null, - cashVal.output - ); - } else if ( - tokens_ethereum[idx].underlying_symbol === "UNI-V2" || - tokens_ethereum[idx].underlying_symbol === "SLP" - ) { - lpPositions.push({ - token: underlyings[idx].output, - balance: cashVal.output, - }); - } else if (underlyings[idx].output === crvIB || underlyings[idx].output === CRETH2) { - return; // Exclude CRETH2 //https://twitter.com/0xngmi/status/1398565590856515585 - } else { - const token = - replacements[underlyings[idx].output] || underlyings[idx].output; - sdk.util.sumSingleBalance(balances, token, cashVal.output); - } - }); - - await unwrapUniswapLPs(balances, lpPositions, block); - - - return balances; -} - -async function lending(block, chain, borrowed) { - let balances = {}; - - let tokens_bsc = ( - await getConfig('cream/'+chain, - `https://api.cream.finance/api/v1/crtoken?comptroller=${chain}` - ) - ); - - let cashValues = ( - await sdk.api.abi.multiCall({ - block, - calls: tokens_bsc.map((token) => ({ target: token.token_address })), - abi: borrowed ? abiCerc20.totalBorrows : abiCerc20["getCash"], - chain, - }) - ).output; - - let underlyings = ( - await sdk.api.abi.multiCall({ - block, - calls: tokens_bsc.map((token) => ({ target: token.token_address })), - abi: abiCerc20["underlying"], - permitFailure: true, - chain, - }) - ).output; - - const transformAdress = i => `bsc:${i}` - const lpPositions = []; - cashValues.map((cashVal, idx) => { - if (tokens_bsc[idx].underlying_symbol === "Cake-LP") { - lpPositions.push({ - token: underlyings[idx].output, - balance: cashVal.output, - }); - } else if (tokens_bsc[idx].symbol === "crBNB") { - sdk.util.sumSingleBalance( - balances, - "bsc:" + ADDRESSES.bsc.WBNB, - cashVal.output - ); // BNB - } else { - const tokenAddr = underlyings[idx].output; - sdk.util.sumSingleBalance(balances, transformAdress(tokenAddr), cashVal.output); - } - }); - await unwrapUniswapLPs(balances, lpPositions, block, 'bsc', transformAdress); - return balances -} - -const bscTvl = async (timestamp, ethBlock, chainBlocks) => { - const block = chainBlocks["bsc"]; // req for the block type - const balances = await lending(block, "bsc", false) - - // --- Staking bsc service --- - const bsc_staking_service = await utils.fetchURL( - "https://api.binance.org/v1/staking/chains/bsc/validators/bva1asktsxqny35hwxltpzqsvr64s5vr2ph2t2vlnw/" - ); - - sdk.util.sumSingleBalance( - balances, - "bsc:" + ADDRESSES.bsc.WBNB, // -- Apparently it auto-merges balances (check on output) --- - BigNumber(bsc_staking_service.data.votingPower) - .multipliedBy(10 ** 18) - .toFixed(0) - ); - - return balances; -}; - -const bscBorrowed = async (timestamp, ethBlock, chainBlocks) => { - const block = chainBlocks["bsc"]; // req for the block type - return lending(block, "bsc", true) -} +const ADDRESSES = require("../helper/coreAssets.json"); +const { compoundExports } = require("../helper/compound"); module.exports = { - hallmarks: [ - [1635292800, "Flashloan exploit"] - ], + hallmarks: [[1635292800, "Flashloan exploit"]], timetravel: false, // bsc and fantom api's for staked coins can't be queried at historical points start: 1599552000, // 09/08/2020 @ 8:00am (UTC) - ethereum: { - tvl: ethereumTvl, - }, - bsc: { - tvl: bscTvl, - borrowed: bscBorrowed - //getCompoundV2Tvl("0x589de0f0ccf905477646599bb3e5c622c84cc0ba", "bsc", addr=>`bsc:${addr}`, "0x1Ffe17B99b439bE0aFC831239dDECda2A790fF3A", ADDRESSES.bsc.WBNB, true), - }, - // ethereum:compoundExports("0x3d5BC3c8d13dcB8bF317092d84783c2697AE9258", "ethereum", "0xd06527d5e56a3495252a528c4987003b712860ee", nullAddress), + ethereum: compoundExports("0xbdC857eae1D15ad171E11af6FC3e99413Ed57Ec4", "ethereum"), + bsc: compoundExports( + "0x589DE0F0Ccf905477646599bb3E5C622C84cC0BA", + "bsc", + "0x1Ffe17B99b439bE0aFC831239dDECda2A790fF3A", + ADDRESSES.bsc.WBNB + ), polygon: compoundExports("0x20ca53e2395fa571798623f1cfbd11fe2c114c24", "polygon"), arbitrum: compoundExports("0xbadaC56c9aca307079e8B8FC699987AAc89813ee", "arbitrum"), + base: compoundExports("0x94d31f92a7f85b51F0B628467B3E660BA3e8D799", "base"), }; From 80dc38fb8e4495ebc507dac84b59c3c496d6eb17 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:35:02 +0100 Subject: [PATCH 1907/2004] ADD binance june wallets (#10549) --- projects/binance/config.js | 67 ++++++++++++++------------------------ 1 file changed, 24 insertions(+), 43 deletions(-) diff --git a/projects/binance/config.js b/projects/binance/config.js index abdbd461a89..b9851721ea4 100644 --- a/projects/binance/config.js +++ b/projects/binance/config.js @@ -49,13 +49,13 @@ const assetList = [ ['BNB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['BNB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], ['BNB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + ['BNB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['BNB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], + ['BNB', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['BNB', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['BNB', 'OPBNB', '0x001ceb373c83ae75b9f5cf78fc2aba3e185d09e2'], ['BNB', 'OPBNB', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['BTC', 'BEP2', 'bnb17jky4rwhu9rzgrx7exrfc3pcd5z290ga8qfm0j'], ['BTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['BTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['BTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['BTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['BTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], @@ -145,8 +145,6 @@ const assetList = [ ['CHZ', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], ['CHZ', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], ['CHZ', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], - // ['CHZ', 'CHZ2', '0x87917d879ba83ce3ada6e02d49a10c1ec1988062'], - // ['CHZ', 'CHZ2', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['CHZ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['CHZ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['CHZ', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], @@ -159,13 +157,13 @@ const assetList = [ ['CRV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['CVP', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['CVP', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], + ['CVP', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['CVP', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['CVP', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['CVP', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['CVP', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['CVP', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['DOGE', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['DOGE', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['DOGE', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['DOGE', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['DOGE', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], @@ -174,6 +172,7 @@ const assetList = [ ['DOGE', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['DOGE', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['DOGE', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], + /* ['DOGE', 'DOGE', 'D73RQLGWW9TBT2AKspEP24wLiXFrXvnTqX'], ['DOGE', 'DOGE', 'D7BrtudMAdwz2U7vSGumVDuxZsZNibJuzw'], ['DOGE', 'DOGE', 'D7D2f2WuEkwhTWqBkisZ5sM3JagaBcNWBs'], @@ -209,10 +208,10 @@ const assetList = [ ['DOGE', 'DOGE', 'DRweGdMgohChLBn2TamjCNicKYEncRgj5a'], ['DOGE', 'DOGE', 'DTGrjpvJXQU2zSpUDsnk9b4PAQW5Pwtg4K'], ['DOGE', 'DOGE', 'DTSop4ycWkpmDqpncVZ3jwKp3z7B4kW4T3'], + ['DOGE', 'DOGE', 'DTbG3RJRejnM99g8MSnhSbJxJVW8X7YXy9'], ['DOGE', 'DOGE', 'DU8gPC5mh4KxWJARQRxoESFark2jAguBr5'], - ['DOT', 'BEP2', 'bnb17jky4rwhu9rzgrx7exrfc3pcd5z290ga8qfm0j'], + */ ['DOT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['DOT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['DOT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['DOT', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['DOT', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], @@ -230,7 +229,7 @@ const assetList = [ ['DOT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['DOT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['DOT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - // ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], + ['ENJ', 'ENJ', 'enC1zkqfU5X4x84LMKSzcRdsSSiF7M1Nt7ovm62jRXr78uT1h'], ['ENJ', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['ENJ', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['ENJ', 'ETH', '0x56eddb7aa87536c09ccc2793473599fd21a8b17f'], @@ -245,7 +244,6 @@ const assetList = [ ['ETH', 'BASE', '0x3304e22ddaa22bcdc5fca2269b418046ae7b566a'], ['ETH', 'BASE', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['ETH', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['ETH', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['ETH', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], ['ETH', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['ETH', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], @@ -255,6 +253,7 @@ const assetList = [ ['ETH', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], ['ETH', 'BEP20', '0x515b72ed8a97f42c568d6a143232775018f133c8'], ['ETH', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['ETH', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['ETH', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['ETH', 'BEP20', '0xa180fe01b906a1be37be6c534a3300785b20d947'], ['ETH', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], @@ -279,7 +278,7 @@ const assetList = [ ['ETH', 'OP', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['ETH', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], ['ETH', 'OP', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['ETH', 'STK', '0x0213c67ed78bc280887234fe5ed5e77272465317978ae86c25a71531d9332a2d'], + // ['ETH', 'STK', ' 0x0213c67ed78bc280887234fe5ed5e77272465317978ae86c25a71531d9332a2d'], ['ETH', 'ERA', '0x7aed074ca56f5050d5a2e512ecc5bf7103937d76'], ['ETH', 'ERA', '0xa84fd90d8640fa63d194601e0b2d1c9094297083'], ['ETH', 'ERA', '0xf977814e90da44bfa03b6295a0616a897441acec'], @@ -287,19 +286,21 @@ const assetList = [ ['FDUSD', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['FDUSD', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['FDUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], + ['FDUSD', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['FDUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['FDUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['FDUSD', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['FDUSD', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['FDUSD', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], ['FDUSD', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['FDUSD', 'ETH', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['FDUSD', 'ETH', '0xa7c0d36c4698981fab42a7d8c783674c6fe2592d'], + ['FDUSD', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['FDUSD', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['FDUSD', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['FDUSD', 'OPBNB', '0x001ceb373c83ae75b9f5cf78fc2aba3e185d09e2'], ['FDUSD', 'OPBNB', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['GRT', 'ARB', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['GRT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], ['GRT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['GRT', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['GRT', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], @@ -318,10 +319,10 @@ const assetList = [ ['HFT', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['HFT', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['LINK', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['LINK', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['LINK', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['LINK', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['LINK', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['LINK', 'BEP20', '0x835678a611b28684005a5e2233695fb6cbbb0007'], ['LINK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['LINK', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['LINK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], @@ -334,7 +335,6 @@ const assetList = [ ['LINK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['LINK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['LTC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['LTC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['LTC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['LTC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['LTC', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], @@ -346,30 +346,23 @@ const assetList = [ ['LTC', 'LTC', 'LbmGksLBwtwRXyxeazCZqKiAHX6cWN2AzN'], ['LTC', 'LTC', 'LhzEoDXHXASi4hSMxrKeVoSGrED9QsBpPq'], ['LTC', 'LTC', 'M8T1B2Z97gVdvmfkQcAtYbEepune1tzGua'], - ['LTC', 'LTC', 'MB8nnFMvR5cgvpzQ1QXTDVfUM91BcsLH3k'], - ['LTC', 'LTC', 'MBjKmoDwkuUbtnVd4vjymxjJx7Crca2s1z'], - ['LTC', 'LTC', 'MDwD5wYdeuoisfoaWKgeHK4Gq3YkbaCypJ'], ['LTC', 'LTC', 'MEhAHYijouCinmGKL6n1bRTXYznH1X24rD'], ['LTC', 'LTC', 'MG9aFQgTH5C4UPcur8S2bh5duKYMfaJFUS'], ['LTC', 'LTC', 'MGvUTN1PuWgBxuoFgTfkk4eJDzYgRivR8F'], ['LTC', 'LTC', 'MJto5wFLrE9t4TDXCgdSet8W6mxYqGijC3'], ['LTC', 'LTC', 'MJwFHGandYUFJTTHHSXg3q6u7ge4af1n4N'], ['LTC', 'LTC', 'MLjHNHuJy8VxxPzkL2MmYNoxG8b6BH4J4R'], - ['LTC', 'LTC', 'MLkNzCps6cXou2DELVfxDuRC4uZGwr397o'], ['LTC', 'LTC', 'MQd1fJwqBJvwLuyhr17PhEFx1swiqDbPQS'], ['LTC', 'LTC', 'MSeDRiNoH5Afr9b9rNo837hYzpxBXXqMZf'], ['LTC', 'LTC', 'MWGTiJBNEQSfxTCrdC2VKEa55Lck27wr67'], - ['LTC', 'LTC', 'MWkX1ZaFbrRPtcQvVpjvigxWU17JoinePy'], ['MASK', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['MASK', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['MASK', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['MASK', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['MASK', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['MASK', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['MASK', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['MASK', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['MATIC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['MATIC', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['MATIC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['MATIC', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], ['MATIC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], @@ -408,7 +401,6 @@ const assetList = [ ['SHIB', 'BEP20', '0xdccf3b77da55107280bd850ea519df3705d1a75a'], ['SHIB', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['SHIB', 'BEP20', '0xeb2d2f1b8c558a40207669291fda468e50c8a0bb'], - ['SHIB', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['SHIB', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['SHIB', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['SHIB', 'ETH', '0x4976a4a02f38326660d17bf34b431dc6e2eb2327'], @@ -438,8 +430,6 @@ const assetList = [ ['SSV', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['SSV', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['SSV', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], - ['TUSD', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['TUSD', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['TUSD', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['TUSD', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['TUSD', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], @@ -451,13 +441,12 @@ const assetList = [ ['TUSD', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], ['TUSD', 'TRX', 'TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb'], ['UNI', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['UNI', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['UNI', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['UNI', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], + ['UNI', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['UNI', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['UNI', 'BEP20', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['UNI', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], - ['UNI', 'BEP20', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['UNI', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['UNI', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['UNI', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], @@ -473,6 +462,7 @@ const assetList = [ ['USDC', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], ['USDC', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], ['USDC', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], + ['USDC', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['USDC', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['USDC', 'BEP20', '0x1fbe2acee135d991592f167ac371f3dd893a508b'], ['USDC', 'BEP20', '0x3c783c21a0383057d128bae431894a5c19f9cf06'], @@ -487,14 +477,13 @@ const assetList = [ ['USDC', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], ['USDC', 'ETH', '0x28c6c06298d514db089934071355e5743bf21d60'], ['USDC', 'ETH', '0x4a9e49a45a4b2545cb177f79c7381a30e1dc261f'], - ['USDC', 'ETH', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], + ['USDC', 'ETH', '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'], ['USDC', 'ETH', '0xd3a22590f8243f8e83ac230d1842c9af0404c4a1'], ['USDC', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], - ['USDC', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDC', 'MATIC', '0xe7804c37c13166ff0b37f5ae0bb07a3aebb6e245'], ['USDC', 'NEAR', '5c33c6218d47e00ef229f60da78d0897e1ee9665312550b8afd5f9c7bc6957d2'], + ['USDC', 'NEAR', 'binancecold3.near'], ['USDC', 'OP', '0xacd03d601e5bb1b275bb94076ff46ed9d753435a'], - // ['USDC', 'RON', '0xb32e9a84ae0b55b8ab715e4ac793a61b277bafa3'], ['USDC', 'SOL', '2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S'], ['USDC', 'SOL', '5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9'], ['USDC', 'SOL', '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'], @@ -502,15 +491,14 @@ const assetList = [ ['USDC', 'TRX', 'TKoMMAMrDCUY212N6M4pzmYABtgkgo7XZn'], ['USDC', 'TRX', 'TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G'], ['USDC', 'TRX', 'TVGDpgtCs45PJE7ZMHhiC76L3v77qAwJW9'], - // ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], - // ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], + ['USDC', 'XLM', 'GBAIA5U6E3FSRUW55AXACIVGX2QR5JYAS74OWLED3S22EGXVYEHPLGPA'], + ['USDC', 'XLM', 'GC5LF63GRVIT5ZXXCXLPI3RX2YXKJQFZVBSAO6AUELN3YIMSWPD6Z6FH'], ['USDT', 'ARB', '0xb38e8c17e38363af6ebdcb3dae12e0243582891d'], ['USDT', 'ARB', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['USDT', 'AVAX', '0x4aefa39caeadd662ae31ab0ce7c8c2c9c0a013e8'], ['USDT', 'AVAX', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['USDT', 'AVAX', '0x9f8c163cba728e99993abe7495f06c0a3c8ac8b9'], ['USDT', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['USDT', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['USDT', 'BEP2', 'bnb1m5amny2gs3xdyta6pksmr43zu4727w24syyks7'], ['USDT', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['USDT', 'BEP2', 'bnb1xrfwzlu9c5208lhtn7ywt0mjrhjh4nt4fjyqxy'], @@ -568,8 +556,8 @@ const assetList = [ ['USDT', 'TRX', 'TYASr5UV6HEcXatwdFQfmLVUqQQQMUxHLS'], ['WRX', 'BEP2', 'bnb142q467df6jun6rt5u2ar58sp47hm5f9wvz2cvg'], ['WRX', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['WRX', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['WRX', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], + ['WRX', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], ['WRX', 'BEP20', '0x8894e0a0c962cb723c1976a4421c95949be2d4e3'], ['WRX', 'BEP20', '0xe2fc31f816a9b94326492132018c3aecc4a93ae1'], ['WRX', 'ETH', '0x21a31ee1afc51d94c2efccaa2092ad1028285549'], @@ -577,7 +565,6 @@ const assetList = [ ['WRX', 'ETH', '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'], ['WRX', 'ETH', '0xf977814e90da44bfa03b6295a0616a897441acec'], ['XRP', 'BEP2', 'bnb1fnd0k5l4p3ck2j9x9dp36chk059w977pszdgdz'], - ['XRP', 'BEP2', 'bnb1lsmt5a8vqqus5fwslx8pyyemgjtg4y6ugj308t'], ['XRP', 'BEP2', 'bnb1u2agwjat20494fmc6jnuau0ls937cfjn4pjwtn'], ['XRP', 'BEP20', '0x0e4158c85ff724526233c1aeb4ff6f0c46827fbe'], ['XRP', 'BEP20', '0x5a52e96bacdabb82fd05763e25335261b270efcb'], @@ -599,17 +586,11 @@ const assetList = [ ['XRP', 'XRP', 'rP3mUZyCDzZkTSd1VHoBbFt8HGm8fyq8qV'], ['XRP', 'XRP', 'rPJ5GFpyDLv7gqeB1uZVUBwDwi41kaXN5A'], ['XRP', 'XRP', 'rPz2qA93PeRCyHyFCqyNggnyycJR1N4iNf'], + ['XRP', 'XRP', 'rarG6FaeYhnzSKSS5EEPofo4gFsPn2bZKk'], + ['XRP', 'XRP', 'rfQ9EcLkU6WnNmkS3EwUkFeXeN47Rk8Cvi'], + ['XRP', 'XRP', 'rhWj9gaovwu2hZxYW7p388P8GRbuXFLQkK'], ['XRP', 'XRP', 'rpmxpWis42eYV4oMhyxJNSzrLRdacJVooa'], - ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], - // added on the 22/04/2024 - ['USDT', 'TRX', 'TJ5usJLLwjwn7Pw3TPbdzreG7dvgKzfQ5y'], - ['TRX', 'TRX', 'TJ5usJLLwjwn7Pw3TPbdzreG7dvgKzfQ5y'], - ['USDT', 'TRX', 'TK4ykR48cQQoyFcZ5N4xZCbsBaHcg6n3gJ'], - ['TRX', 'TRX', 'TK4ykR48cQQoyFcZ5N4xZCbsBaHcg6n3gJ'], - ['TRX', 'TRX', 'TCLgK89AnXbC9rewvhNb9UgXCc2qJJpBXh'], - ['USDT', 'TRX', 'TCLgK89AnXbC9rewvhNb9UgXCc2qJJpBXh'], - ['USDT', 'TRX', 'TJqwA7SoZnERE4zW5uDEiPkbz4B66h9TFj'], - ['TRX', 'TRX', 'TJqwA7SoZnERE4zW5uDEiPkbz4B66h9TFj'], + ['XRP', 'XRP', 'rs8ZPbYqgecRcDzQpJYAMhSxSi5htsjnza'], ] From f63336901158e762ee3c5d79aa87aa7fd7b27111 Mon Sep 17 00:00:00 2001 From: Kyrylo Riabov Date: Fri, 7 Jun 2024 15:19:25 +0300 Subject: [PATCH 1908/2004] Add Q Infinity Adapter (#10552) --- projects/helper/coreAssets.json | 4 +++- projects/helper/tokenMapping.js | 4 ++++ projects/q-infinity/index.js | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 projects/q-infinity/index.js diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 0f548bbf34f..6251af69fb5 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1699,7 +1699,9 @@ "q": { "WBTC": "0xde397e6C442A3E697367DecBF0d50733dc916b79", "WDAI": "0xDeb87c37Dcf7F5197026f574cd40B3Fc8Aa126D1", - "WUSDC": "0x79Cb92a2806BF4f82B614A84b6805963b8b1D8BB" + "WUSDC": "0x79Cb92a2806BF4f82B614A84b6805963b8b1D8BB", + "WETH": "0xd56F9ffF3fe3BD0C7B52afF9A42eb70E05A287Cc", + "ELK": "0xeEeEEb57642040bE42185f49C52F7E9B38f8eeeE" }, "zklink": { "WBTC": "0xda4aaed3a53962c83b35697cd138cc6df43af71f", diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 95d8a211dce..f67fed34636 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -36,6 +36,10 @@ const ibcMappings = { } const fixBalancesTokens = { + q: { + [ADDRESSES.q.ELK]: { coingeckoId: "elk-finance", decimals: 18 }, + [ADDRESSES.q.WETH]: { coingeckoId: "ethereum", decimals: 18 }, + }, stellar: { "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA": { coingeckoId: "stellar", decimals: 7}, "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75": { coingeckoId: "usd-coin", decimals: 7}, diff --git a/projects/q-infinity/index.js b/projects/q-infinity/index.js new file mode 100644 index 00000000000..147ca102d43 --- /dev/null +++ b/projects/q-infinity/index.js @@ -0,0 +1,22 @@ +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 From 7fc2f1496f82f133d034b0951a95b291a5b9564c Mon Sep 17 00:00:00 2001 From: 0scallion <150413244+0scallion@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:24:54 +0800 Subject: [PATCH 1909/2004] Add zetachain data (#10550) * Add SubstanceX * minor fix * add tvl on zetachain --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/SubstanceX/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/SubstanceX/index.js b/projects/SubstanceX/index.js index 5ac5fd3fdc7..c9df8308421 100644 --- a/projects/SubstanceX/index.js +++ b/projects/SubstanceX/index.js @@ -8,7 +8,15 @@ 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.`, }; From 08bceb26daf0c7533085bf30f6fae23e98926475 Mon Sep 17 00:00:00 2001 From: Ryan C Date: Fri, 7 Jun 2024 23:21:30 +0900 Subject: [PATCH 1910/2004] XY Finance: Add taiko config (#10554) * feat: add taiko for xy finance * feat: add LOOT LLT token --- projects/xy-finance/index.js | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/projects/xy-finance/index.js b/projects/xy-finance/index.js index 79387dddc3d..07f7100730f 100644 --- a/projects/xy-finance/index.js +++ b/projects/xy-finance/index.js @@ -67,6 +67,9 @@ const config = { }, xlayer: { chainId: '196' + }, + taiko: { + chainId: '167000' } } @@ -96,6 +99,10 @@ const yPoolDepositContract = { "eYe": { "contractAddress": "0xF0052C0B4F08078846aF48FE8C7bb365c9937c21", "tokenAddress": "0x9A257C90Fa239fBA07771ef7da2d554D148c2E89" + }, + "LOOT": { + "contractAddress": "0xD95841e7eC6b61f708829B57a3433C3Fd24B2A8c", + "tokenAddress": "0x721A1B990699eE9D90b6327FaaD0A3E840aE8335" } }, "25": { @@ -139,6 +146,10 @@ const yPoolDepositContract = { "contractAddress": "0x58F29F7d759aef5B8e34C8e4152d6117893017aB", "tokenAddress": "0xae620DC4B9b6e44FBeb4a949F63AC957Cc43b5dD" }, + "LLT": { + "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", + "tokenAddress": "0x92073dE2706eB8f0265998bCf7B8F751e1349b8F" + } }, "56": { "ETH": { @@ -193,6 +204,10 @@ const yPoolDepositContract = { "contractAddress": "0xF98bfE69d069B40668D4F6aaeA22E73d1DC21A93", "tokenAddress": "0x925FAdb35B73720238cc78777d02ED4dD3100816", }, + "LLT": { + "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", + "tokenAddress": "0x0DdE4811C4DD68Dc740A1D7997F33fF46CD186a9" + } }, "250": { "ETH": { @@ -354,6 +369,10 @@ const yPoolDepositContract = { "USDC": { "contractAddress": "0xA5Cb30E5d30A9843B6481fFd8D8D35DDED3a3251", "tokenAddress": ADDRESSES.base.USDbC + }, + "LOOT": { + "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", + "tokenAddress": "0x94a42083948d86432246eAD625B30d49014A4BFF" } }, "5000": { @@ -368,6 +387,10 @@ const yPoolDepositContract = { "USDT": { "contractAddress": "0x0241fb446d6793866245b936F2C3418F818bDcD3", "tokenAddress": ADDRESSES.mantle.USDT + }, + "LOOT": { + "contractAddress": "0x141E379505C3b89C5BBE4Bd2353f12CA4681e3D2", + "tokenAddress": "0x94a42083948d86432246eAD625B30d49014A4BFF" } }, "534352": { @@ -385,6 +408,10 @@ const yPoolDepositContract = { "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", "tokenAddress": ethAddress }, + "LOOT": { + "contractAddress": "0xD95841e7eC6b61f708829B57a3433C3Fd24B2A8c", + "tokenAddress": "0x1C559a960aE5293eA56C40EFC3c0169B413DDcF3" + } }, "196": { "ETH": { @@ -395,6 +422,16 @@ const yPoolDepositContract = { "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", "tokenAddress": ADDRESSES.xlayer.USDT } + }, + "167000": { + "ETH": { + "contractAddress": "0xFa77c2DecCB21ACb9Bf196408Bf6aD5973D07762", + "tokenAddress": ethAddress + }, + "USDC": { + "contractAddress": "0x1e4992E1Be86c9d8ed7dcBFcF3665FE568dE98Ab", + "tokenAddress": ADDRESSES.taiko.USDC + } } } From ac68426851e08884d625c969fc4d1559b8017720 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:06:24 +0530 Subject: [PATCH 1911/2004] Add agentfi (#10555) * add agentfi * minor refactor --------- Co-authored-by: Max Zhou --- projects/agentfi/ca.js | 35 ++++++++ projects/agentfi/index.js | 50 +++++++++++ projects/agentfi/strategies/dex-balancer.js | 82 +++++++++++++++++ projects/agentfi/strategies/looper.js | 45 ++++++++++ projects/agentfi/utils.js | 99 +++++++++++++++++++++ 5 files changed, 311 insertions(+) create mode 100644 projects/agentfi/ca.js create mode 100644 projects/agentfi/index.js create mode 100644 projects/agentfi/strategies/dex-balancer.js create mode 100644 projects/agentfi/strategies/looper.js create mode 100644 projects/agentfi/utils.js diff --git a/projects/agentfi/ca.js b/projects/agentfi/ca.js new file mode 100644 index 00000000000..3ae558dce6f --- /dev/null +++ b/projects/agentfi/ca.js @@ -0,0 +1,35 @@ +const tokenAddress = { + USDB: "0x4300000000000000000000000000000000000003", + WETH: "0x4300000000000000000000000000000000000004", + ETH: "0x0000000000000000000000000000000000000000" +}; + +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 new file mode 100644 index 00000000000..3b0f57a84c1 --- /dev/null +++ b/projects/agentfi/index.js @@ -0,0 +1,50 @@ +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"); + + +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 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 blasterswapV3 = concentratedLiquidityAgents.map(i => [uniV3NftManager.blasterswap, i.agentAddress]) + const blasterswap2V3 = concentratedLiquidityAgents.map(i => [uniV3NftManager.blasterswap2, i.agentAddress]) + const thrusterV3 = concentratedLiquidityAgents.map(i => [uniV3NftManager.thruster, i.agentAddress]) + + + await getTvlForDexBalancer(dexBalancerAgents.map(i => i.agentAddress), api) + await getTvlForLooperWithOrbit(looperAgentsAddresses, api) + await sumTokens2({ + tokensAndOwners: [ + ...thrusterv2, + ...blasterswapv2, + ...ringv2, + ], + uniV3nftsAndOwners: [ + ...blasterswapV3, + ...blasterswap2V3, + ...thrusterV3 + ], + 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/dex-balancer.js b/projects/agentfi/strategies/dex-balancer.js new file mode 100644 index 00000000000..dd23b450d34 --- /dev/null +++ b/projects/agentfi/strategies/dex-balancer.js @@ -0,0 +1,82 @@ +const { balanceFetcher, uniV2Lp, tokenAddress } = require('../ca') +const BigNumber = require("bignumber.js"); + + +// underlying token mapping +const RingTokenMappings = { + // fwUSDB -> USDB + "0x866f2C06B83Df2ed7Ca9C2D044940E7CD55a06d6": tokenAddress.USDB, + // fwWETH -> WETH + "0x66714DB8F3397c767d0A602458B5b4E3C0FE7dd1": 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], token0Balance.toFixed(0)) + api.add(RingTokenMappings[address1], 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 new file mode 100644 index 00000000000..1461966b209 --- /dev/null +++ b/projects/agentfi/strategies/looper.js @@ -0,0 +1,45 @@ +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 === "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" + 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 new file mode 100644 index 00000000000..b96518f17f7 --- /dev/null +++ b/projects/agentfi/utils.js @@ -0,0 +1,99 @@ +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 Looper = ["0x6A9D21A09A76808C444a89fE5fCc0a5f38dc0523", "0xe5fe6f280CEadc5c4DDE69eF2DF6234dd7Bd82E2"] + 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 => Looper.includes(i))) { + return { + ...i, + moduleType: "Looper" + } + } else { + return { + ...i, + moduleType: "Unknown" + } + } + }) + + return addressWithModuleType +} + +module.exports = { + getAllAgent +} From fca3ef5633d7429589ea269f5e01624aeafab6fc Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:14:03 +0530 Subject: [PATCH 1912/2004] Morpho-Blue (#10557) * feat(Morpho-Blue): adding the Blue deployment on Base at block:13977148 * minor fix * minor fix --------- Co-authored-by: Reppelin Tom --- projects/creditguild/index.js | 1 - projects/gearbox/index.js | 1 - projects/morpho-blue/index.js | 76 +++++++++++++++++++++++------------ projects/spectra/index.js | 2 - 4 files changed, 50 insertions(+), 30 deletions(-) diff --git a/projects/creditguild/index.js b/projects/creditguild/index.js index cee9d0c8a96..3aad117bbf3 100644 --- a/projects/creditguild/index.js +++ b/projects/creditguild/index.js @@ -12,7 +12,6 @@ Object.keys(config).forEach(chain => { const owners = [...PSMs] const logs = await getLogs2({ - skipCacheRead: true, api, factory, eventAbi: 'event TermCreated(uint256 indexed when, uint256 indexed gaugeType, address indexed term, bytes params)', diff --git a/projects/gearbox/index.js b/projects/gearbox/index.js index 6ffe93e7c12..b492d66e140 100644 --- a/projects/gearbox/index.js +++ b/projects/gearbox/index.js @@ -144,7 +144,6 @@ async function getV1CAs(creditManager, block, api) { const topics = []; cm.interface.forEachEvent((e) => topics.push(e.topicHash)); const rawLogs = await getLogs.getLogs({ - skipCache: true, target: creditManager, fromBlock: 13854983, toBlock: block, diff --git a/projects/morpho-blue/index.js b/projects/morpho-blue/index.js index c141c640b78..a06864916b6 100644 --- a/projects/morpho-blue/index.js +++ b/projects/morpho-blue/index.js @@ -1,4 +1,4 @@ -const { getLogs } = require('../helper/cache/getLogs') +const { getLogs } = require("../helper/cache/getLogs"); const abi = require("../helper/abis/morpho.json"); module.exports = { @@ -7,39 +7,63 @@ module.exports = { }; const config = { - ethereum: { morphoBlue: '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb', fromBlock: 18883124 } -} + ethereum: { + morphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", + fromBlock: 18883124, + }, + base: { + morphoBlue: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb", + fromBlock: 13977148, + }, +}; -Object.keys(config).forEach(chain => { - const { morphoBlue, fromBlock } = config[chain] +Object.keys(config).forEach((chain) => { + const { morphoBlue, fromBlock } = config[chain]; module.exports[chain] = { tvl: async (api) => { - const marketIds = await getMarkets(api) - const tokens = (await api.multiCall({ target: morphoBlue, calls: marketIds, abi: abi.morphoBlueFunctions.idToMarketParams })).map(i => [i.collateralToken, i.loanToken]).flat() - return api.sumTokens({ owner: morphoBlue, tokens }) + const marketIds = await getMarkets(api); + const tokens = ( + await api.multiCall({ + target: morphoBlue, + calls: marketIds, + abi: abi.morphoBlueFunctions.idToMarketParams, + }) + ) + .map((i) => [i.collateralToken, i.loanToken]) + .flat(); + return api.sumTokens({ owner: morphoBlue, tokens }); }, borrowed: async (api) => { - const marketIds = await getMarkets(api) - const marketInfo = await api.multiCall({ target: morphoBlue, calls: marketIds, abi: abi.morphoBlueFunctions.idToMarketParams }) - const marketData = await api.multiCall({ target: morphoBlue, calls: marketIds, abi: abi.morphoBlueFunctions.market }) + const marketIds = await getMarkets(api); + const marketInfo = await api.multiCall({ + target: morphoBlue, + calls: marketIds, + abi: abi.morphoBlueFunctions.idToMarketParams, + }); + const marketData = await api.multiCall({ + target: morphoBlue, + calls: marketIds, + abi: abi.morphoBlueFunctions.market, + }); marketData.forEach((i, idx) => { - api.add(marketInfo[idx].loanToken, i.totalBorrowAssets) - }) - return api.getBalances() + api.add(marketInfo[idx].loanToken, i.totalBorrowAssets); + }); + return api.getBalances(); }, - } + }; async function getMarkets(api) { const logs = await getLogs({ - api, target: morphoBlue, - skipCache: true, - eventAbi: 'event CreateMarket(bytes32 indexed id, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv) marketParams)', - onlyArgs: true, fromBlock, - topics: ['0xac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac'], - }) - if(logs.length < 29){ - throw new Error("Missing markets!") - } - return logs.map(i => i.id) + api, + target: morphoBlue, + eventAbi: + "event CreateMarket(bytes32 indexed id, (address loanToken, address collateralToken, address oracle, address irm, uint256 lltv) marketParams)", + onlyArgs: true, + fromBlock, + topics: [ + "0xac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac", + ], + }); + return logs.map((i) => i.id); } -}) \ No newline at end of file +}); diff --git a/projects/spectra/index.js b/projects/spectra/index.js index 98ab6066db4..87ea77c9e6a 100644 --- a/projects/spectra/index.js +++ b/projects/spectra/index.js @@ -93,7 +93,6 @@ Object.keys(config).forEach((chain) => { "event CurvePoolDeployed(address indexed poolAddress, address indexed ibt, address indexed pt)", onlyArgs: true, fromBlock: fromBlock, - skipCache: true, }); return logs.map((i) => [i.poolAddress, i.ibt]); } @@ -106,7 +105,6 @@ Object.keys(config).forEach((chain) => { "event PTDeployed(address indexed pt, address indexed poolCreator)", onlyArgs: true, fromBlock: fromBlock, - skipCache: true, }); return logs.map((i) => i.pt); } From 1ee20d87bf321659ba473442f05f80077580c85c Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Fri, 7 Jun 2024 20:49:54 +0100 Subject: [PATCH 1913/2004] summerfi + instadapp lite (#9781) --- projects/instadapp-lite/index.js | 25 +++++++++++++++++++++++++ projects/summer-fi/index.js | 10 +++------- 2 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 projects/instadapp-lite/index.js diff --git a/projects/instadapp-lite/index.js b/projects/instadapp-lite/index.js new file mode 100644 index 00000000000..0631c8f3ec9 --- /dev/null +++ b/projects/instadapp-lite/index.js @@ -0,0 +1,25 @@ +const vaults = [ + { "vault": "0xc383a3833A87009fD9597F8184979AF5eDFad019", "token": "0x0000000000000000000000000000000000000000" }, + { "vault": "0xc8871267e07408b89aA5aEcc58AdCA5E574557F8", "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, + { "vault": "0xEC363faa5c4dd0e51f3D9B5d0101263760E7cdeB", "token": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" }, + { "vault": "0x40a9d39aa50871Df092538c5999b107f34409061", "token": "0x6B175474E89094C44Da98b954EedeAC495271d0F" } +] +const vaultsV2 = ["0xA0D3707c569ff8C87FA923d3823eC5D81c98Be78"] + +async function tvl(api) { + const calls = vaults.map(v => ({ target: v.vault })) + const prices = await api.multiCall({ + calls, + abi: "function getCurrentExchangePrice() public view returns (uint256 exchangePrice_, uint256 newTokenRevenue_)" + }) + 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/summer-fi/index.js b/projects/summer-fi/index.js index 7cfdf389d8b..adcaec10058 100644 --- a/projects/summer-fi/index.js +++ b/projects/summer-fi/index.js @@ -1,8 +1,7 @@ -const { automationTvl, dpmPositions, makerTvl } = require("./handlers"); +const { automationTvl } = require("./handlers"); const { getAutomationCdpIdList, setCallCache } = require("./helpers"); const sdk = require("@defillama/sdk"); -const { getConfig, getCache, setCache } = require("../helper/cache"); -const { endpoints } = require("./constants/endpoints"); +const { getCache, setCache } = require("../helper/cache"); module.exports = { doublecounted: true, @@ -12,8 +11,7 @@ module.exports = { async function tvl(api) { await api.getBlock(); const executionStart = Date.now() / 1000; - const [confirmedSummerFiMakerVaults, cdpIdList, cache] = await Promise.all([ - await getConfig("summer-fi/maker-vaults", endpoints.makerVaults()), + const [cdpIdList, cache] = await Promise.all([ getAutomationCdpIdList({ api }), getCache("summer-fi/cache", api.chain), ]); @@ -23,9 +21,7 @@ async function tvl(api) { sdk.log([...cdpIdList].length, "cdpIdList"); await Promise.all([ - dpmPositions({ api }), automationTvl({ api, cdpIdList }), - makerTvl({ api, cdpIdList, confirmedSummerFiMakerVaults }), ]); await setCache("summer-fi/cache", api.chain, cache); From 796f5696ece12ecd026cac9927ac1c2c777b1233 Mon Sep 17 00:00:00 2001 From: plonkai <167075793+plonkai@users.noreply.github.com> Date: Sat, 8 Jun 2024 04:11:01 +0800 Subject: [PATCH 1914/2004] update for tradoor tvl methodology (#10558) * add tradoor * update for tradoor tvl methodology --- projects/tradoor/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/tradoor/index.js b/projects/tradoor/index.js index 8d44d395b7f..ebe0c7c6bdc 100644 --- a/projects/tradoor/index.js +++ b/projects/tradoor/index.js @@ -4,7 +4,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); const evaaScAddr = "EQBPAMNu5Eud9AEvplOjNlRhxI4EkuJEhEMAmxh9erxmImKs" module.exports = { - methodology: 'Counts EVAA smartcontract balance as TVL.', + methodology: 'Counts Tradoor smartcontract balance as TVL.', ton: { tvl: sumTokensExport({ owner: evaaScAddr, tokens: [ADDRESSES.null]}), } From faf0bcaf4984f9c9802c9034a16a350147d81e2b Mon Sep 17 00:00:00 2001 From: tstemko <57684389+tstemko@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:16:05 -0400 Subject: [PATCH 1915/2004] Add Linehub and Nile on Linea to tvl calcs (#10560) * Add Blast, Scroll, Spiritswap on Fantom, Metavault and Uni on Linea, PancakeSwap and QuickSwap on Polygon zkEVM * Add Linehub and Nile on Linea --------- Co-authored-by: Tatyana Stemkovski --- projects/ichifarm/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/ichifarm/index.js b/projects/ichifarm/index.js index 4d6adbe0c81..acf81a2b571 100644 --- a/projects/ichifarm/index.js +++ b/projects/ichifarm/index.js @@ -102,8 +102,10 @@ const config = { // }, 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 ] }, From 17332d8ce7420f04a50b4a5d255d1db5b837df30 Mon Sep 17 00:00:00 2001 From: LeviathanYou <168118002+LeviathanYou@users.noreply.github.com> Date: Sat, 8 Jun 2024 04:16:41 +0800 Subject: [PATCH 1916/2004] feat: update free protocol tvl (#10559) --- projects/free-protocol/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/free-protocol/index.js b/projects/free-protocol/index.js index a4a848fbe72..9c4a21af38f 100644 --- a/projects/free-protocol/index.js +++ b/projects/free-protocol/index.js @@ -13,20 +13,23 @@ module.exports = { '0xB880fd278198bd590252621d4CD071b1842E9Bcd', '0xC5BD913eE3BEFD4721C609177F29a8770ACD7242', '0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71', - '0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71', ], }), }, ethereum: { tvl: sumTokensExport({ owners: [ + '0x1B5668Ca8edfC8AF5DcB9De014b4B08ed5d0615F', + '0x3111653DB0e7094b111b8e435Df9193b62C2C576', '0xd6572c7cd671ecf75d920adcd200b00343959600', '0xa97Fe3E9c1d3Be7289030684eD32A6710d2d02bA', '0xeea3A032f381AB1E415e82Fe08ebeb20F513c42c', ], tokens: [ + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0x7122985656e38bdc0302db86685bb972b145bd3c', '0xdac17f958d2ee523a2206206994597c13d831ec7', + '0x7122985656e38BDC0302Db86685bb972b145bD3C', ] }) }, @@ -39,7 +42,6 @@ module.exports = { tokens: [ '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', '0xaf88d065e77c8cc2239327c5edb3a432268e5831', - '0xaf88d065e77c8cc2239327c5edb3a432268e5831', ] }) }, @@ -56,6 +58,7 @@ module.exports = { bsc: { tvl: sumTokensExport({ owners: [ + '0xF8aeD4da2598d3dF878488F40D982d6EcC8B13Ad', '0xBA43F3C8733b0515B5C23DFF46F47Af6EB46F85C', '0x0A80028d73Faaee6e57484E3335BeFda0de7f455', ], @@ -63,6 +66,7 @@ module.exports = { '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409', '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409', + '0x4aae823a6a0b376De6A78e74eCC5b079d38cBCf7', ] }) }, From eae72670d73c6951841e68a4c1ed0df0da7c6cbe Mon Sep 17 00:00:00 2001 From: Kevin Mehrabi <4044328+KevinMehrabi@users.noreply.github.com> Date: Fri, 7 Jun 2024 13:18:49 -0700 Subject: [PATCH 1917/2004] Update TezFin adapter to include v2 contracts (#10542) --- projects/tezfin/index.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/projects/tezfin/index.js b/projects/tezfin/index.js index 727d5a792f4..956de546b30 100644 --- a/projects/tezfin/index.js +++ b/projects/tezfin/index.js @@ -4,19 +4,29 @@ const { getStorage, sumTokens2 } = require("../helper/chain/tezos"); async function tvl() { return sumTokens2({ owners: [ - "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", - "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", - "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46" - ], + // v1 contracts + "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", // ꜰXTZ v1 + "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", // ꜰUSDtz v1 + "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46", // ꜰUSDt v1 + // v2 contracts + "KT1MCXxbtS62tk4CUxv29BHnqTBtvsFFGzBm", // ꜰXTZ v2 + "KT1WQM7wj64GHCndwV8REccQ6N4tqZ3uRNqs", // ꜰUSDtz v2 + "KT1HCRJhfqmWKRJtZXzvTkY4iisfuR4w6pkB" // ꜰUSDt v2 + ], includeTezos: true, }); } async function borrowed() { const borrowedTokensAddresses = [ - "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", - "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", - "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46" + // v1 contracts + "KT1GYKoownVC1ukP2TBDgKx7bSXRM5XkV1W6", // ꜰXTZ v1 + "KT1MX7D6ZJp2DDSSeDS96JPTFPXKkNiHFhwb", // ꜰUSDtz v1 + "KT1W8P4ZxD8eREKjDnxMe5882NP3GnAgrv46", // ꜰUSDt v1 + // v2 contracts + "KT1MCXxbtS62tk4CUxv29BHnqTBtvsFFGzBm", // ꜰXTZ v2 + "KT1WQM7wj64GHCndwV8REccQ6N4tqZ3uRNqs", // ꜰUSDtz v2 + "KT1HCRJhfqmWKRJtZXzvTkY4iisfuR4w6pkB" // ꜰUSDt v2 ]; const balances = {}; @@ -48,4 +58,4 @@ module.exports = { borrowed, }, methodology: 'TVL counts the liquidity and reserves for each market. Borrowed amounts are calculated based on the total borrows from each contract address, with special handling for "tezos" to adjust for precision.', -}; \ No newline at end of file +}; From 8d9f6227b3e83ca82266c1c13c02d8822dba32a5 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sat, 8 Jun 2024 10:12:18 +0200 Subject: [PATCH 1918/2004] update synonym --- projects/synonym-finance/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/synonym-finance/index.js b/projects/synonym-finance/index.js index 9f2abfc94c7..fe10fde9789 100644 --- a/projects/synonym-finance/index.js +++ b/projects/synonym-finance/index.js @@ -41,7 +41,9 @@ async function getTokenInfos(api) { switch (chainId[i]) { case '2': chain = 'ethereum'; break; case '24': chain = 'optimism'; break; - default: console.log('Unsupported chain ' + chainId[i]); return; + case '30': chain = 'base'; break; + case '34': chain = 'scroll'; break; + default: console.log('Unsupported chain ' + chainId[i] + "0x" + BigInt(natives[i]).toString(16)); return; } tokenMappings.push(chain + ':' + "0x" + BigInt(natives[i]).toString(16)) tokens.push(asset) From 28d9275858209f0e0b2b9c8981cf487657b9f0b2 Mon Sep 17 00:00:00 2001 From: leallenl Date: Sat, 8 Jun 2024 16:14:06 +0800 Subject: [PATCH 1919/2004] feat: Add Binlayer (#10563) Co-authored-by: leallenl --- projects/binlayer/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/binlayer/index.js diff --git a/projects/binlayer/index.js b/projects/binlayer/index.js new file mode 100644 index 00000000000..ce82ce2927e --- /dev/null +++ b/projects/binlayer/index.js @@ -0,0 +1,15 @@ +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], }) + } + } +}) From d2c97d65db730418e70bdff19926aa42dd249c51 Mon Sep 17 00:00:00 2001 From: hamur dev <122794657+tpktpj@users.noreply.github.com> Date: Sat, 8 Jun 2024 04:15:18 -0400 Subject: [PATCH 1920/2004] Update avalon finance tvl (#10562) Co-authored-by: jsmjsm --- projects/avalon-finance/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js index 2c5e1018f13..a4ed3b8752b 100644 --- a/projects/avalon-finance/index.js +++ b/projects/avalon-finance/index.js @@ -4,15 +4,15 @@ const methodologies = require('../helper/methodologies') const { mergeExports } = require('../helper/utils') const mainMarket = { - merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), - btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], { v3: true }), - arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F'], { v3: true }), - bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39'], { v3: true }), - core: aaveExports('', '0x410d2D3Dc79ec66A2Cfc3A4a0AD4af3a38D38bd0', undefined, ['0x802CB61844325dc9A161bC3A498E3BE1B7b6FE00'], { v3: true }), + merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA']), + btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA']), + arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F']), + bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39']), + core: aaveExports('', '0x410d2D3Dc79ec66A2Cfc3A4a0AD4af3a38D38bd0', undefined, ['0x802CB61844325dc9A161bC3A498E3BE1B7b6FE00']), } const innovativeMarket = { - merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682'], { v3: true }), + merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682']), } module.exports = mergeExports(mainMarket, innovativeMarket) From 60d6fa55970625bcf1d41ac73bb46fde98dab1fd Mon Sep 17 00:00:00 2001 From: hamur dev <122794657+tpktpj@users.noreply.github.com> Date: Sat, 8 Jun 2024 10:21:52 -0400 Subject: [PATCH 1921/2004] fix wrong borrowed tvl on btr (#10565) Co-authored-by: jsmjsm --- projects/avalon-finance/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/avalon-finance/index.js b/projects/avalon-finance/index.js index a4ed3b8752b..0b804e33219 100644 --- a/projects/avalon-finance/index.js +++ b/projects/avalon-finance/index.js @@ -4,15 +4,15 @@ const methodologies = require('../helper/methodologies') const { mergeExports } = require('../helper/utils') const mainMarket = { - merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA']), - btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA']), - arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F']), - bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39']), - core: aaveExports('', '0x410d2D3Dc79ec66A2Cfc3A4a0AD4af3a38D38bd0', undefined, ['0x802CB61844325dc9A161bC3A498E3BE1B7b6FE00']), + merlin: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], {v3: true}), + btr: aaveExports('', '0x6aB5d5E96aC59f66baB57450275cc16961219796', undefined, ['0x5F314b36412765f3E1016632fD1Ad528929536CA'], {v3: true}), + arbitrum: aaveExports('', '0xa2ddc06baDc817C612111137c0cf6Bd43634EE1a', undefined, ['0xEc579d2cE07401258710199Ff12a5bb56e086a6F'],{v3: true}), + bsc: aaveExports('', '0x5395201A4DD625a0d69b99D917282f75928416c1', undefined, ['0x672b19DdA450120C505214D149Ee7F7B6DEd8C39'],{v3: true}), + core: aaveExports('', '0x410d2D3Dc79ec66A2Cfc3A4a0AD4af3a38D38bd0', undefined, ['0x802CB61844325dc9A161bC3A498E3BE1B7b6FE00'],{v3: true}), } const innovativeMarket = { - merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682']), + merlin: aaveExports('', '0x91b212e9FaF20117Eae59d6289CB38749DDFc070', undefined, ['0x883cb2E2d9c5D4D9aF5b0d37fc39Fa2284405682'],{v3: true}), } module.exports = mergeExports(mainMarket, innovativeMarket) From a6a458ecda712ee6a9655e3268a61224c59de241 Mon Sep 17 00:00:00 2001 From: Deadshot Ryker <151393124+deadshotryker@users.noreply.github.com> Date: Sat, 8 Jun 2024 18:23:25 +0400 Subject: [PATCH 1922/2004] Added ZERO staking and ZERO/ETH LP staking tvl for zerolend (#10564) * added xlayer for zerolend * added staking and lp for linea chain on zerolend * added zerolend treasury --- projects/treasury/zerolend.js | 23 +++++++++++++++++++++++ projects/zerolend/index.js | 22 +++++++++++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 projects/treasury/zerolend.js diff --git a/projects/treasury/zerolend.js b/projects/treasury/zerolend.js new file mode 100644 index 00000000000..98d58291a70 --- /dev/null +++ b/projects/treasury/zerolend.js @@ -0,0 +1,23 @@ +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/zerolend/index.js b/projects/zerolend/index.js index 13d30abb226..6f56ea6d819 100644 --- a/projects/zerolend/index.js +++ b/projects/zerolend/index.js @@ -1,4 +1,6 @@ const { aaveExports } = require("../helper/aave"); +const { staking } = require("../helper/staking"); +const { pool2s } = require("../helper/pool2"); const config = { era: "0xB73550bC1393207960A385fC8b34790e5133175E", @@ -9,8 +11,22 @@ const config = { ethereum: "0x47223D4eA966a93b2cC96FFB4D42c22651FADFcf", }; +const linea = { + treasury: "0x14aAD4668de2115e30A5FeeE42CFa436899CCD8A", + zeroEthNileLP: "0x0040f36784dda0821e74ba67f86e084d70d67a3a", + zeroEthNileCLP: "0x179b4B1C19faF18Bed713304c870e9317bc79A84", + zeroEthLynexCLP: "0xb88261e0DBAAc1564f1c26D78781F303EC7D319B", + zero: "0x78354f8DcCB269a615A7e0a24f9B0718FDC3C7A7", + zlpLocker: "0x8bb8b092f3f872a887f377f73719c665dd20ab06", + zeroLocker: "0x08D5FEA625B1dBf9Bae0b97437303a0374ee02F8", +}; + +const data = {}; Object.keys(config).forEach((chain) => { - module.exports[chain] = aaveExports(chain, undefined, undefined, [ - config[chain], - ]); + data[chain] = aaveExports(chain, undefined, undefined, [config[chain]]); }); + +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; From d6036a5d81b3ff3f4de39b824a9be27510150d0a Mon Sep 17 00:00:00 2001 From: Ben Date: Sat, 8 Jun 2024 07:37:34 -0700 Subject: [PATCH 1923/2004] Update adapter for Anzen (#10404) * add Anzen TVL * correct TVL calculation for Anzen * set adapter for Anzen V2 product * add anzen to V2 folder --- projects/anzen-v2/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/anzen-v2/index.js diff --git a/projects/anzen-v2/index.js b/projects/anzen-v2/index.js new file mode 100644 index 00000000000..a315fbc5161 --- /dev/null +++ b/projects/anzen-v2/index.js @@ -0,0 +1,32 @@ +const sdk = require('@defillama/sdk') + +// Anzen USDz - digital dollar backed by Real World Assets + +const USDz = '0xa469b7ee9ee773642b3e93e842e5d9b5baa10067'; +const Base_USDz = '0x04d5ddf5f3a8939889f11e97f8c4bb48317f1938'; +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 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, + }, +}; From c9ef822f78d80c9c50acab1635e7a8c933f9a0b3 Mon Sep 17 00:00:00 2001 From: Aleksei Lushnikov Date: Sat, 8 Jun 2024 15:38:35 +0100 Subject: [PATCH 1924/2004] symbiosis adds pufETH and zeta chain (#10536) * symbiosis adds pufETH and zeta chain * move project specific tokens to project's config --- projects/helper/tokenMapping.js | 3 ++ projects/symbiosis-finance/config.js | 56 ++++++++++++++++++++++++---- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index f67fed34636..4a8f6ce3722 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -158,6 +158,9 @@ const fixBalancesTokens = { planq: { "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265": { coingeckoId: 'usd-coin', decimals: 6 }, "0x75E20C5d4aade76143b8b74d1C5E2865347f9d3B": { coingeckoId: 'usd-coin', decimals: 18 }, + }, + zeta: { + "0x1e4bF3CaBD7707089138dD5a545B077413FA83Fc": { coingeckoId: 'pufeth', decimals: 18 }, } } diff --git a/projects/symbiosis-finance/config.js b/projects/symbiosis-finance/config.js index e06ef05c253..52682d590f6 100644 --- a/projects/symbiosis-finance/config.js +++ b/projects/symbiosis-finance/config.js @@ -1,5 +1,34 @@ const ADDRESSES = require('../helper/coreAssets.json') -const XDAO = '0x71eebA415A523F5C952Cc2f06361D5443545Ad28' + +const TOKENS = { + ethereum: { + pufETH: "0xD9A442856C234a39a81a089C06451EBAa4306a72", + LADYS: "0x12970E6868f88f6557B76120662c1B3E50A646bf", + XDAO: "0x71eebA415A523F5C952Cc2f06361D5443545Ad28" + }, + bsc: { + XDAO: "0x71eebA415A523F5C952Cc2f06361D5443545Ad28" + }, + polygon: { + XDAO: "0x71eebA415A523F5C952Cc2f06361D5443545Ad28" + }, + arbitrum: { + XDAO: "0x71eebA415A523F5C952Cc2f06361D5443545Ad28", + LADYS: "0x3b60FF35D3f7F62d636b067dD0dC0dFdAd670E4E" + }, + manta: { + pufETH: "0xA53E005Cecd3D7C89A4AE814617cC14828b6527E" + }, + scroll: { + pufETH: "0xc4d46E8402F476F269c379677C99F18E22Ea030e" + }, + zeta: { + pufETH: "0x1e4bF3CaBD7707089138dD5a545B077413FA83Fc" + }, + zklink: { + pufETH: "0x1B49eCf1A8323Db4abf48b2F5EFaA33F7DdAB3FC" + } +} module.exports = { chains: [ @@ -10,8 +39,9 @@ module.exports = { ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.WETH, ADDRESSES.ethereum.WBTC, - XDAO, - '0x12970E6868f88f6557B76120662c1B3E50A646bf', // LADYS + TOKENS.ethereum.XDAO, + TOKENS.ethereum.LADYS, + TOKENS.ethereum.pufETH, ], holders: [ '0xb80fDAA74dDA763a8A158ba85798d373A5E84d84', // portal v1 @@ -26,7 +56,7 @@ module.exports = { ADDRESSES.bsc.USDC, ADDRESSES.bsc.ETH, ADDRESSES.bsc.BTCB, - XDAO, + TOKENS.bsc.XDAO, ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 @@ -53,7 +83,7 @@ module.exports = { tokens: [ ADDRESSES.polygon.USDC, ADDRESSES.polygon.WETH_1, - XDAO, + TOKENS.polygon.XDAO, ], holders: [ '0xD7F9989bE0d15319d13d6FA5d468211C89F0b147', // portal v1 @@ -145,8 +175,8 @@ module.exports = { ADDRESSES.arbitrum.USDC, // USDC.e ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.WETH, - XDAO, - '0x3b60FF35D3f7F62d636b067dD0dC0dFdAd670E4E', // LADYS + TOKENS.arbitrum.XDAO, + TOKENS.arbitrum.LADYS, ], holders: [ '0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9', // portal v2 @@ -230,6 +260,7 @@ module.exports = { tokens: [ ADDRESSES.scroll.WETH, ADDRESSES.scroll.USDC, + TOKENS.scroll.pufETH, ], holders: [ '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 @@ -241,6 +272,7 @@ module.exports = { tokens: [ ADDRESSES.manta.WETH, ADDRESSES.manta.USDC, + TOKENS.manta.pufETH, ], holders: [ '0x5Aa5f7f84eD0E5db0a4a85C3947eA16B53352FD4', // portal v2 @@ -305,6 +337,7 @@ module.exports = { name: 'zklink', tokens: [ ADDRESSES.zklink.WETH, + TOKENS.zklink.pufETH, ], holders: [ '0x8Dc71561414CDcA6DcA7C1dED1ABd04AF474D189', // portal v2 @@ -338,5 +371,14 @@ module.exports = { '0x292fC50e4eB66C3f6514b9E402dBc25961824D62', // portal v2 ] }, + { + name: 'zeta', + tokens: [ + TOKENS.zeta.pufETH, + ], + holders: [ + '0x8a7F930003BedD63A1ebD99C5917FD6aE7E3dedf', // portal v2 + ] + }, ] } \ No newline at end of file From 8e892feb2fa482b3d4f369d061a7cb54f28af04c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Sun, 9 Jun 2024 10:52:54 +0200 Subject: [PATCH 1925/2004] update penpie --- projects/penpie/index.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/projects/penpie/index.js b/projects/penpie/index.js index cfee75dd765..6a4d98f2f13 100644 --- a/projects/penpie/index.js +++ b/projects/penpie/index.js @@ -3,7 +3,7 @@ const config = require("./config"); const { staking } = require('../helper/staking') async function tvl(api) { - const { masterPenpie, pendleStaking, vePENDLE, PENDLE, mPENDLE, } = config[api.chain]; + const { masterPenpie, vlPNP } = config[api.chain]; const poolTokens = await api.fetchList({ lengthAbi: MasterMagpieAbi.poolLength, @@ -11,13 +11,11 @@ async function tvl(api) { target: masterPenpie, }); const poolInfos = await api.multiCall({ abi: 'function getPoolInfo(address) view returns ( uint256 emission, uint256 allocpoint, uint256 sizeOfPool, uint256 totalPoint)', calls: poolTokens, target: masterPenpie, }) - const symbols = await api.multiCall({ abi: 'erc20:symbol', calls: poolTokens, }) poolTokens.forEach((token, i) => { - if (symbols[i] === 'vlPenpie' || symbols[i] === 'mPendle' || symbols[i] === 'mPendleOFT' || symbols[i] === 'mPendleSV') { - token = PENDLE - } api.add(token, poolInfos[i].sizeOfPool) }) + if (vlPNP) + api.removeTokenBalance(vlPNP) } Object.keys(config).forEach((chain) => { From eada03ccda90a17cf57ece2bf28e8e187c876aed Mon Sep 17 00:00:00 2001 From: Adolf998 <154962952+Adolf998@users.noreply.github.com> Date: Mon, 10 Jun 2024 02:28:05 +0800 Subject: [PATCH 1926/2004] add BounceBit-Ethena project (#10539) * update bouncebit-premium & bouncebitTvl * add bouncebit-ethena project --- projects/bouncebit-ethena/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/bouncebit-ethena/index.js diff --git a/projects/bouncebit-ethena/index.js b/projects/bouncebit-ethena/index.js new file mode 100644 index 00000000000..24fe61eaf06 --- /dev/null +++ b/projects/bouncebit-ethena/index.js @@ -0,0 +1,16 @@ +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] + }), + } +} From 347981eb012bf4bccbc4527ece9b90f129fa10b2 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Sun, 9 Jun 2024 19:36:14 +0100 Subject: [PATCH 1927/2004] git push origin remove-bsc-beefy (#10567) --- projects/beefy/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 2422c214110..778e627e82b 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -34,7 +34,7 @@ const chains = { ethereum: 1, optimism: 10, cronos: 25, - bsc: 56, +// bsc: 56, "stargate-v2-bsc-usdt" pool giving B xdai: 100, fuse: 122, heco: 128, From 1e209720dfef8e63d01bca79a5a9518b6d89300d Mon Sep 17 00:00:00 2001 From: 0xngmi <80541789+0xngmi@users.noreply.github.com> Date: Sun, 9 Jun 2024 23:47:42 +0100 Subject: [PATCH 1928/2004] Revert "git push origin remove-bsc-beefy (#10567)" (#10568) This reverts commit 347981eb012bf4bccbc4527ece9b90f129fa10b2. --- projects/beefy/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/beefy/index.js b/projects/beefy/index.js index 778e627e82b..2422c214110 100644 --- a/projects/beefy/index.js +++ b/projects/beefy/index.js @@ -34,7 +34,7 @@ const chains = { ethereum: 1, optimism: 10, cronos: 25, -// bsc: 56, "stargate-v2-bsc-usdt" pool giving B + bsc: 56, xdai: 100, fuse: 122, heco: 128, From f85669f6dcd2601a05ff0a58da4bce4f2e207e1e Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Mon, 10 Jun 2024 04:12:00 +0100 Subject: [PATCH 1929/2004] remove old weird tokens --- projects/gdl/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/gdl/index.js b/projects/gdl/index.js index faa400e3dcf..144466efc0d 100644 --- a/projects/gdl/index.js +++ b/projects/gdl/index.js @@ -40,9 +40,9 @@ async function poolBalance(owner, targets, block) { async function tvl(timestamp, ethereumBlock, chainBlocks) { const block = chainBlocks['avax']; let balances = {}; - balances['tether'] = await poolBalance(GDL_USD_POOL, [USDT, zUSDT], block); - balances['dai'] = await poolBalance(GDL_DAI_POOL, [DAI, zDAI], block); - balances['ethereum'] = await poolBalance(GDL_ETH_POOL, [ETH, zETH], block); + balances['tether'] = await poolBalance(GDL_USD_POOL, [USDT], block); + balances['dai'] = await poolBalance(GDL_DAI_POOL, [DAI], block); + balances['ethereum'] = await poolBalance(GDL_ETH_POOL, [ETH], block); balances['gondola-finance'] = await poolBalance(GDL_POOL, [GDL], block); return balances; } From 63e34b2294df49d72a27f1d94d4c3d8804af9aff Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 10 Jun 2024 11:19:26 +0700 Subject: [PATCH 1930/2004] update calculator funible asset aptos --- projects/cellana/index.js | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/projects/cellana/index.js b/projects/cellana/index.js index 5d2acc955e9..72d1aaf09e6 100644 --- a/projects/cellana/index.js +++ b/projects/cellana/index.js @@ -1,20 +1,20 @@ -const { getResources, } = require("../helper/chain/aptos"); -const ADDRESSES = require('../helper/coreAssets.json') -const CELL_fungible_asset_address = '0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12' -const APT_fungible_asset_address = '0xedc2704f2cef417a06d1756a04a16a9fa6faaed13af469be9cdfcac5a21a8e2e' - +const { getResources, function_view } = require("../helper/chain/aptos"); +let resourcesCache; +let poolsCache; async function _getResources() { - let resourcesCache; if (!resourcesCache) resourcesCache = getResources("0x3b38735644d0be8ac37ebd84a1e42fa5c2487495ef8782f6c694b1a147f82426") return resourcesCache } - +async function _getPools() { + if (!poolsCache) poolsCache = function_view({ functionStr: "0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1::liquidity_pool::all_pool_addresses", type_arguments: [], args: [] }) + return poolsCache +} const extractCoinAddress = (str) => str.slice(str.indexOf("<") + 1, str.lastIndexOf(">")); const reserveContrainerFilter = (i) => i.type.includes("0x1::coin::CoinStore") -async function _getCELLbalances(api) { - const data = await getResources('0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1') - const poolsAddresses = data.find(i => i.type.includes('::liquidity_pool::LiquidityPoolConfigs'))?.data.all_pools?.inline_vec +async function getfungibleAssetBalances(api) { + const data = await _getPools('0x4bf51972879e3b95c4781a5cdcb9e1ee24ef483e7d22f2d903626f126df62bd1') + const poolsAddresses = data[0]; for (const pool of poolsAddresses) { const fungibleAssetPoolStore = (await getResources(pool.inner)).find(i => i.type.includes('liquidity_pool::LiquidityPool'))?.data const fungibleAssetAddressToken1 = fungibleAssetPoolStore?.token_store_1?.inner @@ -24,16 +24,8 @@ async function _getCELLbalances(api) { const fungibleAssetTokenStore_2 = (await getResources(fungibleAssetAddressToken2)).find(i => i.type.includes('fungible_asset::FungibleStore'))?.data const token_1_address = fungibleAssetTokenStore_1?.metadata?.inner const token_2_address = fungibleAssetTokenStore_2?.metadata?.inner - if (token_1_address == CELL_fungible_asset_address) { - addBalance(token_2_address, fungibleAssetTokenStore_2?.balance || 0); - } else if (token_2_address == CELL_fungible_asset_address) { - addBalance(token_1_address, fungibleAssetTokenStore_1?.balance || 0); - } - } - - async function addBalance(token, balance) { - if (token === APT_fungible_asset_address) - api.add(ADDRESSES.aptos.APT, balance) + api.add(token_2_address, fungibleAssetTokenStore_2?.balance || 0); + api.add(token_1_address, fungibleAssetTokenStore_1?.balance || 0); } } @@ -44,6 +36,7 @@ module.exports = { "Counts the lamports in each coin container in the Cellena contract account.", aptos: { tvl: async (_, _1, _2, { api }) => { + //Get coin balance const data = await _getResources() const coinContainers = data.filter(reserveContrainerFilter) .map((i) => ({ @@ -54,7 +47,9 @@ module.exports = { coinContainers.forEach(({ lamports, tokenAddress }) => { api.add(tokenAddress, lamports); }); - await _getCELLbalances(api) + //get funible asset balance + await getfungibleAssetBalances(api) + console.log(api) } } } \ No newline at end of file From 826be3e5af7181d19f99a05ecd87b95e85af79f6 Mon Sep 17 00:00:00 2001 From: GausPeerzade <116433573+GausPeerzade@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:29:10 +0530 Subject: [PATCH 1931/2004] New Degen Chain vault of Rivera (#10571) * Added Arbitrum vaults * Added new chains * New Degen Vaults Rivera --- projects/rivera_money/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/rivera_money/index.js b/projects/rivera_money/index.js index d743e285f26..4ee8512d0a3 100644 --- a/projects/rivera_money/index.js +++ b/projects/rivera_money/index.js @@ -35,7 +35,9 @@ const config = { ], degen: [ - "0xA95417805d18d00844c3C6FB7742577Cd263fE05" + "0xA95417805d18d00844c3C6FB7742577Cd263fE05", + "0x39dD79E8b1e74E8B514D7e133b3671435Ec3Da42", + "0xE45F416eE25844281edF2780247E28569303c7Cd", ], bsquared: [ From c7300d7d5b4d88bf3dfa1de7b1d956332ed623b4 Mon Sep 17 00:00:00 2001 From: "Bladeswap.xyz" <160004157+Bladeswap@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:00:22 +0900 Subject: [PATCH 1932/2004] add bladeswap-CL (#10570) Co-authored-by: bladeswap --- projects/bladeswap-CL/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/bladeswap-CL/index.js diff --git a/projects/bladeswap-CL/index.js b/projects/bladeswap-CL/index.js new file mode 100644 index 00000000000..b5dec6bc44a --- /dev/null +++ b/projects/bladeswap-CL/index.js @@ -0,0 +1,14 @@ +const { uniV3Export } = require("../helper/uniswapV3"); + +module.exports = uniV3Export({ + blast: { + factory: "0xA87DbF5082Af26c9A6Ab2B854E378f704638CCa5", + fromBlock: 4466565, + isAlgebra: true, + blacklistedTokens: [ + '0xD1FedD031b92f50a50c05E2C45aF1aDb4CEa82f4', + '0xF8f2ab7C84CDB6CCaF1F699eB54Ba30C36B95d85', + ] + + }, +}); From f63b79a9142dbb051e3d1f1d0548bf6395858888 Mon Sep 17 00:00:00 2001 From: Thanh Nguyen Date: Mon, 10 Jun 2024 14:42:00 +0700 Subject: [PATCH 1933/2004] Create the branch --- projects/capybara-exchange/config.js | 8 ++++++++ projects/capybara-exchange/index.js | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 projects/capybara-exchange/config.js create mode 100644 projects/capybara-exchange/index.js diff --git a/projects/capybara-exchange/config.js b/projects/capybara-exchange/config.js new file mode 100644 index 00000000000..f5272a6610a --- /dev/null +++ b/projects/capybara-exchange/config.js @@ -0,0 +1,8 @@ +module.exports = { + klaytn: { + pools: { + mainPool: "0x540cce8ed7d210f71eeabb9e7ed7698ac745e077", + volatilePool: "0x6389dbfa1427a3b0a89cddc7ea9bbda6e73dece7", + }, + }, +}; diff --git a/projects/capybara-exchange/index.js b/projects/capybara-exchange/index.js new file mode 100644 index 00000000000..da8de8f51da --- /dev/null +++ b/projects/capybara-exchange/index.js @@ -0,0 +1,24 @@ +const config = require("./config"); +const { sumTokens2 } = require("../helper/unwrapLPs"); + +Object.keys(config).forEach((chain) => { + const arg = config[chain]; + module.exports[chain] = { + tvl: async (_, _b, { [chain]: block }, { api }) => { + const pools = Object.values(arg["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], }); + }, + }; +}); From 927d79b6d187f16bb89252791da27d803814b897 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:06:06 +0530 Subject: [PATCH 1934/2004] Update nimbora-yield functionality (#10574) * add nimbora-yield * fix(nimbora-yield): update methodology * update nimbora-yield * cache response --------- Co-authored-by: 0xSacha <90143060+0xSacha@users.noreply.github.com> --- projects/nimbora-yield/index.js | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/projects/nimbora-yield/index.js b/projects/nimbora-yield/index.js index 246218de50e..41ba202628e 100644 --- a/projects/nimbora-yield/index.js +++ b/projects/nimbora-yield/index.js @@ -1,6 +1,7 @@ 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", @@ -15,21 +16,27 @@ const totalAssetsAbi = { "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', "https://backend.nimbora.io/yield-dex/strategies") - for (let index = 0; index < strategyData.length; index++) { - const strategyInfo = strategyData[index]; - const underlying = parseAddress(strategyInfo.underlying) == "0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad" ? ADDRESSES.starknet.DAI : parseAddress(strategyInfo.underlying); - const strategyTvl = await call({ target: strategyInfo.tokenManager, abi: totalAssetsAbi }); - api.add(underlying, strategyTvl) - } + 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) == "0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad" ? 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 - }, + methodology: 'Computed by summing the total assets held by each strategy.', + starknet: { + tvl + }, } From 19ffc47b7de402ed17d7006c3bcfa8b362ff9505 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:29:55 +0100 Subject: [PATCH 1935/2004] daiko hallmark (#10575) --- projects/daiko-dex/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/daiko-dex/index.js b/projects/daiko-dex/index.js index 3b94051348e..f3b68c67902 100644 --- a/projects/daiko-dex/index.js +++ b/projects/daiko-dex/index.js @@ -1,3 +1,6 @@ const { uniTvlExport } = require('../helper/unknownTokens') -module.exports = uniTvlExport('taiko', '0x2cFAe8F731D6a04f3E868deB03ad73576695271A') \ No newline at end of file +module.exports = uniTvlExport('taiko', '0x2cFAe8F731D6a04f3E868deB03ad73576695271A'), +module.exports.hallmarks = [ + [1717777624,"Rug Pull"] + ] \ No newline at end of file From 8be5b8779ff3a1700ff1799d3a559c5b3346d519 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Mon, 10 Jun 2024 11:24:36 +0100 Subject: [PATCH 1936/2004] remove doublecounting (#10576) --- projects/bouncebit-premium/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/bouncebit-premium/index.js b/projects/bouncebit-premium/index.js index 9af68c13fa4..fde3876f9dc 100644 --- a/projects/bouncebit-premium/index.js +++ b/projects/bouncebit-premium/index.js @@ -23,7 +23,7 @@ module.exports = { ethereum: { tvl: sumTokensExport({ owners: ["0x1ddD6E5eA766511CC0f348DC8d17578a821B680F", "0xa2B283e4dbdFEA5461C36a59E3B94b3ef2883085"], - tokens: [BBTC, BBUSD] + tokens: [BBTC] // removed BBUSD because its tracked on bouncebit ethena listing }), }, bsc: { From d060bf4de8a63c404ed99286aadc4c48662af321 Mon Sep 17 00:00:00 2001 From: Thanh Nguyen Date: Mon, 10 Jun 2024 17:37:41 +0700 Subject: [PATCH 1937/2004] Simplify function's signature --- projects/capybara-exchange/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/capybara-exchange/index.js b/projects/capybara-exchange/index.js index da8de8f51da..9810ad1be6a 100644 --- a/projects/capybara-exchange/index.js +++ b/projects/capybara-exchange/index.js @@ -4,7 +4,7 @@ const { sumTokens2 } = require("../helper/unwrapLPs"); Object.keys(config).forEach((chain) => { const arg = config[chain]; module.exports[chain] = { - tvl: async (_, _b, { [chain]: block }, { api }) => { + tvl: async (api) => { const pools = Object.values(arg["pools"]); let allUnderlying = await api.multiCall({ abi: "address[]:getTokens", calls: pools, }); From c6d15e41a260101cf2405bfb8870eb305514d851 Mon Sep 17 00:00:00 2001 From: TJakubek <39831436+TJakubek@users.noreply.github.com> Date: Mon, 10 Jun 2024 19:42:17 +0200 Subject: [PATCH 1938/2004] Enosys farm update (#10580) * fix: updating farms * fix: missing BNZ farm * fix: incorrect pool2 farm * adding sFLR pools --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/flarefarm/flare.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/projects/flarefarm/flare.js b/projects/flarefarm/flare.js index 8e6a9dda21e..6b18d43e936 100644 --- a/projects/flarefarm/flare.js +++ b/projects/flarefarm/flare.js @@ -18,7 +18,13 @@ const LPs ={ WFLR_eQNT_LP: '0x80A08BbAbB0A5C51A9ae53211Df09EF23Debd4f3', HLN_eQNT_LP: '0xEd920325b7dB1e909DbE2d562fCD07f714395e10', eQNT_APS_LP: '0x33E2354928002766C27F7424EcA6f9B133E922a5', - WFLR_BNZ_LP: '0x2C934BbBD152A40419d3330e4d79f362Bc6691D6' + 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' @@ -40,8 +46,14 @@ async function farmTvl(timestamp, ethblock, { [chain]: block }) { [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"] + [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, }) @@ -52,6 +64,8 @@ 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, }) } From 990ed18367cc9f1fc9c24bb5a544a8da598ac310 Mon Sep 17 00:00:00 2001 From: Rodolfo Lima <56616501+LimaRods@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:44:47 -0300 Subject: [PATCH 1939/2004] Zkx adapter (#10579) * added adapter to list zkx protocol * updated methodolody * Delete projects/zkx/abi.json * Update index.js --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/zkx/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 projects/zkx/index.js diff --git a/projects/zkx/index.js b/projects/zkx/index.js new file mode 100644 index 00000000000..9dffbaaa88d --- /dev/null +++ b/projects/zkx/index.js @@ -0,0 +1,8 @@ +const { sumTokensExport } = require('../helper/unwrapLPs') +const ADDRESSES = require('../helper/coreAssets.json') + +module.exports = { + ethereum: { + tvl: sumTokensExport({ owners: ['0x8F5Af913D42DbC296d0e184B6356EC4256029D09'], tokens: [ADDRESSES.ethereum.USDC], }) + } +} From f5c56dc4f20ff708501267f78b0c0b3504ad8dbb Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 11 Jun 2024 01:11:32 +0100 Subject: [PATCH 1940/2004] add jigsaw --- projects/jigsaw/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 projects/jigsaw/index.js diff --git a/projects/jigsaw/index.js b/projects/jigsaw/index.js new file mode 100644 index 00000000000..f7b83af14fd --- /dev/null +++ b/projects/jigsaw/index.js @@ -0,0 +1,11 @@ +const { sumERC4626VaultsExport } = require("../helper/erc4626"); + +module.exports = { + methodology: 'ETH and LSTs in vaults', + ethereum: { + tvl: sumERC4626VaultsExport({ + vaults: ["0x4412e5492C689CF13D585dCdb010B3b8b12dF16a", "0x9F5e6E972D76d4501900f4484622f9413E5Cc302", "0x3A10a803958e837599348621Edb42eF73c79aC22"], + tokenAbi: 'tokenIn', balanceAbi: 'totalSupply' + }) + } +}; \ No newline at end of file From cc64d019c9eb89d550368fb154b12296bb127e25 Mon Sep 17 00:00:00 2001 From: Byron Kim Barra <88365848+byyyyyyyyy@users.noreply.github.com> Date: Tue, 11 Jun 2024 00:09:39 -0700 Subject: [PATCH 1941/2004] Feat: Updated token address and borrowed data for Wiselending-v2 (#10589) * added wise lending project with tvl field * finalized tvl field * added arbitrum tvl * Update index.js * removed arbitrum changes and renamed project * Fixed wise-lending-v2 * Remove unnesarry changes * Remove unnesarry changes * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Co-authored-by: Jenelyn Castil Contillo <62682071+jenelyn0214@users.noreply.github.com> Co-authored-by: Jenelyn Castil Contillo --- projects/wise-lending-v2/index.js | 50 +++++++++++++++++-------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/projects/wise-lending-v2/index.js b/projects/wise-lending-v2/index.js index b344569aa7d..8abbfef260d 100644 --- a/projects/wise-lending-v2/index.js +++ b/projects/wise-lending-v2/index.js @@ -1,32 +1,38 @@ - async function tvl(api) { - const { lending: lendingContract, feeManager } = config[api.chain] - const pools = await api.fetchList({ lengthAbi: 'uint256:getPoolTokenAddressesLength', itemAbi: 'function getPoolTokenAdressesByIndex(uint256) view returns (address)', target: feeManager }) - const isATokens = await api.multiCall({ abi: 'function isAaveToken(address) view returns (bool)', calls: pools, target: feeManager }) - const aTokens = pools.filter((_, i) => isATokens[i]) - let otherTokens = pools.filter((_, i) => !isATokens[i]) - const names = await api.multiCall({ abi: 'string:name', calls: otherTokens }) - const pendleTokens = otherTokens.filter((_, i) => names[i].includes(' Pendle ')) - otherTokens = otherTokens.filter(i => !pendleTokens.includes(i)) - const uaTokens = await api.multiCall({ abi: 'function underlyingToken(address) view returns (address)', calls: aTokens, target: feeManager }) + const { lending: lendingContract, tvlAddresses } = config[api.chain]; + + return api.sumTokens({ owner: lendingContract, tokens: tvlAddresses }); +} - // unwrap pendle - const pBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: pendleTokens.map(t => ({ target: t, params: lendingContract })) }) - const pSupply = await api.multiCall({ abi: 'erc20:totalSupply', calls: pendleTokens }) - const pTotalAssets = await api.multiCall({ abi: 'uint256:totalLpAssets', calls: pendleTokens }) - const pUnderlying = await api.multiCall({ abi: 'address:UNDERLYING_PENDLE_MARKET', calls: pendleTokens }) +async function borrowed(api) { + const { lending: lendingContract, borrowAddresses } = config[api.chain]; - pUnderlying.forEach((token, i) => { - api.add(token, pBals[i] * pTotalAssets[i] / pSupply[i]) + const borrowAmounts = await api.multiCall({ + abi: 'function getPseudoTotalBorrowAmount(address) view returns (uint256)', + target: lendingContract, + calls: borrowAddresses }) - return api.sumTokens({ owner: lendingContract, tokens: [...otherTokens, ...uaTokens], }) + api.add(borrowAddresses, borrowAmounts) } +const aavePools = [ + "0x724dc807b04555b71ed48a6896b6F41593b8C637", + "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", + "0x5979D7b546E38E414F7E9822514be443A4800529", + "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", + "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", +]; + const config = { - arbitrum: { lending: '0x9034a49587bd2c1af27598e0f04f30db66c87ebf', feeManager: '0x90a022796798f9dbA1Da0f8645234B284d4E8EC6' }, -} + arbitrum: { + lending: '0x9034a49587bD2c1Af27598E0f04F30Db66C87Ebf', + feeManager: '0x90a022796798f9dbA1Da0f8645234B284d4E8EC6', + tvlAddresses: aavePools, + borrowAddresses: aavePools + }, +}; Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) + module.exports[chain] = { tvl, borrowed }; +}); From e643f59b898ae5292b74733eb56ff9f96db98da4 Mon Sep 17 00:00:00 2001 From: rockooor <121937361+rockooor@users.noreply.github.com> Date: Tue, 11 Jun 2024 10:45:17 +0200 Subject: [PATCH 1942/2004] Add The Vault (#10588) * Add the Vault * rename * pull staked sol value instead of LSD token supply --------- Co-authored-by: x Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/blazestake/index.js | 8 +- projects/helper/solana.js | 27 +++- projects/helper/utils/solana/layout.js | 4 +- .../helper/utils/solana/layouts/stakePool.js | 133 ++++++++++++++++++ projects/jpool.js | 23 ++- projects/marinade-native/index.js | 16 +-- projects/solana_miner/index.js | 1 + projects/thevault/index.js | 13 ++ 8 files changed, 193 insertions(+), 32 deletions(-) create mode 100644 projects/helper/utils/solana/layouts/stakePool.js create mode 100644 projects/thevault/index.js diff --git a/projects/blazestake/index.js b/projects/blazestake/index.js index 44d2d23beef..f5d6c792089 100644 --- a/projects/blazestake/index.js +++ b/projects/blazestake/index.js @@ -1,14 +1,12 @@ -const { getTokenSupply } = require("../helper/solana") +const { getStakedSol } = require("../helper/solana") async function tvl(api) { - const bSOL = 'bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1' - const supply = await getTokenSupply(bSOL) - api.add(bSOL, supply * 1e9) + // https://stake-docs.solblaze.org/developers/addresses + await getStakedSol('6WecYymEARvjG5ZyqkrVQ6YkhPfujNzWpSPwNKXHCbV2', api) } module.exports = { timetravel: false, - methodology: "bSOL total supply as it's equal to the SOL staked", solana: { tvl }, diff --git a/projects/helper/solana.js b/projects/helper/solana.js index 909acd71c6c..6abf0c7c339 100644 --- a/projects/helper/solana.js +++ b/projects/helper/solana.js @@ -3,7 +3,7 @@ const http = require('./http') const { getEnv } = require('./env') const { transformBalances: transformBalancesOrig, transformDexBalances, } = require('./portedTokens.js') const { getUniqueAddresses } = require('./tokenMapping') -const { Connection, PublicKey, Keypair } = require("@solana/web3.js") +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') @@ -439,6 +439,29 @@ function readBigUInt64LE(buffer, offset) { 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) +} + module.exports = { endpoint: endpoint(), getTokenSupply, @@ -466,4 +489,6 @@ module.exports = { getValidGeckoSolTokens, getOwnerAllAccount, blacklistedTokens_default, + getStakedSol, + getSolBalanceFromStakePool, }; diff --git a/projects/helper/utils/solana/layout.js b/projects/helper/utils/solana/layout.js index c5803bc3464..9ad9a3e296c 100644 --- a/projects/helper/utils/solana/layout.js +++ b/projects/helper/utils/solana/layout.js @@ -10,6 +10,7 @@ const { SCN_STAKE_POOL } = 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 parseReserve = (info) => { const pubkey = PublicKey.default @@ -59,7 +60,8 @@ const customDecoders = { phoenix: parsePhoenix, sanctumInfinity: defaultParseLayout(SANCTUM_INFINITY), sanctumValidatorLsts: parseSanctumLstStateList, - stakePoolPartial: defaultParseLayout(STAKE_POOL_PARTIAL) + stakePoolPartial: defaultParseLayout(STAKE_POOL_PARTIAL), + stakePool: defaultParseLayout(STAKE_POOL_LAYOUT), } function decodeAccount(layout, accountInfo) { diff --git a/projects/helper/utils/solana/layouts/stakePool.js b/projects/helper/utils/solana/layouts/stakePool.js new file mode 100644 index 00000000000..52b1107d0c9 --- /dev/null +++ b/projects/helper/utils/solana/layouts/stakePool.js @@ -0,0 +1,133 @@ +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/jpool.js b/projects/jpool.js index 7ecab8add26..cf74565be23 100644 --- a/projects/jpool.js +++ b/projects/jpool.js @@ -1,16 +1,15 @@ -const {getTokenSupply} = require('./helper/solana') -async function tvl(){ - const supply = await getTokenSupply("7Q2afV64in6N6SeZsAAB81TJzwDoD6zpqmHkzi9Dcavn") - return { - jpool: supply - } +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 - } +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/marinade-native/index.js b/projects/marinade-native/index.js index 8f84c77ce06..1bc54efeec1 100644 --- a/projects/marinade-native/index.js +++ b/projects/marinade-native/index.js @@ -1,17 +1,7 @@ -const { StakeProgram } = require("@solana/web3.js") -const { getConnection } = require('../helper/solana') +const { getStakedSol } = require('../helper/solana') -async function tvl() { - const stakeAccounts = await getConnection().getProgramAccounts(StakeProgram.programId, { - filters: [{ - memcmp: { bytes: 'stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', offset: 4 + 8 } - }], - dataSlice: { offset: 0, length: 1 } // we dont care about the data, just the lamports - }) - - return { - solana: stakeAccounts.reduce((tvl, { account }) => { return tvl + account.lamports / 1e9 }, 0) - } +async function tvl(api) { + await getStakedSol('stWirqFCf2Uts1JBL1Jsd3r6VBWhgnpdPxCTe1MFjrq', api) } module.exports = { diff --git a/projects/solana_miner/index.js b/projects/solana_miner/index.js index 2578c00637c..c7acdf35239 100644 --- a/projects/solana_miner/index.js +++ b/projects/solana_miner/index.js @@ -8,6 +8,7 @@ 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", diff --git a/projects/thevault/index.js b/projects/thevault/index.js new file mode 100644 index 00000000000..dde245b270c --- /dev/null +++ b/projects/thevault/index.js @@ -0,0 +1,13 @@ +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 + }, +}; From df50f951dc720d26d0e58eed58ade6e139155370 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:15:36 +0530 Subject: [PATCH 1943/2004] Add Maverick v2 and minor fix (#10595) * add maverick v2 * minor fix --------- Co-authored-by: Bob Baxley --- projects/maverick-v2/index.js | 77 +++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 projects/maverick-v2/index.js diff --git a/projects/maverick-v2/index.js b/projects/maverick-v2/index.js new file mode 100644 index 00000000000..a8018ec2584 --- /dev/null +++ b/projects/maverick-v2/index.js @@ -0,0 +1,77 @@ +// 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, + }, + ], + }, +}); From 3c38a9f18bf676fa3d1b303349c14e05e31bbdd4 Mon Sep 17 00:00:00 2001 From: 0xRen <167325683+0xRen@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:46:17 +0800 Subject: [PATCH 1944/2004] Adapter for Hana Finance (#10586) --- projects/hana-finance/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 projects/hana-finance/index.js diff --git a/projects/hana-finance/index.js b/projects/hana-finance/index.js new file mode 100644 index 00000000000..fb9a3b73d3d --- /dev/null +++ b/projects/hana-finance/index.js @@ -0,0 +1,16 @@ +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 From d3e6e1883f428bea59f97cab86b0c6a761f52c71 Mon Sep 17 00:00:00 2001 From: Merchant Finance <167061514+merchantFi@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:47:32 +0800 Subject: [PATCH 1945/2004] Update index.js (#10594) --- projects/merchant/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/merchant/index.js b/projects/merchant/index.js index 7eecdc199a6..dfaa453da65 100644 --- a/projects/merchant/index.js +++ b/projects/merchant/index.js @@ -6,4 +6,7 @@ module.exports = { merlin: { ...compoundExports2({ comptroller: '0x1F2Aa5598f6543090C4c61A90917909fb5560A43'}), }, + linea: { + ...compoundExports2({ comptroller: '0xE54F37bbb8b7417EE4e0447DA0F8b922Fc7bb8Fa'}), + }, }; From a2cc030a3af863b2a4fd1390639975d7b09c1959 Mon Sep 17 00:00:00 2001 From: TsimakuridzeNikolozi <100114440+TsimakuridzeNikolozi@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:47:55 +0400 Subject: [PATCH 1946/2004] Added ezEth to Blast registry (#10584) --- projects/hinkal/registryTokens.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/hinkal/registryTokens.js b/projects/hinkal/registryTokens.js index ac1bf27a818..36eff5d81ac 100644 --- a/projects/hinkal/registryTokens.js +++ b/projects/hinkal/registryTokens.js @@ -970,6 +970,7 @@ const BLAST_REGISTRY_TOKENS = [ "0x76da31d7c9cbeae102aff34d3398bc450c8374c1", "0x47c337bd5b9344a6f3d6f58c474d9d8cd419d8ca", "0x216a5a1135a9dab49fa9ad865e0f22fe22b5630a", + "0x2416092f143378750bb29b79ed961ab195cceea5", ]; const registryTokensByChain = { From 8dc0ed04212ebb28968a5459dd011c94ff8137bf Mon Sep 17 00:00:00 2001 From: Night Owl <159715684+9i94ch4d@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:25:10 +0530 Subject: [PATCH 1947/2004] Added TVL for chad finance (#10585) * Added TVL for chad finance * code refactor --------- Co-authored-by: ktarun1419 Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/chad-finance/index.js | 4 +++- projects/chadfinance/index.js | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 projects/chadfinance/index.js diff --git a/projects/chad-finance/index.js b/projects/chad-finance/index.js index d764e1ca54c..ac552446137 100644 --- a/projects/chad-finance/index.js +++ b/projects/chad-finance/index.js @@ -5,4 +5,6 @@ const masterchad = "0xDA094Ee6bDaf65c911f72FEBfC58002e5e2656d1"; module.exports = { ...masterChefExports(masterchad, "fantom", chad, false) -} \ No newline at end of file +} + +module.exports.deadFrom = '2022-01-26' \ No newline at end of file diff --git a/projects/chadfinance/index.js b/projects/chadfinance/index.js new file mode 100644 index 00000000000..c2ec8199a70 --- /dev/null +++ b/projects/chadfinance/index.js @@ -0,0 +1,7 @@ +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 From f7795572a05d042c4d674195ff0ed77ee72ddbb5 Mon Sep 17 00:00:00 2001 From: Nyangbari <110552619+Nyangbari@users.noreply.github.com> Date: Tue, 11 Jun 2024 18:04:09 +0900 Subject: [PATCH 1948/2004] feat: catalist (#10592) * feat: catalist * feat: endurance chain added * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/catalist/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/catalist/index.js diff --git a/projects/catalist/index.js b/projects/catalist/index.js new file mode 100644 index 00000000000..319d091e1ee --- /dev/null +++ b/projects/catalist/index.js @@ -0,0 +1,14 @@ +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, + }, +}; From 3f9ddde80784c5db91d9f833ca91b057b1b36063 Mon Sep 17 00:00:00 2001 From: crews <64375250+TheYoungCrews@users.noreply.github.com> Date: Tue, 11 Jun 2024 05:07:06 -0400 Subject: [PATCH 1949/2004] add hyETH index - Update index.js (#10582) * add hyETH index - Update index.js add high yield eth index https://etherscan.io/address/0xc4506022fb8090774e8a628d5084eed61d9b99ee * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/indexcoop/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/indexcoop/index.js b/projects/indexcoop/index.js index 468486092ef..76b934016f9 100644 --- a/projects/indexcoop/index.js +++ b/projects/indexcoop/index.js @@ -13,6 +13,7 @@ const bedAddress = "0x2aF1dF3AB0ab157e1E2Ad8F88A7D04fbea0c7dc6"; const dataAddress = "0x33d63Ba1E57E54779F7dDAeaA7109349344cf5F1"; const gmiAddress = "0x47110d43175f7f2c2425e7d15792acc5817eb44f"; const icethAddress = "0x7c07f7abe10ce8e33dc6c5ad68fe033085256a84"; +const hyETH = "0xc4506022Fb8090774E8A628d5084EED61D9B99Ee"; const dsETH = "0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE"; const aaveDebtToken = "0xf63b34710400cad3e044cffdcab00a0f32e33ecf"; const USDC = ADDRESSES.ethereum.USDC @@ -29,6 +30,7 @@ const sets = [ icethAddress, dsETH, gtcETH, + hyETH, ]; async function tvl(api) { From 5df670e54daf3e3aaba989aae6d45f64b790fcdb Mon Sep 17 00:00:00 2001 From: imfeng Date: Tue, 11 Jun 2024 17:07:32 +0800 Subject: [PATCH 1950/2004] update satoshi-protocol add bitlayer chain tvl (#10581) --- projects/satoshi-protocol/index.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/projects/satoshi-protocol/index.js b/projects/satoshi-protocol/index.js index 61dbc564090..6a24763e7d9 100644 --- a/projects/satoshi-protocol/index.js +++ b/projects/satoshi-protocol/index.js @@ -1,17 +1,21 @@ const { sumTokens2 } = require("../helper/unwrapLPs") -const TROVE_MANAGER_LIST = [ - '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA', // WBTC Collateral - '0xa794a7Fd668FE378E095849caafA8C8dC7E84780', // wstBTC Collateral -] - -async function tvl(api) { - const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: TROVE_MANAGER_LIST}) - return sumTokens2({ api, tokensAndOwners2: [tokens, TROVE_MANAGER_LIST]}) +function createExports(troveList) { + return { + tvl: async (api) => { + const tokens = await api.multiCall({ abi: 'address:collateralToken', calls: troveList }) + return sumTokens2({ api, tokensAndOwners2: [tokens, troveList] }) + }, + } } module.exports = { - bevm: { - tvl, - } + bevm: createExports([ + '0x0598Ef47508Ec11a503670Ac3B642AAE8EAEdEFA', // BEVM WBTC Collateral + '0xa794a7Fd668FE378E095849caafA8C8dC7E84780', // BEVM wstBTC Collateral + ]), + btr: createExports([ + '0xf1A7b474440702BC32F622291B3A01B80247835E', // BITLAYER WBTC Collateral + '0xe9897fe6C8bf96D5ef8B0ECC7cBfEdef9818232c', // BITLAYER stBTC Collateral + ]), } From 2eb33ec35844f8211667c4d56eb66160e1999b0b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:01:35 +0530 Subject: [PATCH 1951/2004] Add symbiotic and refactor code (#10598) * add symbiotic * code refactor --------- Co-authored-by: Kresh --- projects/symbiotic/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 projects/symbiotic/index.js diff --git a/projects/symbiotic/index.js b/projects/symbiotic/index.js new file mode 100644 index 00000000000..fbc2c2c3169 --- /dev/null +++ b/projects/symbiotic/index.js @@ -0,0 +1,15 @@ +const { getLogs2 } = require('../helper/cache/getLogs') + +async function tvl(api) { + 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, }) + return api.sumTokens({ tokensAndOwners2: [tokens, COLLATERALS] }) +} + +module.exports = { + start: 1718088924, + ethereum: { + tvl, + }, +} From 3a234c27557577efb698109c6bec630e2408a24c Mon Sep 17 00:00:00 2001 From: vfat Date: Tue, 11 Jun 2024 15:08:29 +0400 Subject: [PATCH 1952/2004] Vfatio update (#10599) * add chain configs * create helper functions for different chains * add arb/linea * add factories * add nft helper function * fixes * integrate pancake * remove logging * small fix * add fantom * add contract addresses * fantom tvl * add mode contracts * add mode * add helper function * typo * add mantle tvl --------- Co-authored-by: stepollo Co-authored-by: 0xChupaCabra <56636447+0xChupaCabra@users.noreply.github.com> --- projects/vfat/index.js | 430 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 381 insertions(+), 49 deletions(-) diff --git a/projects/vfat/index.js b/projects/vfat/index.js index 8565a945a6e..afb8a4a3e48 100644 --- a/projects/vfat/index.js +++ b/projects/vfat/index.js @@ -8,6 +8,7 @@ const config = { gaugeFactory2: '0xD30677bd8dd15132F251Cb54CbDA552d2A05Fb08', voter: '0x16613524e02ad97edfef371bc883f2f5d6c480a5', NonfungiblePositionManager: '0x827922686190790b37229fd06084350E74485b72', + masterchefV3: '0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3', fromBlock: 3200567, fromBlockSickle: 12116234, chainName: 'base', @@ -22,25 +23,82 @@ const config = { 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 + }, }; +// 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)', + }); + return deployLogs.map(log => log.args.sickle); +} -async function tvl(api) { - const { factory, gaugeFactory, gaugeFactory2, voter, NonfungiblePositionManager, fromBlock, fromBlockSickle, chainName } = config[api.chain]; - - // Fetch logs from both the factory and the voter contracts - const [deployLogs, deployAeroLogs] = await Promise.all([ - getLogs({ - api, - target: factory, - fromBlock: fromBlockSickle, - eventAbi: 'event Deploy(address indexed admin, address sickle)', - }), - getLogs({ - api, - target: voter, - fromBlock, - eventAbi: `event GaugeCreated( +// Helper function to fetch and process gauges +async function fetchGauges(api, voter, fromBlock, gaugeFactory, gaugeFactory2) { + const deployAeroLogs = await getLogs({ + api, + target: voter, + fromBlock, + eventAbi: `event GaugeCreated( address indexed poolFactory, address indexed votingRewardsFactory, address indexed gaugeFactory, @@ -50,15 +108,9 @@ async function tvl(api) { address gauge, address creator )`, - }), - ]); - + }); - // Get the addresses of deployed sickles - const sickles = deployLogs.map(log => log.args.sickle); - - // Separate gauges by type - const deployedAeroGauges = deployAeroLogs.reduce( + return deployAeroLogs.reduce( (acc, log) => { const gaugeFactoryAddress = log.args.gaugeFactory; const gaugeAddress = log.args.gauge; @@ -71,46 +123,326 @@ async function tvl(api) { }, { lp: [], nft: [] } ); +} - const stakingTokens = await api.multiCall({ abi: 'address:stakingToken', calls: deployedAeroGauges.lp }) - const gaugeTokenMapping = {} - stakingTokens.forEach((stakingToken, index) => { - gaugeTokenMapping[deployedAeroGauges.lp[index]] = stakingToken - }) +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 sickleBalances = {}; + for (const sickle of sickles) { + const balanceCallsSickle = [{ target: managerAddress, params: [sickle] }]; + const sickleBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceCallsSickle }); + const balance = sickleBals[0]; + + if (balance === '0') continue; + + const nftCalls = []; + for (let i = 0; i < balance; i++) { + nftCalls.push({ target: managerAddress, params: [sickle, i] }); + } + + const nftIds = await api.multiCall({ abi: 'function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)', calls: nftCalls }); + sickleBalances[sickle] = nftIds; + } + + const positionCalls = []; + for (const sickle in sickleBalances) { + const nftIds = sickleBalances[sickle]; + nftIds.forEach(nftId => { + positionCalls.push({ target: managerAddress, params: [nftId] }); + }); + } + + 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: positionCalls, + }); + + if (isMasterchef) { + const poolInfoCalls = positions.map(position => ({ + target: managerAddress, + params: [position.pid], + })); + + 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: poolInfoCalls, + }); + + positions.forEach((position, index) => { + const poolInfo = poolInfos[index]; + 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; +} + +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]); +} + +async function getLPBalances(api, gauges, sickles, stakingTokens) { + const gaugeTokenMapping = {}; + stakingTokens.forEach((stakingToken, index) => { + gaugeTokenMapping[gauges[index]] = stakingToken; + }); - // Prepare balance queries for each gauge-sickle pair const balanceCallsLP = []; const tokens = []; - - for (const gauge of deployedAeroGauges.lp) { + for (const gauge of gauges) { for (const sickle of sickles) { balanceCallsLP.push({ target: gauge, params: [sickle] }); - tokens.push(gaugeTokenMapping[gauge]) + tokens.push(gaugeTokenMapping[gauge]); } } - const lpBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceCallsLP, }) - api.add(tokens, lpBals) + const lpBals = await api.multiCall({ abi: 'erc20:balanceOf', calls: balanceCallsLP }); + return { + balances: lpBals, + tokens: tokens + }; +} - // process NFT gauges - const pools = await api.multiCall({ abi: 'address:pool', calls: deployedAeroGauges.nft }) - const slot0s = await api.multiCall({ abi: 'function slot0() view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, bool unlocked)', calls: pools }) - let i = 0 +// TVL calculation for Base and Optimism +async function tvlBaseOptimism(api) { + const { factory, gaugeFactory, gaugeFactory2, voter, NonfungiblePositionManager, fromBlock, fromBlockSickle, chainName } = config[api.chain]; + + const sickles = await fetchSickles(api, factory, fromBlockSickle); + const deployedAeroGauges = await fetchGauges(api, voter, fromBlock, gaugeFactory, gaugeFactory2); + const stakingTokens = await api.multiCall({ abi: 'address:stakingToken', calls: deployedAeroGauges.lp }); + const { balances, tokens } = await getLPBalances(api, deployedAeroGauges.lp, sickles, stakingTokens); + + api.add(tokens, balances); + + const pools = await api.multiCall({ abi: 'address:pool', calls: deployedAeroGauges.nft }); + 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) => { - 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 }) - positions.forEach(position => addUniV3LikePosition({ ...position, tick, api })) - })) - - // unwrap uni v2 like LPs - return sumTokens2({ api, resolveLP: true, }) + 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 }); + positions.forEach(position => addUniV3LikePosition({ ...position, tick, api })); + })); + + if (chainName === 'base') { + const masterchefPositions = await fetchSickleNftPositions(api, sickles, config[api.chain].masterchefV3, true); + masterchefPositions.forEach(position => addUniV3LikePosition({ ...position, api })); + } + + 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 sickles = await fetchSickles(api, factory, fromBlockSickle); + const gauges = await fetchGauges2(api, fromBlock, gaugeFactory, gaugeFactory2, voter, chainName); + const stakingTokens = await api.multiCall({ abi: 'address:stake', calls: gauges.lp }); + + const { balances, tokens } = await getLPBalances(api, gauges.lp, sickles, stakingTokens); + api.add(tokens, balances); + + const positions = await fetchSickleNftPositions(api, sickles, config[api.chain].NonfungiblePositionManager); + const masterchefPositions = await fetchSickleNftPositions(api, sickles, config[api.chain].masterchefV3, true); + + positions.forEach(position => addUniV3LikePosition({ ...position, api })); + masterchefPositions.forEach(position => addUniV3LikePosition({ ...position, api })); + + 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 }); + const { balances, tokens } = await getLPBalances(api, gauges, sickles, stakingTokens); + api.add(tokens, balances); + 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) { + const masterchefPositions = await fetchSickleNftPositions(api, sickles, masterchefV3, true); + masterchefPositions.forEach(position => addUniV3LikePosition({ ...position, api })); + } + + if (NonfungiblePositionManager) { + const positions = await fetchSickleNftPositions(api, sickles, NonfungiblePositionManager); + positions.forEach(position => addUniV3LikePosition({ ...position, api })); + } + + return sumTokens2({ api, resolveLP: true }); +} + +async function fetchFantomGauges(api, fromBlock, gaugeFactory, voter, chainName) { + 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, + }); + + return deployLogs.map(log => log.args.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 }); + const { balances, tokens } = await getLPBalances(api, gauges, sickles, stakingTokens); + api.add(tokens, balances); + + return sumTokens2({ api, resolveLP: true }); } +async function tvlMantle(api) { + const { factory, fromBlockSickle, moeMasterchef } = config[api.chain]; + + const sickles = await fetchSickles(api, factory, fromBlockSickle); + + const numberOfFarms = await api.call({ + abi: 'function getNumberOfFarms() view returns (uint256)', + target: moeMasterchef + }); + + const farmIds = Array.from({ length: numberOfFarms }, (_, i) => i); + const tokens = await api.multiCall({ + abi: 'function getToken(uint256 pid) view returns (address)', + calls: farmIds.map(pid => ({ target: moeMasterchef, params: [pid] })) + }); + + const farmTokenMap = farmIds.reduce((map, pid, index) => { + map[pid] = tokens[index]; + return map; + }, {}); + + 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 + }); + + const tokenBalanceMap = {}; + + depositCalls.forEach((call, index) => { + const pid = call.params[0]; + const deposit = deposits[index]; + const token = farmTokenMap[pid]; + + if (!tokenBalanceMap[token]) { + tokenBalanceMap[token] = deposit; + } else { + tokenBalanceMap[token] = (BigInt(tokenBalanceMap[token]) + BigInt(deposit)).toString(); + } + }); + + const tokenList = Object.keys(tokenBalanceMap); + const balanceList = Object.values(tokenBalanceMap); + + api.add(tokenList, balanceList); + + return sumTokens2({ api, resolveLP: true }); +} Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl } -}) \ No newline at end of file + if (['base', 'optimism'].includes(chain)) { + module.exports[chain] = { tvl: tvlBaseOptimism }; + } else if (['arbitrum', 'linea'].includes(chain)) { + module.exports[chain] = { tvl: tvlArbitrumLinea }; + } else if (chain === 'fantom') { + module.exports[chain] = { tvl: tvlFantom }; + } else if (chain === 'mode') { + module.exports[chain] = { tvl: modeTvl }; + } else if (chain === 'mantle') { + module.exports[chain] = { tvl: tvlMantle }; + } else if (!['base', 'optimism', 'arbitrum', 'linea', 'fantom', 'mode', 'mantle'].includes(chain)) { + module.exports[chain] = { tvl: genericTvl }; + } +}); \ No newline at end of file From 2e4d4c7e77a4ae7e04f334193847be8c946926ea Mon Sep 17 00:00:00 2001 From: 0xjosaphat <120175614+0xjosaphat@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:15:57 +0200 Subject: [PATCH 1953/2004] Added LB TVL for Magicsea DEX (#10553) * added new chain polygon_zkevm * added marker for new chain launch on Polygon zkEVM * added new chain arbitrum * fixed type in methodology * added shimmersea adapter * added shimmersea adapter * added shimmer_evm to chainlist * added shimmer_evm as new chain to Swapline DEX * added shimmer_evm as new chain to Swapline DEX * added IOTA EVM as new chain to MagicSea DEX * moved /shimmersea to /magicsea; added /magicsea-lb-v2 for liquidy book tvl on MagicSea DEX * reverted move /magicsea to /shimmersea --- projects/magicsea-lb-v2/index.js | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/magicsea-lb-v2/index.js diff --git a/projects/magicsea-lb-v2/index.js b/projects/magicsea-lb-v2/index.js new file mode 100644 index 00000000000..667521ffedd --- /dev/null +++ b/projects/magicsea-lb-v2/index.js @@ -0,0 +1,37 @@ +const {sumTokens2} = require('../helper/unwrapLPs') + +const factories = { + shimmer_evm: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', + iotaevm: '0x8Cce20D17aB9C6F60574e678ca96711D907fD08c' +} + +async function tvl(api) { + const pools = await api.fetchList({ + target: factories[api.chain], + itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', + lengthAbi: 'uint256: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]]) + }) + let blacklistedTokens = [] + return sumTokens2({api, tokensAndOwners: toa, blacklistedTokens: blacklistedTokens}) +} + +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 From 7ba9981e14ce919b3b4aad8a5088b95c90a78fb8 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:17:06 +0200 Subject: [PATCH 1954/2004] PR#10596 track mellow v2 --- projects/mellow-protocol-v2/index.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 projects/mellow-protocol-v2/index.js diff --git a/projects/mellow-protocol-v2/index.js b/projects/mellow-protocol-v2/index.js new file mode 100644 index 00000000000..44a634f7e1b --- /dev/null +++ b/projects/mellow-protocol-v2/index.js @@ -0,0 +1,26 @@ +const config = { + ethereum: { + vaults: [ + '0xBEEF69Ac7870777598A04B2bd4771c71212E6aBc', + '0x84631c0d0081FDe56DeB72F6DE77abBbF6A9f93a', + '0x5fD13359Ba15A84B76f7F87568309040176167cd', + '0x7a4EffD87C2f3C55CA251080b1343b605f327E3a' + ], + }, +} + +module.exports = { + doublecounted: true, +}; + +Object.keys(config).forEach(chain => { + const { vaults, } = config[chain] + module.exports[chain] = { + tvl: async (api) => { + const baseTvl = await api.multiCall({ abi: 'function underlyingTvl() public view returns (address[] tokens, uint256[] values)', calls: vaults }) + baseTvl.forEach(({ tokens, values}) => { + api.add(tokens, values) + }) + } + } +}) \ No newline at end of file From 4a326d6183717dc113ebe1385a60c47ae028bbc9 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:29:41 +0200 Subject: [PATCH 1955/2004] add trader joe lb helper --- projects/E3/index.js | 36 ++--------------- projects/helper/traderJoeV2.js | 38 +++++++++++++++++ projects/helper/uniswapV3.js | 1 - projects/magicsea-lb-v2/index.js | 39 ++---------------- projects/merchant-moe-lb/index.js | 35 ++-------------- projects/swapline/index.js | 63 +++++------------------------ projects/traderjoe-lb-v2-1/index.js | 39 ++---------------- 7 files changed, 61 insertions(+), 190 deletions(-) create mode 100644 projects/helper/traderJoeV2.js diff --git a/projects/E3/index.js b/projects/E3/index.js index c70c70fe648..96b3aa1e8b6 100644 --- a/projects/E3/index.js +++ b/projects/E3/index.js @@ -1,37 +1,7 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') +const { joeV2Export } = require('../helper/traderJoeV2') -const factories = { +module.exports = joeV2Export({ fantom: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B', arbitrum: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B', base: '0x8597dB3ba8dE6BAAdEDa8cBa4dAC653E24a0e57B' - ///zkevm: tbd -} -async function tvl(api) { - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', - lengthAbi: 'uint256: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, }) -} - -module.exports = { - methodology: 'Only the tokens inside E3 Liquidity Pools are counted in our TVL.', -} - -Object.keys(factories).forEach(chain => { - module.exports[chain] = { tvl } -}) +}) \ No newline at end of file diff --git a/projects/helper/traderJoeV2.js b/projects/helper/traderJoeV2.js new file mode 100644 index 00000000000..a80a48a61ad --- /dev/null +++ b/projects/helper/traderJoeV2.js @@ -0,0 +1,38 @@ +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/uniswapV3.js b/projects/helper/uniswapV3.js index f3f6fd0b2b7..726e43b289f 100644 --- a/projects/helper/uniswapV3.js +++ b/projects/helper/uniswapV3.js @@ -1,7 +1,6 @@ const { sumTokens2 } = require('./unwrapLPs') const { getLogs } = require('./cache/getLogs') const { cachedGraphQuery } = require('./cache') -const { request, } = require('graphql-request') const uniswapConfig = { eventAbi: 'event PoolCreated(address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool)', diff --git a/projects/magicsea-lb-v2/index.js b/projects/magicsea-lb-v2/index.js index 667521ffedd..a0a0d2c9208 100644 --- a/projects/magicsea-lb-v2/index.js +++ b/projects/magicsea-lb-v2/index.js @@ -1,37 +1,6 @@ -const {sumTokens2} = require('../helper/unwrapLPs') +const { joeV2Export } = require('../helper/traderJoeV2') -const factories = { - shimmer_evm: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', - iotaevm: '0x8Cce20D17aB9C6F60574e678ca96711D907fD08c' -} - -async function tvl(api) { - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', - lengthAbi: 'uint256: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]]) - }) - let blacklistedTokens = [] - return sumTokens2({api, tokensAndOwners: toa, blacklistedTokens: blacklistedTokens}) -} - -module.exports = { - methodology: 'We count the token balances in in different liquidity book contracts', -} - -Object.keys(factories).forEach(chain => { - module.exports[chain] = {tvl} +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/merchant-moe-lb/index.js b/projects/merchant-moe-lb/index.js index f86f584aba1..9f4e59c4e1d 100644 --- a/projects/merchant-moe-lb/index.js +++ b/projects/merchant-moe-lb/index.js @@ -1,34 +1,5 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') +const { joeV2Export } = require('../helper/traderJoeV2') -const factories = { - mantle: '0xa6630671775c4EA2743840F9A5016dCf2A104054', -} -async function tvl(api) { - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', - lengthAbi: 'uint256: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, }) -} - -module.exports = { - methodology: 'We count the token balances in in different liquidity book contracts', -} - -Object.keys(factories).forEach(chain => { - module.exports[chain] = { tvl } +module.exports = joeV2Export({ + mantle: '0xa6630671775c4EA2743840F9A5016dCf2A104054' }) \ No newline at end of file diff --git a/projects/swapline/index.js b/projects/swapline/index.js index a7d6bf69ae0..0e6c329e375 100644 --- a/projects/swapline/index.js +++ b/projects/swapline/index.js @@ -1,62 +1,17 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') +const { joeV2Export } = require('../helper/traderJoeV2') -const factories = { +module.exports = joeV2Export({ fantom: '0x640801a6983c109805E928dc7d9794080C21C88E', optimism: '0xd08C98F6409fCAe3E61f3157B4147B6595E60cf3', polygon_zkevm: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', arbitrum: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', base: '0x5A5c0C4832828FF878CE3ab4fEc44d21200b1496', shimmer_evm: '0xEE0616a2DEAa5331e2047Bc61E0b588195A49cEa', -} -async function tvl(api) { - let blacklistedTokens = [] - if (api.chain === 'fantom') blacklistedTokens = ['0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1'] - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', - lengthAbi: 'uint256: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,}) -} +}) -module.exports = { - hallmarks: [ - [1682298000,"Launch on Optimism"], - [1687827600,"Launch on Polygon zkEVM"], - [1689037200,"Launch on Arbitrum"], - [1690848000,"Launch on Base"], - [1702857600,"Launch on ShimmerEVM"] - ], - methodology: 'We count the token balances in different liquidity book contracts', - fantom:{ - tvl, - }, - optimism:{ - tvl, - }, - polygon_zkevm:{ - tvl, - }, - arbitrum:{ - tvl, - }, - base:{ - tvl, - }, - shimmer_evm: { - tvl, - }, -}; \ No newline at end of file +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/traderjoe-lb-v2-1/index.js b/projects/traderjoe-lb-v2-1/index.js index 6921e438112..381f8ebd879 100644 --- a/projects/traderjoe-lb-v2-1/index.js +++ b/projects/traderjoe-lb-v2-1/index.js @@ -1,42 +1,11 @@ -const { sumTokens2 } = require('../helper/unwrapLPs') -const { staking } = require("../helper/staking.js"); +const { staking } = require("../helper/staking.js") +const { joeV2Export } = require('../helper/traderJoeV2') -const factories = { +module.exports = joeV2Export({ avax: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', arbitrum: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', bsc: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e', - ethereum: '0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a' -} -async function tvl(api) { - const pools = await api.fetchList({ - target: factories[api.chain], - itemAbi: 'function getLBPairAtIndex(uint256) view returns (address)', - lengthAbi: 'uint256: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: [ - '0x77ea44CB68Eaadd5D7372e5602b5646475ea1C81', - ] }) -} - -module.exports = { - methodology: 'We count the token balances in in different liquidity book contracts', -} - -Object.keys(factories).forEach(chain => { - module.exports[chain] = { tvl } + ethereum: '0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a', }) module.exports.arbitrum.staking = staking("0x43646A8e839B2f2766392C1BF8f60F6e587B6960", "0x371c7ec6D8039ff7933a2AA28EB827Ffe1F52f07") \ No newline at end of file From cc032b57b844bcc306db58606ab1a8294ba2ef1b Mon Sep 17 00:00:00 2001 From: ken-movegpt <163412206+ken-movegpt@users.noreply.github.com> Date: Tue, 11 Jun 2024 18:32:48 +0700 Subject: [PATCH 1956/2004] Add MOVE GPT project (#10547) * update * code refactor --------- Co-authored-by: dev Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/movegpt/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/movegpt/index.js diff --git a/projects/movegpt/index.js b/projects/movegpt/index.js new file mode 100644 index 00000000000..16f351193f5 --- /dev/null +++ b/projects/movegpt/index.js @@ -0,0 +1,32 @@ +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: + "THE MOST TRUSTED #MOVE LAUNCHPAD ON APTOS.", + aptos: { + tvl: () => ({ + }), + staking: async (api) => { + await get_staking(api) + }, + } +} \ No newline at end of file From 3f19c3d61d491cf46683584be077ffcfe1810eef Mon Sep 17 00:00:00 2001 From: aparkalov Date: Tue, 11 Jun 2024 16:52:25 +0300 Subject: [PATCH 1957/2004] add taiko network for minterest tvl calculation (#10603) Co-authored-by: Aliaksei Parkalau --- projects/minterest/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/minterest/index.js b/projects/minterest/index.js index 976390a1723..f32246396ee 100644 --- a/projects/minterest/index.js +++ b/projects/minterest/index.js @@ -4,12 +4,14 @@ module.exports = { hallmarks: [ [1677133355, "MINTY distribution begins on Ethereum"], [1704369540, "MINTY distribution begins on Mantle"], + [1717164347, "MINTY distribution begins on Taiko"], ], } const config = { ethereum: "0xD13f50274a68ABF2384C79248ADc259b3777c081", mantle: "0xe53a90EFd263363993A3B41Aa29f7DaBde1a932D", + taiko: "0xe56c0d4d6A08C05ec42E923EFd06497F115D4799", } From 02c16d47f684a641233fbc6f79ec749fc41a268c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Tue, 11 Jun 2024 19:24:17 +0530 Subject: [PATCH 1958/2004] Add Credbull vaults functionality (#10604) * feat: add credbull vaults * feat: add credbull vaults * feat: add credbull vaults * feat: add credbull vaults * count off chain assets as borrowed --------- Co-authored-by: Pedro Viegas --- projects/credbull/index.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 projects/credbull/index.js diff --git a/projects/credbull/index.js b/projects/credbull/index.js new file mode 100644 index 00000000000..963e7702c7a --- /dev/null +++ b/projects/credbull/index.js @@ -0,0 +1,23 @@ +const { getConfig } = require('../helper/cache'); + +async function tvl(api) { + let vaults = await getConfig('credbull', "https://incredbull.io/api/vaults") + vaults = vaults[api.chain] + const tokens = await api.multiCall({ abi: 'address:asset', calls: vaults }) + return api.sumTokens({ tokensAndOwners2: [tokens, vaults] }) +} + +async function borrowed(api) { + let vaults = await getConfig('credbull', "https://incredbull.io/api/vaults") + vaults = vaults[api.chain] + 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) +} + +module.exports = { + methodology: 'TVL consist of the sum of every deposit of all vaults for a given asset.', + btr: { tvl, borrowed, }, +}; From 89802b29bacbf4d539999c5008390277800e9712 Mon Sep 17 00:00:00 2001 From: sthitpragnya-ethosx <115890450+sthitpragnya-ethosx@users.noreply.github.com> Date: Tue, 11 Jun 2024 19:25:51 +0530 Subject: [PATCH 1959/2004] ethosx operps tvl (#10601) --- projects/ethosx/index.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 projects/ethosx/index.js diff --git a/projects/ethosx/index.js b/projects/ethosx/index.js new file mode 100644 index 00000000000..98a71c0a118 --- /dev/null +++ b/projects/ethosx/index.js @@ -0,0 +1,36 @@ +const { sumTokensExport } = require("../helper/unwrapLPs"); +const ETH_PUT_CONTROLLER_ADDRESS = "0x55E008E3b0Aa6808Ca8B8Ba1DC319EC132554aCd"; +const ETH_CALL_CONTROLLER_ADDRESS = + "0x2eEFcBCa065bE1763be58276AFA41627A82dfa2D"; +const BTC_PUT_CONTROLLER_ADDRESS = "0x3273C69432b2B0D808499F4Cc56113Be6c7A673F"; +const BTC_CALL_CONTROLLER_ADDRESS = + "0x18AadF2a220D3FEb958Ed161263185f0805D11a1"; +const USDC_ARB_ADDRESS = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"; +const USDC_BSC_ADDRESS = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; + +module.exports = { + methodology: "TVL counts the USDC held in the controller contracts.", + start: 1715693000, + arbitrum: { + tvl: sumTokensExport({ + owners: [ + ETH_PUT_CONTROLLER_ADDRESS, + ETH_CALL_CONTROLLER_ADDRESS, + BTC_PUT_CONTROLLER_ADDRESS, + BTC_CALL_CONTROLLER_ADDRESS, + ], + tokens: [USDC_ARB_ADDRESS], + }), + }, + bsc: { + tvl: sumTokensExport({ + owners: [ + ETH_PUT_CONTROLLER_ADDRESS, + ETH_CALL_CONTROLLER_ADDRESS, + BTC_PUT_CONTROLLER_ADDRESS, + BTC_CALL_CONTROLLER_ADDRESS, + ], + tokens: [USDC_BSC_ADDRESS], + }), + }, +}; // node test.js projects/mint-club/index.js From aebca7153f93a58068b9b4b422b7796c392ef5ec Mon Sep 17 00:00:00 2001 From: usr-icon-foundation <111794534+usr-icon-foundation@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:56:47 +0200 Subject: [PATCH 1960/2004] USDC Price tracking fix + Addition of Base and Arbitrum chains to TVL tracking (#10602) Fix issue with wrong decimal allocation for USDC across several chains. Added Base + Arbitrum to chain TVL tracking --- projects/balanced/helper.js | 4 +++- projects/balanced/index.js | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/projects/balanced/helper.js b/projects/balanced/helper.js index bd68fe5d28a..68a9223e445 100644 --- a/projects/balanced/helper.js +++ b/projects/balanced/helper.js @@ -40,6 +40,8 @@ const networkIdentifiers = { "0xa86a.avax": "avalanche", "archway-1": "archway", "injective-1/inj": "injective", + "0xa4b1.arbitrum": "arbitrum", + "0x2105.base": "base" } // Get decimals of cross-chain Balanced assets in balancedAssetManagerContract @@ -71,7 +73,7 @@ async function getExternalChainDeposits() { try { const priceData = await call(balancedOracle, "getPriceDataInUSD", { symbol: tokenSymbol, }) const rateHex = priceData.rate - rateDecimal = parseInt(rateHex, 16) / decimals[tokenNetworkAddress] + 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` diff --git a/projects/balanced/index.js b/projects/balanced/index.js index 9e960219dac..bfa389909ee 100644 --- a/projects/balanced/index.js +++ b/projects/balanced/index.js @@ -35,4 +35,10 @@ module.exports = { injective: { tvl: async () => await computeTVL("injective"), }, + base: { + tvl: async () => await computeTVL("base"), + }, + arbitrum: { + tvl: async () => await computeTVL("arbitrum"), + }, }; From 5dfed6b8cdf36d3a36b7176ae1f26ca5c1ea2af0 Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 11 Jun 2024 21:33:59 +0100 Subject: [PATCH 1961/2004] add bob new wallet (#10609) --- projects/bob/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/bob/index.js b/projects/bob/index.js index 4639d756a3f..07184113b5e 100644 --- a/projects/bob/index.js +++ b/projects/bob/index.js @@ -10,10 +10,12 @@ const tokens = [ ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.USDT, ADDRESSES.ethereum.DAI, + ADDRESSES.ethereum.WETH, "0x7122985656e38BDC0302Db86685bb972b145bD3C", // STONE "0xbdBb63F938c8961AF31eaD3deBa5C96e6A323DD1", // eDLLR "0xbdab72602e9AD40FC6a6852CAf43258113B8F7a5", // eSOV "0xe7c3755482d0dA522678Af05945062d4427e0923", // ALEX + ]; module.exports = { @@ -25,7 +27,8 @@ module.exports = { owners: [ "0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7", "0x091dF5E1284E49fA682407096aD34cfD42B95B72", - "0x450D55a4B4136805B0e5A6BB59377c71FC4FaCBb" + "0x450D55a4B4136805B0e5A6BB59377c71FC4FaCBb", + "0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E" ], fetchCoValentTokens: true, }), From 90a645cd00f457ee63fe95333fe90c2d8113c0ee Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Tue, 11 Jun 2024 21:56:39 +0100 Subject: [PATCH 1962/2004] add hallmark (#10610) --- projects/baseline/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/baseline/index.js b/projects/baseline/index.js index fa6eddf3d53..2d901efeb96 100644 --- a/projects/baseline/index.js +++ b/projects/baseline/index.js @@ -18,6 +18,9 @@ async function borrowed(api) { } module.exports = { + hallmarks: [ + [1714251306,"self-whitehack"] + ], doublecounted: true, blast: { tvl, From 9cae5dcab38e829b3087da6b624a4f8ab7e81808 Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Tue, 11 Jun 2024 22:47:15 +0100 Subject: [PATCH 1963/2004] fix zksync era bridge --- projects/txBridge/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/txBridge/index.js b/projects/txBridge/index.js index 5e7d9d935dd..3c27fe98449 100644 --- a/projects/txBridge/index.js +++ b/projects/txBridge/index.js @@ -8,6 +8,7 @@ module.exports = { owners: [ "0x32400084C286CF3E17e7B677ea9583e60a000324", "0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063", + "0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB" ], fetchCoValentTokens: true, }), From 48c488187d1763082f1df9d516efddcbb071b673 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Wed, 12 Jun 2024 01:24:56 +0100 Subject: [PATCH 1964/2004] update methodology --- projects/movegpt/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/movegpt/index.js b/projects/movegpt/index.js index 16f351193f5..75d2ac6e69d 100644 --- a/projects/movegpt/index.js +++ b/projects/movegpt/index.js @@ -21,7 +21,7 @@ async function get_staking(api) { module.exports = { timetravel: false, methodology: - "THE MOST TRUSTED #MOVE LAUNCHPAD ON APTOS.", + "TVL is calculated by summing the staked amounts in the specified staking pools on the Aptos blockchain.", aptos: { tvl: () => ({ }), From d987b893e2e12bb11c29705f13ab10e56842f519 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:12:00 +0530 Subject: [PATCH 1965/2004] Add Rize TVL calculation for Ethereum blockchain (#10615) * feat: rize protocol * feat: add rize project * add rize tvl * add rize tvl, parsing eth log * add rize tvl by sui * code refactor --------- Co-authored-by: Aaric Co-authored-by: zhan --- projects/rize/index.js | 112 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 projects/rize/index.js diff --git a/projects/rize/index.js b/projects/rize/index.js new file mode 100644 index 00000000000..693688e5ae5 --- /dev/null +++ b/projects/rize/index.js @@ -0,0 +1,112 @@ +const sui = require("../helper/chain/sui"); +const ADDRESSES = require('../helper/coreAssets.json') + +const suiScallopPools = { + usdc: { + poolId: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0", + rewardPoolId: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8", + type: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", + stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN>", + balanceSheet: '0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93', + spoolAccount: 'a5a2d2afe12ed353ca32a3d5f7592a7a57945040ee7beacab6d82a5fe5b34734', + decimals: 6, + }, + usdt: { + poolId: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f", + rewardPoolId: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080", + type: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", + stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN>", + balanceSheet: '0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879', + spoolAccount: '775206c05243da6b1a29a45c74bd3d3e7db4b3f8303342cbf34c3d12725eac70', + decimals: 6, + }, + weth: { + poolId: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787", + rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077", + type: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN", + 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: 1716599207, + timetravel: false, + ethereum: { + tvl + } +}; \ No newline at end of file From 19df7f528721be9596bbe54725ec933c293d20f5 Mon Sep 17 00:00:00 2001 From: Tigris of Gaul <81036209+tigris-of-gaul@users.noreply.github.com> Date: Wed, 12 Jun 2024 07:44:15 +0000 Subject: [PATCH 1966/2004] Add Tarot factory for Linea (#10608) --- projects/tarot/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/tarot/index.js b/projects/tarot/index.js index 779def2d540..541ce31315f 100644 --- a/projects/tarot/index.js +++ b/projects/tarot/index.js @@ -69,6 +69,11 @@ const config = { '0xf450b51fb2E1e4f05DAf9Cf7D9BB97714540B4f4', // Tarot Zeniths ] }, + linea: { + factories: [ + '0xb6193DF61351736e5190bF1DEB2E4f0769bd1BF2', // Tarot Leyline + ] + }, } tarotHelper(module.exports, config) From d88840e9470a121f57924ed6a53c009398f56df2 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:21:54 +0530 Subject: [PATCH 1967/2004] Add Clober-v2 and update methodology (#10616) * feat: add clober-v2 * fix: module export * feat: update methodology * code refactor --------- Co-authored-by: Xavier --- projects/clober-v2/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 projects/clober-v2/index.js diff --git a/projects/clober-v2/index.js b/projects/clober-v2/index.js new file mode 100644 index 00000000000..84fd0a85861 --- /dev/null +++ b/projects/clober-v2/index.js @@ -0,0 +1,25 @@ +const { getLogs2 } = require('../helper/cache/getLogs') + +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, }, +} + +async function tvl(api) { + const { factory, fromBlock } = config[api.chain] + const logs = await getLogs2({ api, factory, eventAbi: abi.openEvent, fromBlock, }) + const tokens = logs.map(({ base, quote }) => [base, quote]).flat() + return api.sumTokens({ owner: factory, tokens, }) +} + +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 From 08e2c17ccf478d760748592a90f3269c86cb2c42 Mon Sep 17 00:00:00 2001 From: eepdev <78463658+eepdev@users.noreply.github.com> Date: Wed, 12 Jun 2024 03:54:01 -0400 Subject: [PATCH 1968/2004] Added Adamant Finance Fraxtal vaults (#10611) * Update utils.js feat: add Fraxtal Fraxswap LP tokens * Update index.js - Adamant feat: fetch vault data from new json file that contains vaults on all chains added Fraxtal vaults --- projects/adamantfinance/index.js | 54 +++++++++++++++++++++++++++++--- projects/helper/utils.js | 1 + 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/projects/adamantfinance/index.js b/projects/adamantfinance/index.js index b3ad679c36f..8ef3d10fba1 100644 --- a/projects/adamantfinance/index.js +++ b/projects/adamantfinance/index.js @@ -16,6 +16,19 @@ const vaultsUrl = { "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"; + +const NetworkID = { + ETH_MAINNET: 1, + POLYGON: 137, + ARBITRUM: 42161, + CRONOS: 25, + FRAXTAL: 252, + OPTIMISM: 10 }; /*** Polygon Addresses ***/ @@ -28,6 +41,7 @@ const vaultAddresses_polygon = ["0xF7661EE874Ec599c2B450e0Df5c40CE823FEf9d3"]; / const lpAddresses_polygon = ["0xa5bf14bb945297447fe96f6cd1b31b40d31175cb"]; //ADDY/WETH const ADDY = "0xc3fdbadc7c795ef1d6ba111e06ff8f16a20ea539"; +const adMESH = "0x459dc0fB79653A48469F2C3c375d0A522750Dd40"; /*** Arbitrum Addresses ***/ const stakingContracts_Arbitrum = [ @@ -66,7 +80,7 @@ async function pool2Polygon(api) { } async function polygonTvl(timestamp, block, chainBlocks) { - return await tvl(timestamp, "polygon", chainBlocks, lpAddresses_polygon); + return await tvl2(timestamp, "polygon", NetworkID.POLYGON, chainBlocks, lpAddresses_polygon); } async function arbitrumTvl(timestamp, block, chainBlocks) { @@ -74,7 +88,11 @@ async function arbitrumTvl(timestamp, block, chainBlocks) { } async function cronosTvl(timestamp, block, chainBlocks) { - return await tvl(timestamp, "cronos", chainBlocks, lpAddresses_cronos); + return await tvl2(timestamp, "cronos", NetworkID.CRONOS, chainBlocks, lpAddresses_cronos); +} + +async function fraxtalTvl(timestamp, block, chainBlocks) { + return await tvl2(timestamp, "fraxtal", NetworkID.FRAXTAL, chainBlocks, []); //no Adamant platform token on Fraxtal } async function uniTvl(balances, chain, block, uniVaults, lpAddressesIgnored, transformAddress = (a) => a) { @@ -98,7 +116,6 @@ async function uniTvl(balances, chain, block, uniVaults, lpAddressesIgnored, tra sdk.util.sumSingleBalance(balances, chain + ':' + v.lpAddress, vault_balances[idx]) } }); - await unwrapLPsAuto({ balances, block, chain, }); return balances; } @@ -114,7 +131,7 @@ const tvl = async (timestamp, chain, chainBlocks, lpAddressesIgnored) => { let uniVaults = resp .filter( (vault) => - vault.vaultAddress !== '0x459dc0fB79653A48469F2C3c375d0A522750Dd40' && + vault.vaultAddress !== adMESH && vault.platform !== "dodo" ) .map((vault) => ({ @@ -126,6 +143,32 @@ const tvl = async (timestamp, chain, chainBlocks, lpAddressesIgnored) => { return balances; }; +const tvl2 = async (timestamp, chain, chainId, chainBlocks, lpAddressesIgnored) => { + + const block = chainBlocks[chain]; + const transformAddress = await getChainTransform(chain) + let balances = {}; + + let resp = await getConfig('adamant-fi/'+chain, allVaultsUrl); + + let uniVaults = resp + .filter( + (vault) => + vault.vaultAddress !== adMESH && + vault.vaultAddress !== "0x01d2833e6d86D5Ad8380044DEb2cA520fc60D326" && //adMESH related token/deposit + vault.vaultAddress !== "0xbe6aa0AF32984fE3f65a73071DECC09Ab607e310" && //adMESH related token/deposit + vault.platform !== "dodo" && + vault.chainId == chainId + ) + .map((vault) => ({ + vaultAddress: vault.vaultAddress, + lpAddress: vault.lpAddress, + })); + + balances = await uniTvl(balances, chain, block, uniVaults, lpAddressesIgnored, transformAddress); + return balances; +}; + module.exports = { polygon: { staking: stakings(stakingContracts_polygon, ADDY), @@ -140,6 +183,9 @@ module.exports = { staking: stakingUnknown({ owners: stakingContracts_cronos, tokens: [CADDY], chain: 'cronos', lps: lpAddresses_cronos, useDefaultCoreAssets: true }), tvl: cronosTvl, }, + fraxtal: { + tvl: fraxtalTvl, + }, 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/helper/utils.js b/projects/helper/utils.js index 0e4dccd218e..153da04c3d8 100644 --- a/projects/helper/utils.js +++ b/projects/helper/utils.js @@ -84,6 +84,7 @@ function isLP(symbol, token, chain) { 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 From 4f5e137f942d5c17f25f19c5c394a6609616e0d6 Mon Sep 17 00:00:00 2001 From: Ludovit Scholtz Date: Wed, 12 Jun 2024 09:56:03 +0200 Subject: [PATCH 1969/2004] add ASAGold (#10607) --- projects/asa-gold/index.js | 40 +++++++++++++++++++++++++++++++ projects/helper/chain/algorand.js | 1 + 2 files changed, 41 insertions(+) create mode 100644 projects/asa-gold/index.js diff --git a/projects/asa-gold/index.js b/projects/asa-gold/index.js new file mode 100644 index 00000000000..3da3e89173c --- /dev/null +++ b/projects/asa-gold/index.js @@ -0,0 +1,40 @@ +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/helper/chain/algorand.js b/projects/helper/chain/algorand.js index f59755bd1b4..9a36d84581f 100644 --- a/projects/helper/chain/algorand.js +++ b/projects/helper/chain/algorand.js @@ -159,6 +159,7 @@ const tokens = { gard: 684649988, gold$: 246516580, silver$: 246519683, + ASAGold: 1241944285 }; // store all asset ids as string From 8fa193fd7ec245bfaf6fe620ec6c5ae1bea8ad27 Mon Sep 17 00:00:00 2001 From: Hiro <152849689+drummaster98@users.noreply.github.com> Date: Wed, 12 Jun 2024 17:48:41 +0800 Subject: [PATCH 1970/2004] add kodo exchange (on taiko) (#10617) * add kodo exchange * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/kodo-exchange/index.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 projects/kodo-exchange/index.js diff --git a/projects/kodo-exchange/index.js b/projects/kodo-exchange/index.js new file mode 100644 index 00000000000..59e0d67d2f8 --- /dev/null +++ b/projects/kodo-exchange/index.js @@ -0,0 +1,3 @@ +const {uniTvlExport} = require('../helper/unknownTokens.js') + +module.exports = uniTvlExport('taiko', '0x535E02960574d8155596a73c7Ad66e87e37Eb6Bc', { hasStablePools: true}) From a07f6063417a8f2ce856871bbcfa780d7751554f Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:35:46 +0530 Subject: [PATCH 1971/2004] Add support for Stacks TVL (#10619) * XLink * added stacks support * include some stacks tvl * revert package.json * handle stacks separately * handle stacks separately * handle stacks separately * add api.js * code refactor --------- Co-authored-by: fiftyeightandeight --- projects/helper/tokenMapping.js | 5 +++++ projects/xlink/index.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 projects/xlink/index.js diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 4a8f6ce3722..172986f2aac 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -40,6 +40,11 @@ const fixBalancesTokens = { [ADDRESSES.q.ELK]: { coingeckoId: "elk-finance", decimals: 18 }, [ADDRESSES.q.WETH]: { coingeckoId: "ethereum", decimals: 18 }, }, + stacks: { + "SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.token-vlqstx::vlqstx": { coingeckoId: "blockstack", decimals: 6 }, + "SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-abtc::bridged-btc": { coingeckoId: "xlink-bridged-btc-stacks", decimals: 8 }, + "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex::alex": { coingeckoId: "alexgo", decimals: 8 }, + }, stellar: { "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA": { coingeckoId: "stellar", decimals: 7}, "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75": { coingeckoId: "usd-coin", decimals: 7}, diff --git a/projects/xlink/index.js b/projects/xlink/index.js new file mode 100644 index 00000000000..8a9d91ab9af --- /dev/null +++ b/projects/xlink/index.js @@ -0,0 +1,31 @@ +const { sumTokensExport } = require('../helper/sumTokens'); +const ADDRESSES = require('../helper/coreAssets.json'); + +module.exports = { + methodology: "TVL of XLink is the sum of the tokens locked in its contracts", + timetravel: false, +}; + +const config = { + bitcoin: { + owners: + [ + 'bc1q9hs56nskqsxmgend4w0823lmef33sux6p8rzlp', + '32jbimS6dwSEebMb5RyjGxcmRoZEC5rFrS', + 'bc1qlhkfxlzzzcc25z95v7c0v7svlp5exegxn0tf58', + '3MJ8mbu4sNseNeCprG85emwgG9G9SCort7' + ], + }, + bsc: { owners: ['0xFFda60ed91039Dd4dE20492934bC163e0F61e7f5',], tokens: [ADDRESSES.bsc.USDT] }, + ethereum: { owners: ['0x13b72A19e221275D3d18ed4D9235F8F859626673'], tokens: [ADDRESSES.ethereum.USDT] }, + stacks: { owners: ['SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.cross-bridge-registry-v2-01', 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.btc-peg-out-endpoint-v2-01'], blacklistedTokens: [ + 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-abtc::bridged-btc', // already counted as part of bitcoin? + 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex::alex', // project linked token + ] }, +} + +Object.keys(config).forEach(chain => { + module.exports[chain] = { + tvl: sumTokensExport(config[chain]) + } +}) \ No newline at end of file From bf4d857d8bbad1cb77b6ae774cf7b41b1a98474b Mon Sep 17 00:00:00 2001 From: joltbrian <144665672+briangarden@users.noreply.github.com> Date: Wed, 12 Jun 2024 18:08:18 +0800 Subject: [PATCH 1972/2004] Add Joltify RWA Adapter (#10606) * add Joltify RWA adapter * update rwa adapter --- projects/joltify-rwa/index.js | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 projects/joltify-rwa/index.js diff --git a/projects/joltify-rwa/index.js b/projects/joltify-rwa/index.js new file mode 100644 index 00000000000..8d3810eb45e --- /dev/null +++ b/projects/joltify-rwa/index.js @@ -0,0 +1,37 @@ +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); + }); +} + +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 From 68992bc4bae25f251629a6734868da0ffb9399bf Mon Sep 17 00:00:00 2001 From: 0xmer1in <39942523+0xmer1in@users.noreply.github.com> Date: Wed, 12 Jun 2024 21:45:10 +0800 Subject: [PATCH 1973/2004] chore: update WOOFi config --- projects/woofi.js | 66 +++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/projects/woofi.js b/projects/woofi.js index f8859416270..1dcba24a856 100644 --- a/projects/woofi.js +++ b/projects/woofi.js @@ -4,16 +4,16 @@ const { staking, stakings } = require('./helper/staking') const wooPPConfig = { fantom: [ ADDRESSES.fantom.WFTM, // WFTM - '0x74b23882a30290451A17c44f4F05243b6b58C76d', // ETH - '0x321162Cd933E2Be498Cd2267a90534A804051b11', // BTC + '0x74b23882a30290451A17c44f4F05243b6b58C76d', // WETH + '0x321162Cd933E2Be498Cd2267a90534A804051b11', // WBTC '0x6626c47c00F1D87902fc13EECfaC3ed06D5E8D8a', // WOO ADDRESSES.fantom.USDC, // USDC - ADDRESSES.fantom.fUSDT, + ADDRESSES.fantom.fUSDT, // fUSDT ], bsc: [ ADDRESSES.bsc.WBNB, // WBNB ADDRESSES.bsc.ETH, // ETH - ADDRESSES.bsc.BTCB, // BTC + ADDRESSES.bsc.BTCB, // BTCB '0x4691937a7508860F876c9c0a2a617E7d9E945D4B', // WOO ADDRESSES.bsc.USDT, // USDT ADDRESSES.bsc.BUSD, // BUSD @@ -25,55 +25,59 @@ const wooPPConfig = { ADDRESSES.avax.BTC_b, // BTC.b '0xaBC9547B534519fF73921b1FBA6E672b5f58D083', // WOO.e ADDRESSES.avax.USDC, // USDC - ADDRESSES.avax.USDt, + 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 - ADDRESSES.polygon.USDT, + 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 + ADDRESSES.arbitrum.USDC, // USDC.e ADDRESSES.arbitrum.USDC_CIRCLE, // native USDC - ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDT, // USDT ], optimism: [ ADDRESSES.optimism.WETH_1, // WETH ADDRESSES.optimism.WBTC, // WBTC ADDRESSES.optimism.OP, // OP - ADDRESSES.optimism.USDC, // USDC - ADDRESSES.optimism.USDT, + 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.USDC, // USDC + ADDRESSES.era.USDC, // USDC.e + '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4', // native USDC ], polygon_zkevm: [ - ADDRESSES.polygon_zkevm.WETH, - ADDRESSES.polygon_zkevm.USDC, + ADDRESSES.polygon_zkevm.WETH, // WETH + ADDRESSES.polygon_zkevm.USDC, // USDC ], linea: [ - ADDRESSES.linea.WETH, - ADDRESSES.linea.USDC, + ADDRESSES.linea.WETH, // WETH + ADDRESSES.linea.USDC, // native USDC ], base: [ - ADDRESSES.base.WETH, - ADDRESSES.base.USDbC, + ADDRESSES.base.WETH, // WETH + ADDRESSES.base.USDbC, // USDbC + ADDRESSES.base.USDC, // native USDC ], mantle: [ - ADDRESSES.mantle.WMNT, - ADDRESSES.mantle.WETH, - ADDRESSES.mantle.USDT, - ADDRESSES.mantle.USDC, + ADDRESSES.mantle.WMNT, // WMNT + ADDRESSES.mantle.WETH, // WETH + ADDRESSES.mantle.USDT, // USDT + ADDRESSES.mantle.USDC, // USDC ], } @@ -85,31 +89,31 @@ const chainConfig = { stakingContractV2: '0x1416E1378682b5Ca53F76656549f7570ad0703d9', }, bsc: { - wooPPContract: '0x59dE3B49314Bf5067719364A2Cb43e8525ab93FA', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: '0x4691937a7508860f876c9c0a2a617e7d9e945d4b', stakingContract: '0x2AEab1a338bCB1758f71BD5aF40637cEE2085076', stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', }, avax: { - wooPPContract: '0x3b3E4b4741e91aF52d0e9ad8660573E951c88524', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: '0xabc9547b534519ff73921b1fba6e672b5f58d083', stakingContract: '0xcd1B9810872aeC66d450c761E93638FB9FE09DB0', stakingContractV2: '0x3Bd96847C40De8b0F20dA32568BD15462C1386E3', }, polygon: { - wooPPContract: '0x7081A38158BD050Ae4a86e38E0225Bc281887d7E', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: '0x1b815d120b3ef02039ee11dc2d33de7aa4a8c603', stakingContract: '0x9BCf8b0B62F220f3900e2dc42dEB85C3f79b405B', stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', }, arbitrum: { - wooPPContract: '0xeFF23B4bE1091b53205E35f3AfCD9C7182bf3062', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: '0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b', stakingContract: '0x9321785D257b3f0eF7Ff75436a87141C683DC99d', stakingContractV2: '0x2CFa72E7f58dc82B990529450Ffa83791db7d8e2', }, optimism: { - wooPPContract: '0xd1778F9DF3eee5473A9640f13682e3846f61fEbC', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: '0x871f2f2ff935fd1ed867842ff2a7bfd051a5e527', stakingContract: null, stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', @@ -121,7 +125,7 @@ const chainConfig = { stakingContractV2: '0xba91ffD8a2B9F68231eCA6aF51623B3433A89b13', }, era: { - wooPPContract: '0x42ED123EB5266A5B8E2B54B2C76180CCF5e72FEe', + wooPPContract: '0xE656d70bc3550e3EEE9dE7dC79367A44Fd13d975', woo: null, stakingContract: null, stakingContractV2: null, @@ -133,19 +137,19 @@ const chainConfig = { stakingContractV2: null, }, linea: { - wooPPContract: '0xF5d215d9C84778F85746D15762DaF39B9E83a2d6', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: null, stakingContract: null, stakingContractV2: null, }, base: { - wooPPContract: '0xb130a49065178465931d4f887056328CeA5D723f', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: null, stakingContract: null, stakingContractV2: null, }, mantle: { - wooPPContract: '0x9D1A92e601db0901e69bd810029F2C14bCCA3128', + wooPPContract: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642', woo: null, stakingContract: null, stakingContractV2: null, From bb9fc2488fd016fd74256150abd223e86cf85dcc Mon Sep 17 00:00:00 2001 From: senorpapasito Date: Wed, 12 Jun 2024 11:45:28 -0400 Subject: [PATCH 1974/2004] add mstETH apxETH mswETH to blackwing project --- projects/blackwing/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index cfe27b8300f..f1c0f529b97 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -31,6 +31,9 @@ const ETHEREUM_MAINNET_SHIB_ADDRESS = "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4c 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: { @@ -70,7 +73,10 @@ module.exports = { ETHEREUM_MAINNET_SHIB_ADDRESS, ETHEREUM_MAINNET_PEPE_ADDRESS, ETHEREUM_MAINNET_EGETH_ADDRESS, - ETHEREUM_MAINNET_PUFETH_ADDRESS + ETHEREUM_MAINNET_PUFETH_ADDRESS, + ETHEREUM_MAINNET_MSTETH_ADDRESS, + ETHEREUM_MAINNET_APXETH_ADDRESS, + ETHEREUM_MAINNET_MSWETH_ADDRESS ], owner: BLACKWING_VAULT_ETH, fetchCoValentTokens: true, }) }, From 6cc412ffcbb53dfabb519cacd5920514ccdaeb5b Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jun 2024 21:40:06 +0200 Subject: [PATCH 1975/2004] graph migration: part 1 --- package-lock.json | 6 +- projects/88mph/index.js | 72 ++++++++++++++++++----- projects/aelin/index.js | 2 - projects/aktionariat/index.js | 19 ++---- projects/atlendis/index.js | 85 +++------------------------ projects/dodo/index.js | 86 ---------------------------- projects/helper/cache.js | 2 + projects/helper/getUniSubgraphTvl.js | 6 +- projects/helper/http.js | 3 + projects/unifarm/helper.js | 3 +- projects/uniswap-v1/index.js | 2 +- projects/uniswap-v2/index.js | 2 +- projects/uniswap/index.js | 23 ++++---- projects/yieldyak/index.js | 3 +- test.js | 2 +- volume.md | 34 ----------- 16 files changed, 101 insertions(+), 249 deletions(-) delete mode 100644 volume.md diff --git a/package-lock.json b/package-lock.json index 2143492e47f..911a406bb5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.61", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.61.tgz", - "integrity": "sha512-t7nOMdpQ29y1eZmQothokRqsrfmGSTcu/ZHauvl/CvDEcUuWK+uNpdSAYG0cf93Z3XUXKH4eyRI7XLZcYR7/6w==", + "version": "5.0.67", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.67.tgz", + "integrity": "sha512-gOJACkDuPyNicL2zs0J93LkbDOkcviSaNQAvRH/wQkeXcdo7tHwN5YH59sFFE6Ge6gsCgcI0KnyuO6E0yjmo8g==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@elastic/elasticsearch": "^8.13.1", diff --git a/projects/88mph/index.js b/projects/88mph/index.js index 215d749e081..a931e7e9ed5 100644 --- a/projects/88mph/index.js +++ b/projects/88mph/index.js @@ -2,10 +2,26 @@ const sdk = require('@defillama/sdk') const { staking } = require('../helper/staking') const { getUniqueAddresses } = require('../helper/utils') -const { graphQuery } = require('../helper/http') const config = { - ethereum: { dpools: 'https://api.thegraph.com/subgraphs/name/bacon-labs/eighty-eight-mph', vPools: [ + ethereum: { dpools: [ + "0x19e10132841616ce4790920d5f94b8571f9b9341", + "0x22e6b9a65163ce1225d1f65ef7942a979d093039", + "0x23fa6b36e870ca5753853538d17c3ca7f5269e84", + "0x2f3efd1a90a2336ab8fa1b9060380dc37361ca55", + "0x303cb7ede0c3ad99ce017cdc3abacd65164ff486", + "0x35966201a7724b952455b73a36c8846d8745218e", + "0x374226dbaa3e44bf3923afb63f5fd83928b7e148", + "0x3f5611f7762cc39fc11e10c864ae38526f650e9d", + "0x6712baab01fa2dc7be6635746ec2da6f8bd73e71", + "0x681aaa7cf3f7e1f110842f0149ba8a4af53ef2fd", + "0x904f81eff3c35877865810cca9a63f2d9cb7d4dd", + "0xb1abaac351e06d40441cf2cd97f6f0098e6473f2", + "0xd4837145c7e13d580904e8431cfd481f9794fc41", + "0xdc86ac6140026267e0873b27c8629efe748e7146", + "0xe615e59353f70ca2424aa0f24f49c639b8e924d3", + "0xe8c52367b81113ed32bb276184e521c2fbe9393a", + ], vPools: [ "0x062214fbe3f15d217512deb14572eb01face0392", "0x085d70ca0dade4683d0f59d5a5b7d3298011b4de", "0x0f834c3601088d1b060c47737a2f5ce4ffa5ac1d", @@ -40,8 +56,36 @@ const config = { "0x8eb1b3ac29e0dcbd7f519c86f1eb76a3aea41b76", "0xc1f147db2b6a9c9fbf322fac3d1fbf8b8aaeec10" ] }, - avax: { dpools: 'https://api.thegraph.com/subgraphs/name/88mphapp/88mph-avalanche' }, - fantom: { dpools: 'https://api.thegraph.com/subgraphs/name/88mphapp/88mph-fantom', vPools: [ + 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", @@ -57,26 +101,24 @@ const config = { "0x2744b79c985ae0c6b81f1da8eed1a4c67eb4b732", "0xc91c2255525e80630eee710e7c0637bce7d98978" ] }, - polygon: { dpools: 'https://api.thegraph.com/subgraphs/name/88mphapp/88mph-polygon' }, + polygon: { dpools: [ + "0x0e99145166e2982bb67054a1e5d3a902fc4d2b59", + "0x3933baac41f04d0ffa0977b0e879bc56482ad667", + "0x3b79eb9675ed29554f57b719dc66a461a4c84970", + "0x4f28fc2be45682d1be1d0f155f4a52d4509db629", + "0xa78276c04d8d807feb8271fe123c1f94c08a414d", + "0xf5ef24a27f35cbe8a2b0a954acf81d7064ce6b70" + ] }, } -const dPoolQuery = `{ - dpools { - id - address - } -}` - const tvlExports = {}; Object.keys(config).forEach(chain => { - const { dpools, vPools = [], } = config[chain] + let { dpools: pools, vPools = [], } = config[chain] tvlExports[chain] = { tvl: async (api) => { const balances = {} - const logs = await graphQuery(dpools, dPoolQuery) - let pools = logs.dpools.map(i => i.address) pools.push(...vPools) pools = getUniqueAddresses(pools) const tokens = await api.multiCall({ abi: 'address:stablecoin', calls: pools }) diff --git a/projects/aelin/index.js b/projects/aelin/index.js index ce32d40dc98..9470314fdf6 100644 --- a/projects/aelin/index.js +++ b/projects/aelin/index.js @@ -10,7 +10,6 @@ const aelin_data = { { target: '0x2c0979b0de5f99c2bde1e698aeca13b55695951e', fromBlock: 13996006 }, { target: '0x5541da82549d732878c4104c9887c408790397af', fromBlock: 13846412 }, ], - 'graphUrl': 'https://api.thegraph.com/subgraphs/name/aelin-xyz/aelin', 'AELIN_ETH_LP': '0x974d51fafc9013e42cbbb9465ea03fe097824bcc', 'AELIN_ETH_staking': '0x944cb90082fc1416d4b551a21cfe6d7cc5447c80', 'AELIN': '0xa9c125bf4c8bb26f299c00969532b66732b1f758' @@ -21,7 +20,6 @@ const aelin_data = { { target: '0x87525307974a312AF13a78041F88B0BAe23ebb10', fromBlock: 1487918 }, { target: '0x914ffc8dc0678911aae77f51b8489d6e214da20f', fromBlock: 1971285 }, ], - 'graphUrl': 'https://api.thegraph.com/subgraphs/name/aelin-xyz/optimism', 'AELIN': '0x61BAADcF22d2565B0F471b291C475db5555e0b76', 'AELIN_staking': '0xfe757a40f3eda520845b339c698b321663986a4d', 'AELIN_ETH_LP': '0x665d8D87ac09Bdbc1222B8B9E72Ddcb82f76B54A', diff --git a/projects/aktionariat/index.js b/projects/aktionariat/index.js index 38c548467a7..206de03205a 100644 --- a/projects/aktionariat/index.js +++ b/projects/aktionariat/index.js @@ -1,5 +1,4 @@ -const { request, gql } = require('graphql-request'); -const { sumTokens2 } = require('../helper/unwrapLPs') +const { cachedGraphQuery } = require('../helper/cache') const graphs = { ethereum: "https://api.thegraph.com/subgraphs/name/aktionariat/brokerbot", @@ -8,11 +7,8 @@ const graphs = { function tvlPaged(chain) { return async (api) => { - const block = await api.getBlock() const size = 1000 - let lastId = '' - let brokerbots - let graphQueryPaged = gql` + let graphQueryPaged = ` query brokerbotQuery($lastId: String, $block: Int) { brokerbots(block: { number: $block } first:${size} where: {id_gt: $lastId totalValueLockedUSD_gt: 100}) { id @@ -21,14 +17,9 @@ function tvlPaged(chain) { } } ` - - do { - const res = await request(graphs[chain], graphQueryPaged, { lastId, block: block - 5000 }); - brokerbots = res.brokerbots - const tokensAndOwners = brokerbots.map(i => ([[i.token.id, i.id], [i.base.id, i.id]])).flat() - await sumTokens2({ tokensAndOwners, api }) - lastId = brokerbots[brokerbots.length - 1]?.id - } while (brokerbots.length === size) + 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 }) } } diff --git a/projects/atlendis/index.js b/projects/atlendis/index.js index 218c42d3fd5..974018c13e6 100644 --- a/projects/atlendis/index.js +++ b/projects/atlendis/index.js @@ -1,81 +1,12 @@ -const { GraphQLClient, gql } = require('graphql-request') -const { getBlock } = require('../helper/http') -const sdk = require('@defillama/sdk') - - -async function fetchData(block, balances, transform, borrowed = false) { - const baseUrl = 'https://api.thegraph.com/subgraphs/name/atlendis'; - const urlPolygon = `${baseUrl}/atlendis-hosted-service-polygon`; - const graphQLClient = new GraphQLClient(urlPolygon) - - const query = gql` - query get_tvl($block: Int) { - poolStatuses (block: { number: $block }) { - state - pool { - id - identifier - parameters { - underlyingToken - } - } - normalizedAvailableAmount - normalizedBorrowedAmount - adjustedPendingAmount - } - } - `; - - // pull data - const data = await graphQLClient.request(query, { - block: block - 50 - }); - - // calculate TVL - const agEUR = 'polygon:0xe0b52e49357fd4daf2c15e02058dce6bc0057db4'.toLowerCase() - if (!borrowed) { - for (let i = 0; i < data.poolStatuses.length; i++) { - let amount = parseInt(data.poolStatuses[i].normalizedAvailableAmount) - let assetAddress = data.poolStatuses[i].pool.parameters.underlyingToken; - - assetAddress = transform(assetAddress); - if (assetAddress === agEUR) amount *= 1e12 - sdk.util.sumSingleBalance(balances, assetAddress, amount / 1e12) - } - } else { - for (let i = 0; i < data.poolStatuses.length; i++) { - let amount = parseInt(data.poolStatuses[i].normalizedBorrowedAmount) - + parseInt(data.poolStatuses[i].adjustedPendingAmount); - let assetAddress = data.poolStatuses[i].pool.parameters.underlyingToken; - - assetAddress = transform(assetAddress); - if (assetAddress === agEUR) amount *= 1e12 - sdk.util.sumSingleBalance(balances, assetAddress, amount / 1e12) - } - } -} - - -async function tvl(timestamp, _, chainBlocks) { - const balances = {}; - const block = await getBlock(timestamp, 'polygon', chainBlocks) - const transform = i => `polygon:${i}`; - await fetchData(block, balances, transform); - return balances; -} - -async function borrowed(timestamp, _, chainBlocks) { - const balances = {}; - const transform = i => `polygon:${i}`; - const block = await getBlock(timestamp, 'polygon', chainBlocks) - await fetchData(block, balances, transform, true); - return balances; -} - +const { sumTokensExport } = require('../helper/unwrapLPs'); module.exports = { - polygon: { - tvl, - borrowed, + polygon: { + tvl: sumTokensExport({ owners: ['0xbc13e1B5DA083b10622Ff5B52c9cFa1912F10B1F', '0x2fA375961A0cB525dB0f00af4E081a806A8639Fd'], tokens: [ + '0x60D55F02A771d515e077c9C2403a1ef324885CeC', + '0x1a13f4ca1d028320a707d99520abfefca3998b7f', + '0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4', + ], }), + borrowed: () => ({}), } }; \ No newline at end of file diff --git a/projects/dodo/index.js b/projects/dodo/index.js index 518429908e8..f2fd2fac38d 100644 --- a/projects/dodo/index.js +++ b/projects/dodo/index.js @@ -1,92 +1,6 @@ -const { request, } = require("graphql-request"); -const { getBlock } = require('../helper/http') -const sdk = require('@defillama/sdk') const { getLogs } = require('../helper/cache/getLogs') const ADDRESSES = require('../helper/coreAssets.json') -const graphEndpoints = { - // ethereum: "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2", - // "bsc": "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2-bsc", - // //"heco": "https://q.hg.network/subgraphs/name/dodoex/heco", - // "polygon": "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2-polygon", - // "arbitrum": "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2-arbitrum", - // "aurora": "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2-aurora", - // "avax": "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2-avax", - // "optimism": "https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2-optimism", - // "base": "https://api.studio.thegraph.com/query/2860/dodoex_v2_base/v0.0.5", - // "linea": "https://api.dodoex.io/graphql?chainId=59144&schemaName=dodoex&apikey=graphqldefiLlamadodoYzj5giof", - // "scroll": "https://api.dodoex.io/graphql?chain=src&schemaName=dodoex&apikey=graphqldefiLlamadodoYzj5giof", // ChainId mapping error, so using chain - // "manta": "https://api.dodoex.io/graphql?chainId=169&schemaName=dodoex&apikey=graphqldefiLlamadodoYzj5giof", - // "mantle": "https://api.dodoex.io/graphql?chainId=5000&schemaName=dodoex&apikey=graphqldefiLlamadodoYzj5giof" -} -const graphQuery = `query get_pairs($lastId: ID, $block: Int!) { - pairs( - first: 1000 - block: {number: $block} - where: {and: [{id_gt: $lastId}, {or: [{baseReserve_gt: 0}, {quoteReserve_gt: 0}]}]} - ) { - id - baseReserve - quoteReserve - baseToken { - id - symbol - usdPrice - decimals - } - quoteToken { - id - symbol - usdPrice - decimals - } - } -}` - -Object.keys(graphEndpoints).forEach(chain => { - module.exports[chain] = { - tvl: async (ts, _, chainBlocks) => { - - const block = await getBlock(ts, chain, chainBlocks) - let allPairs = [] - let lastId = "" - let response; - do { - response = await request( - graphEndpoints[chain], - graphQuery, - { lastId, block: block - 500, } - ); - allPairs = allPairs.concat(response.pairs) - lastId = response.pairs[response.pairs.length - 1].id - } while (response.pairs.length >= 1000); - - const balances = {} - const blacklist = [ - '0xd79d32a4722129a4d9b90d52d44bf5e91bed430c', - '0xdb1e780db819333ea79c9744cc66c89fbf326ce8', // this token is destroyed - '0xa88c5693c9c2549a75acd2b44f052f6a5568e918', // this token is destroyed - '0x738076a6cb6c30d906bcb2e9ba0e0d9a58b3292e', // SRSB is absuredly priced - '0x95e7c70b58790a1cbd377bc403cd7e9be7e0afb1', // YSL is absuredly priced - '0x2b1e9ded77ff8ecd81f71ffc5751622e6f1291c3', // error querying balance - '0x272c2CF847A49215A3A1D4bFf8760E503A06f880', // abnb LP mispriced - '0xd4ca5c2aff1eefb0bea9e9eab16f88db2990c183', // XRPC - ].map(i => i.toLowerCase()) - - allPairs.forEach(pair => { - if (pair.id.includes('-')) - return null - if (!blacklist.includes(pair.baseToken.id.toLowerCase()) && +pair.baseReserve > 1 && +pair.baseToken.usdPrice > 0) - sdk.util.sumSingleBalance(balances, chain + ':' + pair.baseToken.id, pair.baseReserve * (10 ** pair.baseToken.decimals)) - if (!blacklist.includes(pair.quoteToken.id.toLowerCase()) && +pair.quoteReserve > 1 && +pair.quoteToken.usdPrice > 0) - sdk.util.sumSingleBalance(balances, chain + ':' + pair.quoteToken.id, pair.quoteReserve * (10 ** pair.quoteToken.decimals)) - }) - - return balances - } - } -}) - const config = { ethereum: { dvmFactory: '0x72d220cE168C4f361dD4deE5D826a01AD8598f6C', dodoBirthFactory: '0x3a97247df274a17c59a3bd12735ea3fcdfb49950', fromBlock: 10613640, dspFactory: '0x6fddb76c93299d985f4d3fc7ac468f9a168577a4', dppFactory: ['0x5336ede8f971339f6c0e304c66ba16f1296a2fbe', '0xb5dc5e183c2acf02ab879a8569ab4edaf147d537', '0x6b4fa0bc61eddc928e0df9c7f01e407bfcd3e5ef'] }, arbitrum: { dvmFactory: '0xDa4c4411c55B0785e501332354A036c04833B72b', fromBlock: 226578, dspFactory: '0xC8fE2440744dcd733246a4dB14093664DEFD5A53', dodoBirthFactory: '0xbcc3401e16c25eaf4d3fed632ce3288503883b1f', dppFactory: ['0xDdB13e6dd168E1a68DC2285Cb212078ae10394A9', '0xa6cf3d163358af376ec5e8b7cc5e102a05fde63d'] }, diff --git a/projects/helper/cache.js b/projects/helper/cache.js index 2af57d6be66..35637146045 100644 --- a/projects/helper/cache.js +++ b/projects/helper/cache.js @@ -106,6 +106,7 @@ async function configPost(project, endpoint, data) { async function cachedGraphQuery(project, endpoint, query, { api, useBlock = false, variables = {}, fetchById, safeBlockLimit, } = {}) { 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() @@ -137,6 +138,7 @@ async function cachedGraphQuery(project, endpoint, query, { api, useBlock = fals async function graphFetchById({ endpoint, query, params = {}, api, options: { useBlock = false, safeBlockLimit = 500 } = {} }) { if (useBlock && !params.block) params.block = await api.getBlock() - safeBlockLimit + endpoint = sdk.graph.modifyEndpoint(endpoint) let data = [] let lastId = "" diff --git a/projects/helper/getUniSubgraphTvl.js b/projects/helper/getUniSubgraphTvl.js index 2958f965233..d48eefa6f8d 100644 --- a/projects/helper/getUniSubgraphTvl.js +++ b/projects/helper/getUniSubgraphTvl.js @@ -1,6 +1,7 @@ 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` @@ -17,11 +18,12 @@ query get_tvl($block: Int) { await api.getBlock() const block = api.block let uniswapFactories + const endpoint = sdk.graph.modifyEndpoint(graphUrls[chain]) if (!blockCatchupLimit) { - uniswapFactories = (await request(graphUrls[chain], graphQuery, { block, }))[factoriesName]; + uniswapFactories = (await request(endpoint, graphQuery, { block, }))[factoriesName]; } else { - uniswapFactories = (await blockQuery(graphUrls[chain], graphQuery, { api, blockCatchupLimit, }))[factoriesName]; + uniswapFactories = (await blockQuery(endpoint, graphQuery, { api, blockCatchupLimit, }))[factoriesName]; } const usdTvl = Number(uniswapFactories[0][tvlName]) diff --git a/projects/helper/http.js b/projects/helper/http.js index a33215ba15b..327b3436e7a 100644 --- a/projects/helper/http.js +++ b/projects/helper/http.js @@ -49,6 +49,8 @@ async function post(endpoint, body, options) { } 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 @@ -63,6 +65,7 @@ async function graphQuery(endpoint, graphQuery, params = {}, { api, timestamp, c } 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 diff --git a/projects/unifarm/helper.js b/projects/unifarm/helper.js index d73021b1fb8..c15e19c096c 100644 --- a/projects/unifarm/helper.js +++ b/projects/unifarm/helper.js @@ -1,3 +1,4 @@ +const { cachedGraphQuery } = require('../helper/cache') const { graphQuery, } = require('../helper/http') const { sleep, log } = require('../helper/utils') const v1Data = require('./v1Data.json') @@ -95,7 +96,7 @@ const getV1Calls = async (chain) => { }; const getV2Calls = async (chain) => { - const { cohorts } = await graphQuery(v2EndPoints[chain], v2Query) + const { cohorts } = await cachedGraphQuery('unifarm/'+chain, v2EndPoints[chain], v2Query) let calls = []; for (let i = 0; i < cohorts.length; i++) { const owner = cohorts[i].id diff --git a/projects/uniswap-v1/index.js b/projects/uniswap-v1/index.js index 4cf14122185..305756f2744 100644 --- a/projects/uniswap-v1/index.js +++ b/projects/uniswap-v1/index.js @@ -1,7 +1,7 @@ const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const v1graph = getChainTvl({ - ethereum: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap' + ethereum: 'ESnjgAG9NjfmHypk4Huu4PVvz55fUwpyrRqHF21thoLJ' }, "uniswaps", "totalLiquidityUSD") module.exports = { diff --git a/projects/uniswap-v2/index.js b/projects/uniswap-v2/index.js index f6c9eca2897..631ec062bdf 100644 --- a/projects/uniswap-v2/index.js +++ b/projects/uniswap-v2/index.js @@ -2,7 +2,7 @@ const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const { getUniTVL } = require('../helper/unknownTokens'); const v2graph = getChainTvl({ - ethereum: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v2-dev' + ethereum: 'A3Np3RQbaBA6oKJgiwDJeo5T3zrYfGHPWFYayMwtNDum' }) module.exports = { diff --git a/projects/uniswap/index.js b/projects/uniswap/index.js index 96e2f770709..c8d11e93080 100644 --- a/projects/uniswap/index.js +++ b/projects/uniswap/index.js @@ -3,14 +3,14 @@ const { cachedGraphQuery, configPost } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') const graphs = { - ethereum: "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3", - optimism: "https://api.thegraph.com/subgraphs/name/ianlapham/optimism-post-regenesis", - arbitrum: 'https://api.thegraph.com/subgraphs/name/ianlapham/arbitrum-dev', - polygon: "https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-polygon", - celo: "https://api.thegraph.com/subgraphs/name/jesse-sawa/uniswap-celo", - bsc: "https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-bsc", - avax: "https://api.thegraph.com/subgraphs/name/lynnshaoyu/uniswap-v3-avax", - base: "https://api.studio.thegraph.com/query/48211/uniswap-v3-base/version/latest", + ethereum: "5AXe97hGLfjgFAc6Xvg6uDpsD5hqpxrxcma9MoxG7j7h", + optimism: "Cghf4LfVqPiFw6fp6Y5X5Ubc8UpmUhSfJL82zwiBFLaj", + arbitrum: 'FbCGRftH4a3yZugY7TnbYgPJVEv2LvMT6oF1fxPe9aJM', + polygon: "3hCPRGf4z88VC5rsBKU5AA9FBBq5nF3jbKJG7VZCbhjm", + celo: "ESdrTJ3twMwWVoQ1hUE2u7PugEHX3QkenudD6aXCkDQ4", + bsc: "F85MNzUGYqgSHSHRGgeVMNsdnW1KtZSVgFULumXRZTw2", + // avax: "3Pwd3cqFKbqKAyaJfGUVmJJ7oYbFQLDa19iB27iMxebD", + base: "43Hwfi3dJSoGpyas9VwNoDAv55yjgGrPpNSmbQZArzMG", } const blacklists = { @@ -82,14 +82,15 @@ module.exports = { scroll: { factory: "0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919", fromBlock: 1367, }, blast: { factory: "0x792edade80af5fc680d96a2ed80a44247d2cf6fd", fromBlock: 400903, }, linea: { factory: "0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9", fromBlock: 25247, }, - manta: {factory: "0x06D830e15081f65923674268121FF57Cc54e4e23", fromBlock: 1191705}, - taiko: {factory: "0x75FC67473A91335B5b8F8821277262a13B38c9b3", fromBlock: 961} + manta: { factory: "0x06D830e15081f65923674268121FF57Cc54e4e23", fromBlock: 1191705 }, + avax: { factory: "0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD", fromBlock: 27832972 }, + taiko: { factory: "0x75FC67473A91335B5b8F8821277262a13B38c9b3", fromBlock: 961 } }), filecoin: { tvl: filecoinTvl }, } -const chains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'bsc', 'avax', 'base'] +const chains = ['ethereum', 'arbitrum', 'optimism', 'polygon', 'bsc', 'base'] chains.forEach(chain => { module.exports[chain] = { diff --git a/projects/yieldyak/index.js b/projects/yieldyak/index.js index 5d77fe99e15..be43bc71280 100644 --- a/projects/yieldyak/index.js +++ b/projects/yieldyak/index.js @@ -1,7 +1,8 @@ const { staking } = require('../helper/staking'); const { cachedGraphQuery, getConfig } = require('../helper/cache') +const sdk = require('@defillama/sdk') -const graphUrl = 'https://api.thegraph.com/subgraphs/name/yieldyak/reinvest-tracker' +const graphUrl = sdk.graph.modifyEndpoint('7oSYYdK5RKmqggdzFyfUnojP6puDAj31C4ezDGrgVfk9') const graphQuery = `{ farms(first: 1000) { id }}`; async function tvl(api) { diff --git a/test.js b/test.js index c77936d29d5..b25607f0750 100644 --- a/test.js +++ b/test.js @@ -27,7 +27,7 @@ const currentCacheVersion = sdk.cache.currentVersion // load env for cache if (process.env.LLAMA_SANITIZE) Object.keys(process.env).forEach((key) => { if (key.endsWith('_RPC')) return; - if (['TVL_LOCAL_CACHE_ROOT_FOLDER', 'LLAMA_DEBUG_MODE', ...ENV_KEYS].includes(key) || key.includes('SDK')) return; + if (['TVL_LOCAL_CACHE_ROOT_FOLDER', 'LLAMA_DEBUG_MODE', 'GRAPH_API_KEY', ...ENV_KEYS].includes(key) || key.includes('SDK')) return; delete process.env[key] }) process.env.SKIP_RPC_CHECK = 'true' diff --git a/volume.md b/volume.md deleted file mode 100644 index 03e6490bc40..00000000000 --- a/volume.md +++ /dev/null @@ -1,34 +0,0 @@ -#### 1inch -https://api.thegraph.com/subgraphs/name/1inch-exchange/oneinch-liquidity-protocol-v2 - -#### Balancer -https://api.thegraph.com/subgraphs/name/balancer-labs/balancer - -#### Bancor -https://thegraph.com/explorer/subgraph/blocklytics/bancor - -#### Carthage -https://thegraph.cndlchain.com/subgraphs/name/ianlapham/uniswap-v3-test - -#### Curve -https://www.curve.fi/raw-stats/ren-1440m.json //where ren is the pool name - -#### Dodo -https://thegraph.com/explorer/subgraph/dodoex/dodoex-v2 - -#### Dydx -https://docs.dydx.exchange/#get-markets - -#### Pancake Swap -https://api.pancakeswap.finance/api/v1/stat - -#### Champagne Swap -https://api.thegraph.com/subgraphs/name/champagneswap/exchangev3 - - -#### Perp -https://thegraph.com/explorer/subgraph/perpetual-protocol/perp-position-subgraph -https://perp.gq/pairs - -#### Uniswap -https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2 From 3f1e0d3c9368901e86be6ee1fec41c1ff0dec356 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Wed, 12 Jun 2024 23:09:36 +0200 Subject: [PATCH 1976/2004] graph migration: part 2 --- projects/behodler/index.js | 29 ---- projects/bishares/config.js | 3 - projects/bunicorn/index.js | 84 ++--------- projects/chickenswap/index.js | 3 - projects/enso-finance/index.js | 47 +----- projects/gardensdao/index.js | 119 ++------------- projects/kleros/index.js | 12 +- projects/kyber/index.js | 16 +- projects/mcdex/index.js | 62 +++----- projects/olympus/index.js | 6 +- projects/origami/index.js | 1 + projects/platypus-finance/index.js | 1 + projects/quickswap/index.js | 2 +- projects/sablier-v2/index.js | 10 +- projects/soulswap/abis/factory.json | 4 - projects/soulswap/helper/getUsdSoulTvl.js | 171 ---------------------- projects/soulswap/index.js | 24 ++- 17 files changed, 93 insertions(+), 501 deletions(-) delete mode 100644 projects/soulswap/abis/factory.json delete mode 100644 projects/soulswap/helper/getUsdSoulTvl.js diff --git a/projects/behodler/index.js b/projects/behodler/index.js index 5965599a20f..42234bdf24f 100644 --- a/projects/behodler/index.js +++ b/projects/behodler/index.js @@ -1,36 +1,7 @@ const ADDRESSES = require('../helper/coreAssets.json') -const { request, gql } = require("graphql-request"); -const { toUSDTBalances } = require('../helper/balances'); const { sumTokensExport } = require("../helper/unwrapLPs"); -const graphUrl = 'https://api.thegraph.com/subgraphs/name/arrenv/behodler' -const graphQuery = gql` -query get_tvl($block: Int) { - behodlers( - block: { number: $block } - ) { - id - usdVolume - usdLiquidity - } -} -`; - -async function tvl(timestamp, block) { - const {behodlers} = await request( - graphUrl, - graphQuery, - { - block, - } - ); - const usdTvl = Number(behodlers[0].usdLiquidity) - - return toUSDTBalances(usdTvl) -} - module.exports = { - methodology: `ERC20 tokens deposited as liquidity on the AMM. You can see this on https://analytics.behodler.io/#/, pulling the data from the 'arrenv/behodler' subgraph`, ethereum:{ tvl: sumTokensExport({ owner: '0x1B8568FbB47708E9E9D31Ff303254f748805bF21', diff --git a/projects/bishares/config.js b/projects/bishares/config.js index ea8301d2b21..d62ab01cddb 100644 --- a/projects/bishares/config.js +++ b/projects/bishares/config.js @@ -1,8 +1,5 @@ const ADDRESSES = require('../helper/coreAssets.json') // data taken from -// https://api.thegraph.com/subgraphs/name/toffick/bisharesfunds -// https://api.thegraph.com/subgraphs/name/bisharesindexfund/bisharesfunds-ybf-fantom -// https://api.thegraph.com/subgraphs/name/toffick/bisharesfunds-fantom module.exports = { toa: { diff --git a/projects/bunicorn/index.js b/projects/bunicorn/index.js index 538e54a77b6..1460356ccd6 100644 --- a/projects/bunicorn/index.js +++ b/projects/bunicorn/index.js @@ -1,79 +1,23 @@ -const BigNumber = require("bignumber.js"); -const { toUSDTBalances } = require("../helper/balances"); const sdk = require("@defillama/sdk"); -const { request, gql } = require("graphql-request"); -const tokenSubgraphUrl = - "https://api.thegraph.com/subgraphs/name/bunicorndefi/buni-token"; -const stableSubgraphUrl = - "https://api.thegraph.com/subgraphs/name/bunicorndefi/buni-stablecoins"; +const { v1Tvl } = require("../helper/balancer"); +const { uniTvlExport } = require('../helper/unknownTokens') const BUNI_CONTRACT_ADDRESS = "0x0e7beec376099429b85639eb3abe7cf22694ed49"; -const MASTERCHEF_CONTRACT_ADDRESS = - "0xA12c974fE40ea825E66615bA0Dc4Fd19be4D7d24"; +const MASTERCHEF_CONTRACT_ADDRESS = "0xA12c974fE40ea825E66615bA0Dc4Fd19be4D7d24"; -const graphTotalTokenTVLQuery = gql` -{\n bunis(where: {id: \"1\"}) {\n totalLiquidity\n }\n} -`; -const graphTotalStableTVLQuery = gql` -{\n buniCornFactories( where: {id: \"0x86873f85bc12ce40321340392c0ff39c3bdb8d68\"}) {\n id\n totalLiquidityUSD\n }\n\n} -`; - -async function getTotalFarmTVL(timestamp, ethBlock, chainBlocks) { - try { - const balances = {}; - const stakedBuni = sdk.api.erc20.balanceOf({ - target: BUNI_CONTRACT_ADDRESS, - owner: MASTERCHEF_CONTRACT_ADDRESS, - chain: "bsc", - block: chainBlocks.bsc, - }); - sdk.util.sumSingleBalance( - balances, - "bsc:" + BUNI_CONTRACT_ADDRESS, - (await stakedBuni).output - ); - return balances; - } catch (e) { - throw new Error("getTotalFarmTVL has exception:" + e.message); - } -} -async function getTotalTokenTVL(timestamp, ethBlock, chainBlocks) { - try { - const { bunis } = await request(tokenSubgraphUrl, graphTotalTokenTVLQuery, { - block: chainBlocks.bsc, - }); - return (bunis[0] && bunis[0].totalLiquidity) || 0; - } catch (e) { - throw new Error("getTotalTokenTVL has exception:" + e.message); - } -} -async function getTotalStableTVL(timestamp, ethBlock, chainBlocks) { - try { - const { buniCornFactories } = await request( - stableSubgraphUrl, - graphTotalStableTVLQuery, - { - block: chainBlocks.bsc, - } - ); - return ( - (buniCornFactories[0] && buniCornFactories[0].totalLiquidityUSD) || 0 - ); - } catch (e) { - throw new Error("getTotalStableTVL has exception:" + e.message); - } -} -async function getTotalTVL(timestamp, ethBlock, chainBlocks) { - const [tokensSummary, stableSummary] = await Promise.all([ - getTotalTokenTVL(timestamp, ethBlock, chainBlocks), - getTotalStableTVL(timestamp, ethBlock, chainBlocks), - ]); - return toUSDTBalances(new BigNumber(tokensSummary).plus(stableSummary)); +async function staking(api) { + return api.sumTokens({ owner: MASTERCHEF_CONTRACT_ADDRESS, tokens: [BUNI_CONTRACT_ADDRESS] }); } module.exports = { - misrepresentedTokens: true, bsc: { - tvl: getTotalTVL, - staking: getTotalFarmTVL, + tvl: v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), + tvl: sdk.util.sumChainTvls([v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), uniTvlExport('bsc', '0x86873f85bc12ce40321340392c0ff39c3bdb8d68', { + abis: { + allPairsLength: 'uint256:allPoolsLength', + allPairs: 'function allPools(uint256) view returns (address)', + }, + fetchBalances: true, + }).bsc.tvl]), + staking, }, }; diff --git a/projects/chickenswap/index.js b/projects/chickenswap/index.js index a26158a4c6d..4e70c594657 100644 --- a/projects/chickenswap/index.js +++ b/projects/chickenswap/index.js @@ -67,7 +67,4 @@ module.exports = { pool2: pool2(chickenChefContract, WETH_KFC_UNIV2), tvl: sdk.util.sumChainTvls([dexTVL, ethTvl,]), }, - methodology: - `We count liquidity on the Vaults (only single tokens) through ChickenChef Contract and the liquuidity on the AMM Pools (only pairs) - pulling data from the subgraph at https://api.thegraph.com/subgraphs/name/chickenswap/graph`, }; \ No newline at end of file diff --git a/projects/enso-finance/index.js b/projects/enso-finance/index.js index 7cacc683721..10f6ea4e268 100644 --- a/projects/enso-finance/index.js +++ b/projects/enso-finance/index.js @@ -1,48 +1,17 @@ -const sdk = require('@defillama/sdk'); -const { request, gql } = require('graphql-request'); +const { sumTokensExport } = require('../helper/unwrapLPs'); // Enso finance TVL lies for now in the index tokens held by the liquidityMigration contracts const liquidityMigrationV2_contract = '0x0c6D898ac945E493D25751Ea43BE2c8Beb881D8C'; -const graphUrl = 'https://api.thegraph.com/subgraphs/name/ensofinance/enso-liquidity-migration' -const graphQuery = gql` -query GET_WHITELISTED_TOKENS($block: Int) { - tokens ( - first: 1000 - skip: 0 - block: { number: $block } - ) { - id - name - stakedAmount - } -}` - -async function tvl(timestamp, block) { - const { tokens } = await request( - graphUrl, - graphQuery, - {block} - ); - const tokens_contracts = tokens.map(t => t.id) - - const tokenBalances = await sdk.api.abi.multiCall({ - calls: tokens_contracts.map((t) => ({ - target: t, - params: [liquidityMigrationV2_contract], - })), - abi: 'erc20:balanceOf', - block, - chain: 'ethereum', - }) - - const balances = {}; - sdk.util.sumMultiBalanceOf(balances, tokenBalances); - return balances; -} module.exports = { ethereum: { - tvl, + 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`, diff --git a/projects/gardensdao/index.js b/projects/gardensdao/index.js index 2c27b67ad87..d9261a3f905 100644 --- a/projects/gardensdao/index.js +++ b/projects/gardensdao/index.js @@ -1,18 +1,9 @@ -const { request, gql } = require("graphql-request"); -const sdk = require('@defillama/sdk') +const SUBGRAPH_GARDENS_XDAI = "G4EbcSW588SUy8CdprPPxCN69VN8mxvnwt4oyR6YpGza"; +const { cachedGraphQuery } = require('../helper/cache') -const SUBGRAPH_HONEYSWAP_V2 = - "https://api.thegraph.com/subgraphs/name/1hive/honeyswap-v2"; -const SUBGRAPH_GARDENS_XDAI = - "https://api.thegraph.com/subgraphs/name/1hive/gardens-xdai"; - - -const balanceAbi = 'function balance(address _token) view returns (uint256)' - - -const ALL_ORGS_GQL = gql` - query allOrgs($lastID: ID) { - organizations(first: 1000, where: { id_gt: $lastID, active: true }) { +const ALL_ORGS_GQL = ` + query allOrgs($lastId: ID) { + organizations(first: 1000, where: { id_gt: $lastId, active: true }) { id token { name @@ -31,100 +22,22 @@ const ALL_ORGS_GQL = gql` active } } -`; - -const ALL_TOKEN_PRICE_QUERY = gql` - query pricesTokens($tokenAddress: [ID]) { - tokens(where: { id_in: $tokenAddress }) { - id - derivedETH - tradeVolume - tradeVolumeUSD - untrackedVolumeUSD - totalLiquidity - } - } -`; - -async function getAllOrgs() { - let allFound = false; - let lastID = ""; - let data = []; - - while (!allFound) { - const orgs = await request( - SUBGRAPH_GARDENS_XDAI, - ALL_ORGS_GQL, - { lastID } - ); - - const numOrgs = orgs.organizations.length; - - if (numOrgs < 1000) { - allFound = true; - } - lastID = orgs.organizations[numOrgs - 1].id; - data = data.concat(orgs.organizations); - } - return data; -} - -const chain = 'xdai' - -async function tvl(timestamp, _block, { xdai: block }) { - const balances = {}; - - const orgs = await getAllOrgs() - const calls = orgs.map(org => { - return { params: org.config.conviction?.requestToken.id, target: org.config.conviction?.fundsManager, } - }).filter(i => i.params && i.target) - - const { output } = await sdk.api.abi.multiCall({ - abi: balanceAbi, - calls, chain, block, - permitFailure: true, - }) - - output.forEach(({ input, output }) => { - if (output) sdk.util.sumSingleBalance(balances, input.params[0].toLowerCase(), output) - }) - - const tokens = Object.keys(balances) - const calls2 = tokens.map(i => ({ target: i })) - - const { output: decimals } = await sdk.api.abi.multiCall({ - abi: 'erc20:decimals', - calls: calls2, - chain, block, +` + +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 }) - decimals.forEach(({ input: { target: token }, output: decimal }) => { - balances[token] /= 10 ** +decimal - }) - - const tokenPrices = await request( - SUBGRAPH_HONEYSWAP_V2, - ALL_TOKEN_PRICE_QUERY, - { tokenAddress: tokens } - ) - - let tvl = 0 - - tokenPrices.tokens.forEach(({ id, totalLiquidity, derivedETH }) => { - if (+totalLiquidity < 1e4 || !balances[id] || !derivedETH) // if liquidity is below 10k or token not found or price is missing, ignore and move on - return; - tvl += +balances[id] * +derivedETH - }) - - return { - tether: tvl - } } module.exports = { - methodology: - '"Uses Gardens and Honeyswap Subgraph to finds USD value of Common Pool treasuries for tokens with greater than $10k of liquidity on Honeyswap"', - misrepresentedTokens: true, xdai: { tvl, }, diff --git a/projects/kleros/index.js b/projects/kleros/index.js index 91d11f59357..85cf7f353ed 100644 --- a/projects/kleros/index.js +++ b/projects/kleros/index.js @@ -1,12 +1,12 @@ -const { request, gql } = require("graphql-request"); const { getBlock } = require('../helper/http') +const sdk = require('@defillama/sdk') const graphUrls = { - ethereum: 'https://api.thegraph.com/subgraphs/name/salgozino/klerosboard', - xdai: 'https://api.thegraph.com/subgraphs/name/salgozino/klerosboard-xdai', + ethereum: 'ECENsJRfqi6Mwj6kF9diShPzFKkgyyo79aSCkSwAShHL', + xdai: 'Ck26N16xgimEuuuNSJqYVWBKcWSwPmkk36BWZGtfx1ox', } -const totalStakedQuery = gql` +const totalStakedQuery = ` query($block: Int) { klerosCounters(block: { number: $block }) { tokenStaked @@ -21,10 +21,10 @@ function getStakedTvl(chain) { const graphUrl = graphUrls[chain] const block = await getBlock(timestamp, chain, chainBlocks) - const { klerosCounters } = await request( + const { klerosCounters } = await sdk.graph.request( graphUrl, totalStakedQuery, - { block: block - 500 } + { variables: { block: block - 500 }} ) balances.kleros = klerosCounters[0].tokenStaked / (10 ** 18); diff --git a/projects/kyber/index.js b/projects/kyber/index.js index 9374d46c2e5..6b7254639ed 100644 --- a/projects/kyber/index.js +++ b/projects/kyber/index.js @@ -1,4 +1,4 @@ -const { graphQuery } = require("../helper/http"); +const { cachedGraphQuery } = require("../helper/cache"); const { sumTokens2 } = require('../helper/unwrapLPs') const chains = { @@ -47,8 +47,6 @@ async function fetchPools(chain) { case "scroll": url = 'https://scroll-graph.kyberengineering.io/subgraphs/name/kybernetwork/kyberswap-elastic-scroll'; break; default: url = `https://api.thegraph.com/subgraphs/name/kybernetwork/kyberswap-elastic-${chain}`; } - let length - let lastId = '' let toa = []; const poolQuery = ` query pools($lastId: String) { @@ -62,25 +60,21 @@ async function fetchPools(chain) { } } }`; - do { - const {pools} = await graphQuery(url, poolQuery, { lastId }) + 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]) }) - lastId = pools[pools.length - 1].id - } while (length === 1000) return toa; } function elastic(chain) { - return async (_, block, chainBlocks) => { + return async (api) => { if (!("graphId" in chains[chain])) return {}; - block = chainBlocks[chain]; const pools = await fetchPools(chains[chain].graphId); - return sumTokens2({ chain, block, tokensAndOwners: pools }) + return sumTokens2({ api, tokensAndOwners: pools }) } } @@ -96,3 +90,5 @@ Object.keys(chains).forEach(chain => { tvl: elastic(chain) }; }); + +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/mcdex/index.js b/projects/mcdex/index.js index 7646a75a0c1..f801a5f6bf3 100644 --- a/projects/mcdex/index.js +++ b/projects/mcdex/index.js @@ -1,47 +1,33 @@ -const {gql} = require('graphql-request') -const { blockQuery } = require('../helper/http') -const {toUSDTBalances} = require('../helper/balances'); +const { getLogs2 } = require('../helper/cache/getLogs') const { sumTokens2, nullAddress } = require('../helper/unwrapLPs') async function ethereum(timestamp, block) { - return sumTokens2({ block, owner: '0x220a9f0DD581cbc58fcFb907De0454cBF3777f76', tokens: [nullAddress]}) + return sumTokens2({ block, owner: '0x220a9f0DD581cbc58fcFb907De0454cBF3777f76', tokens: [nullAddress] }) } -async function getTVL(subgraphName, api) { - const endpoint = `https://api.thegraph.com/subgraphs/name/mcdexio/${subgraphName}` - - const query = gql` - query getTvl ($block: Int) { - factories ( - block: { number: $block } - ){ - id - totalValueLockedUSD - } - } - `; - const results = await blockQuery(endpoint, query, { api, blockCatchupLimit: 600, }) - return results.factories[0].totalValueLockedUSD; -} - -async function arbitrum(api) { - return toUSDTBalances(await getTVL("mcdex3-arb-perpetual", api)) +module.exports = { + methodology: `Includes all locked liquidity in AMM pools, pulling the data from the mcdex subgraph`, + ethereum: { + tvl: ethereum + }, } -async function bsc(api) { - return toUSDTBalances(await getTVL("mcdex3-bsc-perpetual", api)) +const config = { + arbitrum: { factory: "0xA017B813652b93a0aF2887913EFCBB4ab250CE65", fromBlock: 219937, }, + bsc: { factory: "0xfb4cd1bf5c5919a29fb894c8ddc4a69a36f5ec87", fromBlock: 11137817, }, } -module.exports = { - misrepresentedTokens: true, - methodology: `Includes all locked liquidity in AMM pools, pulling the data from the mcdex subgraph`, - arbitrum: { - tvl: arbitrum - }, - bsc: { - tvl: bsc - }, - ethereum: { - tvl: ethereum - }, -} +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/olympus/index.js b/projects/olympus/index.js index 44ffdbd0627..d7b4f374a62 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -90,13 +90,13 @@ function sumBalancesByTokenAddress(arr) { ***/ async function tvl(api, isOwnTokensMode = false) { const subgraphUrls = { - ethereum: `https://gateway-arbitrum.network.thegraph.com/api/${getEnv("OLYMPUS_GRAPH_API_KEY")}/subgraphs/id/7jeChfyUTWRyp2JxPGuuzxvGt3fDKMkC9rLjm7sfLcNp`, + ethereum: `7jeChfyUTWRyp2JxPGuuzxvGt3fDKMkC9rLjm7sfLcNp`, arbitrum: - "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-arbitrum", + "2XQDRQ9AXhp5us6PsNyRM5BxKWeXhy3BNQLynA6YmmjA", fantom: "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-fantom", polygon: - "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-polygon", + "JCVMW1dbqectgaSLRuKSen6FKe9RPMJRQhNYZa4iTgFb", }; //filter out problematic pools that dont have a decimals function. diff --git a/projects/origami/index.js b/projects/origami/index.js index b666da8dc9e..c92c4889f5b 100644 --- a/projects/origami/index.js +++ b/projects/origami/index.js @@ -14,6 +14,7 @@ Object.keys(GRAPH_URLS).forEach(chain => { module.exports[chain] = { tvl: async (api) => { const { metrics: [{ investmentVaults }] } = await cachedGraphQuery('origami/' + chain, endpoint, '{ metrics { investmentVaults { id } } }') + console.log(investmentVaults) const vaults = investmentVaults.map(vault => vault.id) let tokens = await api.multiCall({ abi: 'address:reserveToken', calls: vaults }) if (chain === 'arbitrum') diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js index 3b8368e1bda..de552307874 100644 --- a/projects/platypus-finance/index.js +++ b/projects/platypus-finance/index.js @@ -14,6 +14,7 @@ const query = `{ 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", "https://api.thegraph.com/subgraphs/name/platypus-finance/platypus-dashboard", query) + console.log(pools) const tokensAndOwners = pools.map(i => i.assetsList.map(v => [v.token.id, v.id])).flat() return sumTokens2({ api, tokensAndOwners, blacklistedTokens }); } diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js index a8d6014a819..e3f0619628f 100644 --- a/projects/quickswap/index.js +++ b/projects/quickswap/index.js @@ -17,6 +17,6 @@ module.exports = { [1619611200, "DeFi season on Polygon PoS begun"], [1623851400, "Iron Finance V1 collapse"], [1651668418, "QUICK split by 1:1000"], - [1652481840, "QuickSwap’s GoDaddy Domain Hijack"] + [1652481840, "QuickSwap GoDaddy Domain Hijack"] ] } diff --git a/projects/sablier-v2/index.js b/projects/sablier-v2/index.js index a48b04a09ec..547f0c15041 100644 --- a/projects/sablier-v2/index.js +++ b/projects/sablier-v2/index.js @@ -22,22 +22,20 @@ async function getTokensConfig(api, isVesting) { } async function tvl(api) { - const { owners } = config[api.chain] return api.sumTokens(await getTokensConfig(api, false)) } async function vesting(api) { - const { owners } = config[api.chain] return api.sumTokens(await getTokensConfig(api, true)) } const config = { - ethereum: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2'], }, - arbitrum: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-arbitrum'], }, - bsc: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-bsc'], }, + ethereum: { endpoints: ['5EgaXheiBXZBCkepyGUYAu8pN31Dkbh7bpGtnLPqaT5m'], }, + arbitrum: { endpoints: ['AR77w8PwmkAG7c9DJSsfW6yTrC5UdvdQ1Hz5ZTCuaUWz'], }, + bsc: { endpoints: ['BVyi15zcH5eUg5PPKfRDDesezMezh6cAkn8LPvh7MVAF'], }, xdai: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-gnosis'], }, optimism: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-optimism'], }, - polygon: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-polygon'], }, + polygon: { endpoints: ['J8XJaFtxcz7xowzVJ5LwZhi35N5Lbtwfrt4sea6G1ysJ'], }, avax: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-avalanche'], }, base: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-base'], }, blast: { endpoints: ['https://api.studio.thegraph.com/query/57079/sablier-v2-blast/version/latest'], }, diff --git a/projects/soulswap/abis/factory.json b/projects/soulswap/abis/factory.json deleted file mode 100644 index 9a147cdfb8a..00000000000 --- a/projects/soulswap/abis/factory.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "allPairs": "function allPairs(uint256) view returns (address)", - "totalPairs": "uint256:totalPairs" -} \ No newline at end of file diff --git a/projects/soulswap/helper/getUsdSoulTvl.js b/projects/soulswap/helper/getUsdSoulTvl.js deleted file mode 100644 index a6d888b7d14..00000000000 --- a/projects/soulswap/helper/getUsdSoulTvl.js +++ /dev/null @@ -1,171 +0,0 @@ -const sdk = require('@defillama/sdk'); -const token0 = 'address:token0' -const token1 = 'address:token1' -const getReserves = 'function getReserves() view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast)' -const factoryAbi = require('../abis/factory.json'); - -async function requery(results, chain, block, abi) { - if (results.some(r => !r.success)) { - const failed = results.map((r, i) => [r, i]).filter(r => !r[0].success) - const newResults = await sdk.api.abi - .multiCall({ - abi, - chain, - calls: failed.map((f) => f[0].input), - block, - }).then(({ output }) => output); - failed.forEach((f, i) => { - results[f[1]] = newResults[i] - }) - } -} - -function sum(balances, token, amount) { - if (balances[token] === undefined) { - balances[token] = 0 - } - balances[token] += Number(amount) -} - -function setPrice(prices, address, coreAmount, tokenAmount) { - if (prices[address] !== undefined) { - const currentCoreAmount = prices[address][0] - if (coreAmount < currentCoreAmount) { - return - } - } - prices[address] = [Number(coreAmount), Number(coreAmount) / Number(tokenAmount)] -} - -function calculateUsdSoulTvl(FACTORY, chain, coreAssetRaw, whitelistRaw, coreAssetName, decimals = 18) { - const whitelist = whitelistRaw.map(t => t.toLowerCase()) - const coreAsset = coreAssetRaw.toLowerCase() - return async (timestamp, ethBlock, {[chain]: block}) => { - - let pairAddresses; - const pairLength = (await sdk.api.abi.call({ - target: FACTORY, - abi: factoryAbi.totalPairs, - chain, - block - })).output - if (pairLength === null) { - throw new Error("totalPairs() failed") - } - const pairNums = Array.from(Array(Number(pairLength)).keys()) - { - const pairs = (await sdk.api.abi.multiCall({ - abi: factoryAbi.allPairs, - chain, - calls: pairNums.map(num => ({ - target: FACTORY, - params: [num] - })), - block - })).output - await requery(pairs, chain, block, factoryAbi.allPairs); - pairAddresses = pairs.map(result => result.output.toLowerCase()) - } - - const [token0Addresses, token1Addresses, reserves] = await Promise.all([ - sdk.api.abi - .multiCall({ - abi: token0, - chain, - calls: pairAddresses.map((pairAddress) => ({ - target: pairAddress, - })), - block, - }) - .then(({ output }) => output), - sdk.api.abi - .multiCall({ - abi: token1, - chain, - calls: pairAddresses.map((pairAddress) => ({ - target: pairAddress, - })), - block, - }) - .then(({ output }) => output), - sdk.api.abi - .multiCall({ - abi: getReserves, - chain, - calls: pairAddresses.map((pairAddress) => ({ - target: pairAddress, - })), - block, - }).then(({ output }) => output), - ]); - await requery(token0Addresses, chain, block, token0); - await requery(token1Addresses, chain, block, token1); - await requery(reserves, chain, block, getReserves); - - const pairs = {}; - // add token0Addresses - token0Addresses.forEach((token0Address) => { - const tokenAddress = token0Address.output.toLowerCase(); - - const pairAddress = token0Address.input.target.toLowerCase(); - 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 balances = {} - let coreBalance = 0 - const prices = {} - const list = [] - 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 (token0Address === coreAsset) { - coreBalance += Number(reserveAmounts[0]) * 2 - if (whitelist.includes(token1Address)) { - setPrice(prices, token1Address, reserveAmounts[0], reserveAmounts[1]) - } - list.push([pairAddress, Number(reserveAmounts[0]), reserveAmounts]) - } else if (token1Address === coreAsset) { - coreBalance += Number(reserveAmounts[1]) * 2 - if (whitelist.includes(token0Address)) { - setPrice(prices, token0Address, reserveAmounts[1], reserveAmounts[0]) - } - } else { - const whitelistedToken0 = whitelist.find(t => t === token0Address) - const whitelistedToken1 = whitelist.find(t => t === token1Address) - if (whitelistedToken0 !== undefined) { - sum(balances, whitelistedToken0, Number(reserveAmounts[0]) * 2) - } else if (whitelistedToken1 !== undefined) { - sum(balances, whitelistedToken1, Number(reserveAmounts[1]) * 2) - } - } - } - Object.entries(balances).forEach(([address, amount]) => { - const price = prices[address]; - if (price !== undefined) { - coreBalance += price[1] * (amount ?? 0) - } - }) - return { - [coreAssetName]: (coreBalance) / (10 ** decimals) - } - } -} - -module.exports = { - calculateUsdSoulTvl, -}; diff --git a/projects/soulswap/index.js b/projects/soulswap/index.js index 18b015606b5..4c13ede8c9e 100644 --- a/projects/soulswap/index.js +++ b/projects/soulswap/index.js @@ -1,36 +1,30 @@ -const ADDRESSES = require('../helper/coreAssets.json') -const { calculateUsdSoulTvl } = require('./helper/getUsdSoulTvl.js') 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 wftm_fantom = ADDRESSES.fantom.WFTM -const rndm_fantom = '0x49ac072c793fb9523f0688a0d863aadfbfb5d475' -const usdc_fantom = ADDRESSES.fantom.USDC -const wbtc_fantom = '0x321162cd933e2be498cd2267a90534a804051b11' const factory_avax = '0x5BB2a9984de4a69c05c996F7EF09597Ac8c9D63a' const farm_avax = '0xB1e330401c920077Ddf157AbA5594238d36b54B1' const soul_avax = '0x11d6DD25c1695764e64F439E32cc7746f3945543' -const wavax_avax = ADDRESSES.avax.WAVAX -const usdc_avax = ADDRESSES.avax.USDC -const wbtc_avax = ADDRESSES.avax.WBTC_e -const weth_avax = ADDRESSES.avax.WETH_e - -const wl_fantom = [ usdc_fantom, soul_fantom, rndm_fantom, wbtc_fantom ] -const wl_avax = [ usdc_avax, soul_avax, wbtc_avax, weth_avax ] module.exports = { + misrepresentedTokens: true, fantom:{ staking: staking(farm_fantom, soul_fantom), - tvl: calculateUsdSoulTvl(factory_fantom, 'fantom', wftm_fantom, wl_fantom, 'fantom'), + tvl: getUniTVL({ factory: factory_fantom, useDefaultCoreAssets: true, abis, }), borrowed: underworldLending('fantom', true) }, avax:{ staking: staking(farm_avax, soul_avax), - tvl: calculateUsdSoulTvl(factory_avax, 'avax', wavax_avax, wl_avax, 'avax'), + tvl: getUniTVL({ factory: factory_avax, useDefaultCoreAssets: true, abis, }), borrowed: underworldLending('avax', true) }, misrepresentedTokens: true, From 7b307e64e6f027e1634e77555c1c22014e20a6bd Mon Sep 17 00:00:00 2001 From: Define101 <93603962+Define101@users.noreply.github.com> Date: Thu, 13 Jun 2024 09:25:27 +0100 Subject: [PATCH 1977/2004] remove duplicated entry (#10634) --- projects/bunicorn/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/bunicorn/index.js b/projects/bunicorn/index.js index 1460356ccd6..a8f5a117853 100644 --- a/projects/bunicorn/index.js +++ b/projects/bunicorn/index.js @@ -10,7 +10,7 @@ async function staking(api) { } module.exports = { bsc: { - tvl: v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), + // tvl: v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), tvl: sdk.util.sumChainTvls([v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), uniTvlExport('bsc', '0x86873f85bc12ce40321340392c0ff39c3bdb8d68', { abis: { allPairsLength: 'uint256:allPoolsLength', From 23bf1b0364c47bb44f6cebe39a58b9103e1f1fac Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jun 2024 17:55:49 +0200 Subject: [PATCH 1978/2004] minor fix --- projects/helper/coreAssets.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/helper/coreAssets.json b/projects/helper/coreAssets.json index 6251af69fb5..59139d4120d 100644 --- a/projects/helper/coreAssets.json +++ b/projects/helper/coreAssets.json @@ -1805,5 +1805,12 @@ }, "lukso": { "WLYX": "0x2db41674f2b882889e5e1bd09a3f3613952bc472" + }, + "defichain_evm": { + "DFI": "0x49febbf9626b2d39aba11c01d83ef59b3d56d2a4", + "USDT": "0xff0000000000000000000000000000000000000d", + "USDC": "0xff00000000000000000000000000000000000003", + "ETH": "0xff00000000000000000000000000000000000001", + "DUSD": "0xff0000000000000000000000000000000000000f" } } From 44a396e4584b114b4ba6b8ac3d6963c08ecc3408 Mon Sep 17 00:00:00 2001 From: pavelGotbit <156020554+pavelGotbit@users.noreply.github.com> Date: Thu, 13 Jun 2024 19:02:17 +0300 Subject: [PATCH 1979/2004] added kicks (#10622) * added kicks * minor fix * revert change --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/kicks/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 projects/kicks/index.js diff --git a/projects/kicks/index.js b/projects/kicks/index.js new file mode 100644 index 00000000000..b3ab5e8180a --- /dev/null +++ b/projects/kicks/index.js @@ -0,0 +1,14 @@ + +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 From 893c7a9be5711c50461a32916af4eb3a6bf9369c Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:03:55 +0200 Subject: [PATCH 1980/2004] lint fixes --- projects/bunicorn/index.js | 3 +-- projects/soulswap/index.js | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/bunicorn/index.js b/projects/bunicorn/index.js index a8f5a117853..df97a7b11fd 100644 --- a/projects/bunicorn/index.js +++ b/projects/bunicorn/index.js @@ -4,13 +4,12 @@ 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: v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), tvl: sdk.util.sumChainTvls([v1Tvl('0x48ab312150E1802D57639859d7C3107aE751FE35', 8973039), uniTvlExport('bsc', '0x86873f85bc12ce40321340392c0ff39c3bdb8d68', { abis: { allPairsLength: 'uint256:allPoolsLength', diff --git a/projects/soulswap/index.js b/projects/soulswap/index.js index 4c13ede8c9e..a314e56167b 100644 --- a/projects/soulswap/index.js +++ b/projects/soulswap/index.js @@ -27,6 +27,5 @@ module.exports = { tvl: getUniTVL({ factory: factory_avax, useDefaultCoreAssets: true, abis, }), borrowed: underworldLending('avax', true) }, - misrepresentedTokens: true, methodology: "Counts liquidity on the exchange, staked soul, and underworld assets.", } From 49ed40ca5ba11ca92f5efd3d5a42744d89a991f1 Mon Sep 17 00:00:00 2001 From: hbeltik <134815749+hbeltik@users.noreply.github.com> Date: Thu, 13 Jun 2024 12:20:20 -0400 Subject: [PATCH 1981/2004] 3jane/defillama tvl (#10626) * init tvl calc * clean up * fix filename * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/3jane/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 projects/3jane/index.js diff --git a/projects/3jane/index.js b/projects/3jane/index.js new file mode 100644 index 00000000000..8fdb9233fd6 --- /dev/null +++ b/projects/3jane/index.js @@ -0,0 +1,27 @@ +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) + } + } +}) From 2cd3d81449d51b253dc39ec05bbc6cf5ee9a22b8 Mon Sep 17 00:00:00 2001 From: Jake Date: Thu, 13 Jun 2024 09:22:20 -0700 Subject: [PATCH 1982/2004] feat: add USD+ and other chains to Dinari (#10627) --- projects/dinari/index.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/projects/dinari/index.js b/projects/dinari/index.js index 88adad9c2e5..97ec8bf1693 100644 --- a/projects/dinari/index.js +++ b/projects/dinari/index.js @@ -2,9 +2,16 @@ const config = { arbitrum: { factory: "0xB4Ca72eA4d072C779254269FD56093D3ADf603b8", getTokensAbi: "function getDShares() external view returns (address[] memory, address[] memory)", - processor: "0xFA922457873F750244D93679df0d810881E4131D", - latestPriceAbi: "function latestFillPrice(address assetToken, address paymentToken) view returns (tuple(uint256 price, uint64 blocktime))", usdplus: "0xfc90518D5136585ba45e34ED5E1D108BD3950CFa" + }, + ethereum: { + factory: "0x60B5E7eEcb2AEE0382db86491b8cFfA39347c747", + getTokensAbi: "function getDShares() external view returns (address[] memory, address[] memory)", + usdplus: "0x98C6616F1CC0D3E938A16200830DD55663dd7DD3" + }, + blast: { + factory: "0x6Aa1BDa7e764BC62589E64F371A4022B80B3c72a", + getTokensAbi: "function getDShares() external view returns (address[] memory, address[] memory)" } } @@ -19,8 +26,16 @@ async function getTokens(api, chain) { Object.keys(config).forEach( chain => { module.exports[chain] = { tvl: async (api) => { + // get dShare tokens const tokens = await getTokens(api, chain) - const bals = await api.multiCall({ abi: 'erc20:totalSupply', calls: tokens}) + const bals = await api.multiCall({ chain: chain, abi: 'erc20:totalSupply', calls: tokens}) + // add USD+ + const usdplus = config[chain].usdplus + if (usdplus) { + const usdplusBal = await api.call({chain: chain, target: usdplus, abi: 'erc20:totalSupply'}) + tokens.push(usdplus) + bals.push(usdplusBal) + } api.add(tokens, bals) } } From 4b5a315bdc60a0d8201978e42d7263c5c892f0dd Mon Sep 17 00:00:00 2001 From: lainhathoang Date: Thu, 13 Jun 2024 23:41:31 +0700 Subject: [PATCH 1983/2004] feat: create the DefiLlama Adapter for the Capy Finance project (#10630) * feat: create the DefiLlama Adapter for the Capy Finance project * fix: fix some issues * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/bunicorn/index.js | 7 +++++-- projects/capy-finance/index.js | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 projects/capy-finance/index.js diff --git a/projects/bunicorn/index.js b/projects/bunicorn/index.js index df97a7b11fd..7ab2ca1e548 100644 --- a/projects/bunicorn/index.js +++ b/projects/bunicorn/index.js @@ -1,11 +1,14 @@ const sdk = require("@defillama/sdk"); const { v1Tvl } = require("../helper/balancer"); -const { uniTvlExport } = require('../helper/unknownTokens') +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] }); + return api.sumTokens({ + owner: MASTERCHEF_CONTRACT_ADDRESS, + tokens: [BUNI_CONTRACT_ADDRESS], + }); } module.exports = { diff --git a/projects/capy-finance/index.js b/projects/capy-finance/index.js new file mode 100644 index 00000000000..9dedd33d17c --- /dev/null +++ b/projects/capy-finance/index.js @@ -0,0 +1,17 @@ +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.', + start: 1000235, + bsquared: { + tvl, + }, +} \ No newline at end of file From 6d7d0ca3cbcd24b02d8ae7ae8aeb7513044fd60f Mon Sep 17 00:00:00 2001 From: Shayne Brady Date: Fri, 14 Jun 2024 02:41:58 +1000 Subject: [PATCH 1984/2004] update amped to use latest contracts (#10629) --- projects/amped/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/amped/index.js b/projects/amped/index.js index 31b346899d0..04f69f4f223 100644 --- a/projects/amped/index.js +++ b/projects/amped/index.js @@ -1,14 +1,14 @@ const {staking} = require('../helper/staking') const { gmxExports } = require('../helper/gmx') -//Cronos -const phoenixVaultAddress = '0x976156BE19D35ac616c67737258EEc973202E6D6'; -const phoenixStakingAddress = '0x48f206bED002fae4EcB522Dfe36e5A10F15e9f47'; -const phoenixAlpAddress = '0x6c6647B3E6AfA27B8Fb9BEDe728A3603eB6c0fC7'; +const phoenixVaultAddress = '0xa6b88069EDC7a0C2F062226743C8985FF72bB2Eb'; +const phoenixStakingAddress = '0x3c9586567a429BA0467Bc63FD38ea71bB6B912E0'; +const phoenixAmpAddress = '0xca7F14F14d975bEFfEe190Cd3cD232a3a988Ab9C'; module.exports = { + start: 1717674114, lightlink_phoenix: { - staking: staking(phoenixStakingAddress, phoenixAlpAddress), + staking: staking(phoenixStakingAddress, phoenixAmpAddress), tvl: gmxExports({ vault: phoenixVaultAddress, }) }, }; From c2446cc25342134403b5ce7df2b05d662ca1f8b5 Mon Sep 17 00:00:00 2001 From: jan-magpie <155635960+jan-magpie@users.noreply.github.com> Date: Thu, 13 Jun 2024 22:30:14 +0530 Subject: [PATCH 1985/2004] Create magpie.js (#10631) * Create magpie.js * minor fix --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/treasury/magpie.js | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 projects/treasury/magpie.js diff --git a/projects/treasury/magpie.js b/projects/treasury/magpie.js new file mode 100644 index 00000000000..5f296e72c6a --- /dev/null +++ b/projects/treasury/magpie.js @@ -0,0 +1,41 @@ +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]) From b4dc5b45389b03fc5ce67d7f54f2cfa79f5829ff Mon Sep 17 00:00:00 2001 From: Jay Welsh Date: Thu, 13 Jun 2024 19:01:57 +0200 Subject: [PATCH 1986/2004] feat(silo): adds support for optimism deployment (#10632) --- projects/silo/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/silo/index.js b/projects/silo/index.js index a78f3fb9259..d2d47ae58f9 100644 --- a/projects/silo/index.js +++ b/projects/silo/index.js @@ -30,6 +30,14 @@ const config = { } ] }, + optimism: { + factories: [ + { + START_BLOCK: 120480601, + SILO_FACTORY: '0x6B14c4450a29Dd9562c20259eBFF67a577b540b9', // Silo Optimism (Original) + } + ] + }, } const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac' @@ -83,6 +91,7 @@ module.exports = { methodology: `We calculate TVL by interacting with Silo Factory smart contracts on Ethereum and Arbitrum. For Ethereum, it queries Silo(Original)(0x4D919CEcfD4793c0D47866C8d0a02a0950737589), (Convex Factory)(0x6d4A256695586F61b77B09bc3D28333A91114d5a), and (LLAMA Edition)(0x2c0fA05281730EFd3ef71172d8992500B36b56eA). On Arbitrum, we query the Silo Arbitrum factory(0x4166487056A922D784b073d4d928a516B074b719) 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, }, hallmarks: [ [1692968400, "Launch CRV market"] ] From 102433e7a75b01b31626ba185d4fff06b5acee81 Mon Sep 17 00:00:00 2001 From: slasher125 <74533329+slasher125@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:20:55 +0400 Subject: [PATCH 1987/2004] graphql-migration (#10635) * ic * revert package lock change * bump version --------- Co-authored-by: 0xngmi <0xngmi@protonmail.com> --- liquidations/aave-v2/index.ts | 5 +- liquidations/benqi/index.ts | 3 +- liquidations/compound/index.ts | 3 +- liquidations/euler/index.ts | 3 +- liquidations/mimo-protocol/index.ts | 7 +-- liquidations/trader-joe-lend/index.ts | 3 +- liquidations/venus/index.ts | 3 +- package-lock.json | 6 +-- projects/aktionariat/index.js | 5 +- projects/altr-lend/index.js | 3 +- projects/contango-v2/index.js | 11 ++-- projects/defiplaza.js | 3 +- projects/enzyme/index.js | 5 +- projects/ethalend/index.js | 3 +- projects/factor-leverage-vault/index.js | 3 +- projects/factor/index.js | 3 +- projects/horizon/collateral.js | 3 +- projects/keep.js | 5 +- projects/mmo/helper/helper.js | 2 +- projects/olympus/index.js | 3 +- projects/orbit/index.js | 3 +- projects/origami/index.js | 5 +- projects/ottopia/index.js | 3 +- projects/pacman/index.js | 3 +- projects/platypus-finance/index.js | 3 +- projects/podsfinance/constants.js | 7 +-- projects/pooltogether/v3.js | 13 ++--- projects/prime-protocol/index.js | 3 +- projects/quickswap/index.js | 3 +- projects/ren/index.js | 10 ++-- projects/rift-finance/networks.js | 5 +- projects/rubicon/index.js | 5 +- projects/sablier-v2/index.js | 9 ++-- projects/sentiment/index.js | 3 +- projects/soulswap/underworld-lending.js | 4 +- projects/steer/index.js | 15 +++--- projects/sudoswap/index.js | 3 +- projects/superfluid.js | 16 +++--- projects/sushiswap-bentobox/helper.js | 64 +++++++++++------------ projects/sushiswap-furo/furo.js | 22 ++++---- projects/sushiswap-kashi/kashi-lending.js | 11 ++-- projects/sushiswap-trident/trident.js | 11 ++-- projects/sushiswap/api.js | 3 +- projects/swaap-earn/index.js | 3 +- projects/swaap/index.js | 3 +- projects/synthetix/api.js | 3 +- projects/synthetix/apiCache.js | 3 +- projects/timeswap/index.js | 3 +- projects/unbound/index.js | 5 +- projects/unifarm/helper.js | 7 +-- projects/vela-exchange/index.js | 5 +- projects/venus-isolated-pools/index.js | 5 +- projects/zksynth/index.js | 3 +- 53 files changed, 196 insertions(+), 150 deletions(-) diff --git a/liquidations/aave-v2/index.ts b/liquidations/aave-v2/index.ts index c546df97ec3..cc80860cb01 100644 --- a/liquidations/aave-v2/index.ts +++ b/liquidations/aave-v2/index.ts @@ -1,3 +1,4 @@ +import * as sdk from "@defillama/sdk"; import { gql, request } from "graphql-request"; import { Liq } from "../utils/types"; import { getPagedGql } from "../utils/gql"; @@ -75,14 +76,14 @@ const rc: { [chain in Chains]: AaveAdapterResource } = { name: "aave", chain: Chains.ethereum, usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - subgraphUrl: "https://api.thegraph.com/subgraphs/name/aave/protocol-v2", + subgraphUrl: sdk.graph.modifyEndpoint('8wR23o1zkS4gpLqLNU4kG3JHYVucqGyopL5utGxP2q1N'), explorerBaseUrl: "https://etherscan.io/address/", }, // [Chains.polygon]: { // name: "aave", // chain: Chains.polygon, // usdcAddress: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - // subgraphUrl: "https://api.thegraph.com/subgraphs/name/aave/aave-v2-matic", + // subgraphUrl: sdk.graph.modifyEndpoint('H1Et77RZh3XEf27vkAmJyzgCME2RSFLtDS2f4PPW6CGp'), // explorerBaseUrl: "https://polygonscan.com/address/", // }, }; diff --git a/liquidations/benqi/index.ts b/liquidations/benqi/index.ts index 4b3e2b70b4b..ec14a98cc0f 100644 --- a/liquidations/benqi/index.ts +++ b/liquidations/benqi/index.ts @@ -1,3 +1,4 @@ +import * as sdk from "@defillama/sdk"; import { gql } from "graphql-request"; import { getPagedGql } from "../utils/gql"; import BigNumber from "bignumber.js"; @@ -12,7 +13,7 @@ import { totalCollateralValueInUsd, } from "../utils/compound-helpers"; -const subgraphUrl = "https://api.thegraph.com/subgraphs/name/yhayun/benqi"; +const subgraphUrl = sdk.graph.modifyEndpoint('HcTvZi3fwucvRJvVmtFzNDTnomvMBk64xCLNQQg6GPAV'); const accountsQuery = gql` query accounts($lastId: ID, $pageSize: Int) { diff --git a/liquidations/compound/index.ts b/liquidations/compound/index.ts index d87100ba7bc..e646fd6a796 100644 --- a/liquidations/compound/index.ts +++ b/liquidations/compound/index.ts @@ -1,3 +1,4 @@ +import * as sdk from "@defillama/sdk"; import { gql } from "graphql-request"; import { getPagedGql } from "../utils/gql"; import BigNumber from "bignumber.js"; @@ -12,7 +13,7 @@ import { totalCollateralValueInUsd, } from "../utils/compound-helpers"; -const subgraphUrl = "https://api.thegraph.com/subgraphs/name/graphprotocol/compound-v2"; +const subgraphUrl = sdk.graph.modifyEndpoint('AAva7YSZBLar4MaxQ3MqdJDFXkkHEaCDeibKTnraex1x'); const accountsQuery = gql` query accounts($lastId: ID, $pageSize: Int) { diff --git a/liquidations/euler/index.ts b/liquidations/euler/index.ts index 5ef58aa3ad4..d0cac4c0d7c 100644 --- a/liquidations/euler/index.ts +++ b/liquidations/euler/index.ts @@ -1,9 +1,10 @@ +import * as sdk from "@defillama/sdk"; import { gql } from "graphql-request"; import { getPagedGql } from "../utils/gql"; import BigNumber from "bignumber.js"; import { Liq } from "../utils/types"; -const subgraphUrl = "https://api.thegraph.com/subgraphs/name/euler-xyz/euler-mainnet"; +const subgraphUrl = sdk.graph.modifyEndpoint('EQBXhrF4ppZy9cBYnhPdrMCRaVas6seNpqviih5VRGmU'); const accountsQuery = gql` query accounts($lastId: ID, $pageSize: Int) { diff --git a/liquidations/mimo-protocol/index.ts b/liquidations/mimo-protocol/index.ts index 9d0bc72c796..30945758a38 100644 --- a/liquidations/mimo-protocol/index.ts +++ b/liquidations/mimo-protocol/index.ts @@ -1,3 +1,4 @@ +import * as sdk from "@defillama/sdk"; import axios from "axios"; import { gql } from "graphql-request"; import BigNumber from "bignumber.js"; @@ -49,16 +50,16 @@ const getSubgraphUrl = (chain: Chain) => { switch (chain) { case Chain.ethereum: { - subgraphUrl = "https://api.thegraph.com/subgraphs/name/m19/titan"; + subgraphUrl = sdk.graph.modifyEndpoint('FV3Dw1zMs97LpVPegWZKJv4bsbsZdrob2EqLCPxdcoDS'); break; } case Chain.polygon: { - subgraphUrl = "https://api.thegraph.com/subgraphs/name/m19/titanpolygon"; + subgraphUrl = sdk.graph.modifyEndpoint('EfFLqiwngmmtE5su2t1EsFoEttoj8KWervocfab1ofYT'); break; } // case Chain.fantom: { // subgraphUrl = - // "https://api.thegraph.com/subgraphs/name/rayxpub/titanfantom"; + // sdk.graph.modifyEndpoint('DkSQLWkkiNfeNG43NJnHsW9hfih8hDt4SHFTNMQgPHJH'); // break; // } } diff --git a/liquidations/trader-joe-lend/index.ts b/liquidations/trader-joe-lend/index.ts index d922f5c9999..2e947509797 100644 --- a/liquidations/trader-joe-lend/index.ts +++ b/liquidations/trader-joe-lend/index.ts @@ -1,9 +1,10 @@ +import * as sdk from "@defillama/sdk"; import { gql } from "graphql-request"; import { getPagedGql } from "../utils/gql"; import BigNumber from "bignumber.js"; import { Liq } from "../utils/types"; -const subgraphUrl = "https://api.thegraph.com/subgraphs/name/traderjoe-xyz/lending"; +const subgraphUrl = sdk.graph.modifyEndpoint('JB5EdQqbddMjawMLYe3C5ifmhN9WKYvLdgAKoUy1CyYy'); const accountsQuery = gql` query accounts($lastId: ID, $pageSize: Int) { diff --git a/liquidations/venus/index.ts b/liquidations/venus/index.ts index b654f3312c9..703a3c635ce 100644 --- a/liquidations/venus/index.ts +++ b/liquidations/venus/index.ts @@ -1,3 +1,4 @@ +import * as sdk from "@defillama/sdk"; import { gql } from "graphql-request"; import { getPagedGql } from "../utils/gql"; import BigNumber from "bignumber.js"; @@ -15,7 +16,7 @@ import { } from "../utils/compound-helpers"; const sdk = require("@defillama/sdk"); -const subgraphUrl = "https://api.thegraph.com/subgraphs/name/venusprotocol/venus-subgraph"; +const subgraphUrl = sdk.graph.modifyEndpoint('7h65Zf3pXXPmf8g8yZjjj2bqYiypVxems5d8riLK1DyR'); const accountsQuery = gql` query accounts($lastId: ID, $pageSize: Int) { diff --git a/package-lock.json b/package-lock.json index 911a406bb5b..bce92f99678 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,9 +886,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "5.0.67", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.67.tgz", - "integrity": "sha512-gOJACkDuPyNicL2zs0J93LkbDOkcviSaNQAvRH/wQkeXcdo7tHwN5YH59sFFE6Ge6gsCgcI0KnyuO6E0yjmo8g==", + "version": "5.0.69", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-5.0.69.tgz", + "integrity": "sha512-IYdT4P5vG9xt14tM9RuT1+uBUyD8oL6fdTWC3iwOlwATjWKA1kwOhucCXNFE8sc2KKugwTUfQuGp8Q3fHDxAfw==", "dependencies": { "@aws-sdk/client-s3": "^3.400.0", "@elastic/elasticsearch": "^8.13.1", diff --git a/projects/aktionariat/index.js b/projects/aktionariat/index.js index 206de03205a..aa124060512 100644 --- a/projects/aktionariat/index.js +++ b/projects/aktionariat/index.js @@ -1,8 +1,9 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const graphs = { - ethereum: "https://api.thegraph.com/subgraphs/name/aktionariat/brokerbot", - optimism: "https://api.thegraph.com/subgraphs/name/aktionariat/brokerbot-optimism", + ethereum: sdk.graph.modifyEndpoint('2ZoJCp4S7YP7gbYN2ndsYNjPeZBV1PMti7BBoPRRscNq'), + optimism: sdk.graph.modifyEndpoint('3QfEXbPfP23o3AUzcmjTfRtUUd4bfrFj3cJ4jET57CTX'), } function tvlPaged(chain) { diff --git a/projects/altr-lend/index.js b/projects/altr-lend/index.js index 7da6e46a0ba..6ae0ea96e5d 100644 --- a/projects/altr-lend/index.js +++ b/projects/altr-lend/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); // const LendingContract = "0xdc93413cbe690a1643d285c9f075b271372c9b36" const { graphQuery } = require('../helper/http') const ADDRESSES = require('../helper/coreAssets.json') @@ -9,7 +10,7 @@ async function borrowed(api) { } }` - const { loans } = await graphQuery("https://api.thegraph.com/subgraphs/name/lucidao-developer/altr-lend", query); + const { loans } = await graphQuery(sdk.graph.modifyEndpoint('AVmBsxjouEH6wvG2HCGPCNNt9eDeX2esaRZ7L7jJaTnD'), query); api.add(ADDRESSES.polygon.USDT, loans.map(i => i.amount)); return api.getBalances() } diff --git a/projects/contango-v2/index.js b/projects/contango-v2/index.js index 8cd411efc68..cf64a0e03be 100644 --- a/projects/contango-v2/index.js +++ b/projects/contango-v2/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { blockQuery } = require("../helper/http"); const { cachedGraphQuery } = require("../helper/cache"); @@ -8,27 +9,27 @@ const config = { arbitrum: { contango: CONTANGO_PROXY, contango_lens: CONTANGO_LENS_PROXY, - grapUrl: "https://api.thegraph.com/subgraphs/name/contango-xyz/v2-arbitrum", + grapUrl: sdk.graph.modifyEndpoint('BmHqxUxxLuMoDYgbbXU6YR8VHUTGPBf9ghD7XH6RYyTQ'), }, optimism: { contango: CONTANGO_PROXY, contango_lens: CONTANGO_LENS_PROXY, - grapUrl: "https://api.thegraph.com/subgraphs/name/contango-xyz/v2-optimism", + grapUrl: sdk.graph.modifyEndpoint('PT2TcgYqhQmx713U3KVkdbdh7dJevgoDvmMwhDR29d5'), }, ethereum: { contango: CONTANGO_PROXY, contango_lens: CONTANGO_LENS_PROXY, - grapUrl: "https://api.thegraph.com/subgraphs/name/contango-xyz/v2-mainnet", + grapUrl: sdk.graph.modifyEndpoint('FSn2gMoBKcDXEHPvshaXLPC1EJN7YsfCP78swEkXcntY'), }, polygon: { contango: CONTANGO_PROXY, contango_lens: CONTANGO_LENS_PROXY, - grapUrl: "https://api.thegraph.com/subgraphs/name/contango-xyz/v2-polygon", + grapUrl: sdk.graph.modifyEndpoint('5t3rhrAYt79iyjm929hgwyiaPLk9uGxQRMiKEasGgeSP'), }, xdai: { contango: CONTANGO_PROXY, contango_lens: CONTANGO_LENS_PROXY, - grapUrl: "https://api.thegraph.com/subgraphs/name/contango-xyz/v2-gnosis", + grapUrl: sdk.graph.modifyEndpoint('9h1rHUKJK9CGqztdaBptbj4Q9e2zL9jABuu9LpRQ1XkC'), }, base: { contango: CONTANGO_PROXY, diff --git a/projects/defiplaza.js b/projects/defiplaza.js index d915d241e95..ad7b2b6948b 100644 --- a/projects/defiplaza.js +++ b/projects/defiplaza.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('./helper/cache'); const { sumTokens, queryAddresses } = require('./helper/chain/radixdlt'); @@ -5,7 +6,7 @@ const { getConfig } = require('./helper/cache'); const { get } = require('./helper/http'); const sdk = require('@defillama/sdk'); -const graphUrl = 'https://api.thegraph.com/subgraphs/name/omegasyndicate/defiplaza'; +const graphUrl = sdk.graph.modifyEndpoint('4z9FBF12CrfoQJhAkWicqzY2fKYN9QRmuzSsizVXhjKa'); module.exports = { ethereum: { diff --git a/projects/enzyme/index.js b/projects/enzyme/index.js index cb3128d075f..121fe8240fd 100644 --- a/projects/enzyme/index.js +++ b/projects/enzyme/index.js @@ -1,9 +1,10 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') const config = { - polygon: { endpoint: 'https://api.thegraph.com/subgraphs/name/enzymefinance/enzyme-core-polygon' }, - ethereum: { endpoint: 'https://api.thegraph.com/subgraphs/name/enzymefinance/enzyme-core' }, + polygon: { endpoint: sdk.graph.modifyEndpoint('GCAHDyqvZBLMwqdb9U7AqWAN4t4TSwR3aXMHDoUUFuRV') }, + ethereum: { endpoint: sdk.graph.modifyEndpoint('9DLBBLep5UyU16kUQRvxBCMqko4q9XzuE4XsMMpARhKK') }, } const query = `query get_accounts($lastId: String!) { vaults( diff --git a/projects/ethalend/index.js b/projects/ethalend/index.js index 79d7fe5394f..6fbff372750 100644 --- a/projects/ethalend/index.js +++ b/projects/ethalend/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') const abi = require('./abi.json') @@ -49,7 +50,7 @@ async function avaxTvl(_, _block, cb) { async function tvl(chain, block, chainId) { const balances = {} if (chain === 'polygon') { - const globalData = (await request("https://api.thegraph.com/subgraphs/name/ethalend/etha-v1", globalDataQuery, { block: block - 100 })).globalDatas + 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 === "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") { v.address = ADDRESSES.polygon.WMATIC_2 diff --git a/projects/factor-leverage-vault/index.js b/projects/factor-leverage-vault/index.js index 33853aebb3a..88dfcb90d41 100644 --- a/projects/factor-leverage-vault/index.js +++ b/projects/factor-leverage-vault/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { blockQuery } = require('../helper/http') const queryBlock = `query data($block: Int){ @@ -11,7 +12,7 @@ const queryBlock = `query data($block: Int){ }` const SUBGRAPH_URL = - "https://api.thegraph.com/subgraphs/name/dimasriat/factor-leverage-vault"; + sdk.graph.modifyEndpoint('BZhGLLFicmKB9N9oMgDEAP8HmhVxTTjjxQA3ctGewAFc'); async function tvl(api) { const { leverageVaultPairStates } = await blockQuery(SUBGRAPH_URL, queryBlock, { api }) diff --git a/projects/factor/index.js b/projects/factor/index.js index 03023d259db..7e161dfc937 100644 --- a/projects/factor/index.js +++ b/projects/factor/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { sumTokens2 } = require('../helper/unwrapLPs'); const { cachedGraphQuery } = require('../helper/cache'); @@ -6,7 +7,7 @@ const FCTR = "0x6dD963C510c2D2f09d5eDdB48Ede45FeD063Eb36" const veFCTR = "0xA032082B08B2EF5A6C3Ea80DaEac58300F68FB73" async function tvl(api) { - const endpoint = 'https://api.thegraph.com/subgraphs/name/yanuar-ar/factor-arbitrum' + 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 }) diff --git a/projects/horizon/collateral.js b/projects/horizon/collateral.js index 55544343ac6..a346db5e07d 100644 --- a/projects/horizon/collateral.js +++ b/projects/horizon/collateral.js @@ -1,7 +1,8 @@ +const sdk = require("@defillama/sdk"); const { request, gql } = require("graphql-request"); const { getBlock } = require('../helper/http'); -const graph_endpoint = 'https://api.thegraph.com/subgraphs/name/rout-horizon/bsc15-issuance' +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}) { diff --git a/projects/keep.js b/projects/keep.js index 83c6c879fe0..00479af2c8b 100644 --- a/projects/keep.js +++ b/projects/keep.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { GraphQLClient, } = require('graphql-request') const utils = require('./helper/utils'); const sdk = require('@defillama/sdk') @@ -13,7 +14,7 @@ async function tvl() { } } `; - var endpoint = 'https://api.thegraph.com/subgraphs/name/suntzu93/tbtc'; + 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); @@ -39,7 +40,7 @@ async function staking() { } `; - var endpoint = 'https://api.thegraph.com/subgraphs/name/suntzu93/keepnetwork'; + var endpoint = sdk.graph.modifyEndpoint('Pg2cbxfPGJtqRBwMutR69oapbodKmcXuQRsxPRaK57S'); var graphQLClient = new GraphQLClient(endpoint) const results = await graphQLClient.request(q1) const keepPoolStaked = await utils.returnBalance('0x85Eee30c52B0b379b046Fb0F85F4f3Dc3009aFEC', '0xCf916681a6F08fa22e9EF3e665F2966Bf3089Ff1') diff --git a/projects/mmo/helper/helper.js b/projects/mmo/helper/helper.js index f92dee6d7d1..2c7c59ff279 100644 --- a/projects/mmo/helper/helper.js +++ b/projects/mmo/helper/helper.js @@ -14,7 +14,7 @@ const MtrollerABI = { async function fetch(query) { var endpoint = - "https://api.thegraph.com/subgraphs/name/ohan8/mmo-finance-active-loans"; + sdk.graph.modifyEndpoint('DUQF7Lhwu1dzz2GwyNi3eRvjZeUnMNCDFjQRA8BYpoRJ'); var graphQLClient = new GraphQLClient(endpoint); const results = await graphQLClient.request(query) diff --git a/projects/olympus/index.js b/projects/olympus/index.js index d7b4f374a62..6dc387b3ce9 100644 --- a/projects/olympus/index.js +++ b/projects/olympus/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const { blockQuery } = require("../helper/http"); const { getEnv } = require("../helper/env"); @@ -94,7 +95,7 @@ const subgraphUrls = { arbitrum: "2XQDRQ9AXhp5us6PsNyRM5BxKWeXhy3BNQLynA6YmmjA", fantom: - "https://api.thegraph.com/subgraphs/name/olympusdao/protocol-metrics-fantom", + sdk.graph.modifyEndpoint('3qSJTWdWJETFzht814HVV9rVafwRLQp3k9mZhCF39bYd'), polygon: "JCVMW1dbqectgaSLRuKSen6FKe9RPMJRQhNYZa4iTgFb", }; diff --git a/projects/orbit/index.js b/projects/orbit/index.js index 50bb44ba684..a94248dcc8d 100644 --- a/projects/orbit/index.js +++ b/projects/orbit/index.js @@ -1,9 +1,10 @@ +const sdk = require("@defillama/sdk"); const { toUSDTBalances } = require("../helper/balances"); const { request, gql } = require("graphql-request"); async function tvlFromGraph() { const graphUrl = - "https://api.thegraph.com/subgraphs/name/riccardogalbusera/orbit-subgraph"; + sdk.graph.modifyEndpoint('BRUJ3Y4Fpq4VuvoCAi4p9qv1SxZ6ghVtMK1Rg8igfxmi'); const graphQuery = gql` query { positionManagerFactories(first: 1) { diff --git a/projects/origami/index.js b/projects/origami/index.js index c92c4889f5b..22e1c67a613 100644 --- a/projects/origami/index.js +++ b/projects/origami/index.js @@ -1,8 +1,9 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const GRAPH_URLS = { - ethereum: "https://api.thegraph.com/subgraphs/name/templedao/origami-mainnet", // ethereum - arbitrum: "https://api.thegraph.com/subgraphs/name/templedao/origami-arb", // arbitrum + ethereum: sdk.graph.modifyEndpoint('GGN8RoYQBiw2Ui6wUeaKcHsBBSrQzQoryYi2feoTKwPX'), // ethereum + arbitrum: sdk.graph.modifyEndpoint('AHT1ffJhw7NWdeH3XYbWzMmy5USbB22K3ecVDu8azGuF'), // arbitrum } module.exports = { diff --git a/projects/ottopia/index.js b/projects/ottopia/index.js index 003956ae96a..0a07f498cda 100644 --- a/projects/ottopia/index.js +++ b/projects/ottopia/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { GraphQLClient, gql } = require("graphql-request"); const { staking } = require("../helper/staking"); @@ -5,7 +6,7 @@ const CLAM = "0xC250e9987A032ACAC293d838726C511E6E1C029d"; const PearlBank = "0x845EB7730a8D37e8D190Fb8bb9c582038331B48a"; async function tvl({timestamp}, block, chainBlocks) { - let endpoint = "https://api.thegraph.com/subgraphs/name/otterclam/otterclam"; + let endpoint = sdk.graph.modifyEndpoint('CejrrsnSQAxHJBpkgiBrLHQZ7h2MkK9QArM8bJvN9GuQ'); let graphQLClient = new GraphQLClient(endpoint); let query = gql` query tvl($start: BigInt!, $end: BigInt!) { diff --git a/projects/pacman/index.js b/projects/pacman/index.js index 6d2c762d539..cf82ad1db31 100644 --- a/projects/pacman/index.js +++ b/projects/pacman/index.js @@ -1,6 +1,7 @@ +const sdk = require("@defillama/sdk"); const { graphQuery } = require('../helper/http') -const subgraphUrl = "https://api.thegraph.com/subgraphs/name/pacmanfinance/pacman-arbitrum"; +const subgraphUrl = sdk.graph.modifyEndpoint('9xteTELUdzjii1yLASJm6CxSpYuS1bmE6DGWMMhgkq2k'); const vaultsQuery = ` query { diff --git a/projects/platypus-finance/index.js b/projects/platypus-finance/index.js index de552307874..cf16de413e2 100644 --- a/projects/platypus-finance/index.js +++ b/projects/platypus-finance/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { staking } = require("../helper/staking"); const { sumTokens2 } = require("../helper/unwrapLPs"); const { cachedGraphQuery } = require('../helper/cache') @@ -13,7 +14,7 @@ const query = `{ 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", "https://api.thegraph.com/subgraphs/name/platypus-finance/platypus-dashboard", query) + const { pools } = await cachedGraphQuery("platypus-finance", sdk.graph.modifyEndpoint('Bu5QPRWGnZB6NxU4S7kAKQZJpY4pHmAq3TV69V1W2Qqw'), query) console.log(pools) const tokensAndOwners = pools.map(i => i.assetsList.map(v => [v.token.id, v.id])).flat() return sumTokens2({ api, tokensAndOwners, blacklistedTokens }); diff --git a/projects/podsfinance/constants.js b/projects/podsfinance/constants.js index f9a95a18217..70cd0e2e3a3 100644 --- a/projects/podsfinance/constants.js +++ b/projects/podsfinance/constants.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') module.exports = { ADDRESS_ZERO: ADDRESSES.null, @@ -7,16 +8,16 @@ module.exports = { NETWORK_POLYGON: { id: 137, name: 'polygon', - subgraph: 'https://api.thegraph.com/subgraphs/name/pods-finance/pods-matic' + subgraph: sdk.graph.modifyEndpoint('5yQETkt77T9htftwDSW4WJpoGkPH9KBQzQLzPnuyZ8ti') }, NETWORK_MAINNET: { id: 1, name: 'ethereum', - subgraph: 'https://api.thegraph.com/subgraphs/name/pods-finance/pods' + subgraph: sdk.graph.modifyEndpoint('9qiAuWa5ryYeTj1gLy9BGiiVkfgkXnsN25wkYQSfyaws') }, NETWORK_ARBITRUM: { id: 42161, name: 'arbitrum', - subgraph: 'https://api.thegraph.com/subgraphs/name/pods-finance/pods-arbitrum' + subgraph: sdk.graph.modifyEndpoint('5Qz4mWABKaCfr9uGnteAAwmWmBAyQtRDYgB3ydU556HX') } } diff --git a/projects/pooltogether/v3.js b/projects/pooltogether/v3.js index 9d55942b04e..2d8964857dc 100644 --- a/projects/pooltogether/v3.js +++ b/projects/pooltogether/v3.js @@ -1,15 +1,16 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const abi = require('./abi.json') const GRAPH_URLS = { ethereum: [ - 'https://api.thegraph.com/subgraphs/name/pooltogether/pooltogether-v3_1_0', - 'https://api.thegraph.com/subgraphs/name/pooltogether/pooltogether-v3_3_2', - 'https://api.thegraph.com/subgraphs/name/pooltogether/pooltogether-v3_3_8', - 'https://api.thegraph.com/subgraphs/name/pooltogether/pooltogether-v3_4_3' + sdk.graph.modifyEndpoint('DpnLpjCKyyQ8TZnD2V6VNyx4JR7bGrCfGaLbrrsn5r7s'), + sdk.graph.modifyEndpoint('6SXRM2pyUiLKgNvXU6fiSF1E3dDDFGGAFiMurbZhZew8'), + sdk.graph.modifyEndpoint('6fBV3gC2fjdPsKvnmhi2SNzp74RYZj3tS1AiWFGHapyX'), + sdk.graph.modifyEndpoint('C12o8EA9X9EKjjDoxKGUiM9YniNT4RVCiV6jGuYWwwZX') ], - celo: ['https://api.thegraph.com/subgraphs/name/pooltogether/celo-v3_4_5'], - bsc: ['https://api.thegraph.com/subgraphs/name/pooltogether/bsc-v3_4_3'] + celo: [sdk.graph.modifyEndpoint('7RqWfG27PACLZEvSMGtcK87qnV1DJCQfYjNdqwHDQdTe')], + bsc: [sdk.graph.modifyEndpoint('9Qmsc7YBLy2sdbEAcGv8vkpaqdGm3YMYoqiWLCid64MN')] } const GRAPH_QUERY = ` query GET_POOLS { diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index 850504ce073..a2d45b103b3 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const sdk = require('@defillama/sdk'); const { sumTokens2, } = require('../helper/unwrapLPs'); const { cachedGraphQuery } = require('../helper/cache'); @@ -17,7 +18,7 @@ const PRIME_SATELLITE_NETWORKS = { // filecoin: 314 }; -const primeSubgraphUrl = 'https://api.thegraph.com/subgraphs/name/prime-protocol/liquidity-incentives'; +const primeSubgraphUrl = sdk.graph.modifyEndpoint('6LrvPGTZeMZfEQh4p9DvDBBv4G8cjhLs4v3mdiUycERp'); const primeMarketsQuery = `{ markets { address chainId } diff --git a/projects/quickswap/index.js b/projects/quickswap/index.js index e3f0619628f..fd961c2af72 100644 --- a/projects/quickswap/index.js +++ b/projects/quickswap/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const { getChainTvl } = require('../helper/getUniSubgraphTvl'); const { staking } = require('../helper/staking'); @@ -8,7 +9,7 @@ module.exports = { polygon:{ staking: staking("0x958d208Cdf087843e9AD98d23823d32E17d723A1", ADDRESSES.polygon.QUICK), tvl: getChainTvl({ - polygon: 'https://api.thegraph.com/subgraphs/name/sameepsi/quickswap06' + polygon: sdk.graph.modifyEndpoint('FUWdkXWpi8JyhAnhKL5pZcVshpxuaUQG8JHMDqNCxjPd') })('polygon') }, hallmarks:[ diff --git a/projects/ren/index.js b/projects/ren/index.js index 659535bdb40..e52debcd52b 100644 --- a/projects/ren/index.js +++ b/projects/ren/index.js @@ -3,15 +3,15 @@ const { request, gql } = require("graphql-request"); const sdk = require("@defillama/sdk"); const { getTokenSupply } = require('../helper/solana') -const ethGraphUrl = "https://api.thegraph.com/subgraphs/name/renproject/renvm"; +const ethGraphUrl = sdk.graph.modifyEndpoint('AJaQdD8DUunuwHCbAsZk5h62AfyNG1etRtK9EcDH7gwH'); const bscGraphUrl = - "https://api.thegraph.com/subgraphs/name/renproject/renvm-binance-smart-chain"; + sdk.graph.modifyEndpoint('6UCMxzH5LPvZrLhcpSVrSDhoKRYJchvHM7vnTUo2bBp2'); const avalancheGraphUrl = - "https://api.thegraph.com/subgraphs/name/renproject/renvm-avalanche"; + sdk.graph.modifyEndpoint('GBRcEpUZTHMyjmtkPsHMYmHuPtcLFqnU5SPvpaLdfmau'); const fantomGraphUrl = - "https://api.thegraph.com/subgraphs/name/renproject/renvm-fantom"; + sdk.graph.modifyEndpoint('2TV9sKK7fLvfsbnUox6irt3XbiHAzw1fvbh9j8vnBXmH'); const polygonGraphUrl = - "https://api.thegraph.com/subgraphs/name/renproject/renvm-polygon"; + sdk.graph.modifyEndpoint('GQCGcDW16JfawMXegTemUte8PPyJQVvtF6kACvMYwX8V'); const graphQuery = gql` { assets { diff --git a/projects/rift-finance/networks.js b/projects/rift-finance/networks.js index c86af1ab9f9..4b2c0cbee46 100644 --- a/projects/rift-finance/networks.js +++ b/projects/rift-finance/networks.js @@ -1,14 +1,15 @@ +const sdk = require("@defillama/sdk"); module.exports = { aurora: { coreAddress: "0x40A01A4064b690cA33FA52d315ec02015eF5287E", startBlock: 58983267, graphUrl: - "https://api.thegraph.com/subgraphs/name/recursive-research/rift-subgraph-aurora", + sdk.graph.modifyEndpoint('GkqMC7XyPQFceCjT7rdqc62nzfF5WsVCn6HA9q17VBW'), }, ethereum: { coreAddress: "0x5D7e616B2c0bf268494A482e315a60814F97dBC8", startBlock: 14845882, graphUrl: - "https://api.thegraph.com/subgraphs/name/recursive-research/rift-subgraph", + sdk.graph.modifyEndpoint('44q7UpeVu33BTDwHd1iHJnEYXwcF9NM6HRd5oSVdLFDQ'), }, }; diff --git a/projects/rubicon/index.js b/projects/rubicon/index.js index 1a4c4844056..88f57564a40 100644 --- a/projects/rubicon/index.js +++ b/projects/rubicon/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -17,7 +18,7 @@ module.exports = { const config = { optimism: { - endpoint: 'https://api.thegraph.com/subgraphs/name/denverbaumgartner/rubiconmetricsoptimism', + endpoint: sdk.graph.modifyEndpoint('AUcAkUd4sJutFD3hYQfvB6uvXrEdYP26qiZwZ5qyrgTw'), owners: [ RUBICON_MARKET_OPTIMISM, // Rubicon Market "0xB0bE5d911E3BD4Ee2A8706cF1fAc8d767A550497", // bathETH @@ -30,7 +31,7 @@ const config = { ] }, arbitrum: { - endpoint: 'https://api.thegraph.com/subgraphs/name/jossduff/rubiconmetricsarbitrum', + endpoint: sdk.graph.modifyEndpoint('B4cTJXyWHMLkxAcpLGK7dJfArJdrbyWukCoCLPDT1f7n'), owners: [RUBICON_MARKET_ARBITRUM,] } } diff --git a/projects/sablier-v2/index.js b/projects/sablier-v2/index.js index 547f0c15041..63ee4894707 100644 --- a/projects/sablier-v2/index.js +++ b/projects/sablier-v2/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { isWhitelistedToken } = require('../helper/streamingHelper') const { cachedGraphQuery } = require('../helper/cache') @@ -33,11 +34,11 @@ const config = { ethereum: { endpoints: ['5EgaXheiBXZBCkepyGUYAu8pN31Dkbh7bpGtnLPqaT5m'], }, arbitrum: { endpoints: ['AR77w8PwmkAG7c9DJSsfW6yTrC5UdvdQ1Hz5ZTCuaUWz'], }, bsc: { endpoints: ['BVyi15zcH5eUg5PPKfRDDesezMezh6cAkn8LPvh7MVAF'], }, - xdai: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-gnosis'], }, - optimism: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-optimism'], }, + xdai: { endpoints: [sdk.graph.modifyEndpoint('EXhNLbhCbsewJPx4jx5tutNXpxwdgng2kmX1J7w1bFyu')], }, + optimism: { endpoints: [sdk.graph.modifyEndpoint('6e6Dvs1yDpsWDDREZRqxGi54SVdvTNzUdKpKJxniKVrp')], }, polygon: { endpoints: ['J8XJaFtxcz7xowzVJ5LwZhi35N5Lbtwfrt4sea6G1ysJ'], }, - avax: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-avalanche'], }, - base: { endpoints: ['https://api.thegraph.com/subgraphs/name/sablier-labs/sablier-v2-base'], }, + avax: { endpoints: [sdk.graph.modifyEndpoint('FdVwZuMV43yCb1nPmjnLQwmzS58wvKuLMPzcZ4UWgWAc')], }, + base: { endpoints: [sdk.graph.modifyEndpoint('HS6B8Wi9ZY7D9bjHEuJwDqHa5eCMX5d6H59YyGVnQ5QP')], }, blast: { endpoints: ['https://api.studio.thegraph.com/query/57079/sablier-v2-blast/version/latest'], }, } diff --git a/projects/sentiment/index.js b/projects/sentiment/index.js index e4ab49ad0ad..7e6184be993 100644 --- a/projects/sentiment/index.js +++ b/projects/sentiment/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const { cachedGraphQuery } = require('../helper/cache') @@ -8,7 +9,7 @@ async function tvl(api) { api.addTokens(assets, totalAssets) // const userAccounts = await api.call({ target: "0x17b07cfbab33c0024040e7c299f8048f4a49679b", abi: "address[]:getAllAccounts", }) - const data = await cachedGraphQuery('sentiment', 'https://api.thegraph.com/subgraphs/name/r0ohafza/sentiment', query, { fetchById: true, }) + 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, }), diff --git a/projects/soulswap/underworld-lending.js b/projects/soulswap/underworld-lending.js index eead9b86937..b1c9f3f9550 100644 --- a/projects/soulswap/underworld-lending.js +++ b/projects/soulswap/underworld-lending.js @@ -4,8 +4,8 @@ const { BigNumber } = require('bignumber.js'); // https://thegraph.com/hosted-service/subgraph/soulswapfantom/coffinbox const graphUrls = { - 'fantom': 'https://api.thegraph.com/subgraphs/name/soulswapfinance/fantom-coffinbox', - 'avax': 'https://api.thegraph.com/subgraphs/name/soulswapfinance/coffinbox-avalanche', + 'fantom': sdk.graph.modifyEndpoint('FhS8cRWsTPZwXfmn7b8YGvKii2h2ghr2v7ah5T8oiDmo'), + 'avax': sdk.graph.modifyEndpoint('6WonmxWbw3MSVXVR5P4VhC8jWBEG5RkipWzxhAA67hoP'), } const coffinboxQuery = gql` diff --git a/projects/steer/index.js b/projects/steer/index.js index 39ef515ba7f..615bdc660ab 100644 --- a/projects/steer/index.js +++ b/projects/steer/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const { stakings } = require("../helper/staking"); @@ -5,25 +6,25 @@ const { stakings } = require("../helper/staking"); const supportedChains = [ { name: 'Polygon', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/steerprotocol/steer-protocol-polygon', + subgraphEndpoint: sdk.graph.modifyEndpoint('uQxLz6EarmJcr2ymRRmTnrRPi8cCqas4XcPQb71HBvw'), chainId: 137, identifier: 'polygon' }, { name: 'Arbitrum', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/steerprotocol/steer-protocol-arbitrum', + subgraphEndpoint: sdk.graph.modifyEndpoint('HVC4Br5yprs3iK6wF8YVJXy4QZWBNXTCFp8LPe3UpcD4'), chainId: 42161, identifier: 'arbitrum' }, { name: 'Optimism', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/steerprotocol/steer-protocol-optimism', + subgraphEndpoint: sdk.graph.modifyEndpoint('GgW1EwNARL3dyo3acQ3VhraQQ66MHT7QnYuGcQc5geDG'), chainId: 10, identifier: 'optimism' }, { name: 'Binance', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/steerprotocol/steer-protocol-bsc', + subgraphEndpoint: sdk.graph.modifyEndpoint('GLDP56fPGDz3MtmhtfTkz5CxWiqiNLACVrsJ9RqQeL4U'), chainId: 56, identifier: 'bsc' }, @@ -35,7 +36,7 @@ const supportedChains = [ }, { name: 'Avalanche', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/steerprotocol/steer-protocol-avalanche', + subgraphEndpoint: sdk.graph.modifyEndpoint('GZotTj3rQJ8ZqVyodtK8TcnKcUxMgeF7mCJHGPYbu8dA'), chainId: 43114, identifier: 'avax' }, @@ -101,7 +102,7 @@ const supportedChains = [ }, { name: 'Fantom', - subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/steer-protocol-fantom-test', + subgraphEndpoint: sdk.graph.modifyEndpoint('8k6x2Uho5PEqjxHx5SeSE334MEaxSZqMZhH6p5XYvqjM'), chainId: 250, identifier: 'fantom' }, @@ -143,7 +144,7 @@ const supportedChains = [ }, // { // name: 'Celo', - // subgraphEndpoint: 'https://api.thegraph.com/subgraphs/name/rakeshbhatt10/steer-test-celo', + // subgraphEndpoint: sdk.graph.modifyEndpoint('DDwt4z55qLHPNmasiQXFH3nRjgCBrBhsiz3uEqKRJoa'), // chainId: 42220, // identifier: 'celo' // }, diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index 59c1aa00f3e..c51821cee7f 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { graphFetchById, } = require('../helper/cache') const { ART_BLOCKS, sumArtBlocks } = require('../helper/nft') const sdk = require('@defillama/sdk') @@ -34,7 +35,7 @@ module.exports = { ethereum: { tvl: async (api) => { const data = await graphFetchById({ - endpoint: 'https://api.thegraph.com/subgraphs/name/zeframlou/sudoswap', + endpoint: sdk.graph.modifyEndpoint('5ZEPsiros7UhV5noPBHHkzy1rfSBFRP2d2ghHZHHCugd'), query, api, options: { diff --git a/projects/superfluid.js b/projects/superfluid.js index 1e3099bdeaf..95f64ca96e5 100644 --- a/projects/superfluid.js +++ b/projects/superfluid.js @@ -6,8 +6,8 @@ const { transformBalances } = require('./helper/portedTokens') // Superfluid Supertokens can be retrieved using GraphQl API - cannot use block number to retrieve historical data at the moment though // TheGraph URL before being deprecated, before 2021-12-23 -// const polygonGraphUrl = 'https://api.thegraph.com/subgraphs/name/superfluid-finance/superfluid-matic' -// const xdaiGraphUrl = 'https://api.thegraph.com/subgraphs/name/superfluid-finance/superfluid-xdai' +// const polygonGraphUrl = sdk.graph.modifyEndpoint('BoiJR4mfVpVthWjTcansrCUFCjKY9MfDxgTfzkf4YpAN') +// const xdaiGraphUrl = sdk.graph.modifyEndpoint('A3LhWnFQR13mxQPFGUZML9vyBrLLKhLJBhfFsrdShxBU') const supertokensQuery = ` query get_supertokens($block: Int) { @@ -99,12 +99,12 @@ async function retrieveSupertokensBalances(chain, block, isVesting, ts, graphUrl } const config = { - avax: { graph: 'https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-avalanche-c', }, - polygon: { graph: 'https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-matic', }, - xdai: { graph: 'https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-xdai', }, - optimism: { graph: 'https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-optimism-mainnet', }, - arbitrum: { graph: 'https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-arbitrum-one', }, - bsc: { graph: 'https://api.thegraph.com/subgraphs/name/superfluid-finance/protocol-v1-bsc-mainnet', }, + avax: { graph: sdk.graph.modifyEndpoint('CtYR3ng4ED64HVEzDo49eKQgEf78RERiC8mDUtwLxda'), }, + polygon: { graph: sdk.graph.modifyEndpoint('7d9iBvDoM43SZiZhRR2pnpW8z3ujSEy9nC6RuqnufRU9'), }, + xdai: { graph: sdk.graph.modifyEndpoint('DE6fybqxjXLNvqGpd4QLAD92kAZNEmha1ZfKvS2qM376'), }, + optimism: { graph: sdk.graph.modifyEndpoint('S48f1C3KhNB2YbEMDxYHPzZ3FYt27fQZdruKfSTeEdZ'), }, + arbitrum: { graph: sdk.graph.modifyEndpoint('ES5GNHtiaqP6jFydhUyD9R4RackYrbGr6LEL1ZDauktd'), }, + bsc: { graph: sdk.graph.modifyEndpoint('FzYUiDH968QKbjURULGE5Pwh1ZRvcBNjDcut5YSiMYnj'), }, } module.exports = { diff --git a/projects/sushiswap-bentobox/helper.js b/projects/sushiswap-bentobox/helper.js index 36c37f5e904..eba23cee887 100644 --- a/projects/sushiswap-bentobox/helper.js +++ b/projects/sushiswap-bentobox/helper.js @@ -24,23 +24,23 @@ const toAmountAbi = const bentoSubgraphs = { ethereum: - "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-ethereum", - polygon: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-polygon", - fantom: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-fantom", - bsc: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-avalanche", + sdk.graph.modifyEndpoint('8HYeoDopVqqvb5RJEV2TtSzFsouYPz8cownnG3mbhiGy'), + polygon: sdk.graph.modifyEndpoint('6kJg5kFoQY8B8Ge2hqswHMqZDcmsR1TLUUz7AKov69fy'), + fantom: sdk.graph.modifyEndpoint('2KqXx6dGw7T4mZeGKyzQ9m9iyuCMjPR8PntLB9Gn9AEK'), + bsc: sdk.graph.modifyEndpoint('BggyE3r5snDsjx19jgZcbiBH7cbtrkpjvyGLFHMdXekd'), + avax: sdk.graph.modifyEndpoint('EhYaJodF1WQjKgxx1ZC63goeCwp5swD4AQRdaKXBm2xk'), arbitrum: - "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-arbitrum", + sdk.graph.modifyEndpoint('JZFyMKR4jnsFQ58q7dT6nbXenTzNgE176zTejc6Gf8Z'), optimism: - "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-optimism", - xdai: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-gnosis", - harmony: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-harmony", + sdk.graph.modifyEndpoint('8b4Hy4Kn7jCNAf9JFrqHb24LsqmapG4HrAsCrwdJf9Nu'), + xdai: sdk.graph.modifyEndpoint('9jn9kA6SKCNxXQSqb93zZPLdLaru4FeZBwLNWAK4nfZ2'), + harmony: sdk.graph.modifyEndpoint('Bioj7N3Rf2n7iBq9PVoaMie3WiuzPze9NMi7aSye7LFc'), moonbeam: - "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-moonbeam", + sdk.graph.modifyEndpoint('7wA5gqWNP4E1dPWBsTYvz5eQSDbtYDFgyU5BGdHr2UKp'), moonriver: - "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-moonriver", + sdk.graph.modifyEndpoint('73XEV6UQKpPSJn68WZBAYTwALcZtFJkFYn58ZoZUb7tn'), //metis: "", - celo: "https://api.thegraph.com/subgraphs/name/sushiswap/bentobox-celo", + celo: sdk.graph.modifyEndpoint('5DwkvjxPGVFFaWEMM68g1yztDdhCgJEYAxS6FuhkajzR'), //kava: "", }; @@ -60,23 +60,23 @@ const bentoQuery = gql` const furoSubgraphs = { ethereum: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-ethereum", + sdk.graph.modifyEndpoint('D8vYJpKN5SEHUkUWKSuorsL6FRt7hAQMnywnC4e93ygf'), polygon: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-polygon", - fantom: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-fantom", - bsc: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-avalanche", + sdk.graph.modifyEndpoint('4KsDNsyJjKX6bjwVNJQmJ7Dm3wovYXSX37UR39rNaMX4'), + fantom: sdk.graph.modifyEndpoint('E98zSR5UZBGBgQe2SSLZ5R6yj5GPqKDJcQJNDHTeV3cS'), + bsc: sdk.graph.modifyEndpoint('2wBYezghRA3hEJLQB4njUZGDNxCdU3u2gsLP5yVvBqKk'), + avax: sdk.graph.modifyEndpoint('8LVoX3JPEVAak8T8GoEfdJudMoP2bsGwd9tszJxo3Rnx'), arbitrum: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-arbitrum", + sdk.graph.modifyEndpoint('8eHhPeKDr646JH5KUBBcabAJzkWmLfu6pqBtpXQHa37F'), optimism: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-optimism", - xdai: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-gnosis", + sdk.graph.modifyEndpoint('8KnsmppMf9k6Qvyixxwmny7dYugTV7XT4htHTfyq3d69'), + xdai: sdk.graph.modifyEndpoint('5ToxB5xubMh9osdEDeX98JBAyzUVwkReGXAT1CzQhZCB'), harmony: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-harmony", + sdk.graph.modifyEndpoint('9D9C3ppoDE1zuZk5adznngKomLYS8NnC9zxniSS8vzgH'), moonbeam: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-moonbeam", + sdk.graph.modifyEndpoint('HJxpcsmaPV3L6PsqGFBHLczeMnL7bEgmL1D65edGx8pf'), moonriver: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-moonriver", + sdk.graph.modifyEndpoint('9ZqdKjfu7o9dX1RThXHDV9EqMn5CTvgpsPKKbpANg8yC'), }; const furoQuery = gql` @@ -97,11 +97,11 @@ const furoQuery = gql` `; const kashiSubgraphs = { - ethereum: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-ethereum", - polygon: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-polygon", - arbitrum: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-arbitrum", - bsc: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushiswap/kashi-avalanche", + 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 kashiQuery = gql` @@ -124,15 +124,15 @@ const kashiQuery = gql` const tridentSubgraphs = { polygon: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-polygon", - optimism: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-optimism", + optimism: sdk.graph.modifyEndpoint('FEgRuH9zeTRMZgpVv5YavoFEcisoK6KHk3zgQRRBqt51'), kava: "https://pvt.graph.kava.io/subgraphs/name/sushi-v2/trident-kava", metis: "https://andromeda.thegraph.metis.io/subgraphs/name/sushi-v2/trident-metis", bittorrent: "https://subgraphs.sushi.com/subgraphs/name/sushi-v2/trident-bttc", - arbitrum: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-arbitrum", - bsc: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-avalanche", + arbitrum: sdk.graph.modifyEndpoint('4x8H6ZoGfJykyZqAe2Kx2g5afsp17S9pn8GroRkpezhx'), + bsc: sdk.graph.modifyEndpoint('9TQaBw1sU3wi2kdevuygKhfhjP3STnwBe1jUnKxmNhmn'), + avax: sdk.graph.modifyEndpoint('NNTV3MgqSGtHMBGdMVLXzzDbKDKmsY87k3PsQ2knmC1'), }; const tridentQuery = gql` diff --git a/projects/sushiswap-furo/furo.js b/projects/sushiswap-furo/furo.js index cfecc8d7bd2..a299c787c64 100644 --- a/projects/sushiswap-furo/furo.js +++ b/projects/sushiswap-furo/furo.js @@ -5,23 +5,23 @@ const { isWhitelistedToken } = require('../helper/streamingHelper') const graphUrls = { ethereum: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-ethereum", + sdk.graph.modifyEndpoint('D8vYJpKN5SEHUkUWKSuorsL6FRt7hAQMnywnC4e93ygf'), polygon: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-polygon", - fantom: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-fantom", - bsc: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-avalanche", + sdk.graph.modifyEndpoint('4KsDNsyJjKX6bjwVNJQmJ7Dm3wovYXSX37UR39rNaMX4'), + fantom: sdk.graph.modifyEndpoint('E98zSR5UZBGBgQe2SSLZ5R6yj5GPqKDJcQJNDHTeV3cS'), + bsc: sdk.graph.modifyEndpoint('2wBYezghRA3hEJLQB4njUZGDNxCdU3u2gsLP5yVvBqKk'), + avax: sdk.graph.modifyEndpoint('8LVoX3JPEVAak8T8GoEfdJudMoP2bsGwd9tszJxo3Rnx'), arbitrum: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-arbitrum", + sdk.graph.modifyEndpoint('8eHhPeKDr646JH5KUBBcabAJzkWmLfu6pqBtpXQHa37F'), optimism: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-optimism", - xdai: "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-gnosis", + sdk.graph.modifyEndpoint('8KnsmppMf9k6Qvyixxwmny7dYugTV7XT4htHTfyq3d69'), + xdai: sdk.graph.modifyEndpoint('5ToxB5xubMh9osdEDeX98JBAyzUVwkReGXAT1CzQhZCB'), harmony: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-harmony", + sdk.graph.modifyEndpoint('9D9C3ppoDE1zuZk5adznngKomLYS8NnC9zxniSS8vzgH'), moonbeam: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-moonbeam", + sdk.graph.modifyEndpoint('HJxpcsmaPV3L6PsqGFBHLczeMnL7bEgmL1D65edGx8pf'), moonriver: - "https://api.thegraph.com/subgraphs/name/sushi-subgraphs/furo-moonriver", + sdk.graph.modifyEndpoint('9ZqdKjfu7o9dX1RThXHDV9EqMn5CTvgpsPKKbpANg8yC'), }; const bentoboxes = { diff --git a/projects/sushiswap-kashi/kashi-lending.js b/projects/sushiswap-kashi/kashi-lending.js index 2b1498f35af..5fce7a57300 100644 --- a/projects/sushiswap-kashi/kashi-lending.js +++ b/projects/sushiswap-kashi/kashi-lending.js @@ -1,12 +1,13 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const { blockQuery } = require("../helper/http"); const graphUrls = { - ethereum: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-ethereum", - polygon: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-polygon", - arbitrum: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-arbitrum", - bsc: "https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushiswap/kashi-avalanche", + 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 = { diff --git a/projects/sushiswap-trident/trident.js b/projects/sushiswap-trident/trident.js index ce68092fa4f..d30085dd2b7 100644 --- a/projects/sushiswap-trident/trident.js +++ b/projects/sushiswap-trident/trident.js @@ -1,18 +1,19 @@ +const sdk = require("@defillama/sdk"); const { blockQuery } = require('../helper/http') const graphUrls = { polygon: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-polygon", polygonOldRouter: - "https://api.thegraph.com/subgraphs/name/sushi-0m/trident-polygon", - optimism: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-optimism", + sdk.graph.modifyEndpoint('5LBvcUQthQDZTMe6cyJ7DbeokFkYeVpYYBZruHPUjMG5'), + optimism: sdk.graph.modifyEndpoint('FEgRuH9zeTRMZgpVv5YavoFEcisoK6KHk3zgQRRBqt51'), kava: "https://pvt.graph.kava.io/subgraphs/name/sushi-v2/trident-kava", metis: "https://andromeda.thegraph.metis.io/subgraphs/name/sushi-v2/trident-metis", bittorrent: "https://subgraphs.sushi.com/subgraphs/name/sushi-v2/trident-bttc", - arbitrum: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-arbitrum", - bsc: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-bsc", - avax: "https://api.thegraph.com/subgraphs/name/sushi-v2/trident-avalanche", + arbitrum: sdk.graph.modifyEndpoint('4x8H6ZoGfJykyZqAe2Kx2g5afsp17S9pn8GroRkpezhx'), + bsc: sdk.graph.modifyEndpoint('9TQaBw1sU3wi2kdevuygKhfhjP3STnwBe1jUnKxmNhmn'), + avax: sdk.graph.modifyEndpoint('NNTV3MgqSGtHMBGdMVLXzzDbKDKmsY87k3PsQ2knmC1'), }; const tridentQueryWithBlock = ` diff --git a/projects/sushiswap/api.js b/projects/sushiswap/api.js index 2c3e0c53af6..4f9445c4842 100644 --- a/projects/sushiswap/api.js +++ b/projects/sushiswap/api.js @@ -1,8 +1,9 @@ +const sdk = require("@defillama/sdk"); const { toUSDTBalances } = require('../helper/balances'); const { blockQuery } = require('../helper/http') const { getUniTVL } = require("../helper/unknownTokens") -const graphUrl = 'https://api.thegraph.com/subgraphs/name/zippoxer/sushiswap-subgraph-fork' +const graphUrl = sdk.graph.modifyEndpoint('8TXwDMLemg6p4eicVuixKk7Mw9aNxpod1PQQFdSvFj6H') const graphQuery = ` query get_tvl($block: Int) { uniswapFactory( diff --git a/projects/swaap-earn/index.js b/projects/swaap-earn/index.js index 1cff804f379..175ecf3a11c 100644 --- a/projects/swaap-earn/index.js +++ b/projects/swaap-earn/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const query = `query FundsTVL{ funds { id } }` @@ -6,7 +7,7 @@ module.exports = { } const config = { - arbitrum: { endpoint: 'https://api.thegraph.com/subgraphs/name/borelien/swaap-earn-arbitrum-test', }, + arbitrum: { endpoint: sdk.graph.modifyEndpoint('DHZvo3KRhryqHH9zj9sK8n9sjXvg3ddmDoVdLZcZQMJg'), }, } Object.keys(config).forEach(chain => { diff --git a/projects/swaap/index.js b/projects/swaap/index.js index 83cb7a77a24..6415219340e 100644 --- a/projects/swaap/index.js +++ b/projects/swaap/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { sumTokens2 } = require('../helper/unwrapLPs') const { cachedGraphQuery } = require('../helper/cache') @@ -6,7 +7,7 @@ const configV1 = { startBlock: 29520285, blockDelay: 30, theGraph: { - endpoint: 'https://api.thegraph.com/subgraphs/name/swaap-labs/swaapv1', + endpoint: sdk.graph.modifyEndpoint('A1ibaGVUkqdLeBG7VeeSB8jm9QNmS8phSz8iooXR8puv'), query: `pools: pools(orderBy: liquidity, orderDirection: desc) { id tokens { diff --git a/projects/synthetix/api.js b/projects/synthetix/api.js index 1850690eed1..4912de250c4 100644 --- a/projects/synthetix/api.js +++ b/projects/synthetix/api.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); @@ -27,7 +28,7 @@ const synthetixs = { } const snxGraphEndpoints = { ethereum: 'https://api.thegraph.com/subgraphs/name/0xngmi/snx-lite-ethereum', - optimism: 'https://api.thegraph.com/subgraphs/name/0xngmi/snx-lite-optimism-regenesis' + optimism: sdk.graph.modifyEndpoint('5NQi9n4ztd8M6EEDFKA6gwcCnbLdmzZRymiDbPkbjEWN') } const ethStaking = "0xc1aae9d18bbe386b102435a8632c8063d31e747c" const weth = ADDRESSES.ethereum.WETH diff --git a/projects/synthetix/apiCache.js b/projects/synthetix/apiCache.js index 735e61a8fd1..c9a52f1ef5a 100644 --- a/projects/synthetix/apiCache.js +++ b/projects/synthetix/apiCache.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); @@ -30,7 +31,7 @@ const synthetixs = { } const snxGraphEndpoints = { ethereum: 'https://api.thegraph.com/subgraphs/name/0xngmi/snx-lite-ethereum', - optimism: 'https://api.thegraph.com/subgraphs/name/0xngmi/snx-lite-optimism-regenesis' + optimism: sdk.graph.modifyEndpoint('5NQi9n4ztd8M6EEDFKA6gwcCnbLdmzZRymiDbPkbjEWN') } const ethStaking = "0xc1aae9d18bbe386b102435a8632c8063d31e747c" const weth = ADDRESSES.ethereum.WETH diff --git a/projects/timeswap/index.js b/projects/timeswap/index.js index 19acc60107b..45b9d2f993b 100644 --- a/projects/timeswap/index.js +++ b/projects/timeswap/index.js @@ -1,9 +1,10 @@ +const sdk = require("@defillama/sdk"); const { sumTokens2 } = require('../helper/unwrapLPs') const { cachedGraphQuery } = require('../helper/cache') const GRAPH_URLS = { polygon: - "https://api.thegraph.com/subgraphs/name/timeswap-labs/timeswap-defi-llama", + sdk.graph.modifyEndpoint('CjoTTVotweY5YZYjGbskVMZvJi8oD6urLnP1N7rWVFun'), }; function chainTvl(chain) { diff --git a/projects/unbound/index.js b/projects/unbound/index.js index be951d9483e..fa320ce92aa 100644 --- a/projects/unbound/index.js +++ b/projects/unbound/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { GraphQLClient, gql } = require('graphql-request') const { staking } = require("../helper/staking"); @@ -10,7 +11,7 @@ const UNB_POLY = '0xD81F558b71A5323e433729009D55159955F8A7f9' async function ethTvl() { - var endpoint = 'https://api.thegraph.com/subgraphs/name/unbound-finance/unbound' + var endpoint = sdk.graph.modifyEndpoint('8hYGnnqzaQ98ikvhi9uZ5GRmYjd7C2ykopeNpbA3DXUh') var graphQLClient = new GraphQLClient(endpoint) var query = gql` @@ -40,7 +41,7 @@ async function ethTvl() { } async function polyTvl() { - var endpoint = 'https://api.thegraph.com/subgraphs/name/unbound-finance/unbound-polygon' + var endpoint = sdk.graph.modifyEndpoint('EtpUNR2s35iZNRGfQ5vqCSayGf72THHd1duUtkxKreGU') var graphQLClient = new GraphQLClient(endpoint) var query = gql` diff --git a/projects/unifarm/helper.js b/projects/unifarm/helper.js index c15e19c096c..7cc92129724 100644 --- a/projects/unifarm/helper.js +++ b/projects/unifarm/helper.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const { graphQuery, } = require('../helper/http') const { sleep, log } = require('../helper/utils') @@ -78,9 +79,9 @@ query MyQuery { `; const v2EndPoints = { - ethereum: "https://api.thegraph.com/subgraphs/name/themohitmadan/unifarm-eth", - polygon: "https://api.thegraph.com/subgraphs/name/themohitmadan/unifarm-polygon", - bsc: "https://api.thegraph.com/subgraphs/name/themohitmadan/unifarm-bsc", + ethereum: sdk.graph.modifyEndpoint('Cquw1hbmvNrSvUjaqoRhu9nWv7AX1Mz2gEb9sapYdMA5'), + polygon: sdk.graph.modifyEndpoint('Ami8CcwigwYViJsUrwqK8DWwDPtFVAKbeYfii6ANahax'), + bsc: sdk.graph.modifyEndpoint('EsA5LyABgi7ibZJGNr5PQsQ2L8QDPZxNdDvd5qPs5CJj'), } const getV1Calls = async (chain) => { diff --git a/projects/vela-exchange/index.js b/projects/vela-exchange/index.js index 89124b09399..e7652239c76 100644 --- a/projects/vela-exchange/index.js +++ b/projects/vela-exchange/index.js @@ -1,11 +1,12 @@ +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.thegraph.com/subgraphs/name/velaexchange/vela-exchange-official" -const baseEndpoint = "https://api.thegraph.com/subgraphs/name/velaexchange/vela-exchange-official-base" +const arbitrumEndpoint = sdk.graph.modifyEndpoint('6H9PEiNPZgwXfpbijjesZh96LFBzUvkHmEutMoYQ9fvp') +const baseEndpoint = sdk.graph.modifyEndpoint('2qsbZ4X5TJM7NupC2eRJv167kBDFCDBd37KnK7PQtdga') async function staking_arbitrum_(api) { const query = ` diff --git a/projects/venus-isolated-pools/index.js b/projects/venus-isolated-pools/index.js index d3fb595a04c..3d8b21c4d7b 100644 --- a/projects/venus-isolated-pools/index.js +++ b/projects/venus-isolated-pools/index.js @@ -1,13 +1,14 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const sdk = require('@defillama/sdk') const { compoundExports2 } = require('../helper/compound') const config = { bsc: { - endpoint: 'https://api.thegraph.com/subgraphs/name/venusprotocol/venus-isolated-pools', + endpoint: sdk.graph.modifyEndpoint('H2a3D64RV4NNxyJqx9jVFQRBpQRzD6zNZjLDotgdCrTC'), corePools: ['0xfd36e2c2a6789db23113685031d7f16329158384'], }, ethereum: { - endpoint: 'https://api.thegraph.com/subgraphs/name/venusprotocol/venus-isolated-pools-ethereum', + endpoint: sdk.graph.modifyEndpoint('Htf6Hh1qgkvxQxqbcv4Jp5AatsaiY5dNLVcySkpCaxQ8'), corePools: ['0x67aA3eCc5831a65A5Ba7be76BED3B5dc7DB60796'], } } diff --git a/projects/zksynth/index.js b/projects/zksynth/index.js index cb3cfa07247..e9098e0d099 100644 --- a/projects/zksynth/index.js +++ b/projects/zksynth/index.js @@ -1,3 +1,4 @@ +const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') const { sumTokens2 } = require('../helper/unwrapLPs') @@ -11,7 +12,7 @@ const query = `{ }` async function tvl(api) { - const { pools } = await cachedGraphQuery('zksynth', 'https://api.thegraph.com/subgraphs/name/prasad-kumkar/zksynth-mainnet', query) + 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 }) } From cabaa026498dd85079f3de6b896d8d63236b77dc Mon Sep 17 00:00:00 2001 From: Dmitry Mpower Date: Thu, 13 Jun 2024 20:22:04 +0300 Subject: [PATCH 1988/2004] feat: Update tvl tokens (#10636) --- projects/daolama/tvl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/daolama/tvl.js b/projects/daolama/tvl.js index 2a016f9e84c..e431da19e93 100644 --- a/projects/daolama/tvl.js +++ b/projects/daolama/tvl.js @@ -3,5 +3,5 @@ const { POOL_ADDRESS } = require("./constants"); const { sumTokensExport } = require("../helper/chain/ton"); module.exports = { - tvl: sumTokensExport({ owner: POOL_ADDRESS, tokens: [ADDRESSES.null]}), + tvl: sumTokensExport({ owner: POOL_ADDRESS, tokens: [ADDRESSES.ton.TON, ADDRESSES.ton.USDT]}), } From c12eb5415159a92d3070d5d1639bf767434edaaa Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jun 2024 23:14:53 +0530 Subject: [PATCH 1989/2004] Fyde (#10642) * update Fyde TVL to include yieldModule * update methodlology * minor fix --------- Co-authored-by: Timo Neumann --- projects/fyde/index.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/projects/fyde/index.js b/projects/fyde/index.js index 2ed9adbc38a..d9d8bec6e96 100644 --- a/projects/fyde/index.js +++ b/projects/fyde/index.js @@ -1,12 +1,12 @@ const ADDRESSES = require('../helper/coreAssets.json') const FYDE_CONTRACT = "0x87Cc45fFF5c0933bb6aF6bAe7Fc013b7eC7df2Ee"; const RESTAKING_AGGREGATOR = "0x3f69F62e25441Cf72E362508f4d6711d53B05341"; +const ORACLE = "0x05198327206123E89c24ABd9A482316449bD2aEe" const WETH = ADDRESSES.ethereum.WETH; 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 }) - api.addTokens(tokens, bals) // add restaking aggregator TVL const amountStakedETH = await api.call({ @@ -16,10 +16,27 @@ async function tvl(api) { }); 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] !== '0x0000000000000000000000000000000000000000') { + const balance = bals[i] / 10 ** (decimals[i] - 18) + api.add(response[i], balance) + } else + api.add(tokens[i], bals[i]) + } } module.exports = { - methodology: 'Read out balances from internal accounting for each asset in Fyde. Add ETH staked in LRT Aggregator.', + methodology: 'Read out balances from internal accounting for each asset in Fyde in the YieldModule. Add ETH staked in LRT Aggregator.', ethereum: { tvl } From 4eb7d68e9ccf3e8b00f03f9c7c515babbaec4622 Mon Sep 17 00:00:00 2001 From: Aymen <146243083+aymentrosh@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:45:21 +0100 Subject: [PATCH 1990/2004] added bsc to karak (#10641) --- projects/karak/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/karak/index.js b/projects/karak/index.js index 345fd55a23b..8e1fc4e132e 100644 --- a/projects/karak/index.js +++ b/projects/karak/index.js @@ -4,7 +4,8 @@ const config = { ethereum: { factory: '0x54e44dbb92dba848ace27f44c0cb4268981ef1cc', }, arbitrum: { factory: '0x399f22ae52a18382a67542b3de9bed52b7b9a4ad', }, karak: { factory: '0xB308474350D75447cA8731B7Ce87c9ee9DA03B1C', }, - mantle: { factory: '0x4a2b015CcB8658998692Db9eD4522B8e846962eD' }, + mantle: { factory: '0x4a2b015CcB8658998692Db9eD4522B8e846962eD', }, + bsc: { factory: '0x4a2b015CcB8658998692Db9eD4522B8e846962eD', }, } Object.keys(config).forEach(chain => { From c76dcc1924bf88c744c816957e4af0ab4d1f281a Mon Sep 17 00:00:00 2001 From: jovanjellylabs <107772201+jovanjellylabs@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:33:02 +0200 Subject: [PATCH 1991/2004] jellyverse listing (#10639) --- projects/jellyverse/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 projects/jellyverse/index.js diff --git a/projects/jellyverse/index.js b/projects/jellyverse/index.js new file mode 100644 index 00000000000..63501defdd7 --- /dev/null +++ b/projects/jellyverse/index.js @@ -0,0 +1,12 @@ +const { onChainTvl } = require('../helper/balancer') + +const config = { + vault: "0xFB43069f6d0473B85686a85F4Ce4Fc1FD8F00875", + startingBlock: 81_247_457, +}; + +module.exports = { + sei: { + tvl: onChainTvl(config.vault, config.startingBlock), + } +} From 9437d9cab4ada0eb645999c6e4ecfc8071bbdc11 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 13 Jun 2024 20:13:57 +0100 Subject: [PATCH 1992/2004] fix syntax --- projects/keep.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/keep.js b/projects/keep.js index 00479af2c8b..90c4457adf2 100644 --- a/projects/keep.js +++ b/projects/keep.js @@ -1,7 +1,6 @@ const sdk = require("@defillama/sdk"); const { GraphQLClient, } = require('graphql-request') const utils = require('./helper/utils'); -const sdk = require('@defillama/sdk') async function tvl() { var q2 = `{ From 247148c5a73e3bd084aff60e927f97a4f7cf1a74 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 13 Jun 2024 20:19:35 +0100 Subject: [PATCH 1993/2004] fix syntax --- projects/defiplaza.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/defiplaza.js b/projects/defiplaza.js index ad7b2b6948b..3da8a98f9a6 100644 --- a/projects/defiplaza.js +++ b/projects/defiplaza.js @@ -4,7 +4,6 @@ const { cachedGraphQuery } = require('./helper/cache'); const { sumTokens, queryAddresses } = require('./helper/chain/radixdlt'); const { getConfig } = require('./helper/cache'); const { get } = require('./helper/http'); -const sdk = require('@defillama/sdk'); const graphUrl = sdk.graph.modifyEndpoint('4z9FBF12CrfoQJhAkWicqzY2fKYN9QRmuzSsizVXhjKa'); From 94807839a38ec44ebfcb0b5c11e22bc4432df64b Mon Sep 17 00:00:00 2001 From: 0xngmi <0xngmi@protonmail.com> Date: Thu, 13 Jun 2024 20:29:30 +0100 Subject: [PATCH 1994/2004] fix duplicated sdk --- projects/ethalend/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/ethalend/index.js b/projects/ethalend/index.js index 6fbff372750..ce4b17865af 100644 --- a/projects/ethalend/index.js +++ b/projects/ethalend/index.js @@ -1,6 +1,5 @@ const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk') const abi = require('./abi.json') const { unwrapUniswapLPs } = require('../helper/unwrapLPs') const { staking } = require('../helper/staking') From 275c4bd4c1690a0be4e8b89fba0ebbb95a6b7fe7 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 13 Jun 2024 20:42:28 +0100 Subject: [PATCH 1995/2004] fix syntax --- projects/ethalend/index.js | 1 - projects/prime-protocol/index.js | 1 - projects/synthetix/api.js | 1 - projects/synthetix/apiCache.js | 1 - 4 files changed, 4 deletions(-) diff --git a/projects/ethalend/index.js b/projects/ethalend/index.js index ce4b17865af..d38667239d4 100644 --- a/projects/ethalend/index.js +++ b/projects/ethalend/index.js @@ -1,4 +1,3 @@ -const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') const abi = require('./abi.json') const { unwrapUniswapLPs } = require('../helper/unwrapLPs') diff --git a/projects/prime-protocol/index.js b/projects/prime-protocol/index.js index a2d45b103b3..07379c2fdd3 100644 --- a/projects/prime-protocol/index.js +++ b/projects/prime-protocol/index.js @@ -1,5 +1,4 @@ const sdk = require("@defillama/sdk"); -const sdk = require('@defillama/sdk'); const { sumTokens2, } = require('../helper/unwrapLPs'); const { cachedGraphQuery } = require('../helper/cache'); diff --git a/projects/synthetix/api.js b/projects/synthetix/api.js index 4912de250c4..ec2936a0873 100644 --- a/projects/synthetix/api.js +++ b/projects/synthetix/api.js @@ -1,6 +1,5 @@ const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); const abi = require('./abi.json'); const { getBlock } = require('../helper/http'); diff --git a/projects/synthetix/apiCache.js b/projects/synthetix/apiCache.js index c9a52f1ef5a..50c94547c18 100644 --- a/projects/synthetix/apiCache.js +++ b/projects/synthetix/apiCache.js @@ -1,6 +1,5 @@ const sdk = require("@defillama/sdk"); const ADDRESSES = require('../helper/coreAssets.json') -const sdk = require('@defillama/sdk'); const BigNumber = require('bignumber.js'); const abi = require('./abi.json'); const { getBlock } = require('../helper/http'); From fa2dbc5ddf80b70d8b18e03a862eecab2185c7a2 Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 13 Jun 2024 20:49:06 +0100 Subject: [PATCH 1996/2004] fix syntax --- projects/sudoswap/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/sudoswap/index.js b/projects/sudoswap/index.js index c51821cee7f..a2e2ddd95c6 100644 --- a/projects/sudoswap/index.js +++ b/projects/sudoswap/index.js @@ -1,7 +1,6 @@ const sdk = require("@defillama/sdk"); const { graphFetchById, } = require('../helper/cache') const { ART_BLOCKS, sumArtBlocks } = require('../helper/nft') -const sdk = require('@defillama/sdk') const query = ` query get_pairs($lastId: String, $block: Int) { From df411578267f0589ea78d8e5fa34fd3484bc6528 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:54:09 +0200 Subject: [PATCH 1997/2004] use token labels --- projects/MantraProtocol/index.js | 3 +- projects/agentfi/ca.js | 7 +- projects/agentfi/strategies/dex-balancer.js | 5 +- projects/airpuff/index.js | 8 +- projects/amphor/index.js | 3 +- projects/bean/index.js | 5 +- projects/bitparty/index.js | 3 +- projects/blackwing/index.js | 2 +- projects/bunnyswap/index.js | 3 +- projects/cakepie/index.js | 3 +- projects/chi-protocol/index.js | 5 +- projects/defusion/index.js | 3 +- projects/divvy-bet/index.js | 3 +- projects/ethosx/index.js | 5 +- projects/free-protocol/index.js | 17 +- projects/fusefi/index.js | 3 +- projects/fyde/index.js | 2 +- projects/helio-money/index.js | 8 +- projects/helper/tokenMapping.js | 38 ++-- projects/hinkal/hinkalUtils.js | 3 +- projects/hinkal/registryTokens.js | 193 +++++++++--------- .../registryTokensWithUnderlyingAddresses.js | 109 +++++----- projects/instadapp-lite/index.js | 9 +- projects/jellyverse/index.js | 17 +- projects/kalax/index.js | 5 +- projects/kiloex/index.js | 2 +- projects/lynx/index.js | 5 +- projects/meson/index.js | 6 +- projects/metavault-v3/index.js | 3 +- projects/mitosis/index.js | 5 +- projects/particle-trade-duo/index.js | 2 +- projects/rehold-v2/index.js | 12 +- projects/rize/index.js | 6 +- projects/swell-l2-farm/index.js | 6 +- projects/tlx/index.js | 3 +- projects/treasury/golem.js | 3 +- projects/treasury/ribbon.js | 2 +- projects/treasury/safe.js | 2 +- projects/unirouter/index.js | 2 +- projects/unlockd-v2/index.js | 3 +- projects/voltage-stableswap/index.js | 2 +- projects/wise-lending-v2/index.js | 3 +- projects/zeno/index.js | 7 +- projects/zkLink/index.js | 2 +- 44 files changed, 286 insertions(+), 252 deletions(-) diff --git a/projects/MantraProtocol/index.js b/projects/MantraProtocol/index.js index 22ba79f2158..20836e69843 100644 --- a/projects/MantraProtocol/index.js +++ b/projects/MantraProtocol/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require('@defillama/sdk') -const NATIVE_TOKEN_INTERNAL_ADDRESS = '0x0000000000000000000000000000000000000000' +const NATIVE_TOKEN_INTERNAL_ADDRESS = ADDRESSES.null const MANTRA_CONTRACT_PER_CHAIN = { shibarium: '0xf27B9704a15fFe47818fD48660D952235e9C39aF', diff --git a/projects/agentfi/ca.js b/projects/agentfi/ca.js index 3ae558dce6f..4017cfec77b 100644 --- a/projects/agentfi/ca.js +++ b/projects/agentfi/ca.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const tokenAddress = { - USDB: "0x4300000000000000000000000000000000000003", - WETH: "0x4300000000000000000000000000000000000004", - ETH: "0x0000000000000000000000000000000000000000" + USDB: ADDRESSES.blast.USDB, + WETH: ADDRESSES.blast.WETH, + ETH: ADDRESSES.null }; const collection = { diff --git a/projects/agentfi/strategies/dex-balancer.js b/projects/agentfi/strategies/dex-balancer.js index dd23b450d34..ecbbd4cca0a 100644 --- a/projects/agentfi/strategies/dex-balancer.js +++ b/projects/agentfi/strategies/dex-balancer.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../../helper/coreAssets.json') const { balanceFetcher, uniV2Lp, tokenAddress } = require('../ca') const BigNumber = require("bignumber.js"); @@ -5,9 +6,9 @@ const BigNumber = require("bignumber.js"); // underlying token mapping const RingTokenMappings = { // fwUSDB -> USDB - "0x866f2C06B83Df2ed7Ca9C2D044940E7CD55a06d6": tokenAddress.USDB, + [ADDRESSES.blast.fwUSDB]: tokenAddress.USDB, // fwWETH -> WETH - "0x66714DB8F3397c767d0A602458B5b4E3C0FE7dd1": tokenAddress.WETH, + [ADDRESSES.blast.fwWETH]: tokenAddress.WETH, }; async function getTvlForDexBalancer(agentAddresses, api) { diff --git a/projects/airpuff/index.js b/projects/airpuff/index.js index d5313c3863b..66bec24fafe 100644 --- a/projects/airpuff/index.js +++ b/projects/airpuff/index.js @@ -22,22 +22,22 @@ module.exports = { tvl: async (api) => { const KUSDC = { vault: "0x4c18E80b801AA24066D8B1C6E65ee245497Cb741", - token: "0xa415021bC5c4C3b5B989116DC35Ae95D9C962c8D", + token: ADDRESSES.karak.USDC, }; const KWETH = { vault: "0x9a9631F7BEcE5C6E0aBA1f73f0e5796c534dc4db", - token: "0x4200000000000000000000000000000000000006", + token: ADDRESSES.optimism.WETH_1, }; const wethLending = { vault: "0xd6034F9147CF7528e857403Dea93bc45743295eb", - token: "0x4200000000000000000000000000000000000006", + token: ADDRESSES.optimism.WETH_1, }; const usdcLending = { vault: "0x475820E4bCE0E3d233Ad7f6A8c9DD1f66974c5d6", - token: "0xa415021bC5c4C3b5B989116DC35Ae95D9C962c8D", + token: ADDRESSES.karak.USDC, }; const KarakUSDCBal = await api.call({ target: KUSDC.vault, abi: contractAbis.getTotalSupply }); diff --git a/projects/amphor/index.js b/projects/amphor/index.js index 891a5b603bc..1d34398948e 100644 --- a/projects/amphor/index.js +++ b/projects/amphor/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumERC4626VaultsExport } = require('../helper/erc4626'); const { sumTokensExport } = require('../helper/unwrapLPs'); const sdk = require('@defillama/sdk'); @@ -18,7 +19,7 @@ const config = { const claimableSilo = '0x06eCFaAde8fcb8C1bC58CB05104604282f8a8144'; const pendingSilo = '0x361a027e660844f336d5fa07E4cb38c40d5880d9'; -const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; +const WETH = ADDRESSES.ethereum.WETH; const tvl = sdk.util.sumChainTvls([ sumERC4626VaultsExport({ diff --git a/projects/bean/index.js b/projects/bean/index.js index 09207c32199..c19f8559c80 100644 --- a/projects/bean/index.js +++ b/projects/bean/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const BEANSTALK = "0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5"; const BEAN_ERC20_V1 = "0xdc59ac4fefa32293a95889dc396682858d52e5db"; @@ -12,9 +13,9 @@ const BEAN3CRV_V2 = "0xc9c32cd16bf7efb85ff14e0c8603cc90f6f2ee49"; const BEANETH_V2 = "0xbea0e11282e2bb5893bece110cf199501e872bad"; // Underlying non-bean tokens -const WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; +const WETH = ADDRESSES.ethereum.WETH; const CRV3 = "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490"; -const LUSD = "0x5f98805a4e8be255a32880fdec7f6728c6568ba0"; +const LUSD = ADDRESSES.ethereum.LUSD; /// REFERENCE BLOCKS TIMESTAMPS // Whitelist BEANETH_V1 12974075 1628288832 diff --git a/projects/bitparty/index.js b/projects/bitparty/index.js index e6927521d13..c5a0a6e70a8 100644 --- a/projects/bitparty/index.js +++ b/projects/bitparty/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs') module.exports = { @@ -6,7 +7,7 @@ module.exports = { owners: ['0xb002b938d63fe8762f2a0eff9e49a8e20a0078e8',], tokens: [ nullAddress, - '0xef63d4e178b3180beec9b0e143e0f37f4c93f4c2', + ADDRESSES.btr.ETH, '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2', '0x9827431e8b77e87c9894bd50b055d6be56be0030', '0xfF204e2681A6fA0e2C3FaDe68a1B28fb90E4Fc5F', diff --git a/projects/blackwing/index.js b/projects/blackwing/index.js index f1c0f529b97..f2fc33008e1 100644 --- a/projects/blackwing/index.js +++ b/projects/blackwing/index.js @@ -27,7 +27,7 @@ const ETHEREUM_MAINNET_PT_SUSDE_25JUL2024 = "0xd810362556296c834e30c9a61d8e21a5c const ETHEREUM_MAINNET_PT_WEETH_26DEC2024 = "0x6ee2b5e19ecba773a352e5b21415dc419a700d1d"; const ETHEREUM_MAINNET_PT_WEETH_27JUN2024 = "0xc69ad9bab1dee23f4605a82b3354f8e40d1e5966"; -const ETHEREUM_MAINNET_SHIB_ADDRESS = "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"; +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"; diff --git a/projects/bunnyswap/index.js b/projects/bunnyswap/index.js index f86a7b0de5d..340bcc68424 100644 --- a/projects/bunnyswap/index.js +++ b/projects/bunnyswap/index.js @@ -1,10 +1,11 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs") module.exports={ base: { tvl: sumTokensExport({ tokens:[ - "0x4200000000000000000000000000000000000006", + ADDRESSES.optimism.WETH_1, "0x0bD4887f7D41B35CD75DFF9FfeE2856106f86670" ], owners:[ diff --git a/projects/cakepie/index.js b/projects/cakepie/index.js index 566838e4eed..720231d56c6 100644 --- a/projects/cakepie/index.js +++ b/projects/cakepie/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const CakepieReaderAbi = require("./abis/CakepieReader.json"); const MasterCakepieAbi = require("./abis/MasterCakepie.json"); const config = require("./config") @@ -12,7 +13,7 @@ async function tvl(api) { token = token.toLowerCase() switch (token) { case '0x581fa684d0ec11ccb46b1d92f1f24c8a3f95c0ca': return CakeAddress // mcake -> cake - case '0x7dc91cbd6cb5a3e6a95eed713aa6bf1d987146c8': return '0x2170ed0880ac9a755fd29b2688956bd959f933f8' // mwbeth -> eth + case '0x7dc91cbd6cb5a3e6a95eed713aa6bf1d987146c8': return ADDRESSES.bsc.ETH // mwbeth -> eth default: return token } } diff --git a/projects/chi-protocol/index.js b/projects/chi-protocol/index.js index a2914a14e11..117d14ce928 100644 --- a/projects/chi-protocol/index.js +++ b/projects/chi-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require('../helper/unwrapLPs'); const { pool2s } = require("../helper/pool2"); @@ -6,8 +7,8 @@ const USC_STAKING = '0x60aBb55c8488698153dB0AF2af362EdB25A505e3'; const CHI_STAKING = '0xaB1dCa1C0f948c268652eedC676966002Ae241c6'; const CHI_LOCKING = '0xE3dD17ff009bAC84e32130fcA5f01C908e956603'; const CHI_VESTING = '0x426DBAa2B33cE1B833C13b72503F5128AFef79fC'; -const STETH = '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84'; -const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' +const STETH = ADDRESSES.ethereum.STETH; +const WETH = ADDRESSES.ethereum.WETH const USC = '0x38547D918b9645F2D94336B6b61AEB08053E142c'; const CHI = '0x3b21418081528845a6DF4e970bD2185545b712ba'; diff --git a/projects/defusion/index.js b/projects/defusion/index.js index 90c12c6ed19..ecd1cb2f071 100644 --- a/projects/defusion/index.js +++ b/projects/defusion/index.js @@ -1,6 +1,7 @@ +const ADDRESSES = require('../helper/coreAssets.json') async function tvl(api) { const supply = await api.call({ abi: 'erc20:totalSupply', target: '0xCdde1f5D971A369eB952192F9a5C367f33a0A891'}) - api.add('0xC054751BdBD24Ae713BA3Dc9Bd9434aBe2abc1ce', supply) + api.add(ADDRESSES.tomochain.TOMO, supply) } module.exports.tomochain = { diff --git a/projects/divvy-bet/index.js b/projects/divvy-bet/index.js index fe8a3d9d62c..3f56141cc47 100644 --- a/projects/divvy-bet/index.js +++ b/projects/divvy-bet/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { Program } = require("@project-serum/anchor"); const { PublicKey } = require("@solana/web3.js"); const { getProvider, sumTokens2 } = require("../helper/solana"); @@ -10,7 +11,7 @@ async function tvl() { )[0]; } - const NATIVE_MINT = "So11111111111111111111111111111111111111112"; + const NATIVE_MINT = ADDRESSES.solana.SOL; const DIVVY_ADMIN = "AHf1MX99d31ebLfAydVPe2vVdgzZGuUaW972znWPNzZY"; const programId = new PublicKey("dvyFwAPniptQNb1ey4eM12L8iLHrzdiDsPPDndd6xAR"); diff --git a/projects/ethosx/index.js b/projects/ethosx/index.js index 98a71c0a118..b6969293c40 100644 --- a/projects/ethosx/index.js +++ b/projects/ethosx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const ETH_PUT_CONTROLLER_ADDRESS = "0x55E008E3b0Aa6808Ca8B8Ba1DC319EC132554aCd"; const ETH_CALL_CONTROLLER_ADDRESS = @@ -5,8 +6,8 @@ const ETH_CALL_CONTROLLER_ADDRESS = const BTC_PUT_CONTROLLER_ADDRESS = "0x3273C69432b2B0D808499F4Cc56113Be6c7A673F"; const BTC_CALL_CONTROLLER_ADDRESS = "0x18AadF2a220D3FEb958Ed161263185f0805D11a1"; -const USDC_ARB_ADDRESS = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"; -const USDC_BSC_ADDRESS = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; +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.", diff --git a/projects/free-protocol/index.js b/projects/free-protocol/index.js index 9c4a21af38f..7ce2b8688dd 100644 --- a/projects/free-protocol/index.js +++ b/projects/free-protocol/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require('../helper/unwrapLPs'); module.exports = { @@ -10,7 +11,7 @@ module.exports = { '0xE12382e046DB998DE89aF19Ca799CbB757106781', ], tokens: [ - '0xB880fd278198bd590252621d4CD071b1842E9Bcd', + ADDRESSES.merlin.WBTC_1, '0xC5BD913eE3BEFD4721C609177F29a8770ACD7242', '0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71', ], @@ -26,9 +27,9 @@ module.exports = { '0xeea3A032f381AB1E415e82Fe08ebeb20F513c42c', ], tokens: [ - '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + ADDRESSES.ethereum.USDC, '0x7122985656e38bdc0302db86685bb972b145bd3c', - '0xdac17f958d2ee523a2206206994597c13d831ec7', + ADDRESSES.ethereum.USDT, '0x7122985656e38BDC0302Db86685bb972b145bD3C', ] }) @@ -40,8 +41,8 @@ module.exports = { '0xBA43F3C8733b0515B5C23DFF46F47Af6EB46F85C', ], tokens: [ - '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', - '0xaf88d065e77c8cc2239327c5edb3a432268e5831', + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.USDC_CIRCLE, ] }) }, @@ -63,9 +64,9 @@ module.exports = { '0x0A80028d73Faaee6e57484E3335BeFda0de7f455', ], tokens: [ - '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409', - '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', - '0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409', + ADDRESSES.ethereum.FDUSD, + ADDRESSES.bsc.BTCB, + ADDRESSES.ethereum.FDUSD, '0x4aae823a6a0b376De6A78e74eCC5b079d38cBCf7', ] }) diff --git a/projects/fusefi/index.js b/projects/fusefi/index.js index e80a3e353fc..f66c14ab691 100644 --- a/projects/fusefi/index.js +++ b/projects/fusefi/index.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const swap = require("./swap"); const { stakings } = require("../helper/staking"); -const VOLT_TOKEN = "0x34Ef2Cc892a88415e9f02b91BfA9c91fC0bE6bD4".toLowerCase(); +const VOLT_TOKEN = ADDRESSES.fuse.VOLT.toLowerCase(); const VOLT_BAR = "0x97a6e78c9208c21afaDa67e7E61d7ad27688eFd1".toLowerCase(); const VOLT_VOTE_ESCROW = "0xB0a05314Bd77808269e2E1E3D280Bff57Ba85672".toLowerCase() diff --git a/projects/fyde/index.js b/projects/fyde/index.js index d9d8bec6e96..c099c960cd7 100644 --- a/projects/fyde/index.js +++ b/projects/fyde/index.js @@ -27,7 +27,7 @@ async function tvl(api) { const decimals = await api.multiCall({ abi: 'uint8:decimals', calls: tokens}) for (let i = 0; i < tokens.length; i++) { - if (response[i] !== '0x0000000000000000000000000000000000000000') { + if (response[i] !== ADDRESSES.null) { const balance = bals[i] / 10 ** (decimals[i] - 18) api.add(response[i], balance) } else diff --git a/projects/helio-money/index.js b/projects/helio-money/index.js index 14518e17f3c..29f1e90b662 100644 --- a/projects/helio-money/index.js +++ b/projects/helio-money/index.js @@ -42,22 +42,22 @@ module.exports = { // BTCB [ - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + ADDRESSES.bsc.BTCB, "0xad9eAAe95617c39019aCC42301a1dCa4ea5b6f65", ], // ezETH [ - "0x2416092f143378750bb29b79ed961ab195cceea5", + ADDRESSES.blast.ezETH, "0xd7E33948e2a43e7C1ec2F19937bf5bf8BbF9BaE8", ], // weETH [ - "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", + ADDRESSES.blast.weETH, "0x2367f2Da6fd39De6944218CC9EC706BCdc9a6918", ], // STONE [ - "0x80137510979822322193fc997d400d5a6c747bf7", + ADDRESSES.scroll.STONE, "0x876cd9a380Ee7712129b52f8293F6f06056c3104", ], ], diff --git a/projects/helper/tokenMapping.js b/projects/helper/tokenMapping.js index 172986f2aac..893d6d8097b 100644 --- a/projects/helper/tokenMapping.js +++ b/projects/helper/tokenMapping.js @@ -46,15 +46,15 @@ const fixBalancesTokens = { "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex::alex": { coingeckoId: "alexgo", decimals: 8 }, }, stellar: { - "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA": { coingeckoId: "stellar", decimals: 7}, - "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75": { coingeckoId: "usd-coin", decimals: 7}, + [ADDRESSES.stellar.XLM]: { coingeckoId: "stellar", decimals: 7}, + [ADDRESSES.stellar.USDC]: { coingeckoId: "usd-coin", decimals: 7}, }, defichain_evm: { - '0x49febbf9626b2d39aba11c01d83ef59b3d56d2a4': { coingeckoId: "defichain", decimals: 18 }, - '0xff0000000000000000000000000000000000000d': { coingeckoId: "usd-coin", decimals: 18 }, - '0xff00000000000000000000000000000000000003': { coingeckoId: "tether", decimals: 18 }, - '0xff00000000000000000000000000000000000001': { coingeckoId: "ethereum", decimals: 18 }, - '0xff0000000000000000000000000000000000000f': { coingeckoId: "decentralized-usd", decimals: 18 }, + [ADDRESSES.defichain_evm.DFI]: { coingeckoId: "defichain", decimals: 18 }, + [ADDRESSES.defichain_evm.USDT]: { coingeckoId: "usd-coin", decimals: 18 }, + [ADDRESSES.defichain_evm.USDC]: { coingeckoId: "tether", decimals: 18 }, + [ADDRESSES.defichain_evm.ETH]: { coingeckoId: "ethereum", decimals: 18 }, + [ADDRESSES.defichain_evm.DUSD]: { coingeckoId: "decentralized-usd", decimals: 18 }, '0x66F3Cf265D2D146A0348F6fC67E3Da0835e0968E': { coingeckoId: "javsphere", decimals: 18 }, }, ace: { @@ -91,13 +91,13 @@ const fixBalancesTokens = { KBTC: { coingeckoId: "kintsugi-btc", decimals: 8 }, }, ham: { - '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: 'ethereum', decimals: 18 }, }, blast: { '0xf7bc58b8d8f97adc129cfc4c9f45ce3c0e1d2692': { coingeckoId: "wrapped-bitcoin", decimals: 8 }, '0x9e0d7d79735e1c63333128149c7b616a0dc0bbdb': { coingeckoId: "weth", decimals: 18 }, //pirex eth '0xde55b113a27cc0c5893caa6ee1c020b6b46650c0': { coingeckoId: "deus-finance-2", decimals: 18 }, // deus - '0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34': { coingeckoId: "ethena-usde", decimals: 18 }, + [ADDRESSES.arbitrum.USDe]: { coingeckoId: "ethena-usde", decimals: 18 }, }, solana: { 'AZsHEMXd36Bj1EMNXhowJajpUXzrKcK57wW4ZGXVa7yR': { coingeckoId: "guacamole", decimals: 5 }, @@ -111,7 +111,7 @@ const fixBalancesTokens = { '0x85D431A3a56FDf2d2970635fF627f386b4ae49CC': { coingeckoId: "merlin-s-seal-btc", decimals: 18 }, }, btr: { - '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, + [ADDRESSES.null]: { coingeckoId: 'bitcoin', decimals: 18 }, '0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, '0xfe9f969faf8ad72a83b761138bf25de87eff9dd2': { coingeckoId: 'tether', decimals: 6 }, '0x9827431e8b77e87c9894bd50b055d6be56be0030': { coingeckoId: 'usd-coin', decimals: 6 }, @@ -123,10 +123,10 @@ const fixBalancesTokens = { //REMOVE '0xA984b70f7B41EE736B487D5F3D9C1e1026476Ea3': { coingeckoId: 'wrapped-bitcoin', decimals: 18 }, }, cyeth: { - '0x4200000000000000000000000000000000000006': { coingeckoId: 'ethereum', decimals: 18 }, + [ADDRESSES.optimism.WETH_1]: { coingeckoId: 'ethereum', decimals: 18 }, }, bouncebit: { - '0x0000000000000000000000000000000000000000': { coingeckoId: 'bouncebit', decimals: 18 }, + [ADDRESSES.null]: { coingeckoId: 'bouncebit', decimals: 18 }, '0xf4c20e5004c6fdcdda920bdd491ba8c98a9c5863': { coingeckoId: 'bouncebit', decimals: 18 }, '0x77776b40c3d75cb07ce54dea4b2fd1d07f865222': { coingeckoId: 'tether', decimals: 18 }, '0xF5e11df1ebCf78b6b6D26E04FF19cD786a1e81dC': { coingeckoId: 'bitcoin', decimals: 18 }, @@ -138,19 +138,19 @@ const fixBalancesTokens = { '0x2967e7bb9daa5711ac332caf874bd47ef99b3820': { coingeckoId: 'wrapped-stbtc', decimals: 18 }, }, real: { - '0x0000000000000000000000000000000000000000': { coingeckoId: 'bitcoin', decimals: 18 }, + [ADDRESSES.null]: { coingeckoId: 'bitcoin', decimals: 18 }, '0x90c6e93849e06ec7478ba24522329d14a5954df4': { coingeckoId: 'ethereum', decimals: 18 }, '0x75d0cbf342060b14c2fc756fd6e717dfeb5b1b70': { coingeckoId: 'dai', decimals: 18 }, '0x83fedbc0b85c6e29b589aa6bdefb1cc581935ecd': { coingeckoId: 'mountain-protocol-usdm', decimals: 18 }, }, taiko: { - '0xA51894664A773981C6C112C43ce576f315d5b1B6': { coingeckoId: 'ethereum', decimals: 18 }, - '0x07d83526730c7438048d55a4fc0b850e2aab6f0b': { coingeckoId: 'usd-coin', decimals: 6 }, + [ADDRESSES.taiko.WETH]: { coingeckoId: 'ethereum', decimals: 18 }, + [ADDRESSES.taiko.USDC]: { coingeckoId: 'usd-coin', decimals: 6 }, }, sei: { '0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1': { coingeckoId: 'usd-coin', decimals: 6 }, '0xb75d0b03c06a926e488e2659df1a861f860bd3d1': { coingeckoId: 'tether', decimals: 6 }, - '0x0000000000000000000000000000000000000000': { coingeckoId: 'sei-network', decimals: 18 }, + [ADDRESSES.null]: { coingeckoId: 'sei-network', decimals: 18 }, '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7': { coingeckoId: 'sei-network', decimals: 18 }, }, core: { @@ -158,11 +158,11 @@ const fixBalancesTokens = { '0x5B1Fb849f1F76217246B8AAAC053b5C7b15b7dc3': { coingeckoId: 'solv-btc', decimals: 18 }, }, lukso: { - '0x2db41674f2b882889e5e1bd09a3f3613952bc472': { coingeckoId: 'lukso-token-2', decimals: 18 }, + [ADDRESSES.lukso.WLYX]: { coingeckoId: 'lukso-token-2', decimals: 18 }, }, planq: { - "0xecEEEfCEE421D8062EF8d6b4D814efe4dc898265": { coingeckoId: 'usd-coin', decimals: 6 }, - "0x75E20C5d4aade76143b8b74d1C5E2865347f9d3B": { coingeckoId: 'usd-coin', decimals: 18 }, + [ADDRESSES.functionx.USDT]: { coingeckoId: 'usd-coin', decimals: 6 }, + [ADDRESSES.planq.USDC_1]: { coingeckoId: 'usd-coin', decimals: 18 }, }, zeta: { "0x1e4bF3CaBD7707089138dD5a545B077413FA83Fc": { coingeckoId: 'pufeth', decimals: 18 }, diff --git a/projects/hinkal/hinkalUtils.js b/projects/hinkal/hinkalUtils.js index fd8768e9800..d1eb07baeab 100644 --- a/projects/hinkal/hinkalUtils.js +++ b/projects/hinkal/hinkalUtils.js @@ -1,7 +1,8 @@ +const ADDRESSES = require('../helper/coreAssets.json') const sdk = require("@defillama/sdk"); const ownerByChain = require("./owners.js"); -const nullAddress = "0x0000000000000000000000000000000000000000"; +const nullAddress = ADDRESSES.null; const nativeVolatileChains = ["blast"]; diff --git a/projects/hinkal/registryTokens.js b/projects/hinkal/registryTokens.js index 36eff5d81ac..97c239cdddd 100644 --- a/projects/hinkal/registryTokens.js +++ b/projects/hinkal/registryTokens.js @@ -1,23 +1,24 @@ +const ADDRESSES = require('../helper/coreAssets.json') const ETHEREUM_REGISTRY_TOKENS = [ - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.USDC, + ADDRESSES.ethereum.USDT, + ADDRESSES.ethereum.WETH, + ADDRESSES.ethereum.WBTC, + ADDRESSES.ethereum.DAI, "0x8E870D67F660D95d5be530380D0eC0bd388289E1", - "0x83F20F44975D03b1b09e64809B757c47f942BEeA", + ADDRESSES.ethereum.SDAI, "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", "0xc4AD29ba4B3c580e6D59105FFf484999997675Ff", - "0x853d955aCEf822Db058eb8505911ED77F175b99e", + ADDRESSES.ethereum.FRAX, "0xFC2838a17D8e8B1D5456E0a351B0708a09211147", "0x3175Df0976dFA876431C2E9eE6Bc45b65d3473CC", "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", "0xf43211935C781D5ca1a41d2041F397B8A7366C7A", "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", - "0xD533a949740bb3306d119CC777fa900bA034cd52", + ADDRESSES.ethereum.CRV, "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", "0x5a6A4D54456819380173272A5E8E9B9904BdF41B", - "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", + ADDRESSES.ethereum.sUSD, "0xC25a3A3b969415c80451098fa907EC722572917F", "0xb2C35aC676F4A002669e195CF4dc50DDeDF6F0fA", "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", @@ -26,18 +27,18 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x99f5aCc8EC2Da2BC0771c32814EFF52b712de1E5", "0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6", "0x051d7e5609917Bd9b73f04BAc0DED8Dd46a74301", - "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + ADDRESSES.ethereum.LUSD, "0x5E8422345238F34275888049021821E8E08CAa1f", - "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", + ADDRESSES.ethereum.CVX, "0x865377367054516e17014CcdED1e7d814EDC9ce4", "0x3A283D9c08E8b55966afb64C515f5143cf907611", "0x06325440D014e39736583c165C2963BA99fAf14E", "0x4d9f9D15101EEC665F77210cB999639f760F831E", - "0xae78736Cd615f374D3085123A210448E74Fc6393", + ADDRESSES.ethereum.RETH, "0x6c38cE8984a890F5e46e6dF6117C26b3F1EcfC9C", - "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", + ADDRESSES.ethereum.cvxCRV, "0x971add32Ea87f10bD192671630be3BE8A11b8623", - "0x0000000000085d4780B73119b644AE5ecd22b376", + ADDRESSES.ethereum.TUSD, "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", "0xb40b6608B2743E691C9B54DdBDEe7bf03cd79f1c", "0x68934F60758243eafAf4D2cFeD27BF8010bede3a", @@ -45,7 +46,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xdf55670e27bE5cDE7228dD0A6849181891c9ebA1", "0x9D0464996170c6B9e75eED71c68B99dDEDf279e8", "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", - "0xFEEf77d3f69374f66429C91d732A244f074bdf74", + ADDRESSES.ethereum.cvxFXS, "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9", "0xB30dA2376F63De30b42dC055C93fa474F31330A5", "0x828b154032950C8ff7CF8085D841723Db2696056", @@ -54,11 +55,11 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x1cEB5cB57C4D4E2b2433641b95Dd330A33185A44", "0x4647B6D835f3B393C7A955df51EEfcf0db961606", "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6", - "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", + ADDRESSES.ethereum.LIDO, "0xb79565c01b7Ae53618d9B847b9443aAf4f9011e7", - "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", + ADDRESSES.ethereum.YFI, "0x29059568bB40344487d62f7450E78b8E6C74e0e5", - "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + ADDRESSES.ethereum.cbETH, "0x5b6C539b224014A09B3388e51CaAA8e354c959C8", "0xd7C9F0e536dC865Ae858b0C0453Fe76D13c3bEAc", "0x326290A1B0004eeE78fa6ED4F1d8f4b2523ab669", @@ -72,7 +73,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3", "0x94B17476A93b3262d87B9a326965D1E91f9c13E7", "0xF95AAa7EBB1620e46221B73588502960Ef63dBa0", - "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + ADDRESSES.ethereum.tBTC, "0xa2E3356610840701BDf5611a53974510Ae27E2e1", "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", "0x39AA39c021dfbaE8faC545936693aC917d5E7563", @@ -87,7 +88,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D", "0x49849C98ae39Fff122806C06791Fa73784FB3675", "0xA0d69E286B938e21CBf7E51D71F6A4c8918f482F", - "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + ADDRESSES.ethereum.CRVUSD, "0x3835a58CA93Cdb5f912519ad366826aC9a752510", "0x892D701d94a43bDBCB5eA28891DaCA2Fa22A690b", "0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E", @@ -149,10 +150,10 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xE08FF1427b199241506FcdCC23fcc24Dd98a4FA9", "0xC21545c26661ae74b3259B55aE007ACC4Bf5d4e3", "0x9ee91F9f426fA633d227f7a9b000E28b9dfd8599", - "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", - "0x35fA164735182de50811E8e2E824cFb9B6118ac2", - "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + ADDRESSES.ethereum.MATIC, + ADDRESSES.ethereum.STETH, + ADDRESSES.ethereum.EETH, + ADDRESSES.ethereum.WSTETH, "0xa0Cd8B83B63381895C1854A605315fa7eF50e026", "0x25aE9BE521898d33c7DF6Ae8c6669Fe038Bb3550", "0x9434722bf29750B44649eb1b1A10a335d40edFc1", @@ -168,7 +169,7 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xc794c6a95f30d0ebf7b3bbe85e8a0a95c9e411c1", "0xaeda92e6a3b1028edc139a4ae56ec881f3064d4f", "0xacdf0dba4b9839b96221a8487e9ca660a48212be", - "0x514910771af9ca656af840dff83e8264ecf986ca", + ADDRESSES.ethereum.LINK, "0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32", "0x04c154b66cb340f3ae24111cc767e0184ed00cc6", "0xf8fde8a259a3698902c88bdb1e13ff28cd7f6f09", @@ -241,35 +242,35 @@ const ETHEREUM_REGISTRY_TOKENS = [ "0xf57e7e7c23978c3caec3c3548e3d615c346e79ff", "0xc944e90c64b2c07662a292be6244bdf05cda44a7", "0xe28b3b32b6c345a34ff64674606124dd5aceca30", - "0x4c9edd5852cd905f086c759e8383e09bff1e68b3", + ADDRESSES.ethereum.USDe, "0xaea46a60368a7bd060eec7df8cba43b7ef41ad85", "0x4a220e6096b25eadb88358cb44068a3248254675", "0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce", "0x57e114b691db790c35207b2e685d4a43181e6061", - "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + ADDRESSES.ethereum.AAVE, + ADDRESSES.ethereum.UNI, "0xEEda34A377dD0ca676b9511EE1324974fA8d980D", "0x0d86883faf4ffd7aeb116390af37746f45b6f378", ]; const ARBITRUM_REGISTRY_TOKENS = [ - "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "0xaf88d065e77c8cc2239327c5edb3a432268e5831", - "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A", + ADDRESSES.arbitrum.USDC, + ADDRESSES.arbitrum.USDC_CIRCLE, + ADDRESSES.arbitrum.USDT, + ADDRESSES.arbitrum.WETH, + ADDRESSES.arbitrum.WBTC, + ADDRESSES.optimism.DAI, + ADDRESSES.arbitrum.MIM, "0x7f90122BF0700F9E7e1F688fe926940E8839F353", "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F", "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978", "0x64343594Ab9b56e99087BfA6F2335Db24c2d1F17", "0x641441c631e2F909700d2f41FD87F0aA6A6b4EDb", - "0xEB466342C4d449BC9f53A865D5Cb90586f405215", + ADDRESSES.kava.axlUSDC, "0xC9B8a3FDECB9D5b218d02555a8Baf332E5B740d5", - "0x5979D7b546E38E414F7E9822514be443A4800529", + ADDRESSES.arbitrum.WSTETH, "0x8616E8EA83f048ab9A5eC513c9412Dd2993bcE3F", - "0xDBf31dF14B66535aF65AaC99C32e9eA844e14501", + ADDRESSES.fantom.renBTC, "0x93FC1235119c554576D8AB23583371fc25B803ee", "0xaE6aab43C4f3E0cea4Ab83752C278f8dEbabA689", "0xb1781BF9C582A71269c6098E4155Ea8b15B35305", @@ -318,7 +319,7 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0xe20F93279fF3538b1ad70D11bA160755625e3400", "0x4a2f6ae7f3e5d715689530873ec35593dc28951b", "0xb67c014fa700e69681a673876eb8bafaa36bff71", - "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a", + ADDRESSES.arbitrum.GMX, "0x3c6ef5ed8ad5df0d5e3d05c6e607c60f987fb735", "0x9cb911cbb270cae0d132689ce11c2c52ab2dedbc", "0x9791d590788598535278552eecd4b211bfc790cb", @@ -340,7 +341,7 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0xce3b19d820cb8b9ae370e423b0a329c4314335fe", "0x539bdE0d7Dbd336b79148AA742883198BBF60342", "0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae", - "0x912CE59144191C1204E64559FE8253a0e49E6548", + ADDRESSES.arbitrum.ARB, "0xC3691c157D1B3A431B841230a7B11d5a373097e1", "0x7Bdc233E5369Ac023b9894645902C9032A72D9Ee", "0xCC26A5246C6A04a85E997d6581C1b4f14363841a", @@ -351,7 +352,7 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0x886867993080DC3bBFC39CDfc343A0e083bB34E0", "0xB72ea6F99EfA5BD6Fb400BaA4eFddC3cfB075215", "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed", - "0xf97f4df75117a78c1a5a0dbb814af92458539fb4", + ADDRESSES.arbitrum.LINK, "0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0", "0x9623063377ad1b27544c965ccd7342f7ea7e88c7", "0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91", @@ -364,25 +365,25 @@ const ARBITRUM_REGISTRY_TOKENS = [ "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", "0x4186BFC76E2E237523CBC30FD220FE055156b41F", - "0x2416092f143378750bb29b79eD961ab195CcEea5", + ADDRESSES.blast.ezETH, ]; const OPTIMISM_REGISTRY_TOKENS = [ - "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - "0x4200000000000000000000000000000000000006", - "0x68f180fcce6836688e9084f035309e29bf0a2095", - "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", + ADDRESSES.optimism.USDC_CIRCLE, + ADDRESSES.optimism.USDC, + ADDRESSES.optimism.USDT, + ADDRESSES.optimism.WETH_1, + ADDRESSES.optimism.WBTC, + ADDRESSES.optimism.DAI, + ADDRESSES.optimism.sUSD, "0x061b87122Ed14b9526A813209C8a59a633257bAb", - "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + ADDRESSES.optimism.WSTETH, "0xEfDE221f306152971D8e9f181bFe998447975810", "0x298B9B95708152ff6968aafd889c6586e9169f1D", "0x9F2fE3500B1a7E285FDc337acacE94c480e00130", "0x1337BedC9D22ecbe766dF105c9623922A27963EC", "0x0994206dfe8de6ec6920ff4d779b0d950605fb53", - "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", + ADDRESSES.optimism.sETH, "0x7Bc5728BC2b59B45a58d9A576E2Ffc5f0505B35E", "0xB153FB3d196A8eB25522705560ac152eeEc57901", "0x810D1AaA4Cd8F21c23bB648F2dfb9DC232A01F09", @@ -505,11 +506,11 @@ const OPTIMISM_REGISTRY_TOKENS = [ "0x970D50d09F3a656b43E11B0D45241a84e3a6e011", "0x1DB2466d9F5e10D7090E7152B68d62703a2245F0", "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819", - "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A", - "0xdFA46478F9e5EA86d57387849598dbFB2e964b02", + ADDRESSES.optimism.alUSD, + ADDRESSES.moonbeam.MAI, "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05", - "0x4200000000000000000000000000000000000042", - "0x2e3d870790dc77a83dd1d18184acc7439a53f475", + ADDRESSES.optimism.OP, + ADDRESSES.optimism.FRAX, "0xfdb794692724153d1488ccdbe0c56c252596735f", "0x1e925De1c68ef83bD98eE3E130eF14a50309C01B", "0xC03b43d492d904406db2d7D57e67C7e8234bA752", @@ -520,7 +521,7 @@ const OPTIMISM_REGISTRY_TOKENS = [ "0x8aE125E8653821E851F12A49F7765db9a9ce7384", "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", "0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED", - "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + ADDRESSES.base.DAI, "0x79af5dd14e855823fa3e9ecacdf001d99647d043", "0x9560e827aF36c94D2Ac33a39bCE1Fe78631088Db", "0x4e720dd3ac5cfe1e1fbde4935f386bb1c66f4642", @@ -548,24 +549,24 @@ const OPTIMISM_REGISTRY_TOKENS = [ ]; const POLYGON_REGISTRY_TOKENS = [ - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", - "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + ADDRESSES.polygon.USDC, + ADDRESSES.polygon.USDC_CIRCLE, + ADDRESSES.polygon.USDT, + ADDRESSES.polygon.WETH_1, + ADDRESSES.polygon.WBTC, + ADDRESSES.polygon.DAI, "0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171", "0x87ff96aba480f1813aF5c780387d8De7cf7D8261", "0x2088C47Fc0c78356c622F79dBa4CbE1cCfA84A91", "0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7", - "0xDBf31dF14B66535aF65AaC99C32e9eA844e14501", + ADDRESSES.fantom.renBTC, "0xD6DF932A45C0f255f85145f286eA0b292B21C90B", "0xa3FC7E0021970f5AF674aD837a8dc09e2F12F37B", "0x7D645CBbCAdE2A130bF1bf0528b8541d32D3f8Cf", "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", "0x20D3922b4a1A8560E1aC99FBA4faDe0c849e2142", "0x4e3Decbb3645551B8A19f0eA1678079FCB33fB4c", - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + ADDRESSES.polygon.WMATIC_2, "0xf8a57c1d3b9629b77b6726a042ca48990A84Fb49", "0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89", "0xA691D34Abf93C0A77998e53B564bEcfaf46Dae27", @@ -658,7 +659,7 @@ const POLYGON_REGISTRY_TOKENS = [ "0x67FEe70c32097c53B5aeAaCdbee7544eaE2194f8", "0xbe4e30b74b558e41f5837dc86562df44af57a013", "0x0fC4f2DB534Bf7525710DBf64B7081e1a3A6428f", - "0xfa68fb4628dff1028cfec22b4162fccd0d45efb6", + ADDRESSES.polygon.MATICX, "0x40c03Cd0B5D1571608D09e6279B4C63660e431F1", "0x2ee50c34392e7e7a1d17b0a42328a8d1ad6894e3", "0x1205f31718499dbf1fca446663b532ef87481fe1", @@ -709,19 +710,19 @@ const POLYGON_REGISTRY_TOKENS = [ "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F", "0x60D55F02A771d515e077c9C2403a1ef324885CeC", "0x27F8D03b3a2196956ED754baDc28D73be8830A6e", - "0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD", + ADDRESSES.polygon.WSTETH, ]; const AVALANCHE_REGISTRY_TOKENS = [ - "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", - "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", - "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", - "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", - "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", - "0x50b7545627a5162F82A992c33b87aDc75187B218", - "0x152b9d0FdC40C096757F570A51E494bd4b943E50", + 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", @@ -759,7 +760,7 @@ const AVALANCHE_REGISTRY_TOKENS = [ "0x3D81A269E05e6057e4dF9E2D76E254E65a65Eb66", "0x454E67025631C065d3cFAD6d71E6892f74487a15", "0x282B11E65f0B49363D4505F91c7A44fBEe6bCc0b", - "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", + ADDRESSES.avax.JOE, "0x3C2131A02659343d68c211aAa686750bE37d88c4", "0x813aB5B3FDc59B143C42284665864b24B794C324", "0xd6070ae98b8069de6b494332d1a1a81b6179d960", @@ -784,12 +785,12 @@ const AVALANCHE_REGISTRY_TOKENS = [ ]; const BNB_REGISTRY_TOKENS = [ - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", - "0x55d398326f99059fF775485246999027B3197955", - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + ADDRESSES.bsc.WBNB, + ADDRESSES.bsc.USDC, + ADDRESSES.bsc.USDT, + ADDRESSES.bsc.ETH, + ADDRESSES.bsc.BTCB, + ADDRESSES.bsc.BUSD, "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", "0x31e77776b924Cd5f0E624771C9B3d2bD6B9c919E", "0x577d005912C49B1679B4c21E334FdB650E92C077", @@ -818,7 +819,7 @@ const BNB_REGISTRY_TOKENS = [ "0xD411121C948Cff739857513E1ADF25ED448623f8", "0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40", "0x3F56e0c36d275367b8C502090EDF38289b3dEa0d", - "0x51bd63F240fB13870550423D208452cA87c44444", + ADDRESSES.bsc.beltBTC, "0xbCFcE18C5c33463316f93A067b1f50d75b00dc09", "0x10bf6e7B28b1cfFb1c047D7F815953931e5Ee947", "0x56ec6031dC969CfA035F6D65e65D8595d5660fB4", @@ -826,11 +827,11 @@ const BNB_REGISTRY_TOKENS = [ "0x77c9a64C88Ad5e5467B53E20E66AD2F8800BBf3d", "0x2ecBD508c00Bbc8aA0cdc9100bf3956fCabE7677", "0xC34Ae91312A3c3F9420691922040a5DEe1698E52", - "0xa8Bb71facdd46445644C277F9499Dd22f6F0A30C", + ADDRESSES.bsc.beltBNB, "0xeDe45f9dC994a66F1aD1ac68974Abb28086f909d", "0x6321B57b6fdc14924be480c54e93294617E672aB", "0xc1fcf50ccaCd1583BD9d3b41657056878C94e592", - "0x9cb73F20164e399958261c289Eb5F9846f4D1404", + ADDRESSES.bsc.Belt4, "0xb26642B6690E4c4c9A6dAd6115ac149c700C7dfE", "0x0eD7e52944161450477ee417DE9Cd3a859b14fD0", "0x33D0F945F77660F4A9e56949500265313f6D08fb", @@ -840,7 +841,7 @@ const BNB_REGISTRY_TOKENS = [ "0x0383E88A19E5c387FeBafbF51E5bA642d2ad8bE0", "0x9aA83081AA06AF7208Dcc7A4cB72C94d057D2cda", "0xf2064C230b285AA6Cf45c6267DA86a8E3505D0AA", - "0xAA20E8Cb61299df2357561C2AC2e1172bC68bc25", + ADDRESSES.bsc.beltETH, "0x960eE6caC56912D94cE5c83D7Fb0CD873b5c5099", "0xD3C480EC7a47596fF8D63396227d1F7dC728A7f0", "0xe0Af98A11DB57c7282c1f6066d116E13F02BF0E9", @@ -890,19 +891,19 @@ const BNB_REGISTRY_TOKENS = [ "0x9B00a09492a626678E5A3009982191586C444Df9", "0x00901a076785e0906d1028c7d6372d247bec7d61", "0xa9251ca9DE909CB71783723713B21E4233fbf1B1", - "0x2416092f143378750bb29b79eD961ab195CcEea5", + ADDRESSES.blast.ezETH, ]; const BASE_REGISTRY_TOKENS = [ - "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", - "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", + ADDRESSES.base.USDC, + ADDRESSES.base.USDbC, "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", "0x8Ee73c484A26e0A5df2Ee2a4960B789967dd0415", "0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93", - "0xEB466342C4d449BC9f53A865D5Cb90586f405215", - "0x4200000000000000000000000000000000000006", + ADDRESSES.kava.axlUSDC, + ADDRESSES.optimism.WETH_1, "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b", - "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + ADDRESSES.base.DAI, "0xd07379a755A8f11B57610154861D694b2A0f615a", "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22", "0xB6fe221Fe9EeF5aBa221c348bA20A1Bf5e73624c", @@ -949,14 +950,14 @@ const BASE_REGISTRY_TOKENS = [ "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7", "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D", "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB", - "0x2416092f143378750bb29b79eD961ab195CcEea5", + ADDRESSES.blast.ezETH, "0x1Bc71130A0e39942a7658878169764Bbd8A45993", "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", ]; const BLAST_REGISTRY_TOKENS = [ - "0x4300000000000000000000000000000000000004", - "0x4300000000000000000000000000000000000003", + ADDRESSES.blast.WETH, + ADDRESSES.blast.USDB, "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", "0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7", "0x96F6b70f8786646E0FF55813621eF4c03823139C", @@ -970,7 +971,7 @@ const BLAST_REGISTRY_TOKENS = [ "0x76da31d7c9cbeae102aff34d3398bc450c8374c1", "0x47c337bd5b9344a6f3d6f58c474d9d8cd419d8ca", "0x216a5a1135a9dab49fa9ad865e0f22fe22b5630a", - "0x2416092f143378750bb29b79ed961ab195cceea5", + ADDRESSES.blast.ezETH, ]; const registryTokensByChain = { diff --git a/projects/hinkal/registryTokensWithUnderlyingAddresses.js b/projects/hinkal/registryTokensWithUnderlyingAddresses.js index 4185fd3f16c..02fa16045ca 100644 --- a/projects/hinkal/registryTokensWithUnderlyingAddresses.js +++ b/projects/hinkal/registryTokensWithUnderlyingAddresses.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const ETHEREUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x93ce650b8d3a7a7e44121db82a0429a3884db599": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", @@ -66,27 +67,27 @@ const ETHEREUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x3e0A917d4d914e432B82825e6FBEe039b89f4477": "0x029aad400f6092dc735a65be95102efcc2fe64bf", "0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8": - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + ADDRESSES.ethereum.WETH, "0x0B925eD163218f6662a35e0f0371Ac234f9E9371": - "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + ADDRESSES.ethereum.WSTETH, "0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8": - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + ADDRESSES.ethereum.WBTC, "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c": - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + ADDRESSES.ethereum.USDC, "0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a": - "0xdAC17F958D2ee523a2206206994597C13D831ec7", + ADDRESSES.ethereum.USDT, "0x018008bfb33d285247A21d44E50697654f754e63": - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.DAI, "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656": - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + ADDRESSES.ethereum.WBTC, "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e": - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + ADDRESSES.ethereum.WETH, "0xBcca60bB61934080951369a648Fb03DF4F96263C": - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + ADDRESSES.ethereum.USDC, "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811": - "0xdAC17F958D2ee523a2206206994597C13D831ec7", + ADDRESSES.ethereum.USDT, "0x028171bCA77440897B824Ca71D1c56caC55b68A3": - "0x6B175474E89094C44Da98b954EedeAC495271d0F", + ADDRESSES.ethereum.DAI, }; const ARBITRUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { @@ -111,17 +112,17 @@ const ARBITRUM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x660108601EED17aF2832A1c0F1D7dE74F560C5ed": "0x7c0ac20c3ca8c6257ea099131081d8199bf6b8f6", "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + ADDRESSES.arbitrum.WETH, "0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf": - "0x5979D7b546E38E414F7E9822514be443A4800529", + ADDRESSES.arbitrum.WSTETH, "0x078f358208685046a11C85e8ad32895DED33A249": - "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + ADDRESSES.arbitrum.WBTC, "0x724dc807b04555b71ed48a6896b6F41593b8C637": - "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + ADDRESSES.arbitrum.USDC_CIRCLE, "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + ADDRESSES.arbitrum.USDT, "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + ADDRESSES.optimism.DAI, }; const OPTIMISM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { @@ -140,17 +141,17 @@ const OPTIMISM_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0xbA65D50Cf4e6E739B2735338a964C3354fAF9B19": "0xcea806562b757aeffa9fe9d0a03c909b4a204254", "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - "0x4200000000000000000000000000000000000006", + ADDRESSES.optimism.WETH_1, "0xc45A479877e1e9Dfe9FcD4056c699575a1045dAA": - "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + ADDRESSES.optimism.WSTETH, "0x078f358208685046a11C85e8ad32895DED33A249": - "0x68f180fcCe6836688e9084f035309E29Bf0A2095", + ADDRESSES.optimism.WBTC, "0x38d693cE1dF5AaDF7bC62595A37D667aD57922e5": - "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + ADDRESSES.optimism.USDC_CIRCLE, "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + ADDRESSES.optimism.USDT, "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + ADDRESSES.optimism.DAI, }; const POLYGON_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { @@ -171,69 +172,69 @@ const POLYGON_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x90F06727Ba5016eDcf9D8B5def63a5849EcD132f": "0x9633e0749faa6ec6d992265368b88698d6a93ac0", "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97": - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + ADDRESSES.polygon.WMATIC_2, "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + ADDRESSES.polygon.WETH_1, "0xf59036CAEBeA7dC4b86638DFA2E3C97dA9FcCd40": - "0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD", + ADDRESSES.polygon.WSTETH, "0x078f358208685046a11C85e8ad32895DED33A249": - "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + ADDRESSES.polygon.WBTC, "0xA4D94019934D8333Ef880ABFFbF2FDd611C762BD": - "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + ADDRESSES.polygon.USDC_CIRCLE, "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + ADDRESSES.polygon.USDT, "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + ADDRESSES.polygon.DAI, "0x8dF3aad3a84da6b69A4DA8aeC3eA40d9091B2Ac4": - "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + ADDRESSES.polygon.WMATIC_2, "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390": - "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + ADDRESSES.polygon.WETH_1, "0x5c2ed810328349100A66B82b78a1791B101C9D61": - "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + ADDRESSES.polygon.WBTC, "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F": - "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + ADDRESSES.polygon.USDC, "0x60D55F02A771d515e077c9C2403a1ef324885CeC": - "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + ADDRESSES.polygon.USDT, "0x27F8D03b3a2196956ED754baDc28D73be8830A6e": - "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + ADDRESSES.polygon.DAI, }; const AVALANCHE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8": - "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + ADDRESSES.avax.WETH_e, "0x6d80113e533a2C0fe82EaBD35f1875DcEA89Ea97": - "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + ADDRESSES.avax.WAVAX, "0x8ffDf2DE812095b1D19CB146E4c004587C0A0692": - "0x152b9d0FdC40C096757F570A51E494bd4b943E50", + ADDRESSES.avax.BTC_b, "0x625E7708f30cA75bfd92586e17077590C60eb4cD": - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + ADDRESSES.avax.USDC, "0x6ab707Aca953eDAeFBc4fD23bA73294241490620": - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + ADDRESSES.avax.USDt, "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE": - "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + ADDRESSES.avax.DAI, "0x53f7c5869a859F0AeC3D334ee8B4Cf01E3492f21": - "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + ADDRESSES.avax.WETH_e, "0xDFE521292EcE2A4f44242efBcD66Bc594CA9714B": - "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + ADDRESSES.avax.WAVAX, "0x46A51127C3ce23fb7AB1DE06226147F446e4a857": - "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + ADDRESSES.avax.USDC, "0x532E6537FEA298397212F09A61e03311686f548e": - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + ADDRESSES.avax.USDt, "0x47AFa96Cdc9fAb46904A55a6ad4bf6660B53c38a": - "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + ADDRESSES.avax.USDt, }; const BNB_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x2E94171493fAbE316b6205f1585779C887771E2F": - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + ADDRESSES.bsc.ETH, "0x56a7ddc4e848EbF43845854205ad71D5D5F72d3D": - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + ADDRESSES.bsc.BTCB, "0x9B00a09492a626678E5A3009982191586C444Df9": - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + ADDRESSES.bsc.WBNB, "0x00901a076785e0906d1028c7d6372d247bec7d61": - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", + ADDRESSES.bsc.USDC, "0xa9251ca9DE909CB71783723713B21E4233fbf1B1": - "0x55d398326f99059fF775485246999027B3197955", + ADDRESSES.bsc.USDT, }; const BASE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { @@ -244,11 +245,11 @@ const BASE_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = { "0x3E07F263C1Ce5EC2a3f1cA87af56B80B27674D96": "0x89289DC2192914a9F0674f1E9A17C56456549b8A", "0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7": - "0x4200000000000000000000000000000000000006", + ADDRESSES.optimism.WETH_1, "0x99CBC45ea5bb7eF3a5BC08FB1B7E56bB2442Ef0D": "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", "0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB": - "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + ADDRESSES.base.USDC, }; const BLAST_REGISTRY_TOKENS_WITH_UNDERLYING_ADDRESSES = {}; diff --git a/projects/instadapp-lite/index.js b/projects/instadapp-lite/index.js index 0631c8f3ec9..9ed590e89e6 100644 --- a/projects/instadapp-lite/index.js +++ b/projects/instadapp-lite/index.js @@ -1,8 +1,9 @@ +const ADDRESSES = require('../helper/coreAssets.json') const vaults = [ - { "vault": "0xc383a3833A87009fD9597F8184979AF5eDFad019", "token": "0x0000000000000000000000000000000000000000" }, - { "vault": "0xc8871267e07408b89aA5aEcc58AdCA5E574557F8", "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, - { "vault": "0xEC363faa5c4dd0e51f3D9B5d0101263760E7cdeB", "token": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" }, - { "vault": "0x40a9d39aa50871Df092538c5999b107f34409061", "token": "0x6B175474E89094C44Da98b954EedeAC495271d0F" } + { "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"] diff --git a/projects/jellyverse/index.js b/projects/jellyverse/index.js index 63501defdd7..382b6f66775 100644 --- a/projects/jellyverse/index.js +++ b/projects/jellyverse/index.js @@ -1,12 +1,19 @@ const { onChainTvl } = require('../helper/balancer') const config = { - vault: "0xFB43069f6d0473B85686a85F4Ce4Fc1FD8F00875", - startingBlock: 81_247_457, + vault: "0xFB43069f6d0473B85686a85F4Ce4Fc1FD8F00875", + startingBlock: 81_247_457, }; module.exports = { - sei: { - tvl: onChainTvl(config.vault, config.startingBlock), - } + sei: { + tvl: onChainTvl(config.vault, config.startingBlock, { + preLogTokens: [ + '0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1', + '0xB75D0B03c06A926e488e2659DF1A861F860bD3d1', + '0x5f0E07dFeE5832Faa00c63F2D33A0D79150E8598', + '0x5Cf6826140C1C56Ff49C808A1A75407Cd1DF9423', + ] + }), + } } diff --git a/projects/kalax/index.js b/projects/kalax/index.js index a9a8710ceb7..2977f9f232f 100644 --- a/projects/kalax/index.js +++ b/projects/kalax/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokens2 } = require("../helper/unwrapLPs"); const KALAX = "0x2F67F59b3629Bf24962290DB9edE0CD4127e606D"; @@ -9,8 +10,8 @@ async function tvl(api) { pools .filter((i) => i.assets !== KALAX) .forEach((i) => { - if (i.assets === "0x0000000000000000000000000000000000000001") { - i.assets = "0x0000000000000000000000000000000000000000"; + if (i.assets === ADDRESSES.linea.WETH_1) { + i.assets = ADDRESSES.null; } api.add(i.assets, i.tvl); }); diff --git a/projects/kiloex/index.js b/projects/kiloex/index.js index 47ba4bfea13..e33d310ac21 100644 --- a/projects/kiloex/index.js +++ b/projects/kiloex/index.js @@ -17,6 +17,6 @@ module.exports = { tvl: sumTokensExport({ owners: manta_owners, tokens: [ADDRESSES.manta.USDT, manta_stone_token] }) }, taiko: { - tvl: sumTokensExport({ owners: taiko_owners, tokens: ['0x07d83526730c7438048D55A4fc0b850e2aaB6f0b'] }) + tvl: sumTokensExport({ owners: taiko_owners, tokens: [ADDRESSES.taiko.USDC] }) }, }; diff --git a/projects/lynx/index.js b/projects/lynx/index.js index 1920f7a7d22..783bb6e68e7 100644 --- a/projects/lynx/index.js +++ b/projects/lynx/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { sumTokensExport } = require("../helper/unwrapLPs"); const config = { @@ -15,7 +16,7 @@ const config = { tokenAndOwnerPair: [ [ // WFUSE Token - "0x0BE9e53fd7EDaC9F859882AfdDa116645287C629", + ADDRESSES.fuse.WFUSE, // OFTChipAdapter (owner) "0x962FD1B229c8c775bC2E37A8a90dac4f3C0105B7", ], @@ -87,7 +88,7 @@ const config = { ], [ // WMATIC Token - "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + ADDRESSES.polygon.WMATIC_2, // OFTChipAdapter (owner) "0x028815b56433a4aae10087290d1ed9ef7437068f", ], diff --git a/projects/meson/index.js b/projects/meson/index.js index 240504c5e57..3760dabd8ab 100644 --- a/projects/meson/index.js +++ b/projects/meson/index.js @@ -20,10 +20,10 @@ const config = { bsquared: { tokens: [ ADDRESSES.bsquared.USDT, - '0x7537C1F80c9E157ED7AFD93a494be3e1f04f1462', + ADDRESSES.bsquared.BSTONE, '0xa793740863F1710A87070a5918820976ff32B758', - '0xC2Fe4f673455Ef92299770a09CDB5E8756A525D5', - '0xD48d3A551757ac47655fCe25BDE1B0B6b1Cb2a5A', + ADDRESSES.bsquared.FDUSD, + ADDRESSES.bsquared.ETH, ADDRESSES.bsquared.USDC, ], id: 'b2', diff --git a/projects/metavault-v3/index.js b/projects/metavault-v3/index.js index fa4ae6eac26..a94dcc1647d 100644 --- a/projects/metavault-v3/index.js +++ b/projects/metavault-v3/index.js @@ -1,8 +1,9 @@ +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: ['0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f'] }, + scroll: { factory, fromBlock: 77008, blacklistedTokens: [ADDRESSES.linea.WETH] }, }) \ No newline at end of file diff --git a/projects/mitosis/index.js b/projects/mitosis/index.js index 5da1d01b9dc..3067d24c386 100644 --- a/projects/mitosis/index.js +++ b/projects/mitosis/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const chains = [ "ethereum", "arbitrum", @@ -12,9 +13,9 @@ const WEETH_ADDRESS = { ethereum: "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", arbitrum: "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe", optimism: "0x346e03f8cce9fe01dcb3d0da3e9d00dc2c0e08f0", - mode: "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", + mode: ADDRESSES.blast.weETH, manta: "0x77b6F99970f488cFA8bd41892900b6Ce881C2300", - blast: "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A", + blast: ADDRESSES.blast.weETH, linea: "0x1bf74c010e6320bab11e2e5a532b5ac15e0b8aa6", }; diff --git a/projects/particle-trade-duo/index.js b/projects/particle-trade-duo/index.js index 819a47b4d14..c674172a3ad 100644 --- a/projects/particle-trade-duo/index.js +++ b/projects/particle-trade-duo/index.js @@ -56,7 +56,7 @@ Object.keys(config).forEach(chain => { target: usdeVault.fwUSDe, params: usdeVault.vault }); - api.add('0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34', wrappedUSDeBalance) + api.add(ADDRESSES.arbitrum.USDe, wrappedUSDeBalance) return sumTokens2({ api }) } } diff --git a/projects/rehold-v2/index.js b/projects/rehold-v2/index.js index 48221eac907..30a1825dd52 100644 --- a/projects/rehold-v2/index.js +++ b/projects/rehold-v2/index.js @@ -10,10 +10,10 @@ module.exports = { bsc: { tvl: sumTokensExport({ owner: VAULT_V2, fetchCoValentTokens: true, tokens: [ - "0x55d398326f99059fF775485246999027B3197955", // BSC-USD - "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", //Bpeg ETH - "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", // btcb - "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", // usdc + ADDRESSES.bsc.USDT, // BSC-USD + ADDRESSES.bsc.ETH, //Bpeg ETH + ADDRESSES.bsc.BTCB, // btcb + ADDRESSES.bsc.USDC, // usdc "0x570A5D26f7765Ecb712C0924E4De545B89fD43dF", // sol "0x1Fa4a73a3F0133f0025378af00236f3aBDEE5D63", // near "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE", // xrp @@ -27,13 +27,13 @@ module.exports = { "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD", // link "0xCC42724C6683B7E57334c4E856f4c9965ED682bD", // matic "0x56b6fB708fC5732DEC1Afc8D8556423A2EDcCbD6", // eos - "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", // busd + ADDRESSES.bsc.BUSD, // busd "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1", // uni "0xD41FDb03Ba84762dD66a0af1a6C8540FF1ba5dfb", // sfp "0xAD29AbB318791D579433D831ed122aFeAf29dcfe", // ftm "0xB0D502E938ed5f4df2E681fE6E419ff29631d62b", // stg "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", // dot - "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", // wbnb + ADDRESSES.bsc.WBNB, // wbnb "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", // cake "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3", // dai "0x715D400F88C167884bbCc41C5FeA407ed4D2f8A0", // axs diff --git a/projects/rize/index.js b/projects/rize/index.js index 693688e5ae5..e5aacc17331 100644 --- a/projects/rize/index.js +++ b/projects/rize/index.js @@ -5,7 +5,7 @@ const suiScallopPools = { usdc: { poolId: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0", rewardPoolId: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8", - type: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN", + type: ADDRESSES.sui.USDC, stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN>", balanceSheet: '0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93', spoolAccount: 'a5a2d2afe12ed353ca32a3d5f7592a7a57945040ee7beacab6d82a5fe5b34734', @@ -14,7 +14,7 @@ const suiScallopPools = { usdt: { poolId: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f", rewardPoolId: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080", - type: "0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN", + type: ADDRESSES.sui.USDT, stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN>", balanceSheet: '0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879', spoolAccount: '775206c05243da6b1a29a45c74bd3d3e7db4b3f8303342cbf34c3d12725eac70', @@ -23,7 +23,7 @@ const suiScallopPools = { weth: { poolId: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787", rewardPoolId: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077", - type: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN", + type: ADDRESSES.sui.WETH, stakeType: "0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf::reserve::MarketCoin<0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN>", balanceSheet: '0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c', spoolAccount: '3865596e3ea8860e4d479b91d2b9f5c57adab00d70b13ac6c7eb410fd092d2cc', diff --git a/projects/swell-l2-farm/index.js b/projects/swell-l2-farm/index.js index 815a7d4baa2..858c8e3d4cc 100644 --- a/projects/swell-l2-farm/index.js +++ b/projects/swell-l2-farm/index.js @@ -30,11 +30,11 @@ module.exports = { "0x6ee2b5E19ECBa773a352E5B21415Dc419A700d1d", "0xac440d0eE23FA69632Aa731322C2a480dD1376e4", "0x330c4DD05dB16db6323505262C57CFdE5f0A78Ea", - "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - "0x853d955aCEf822Db058eb8505911ED77F175b99e", + ADDRESSES.ethereum.USDe, + ADDRESSES.ethereum.FRAX, "0xA663B02CF0a4b149d2aD41910CB81e23e1c41c32", "0x5E8422345238F34275888049021821E8E08CAa1f", - "0xac3E018457B222d93114458476f3E3416Abbe38F", + ADDRESSES.ethereum.sfrxETH, "0x18f313Fc6Afc9b5FD6f0908c1b3D476E3feA1DD9", "0xf7906F274c174A52d444175729E3fa98f9bde285" ] diff --git a/projects/tlx/index.js b/projects/tlx/index.js index 24f65216b89..c66b8892914 100644 --- a/projects/tlx/index.js +++ b/projects/tlx/index.js @@ -1,3 +1,4 @@ +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)[])" } @@ -5,7 +6,7 @@ const helperAbi = { const contracts = { tlx: "0xD9cC3D70E730503E7f28c1B407389198c4B75FA2", - sUSD: "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", + sUSD: ADDRESSES.optimism.sUSD, locker: "0xc068c3261522c97ff719dc97c98c63a1356fef0f", staker: "0xc30877315f3b621a8f7bcda27819ec29429f3817", leveragedTokenHelper: "0xBdAF7A2C4ee313Be468B9250609ba8496131B1f0", diff --git a/projects/treasury/golem.js b/projects/treasury/golem.js index 9095d252aba..7dc4a819b21 100644 --- a/projects/treasury/golem.js +++ b/projects/treasury/golem.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress, treasuryExports } = require("../helper/treasury"); const { mergeExports } = require('../helper/utils'); @@ -20,7 +21,7 @@ module.exports = treasuryExports({ async function tvl(api) { if(api.timestamp > 1687828149){ // Staked 100k ETH in validators - api.add("0x0000000000000000000000000000000000000000", 100e3*1e18) + api.add(ADDRESSES.null, 100e3*1e18) } return api.getBalances() } diff --git a/projects/treasury/ribbon.js b/projects/treasury/ribbon.js index 752a9b3d058..4e6ebcaac80 100644 --- a/projects/treasury/ribbon.js +++ b/projects/treasury/ribbon.js @@ -6,7 +6,7 @@ const treasury = "0xDAEada3d210D2f45874724BeEa03C7d4BBD41674"; const treasury2 = "0x42c1357aaa3243ea30c713cdfed115d09f10a71d" const treasury3 = "0x6adeb4fddb63f08e03d6f5b9f653be8b65341b35" const RBN = "0x6123B0049F904d730dB3C36a31167D9d4121fA6B"; -const AEVO = "0xb528edbef013aff855ac3c50b381f253af13b997" +const AEVO = ADDRESSES.ethereum.AEVO module.exports = treasuryExports({ ethereum: { diff --git a/projects/treasury/safe.js b/projects/treasury/safe.js index 4bede95630f..47ddb3f1acf 100644 --- a/projects/treasury/safe.js +++ b/projects/treasury/safe.js @@ -2,7 +2,7 @@ const ADDRESSES = require('../helper/coreAssets.json') const { nullAddress,treasuryExports } = require("../helper/treasury"); const treasury = "0x3EDf6868d7c42863E44072DaEcC16eCA2804Dea1" // -const SAFE = "0x5afe3855358e112b5647b952709e6165e1c1eeee" +const SAFE = ADDRESSES.ethereum.SAFE const safe_foundation_treasury = "0x1d4f25bc16b68c50b78e1040bc430a8097fd6f45" const safe_dao_2 = "0x0b00b3227a5f3df3484f03990a87e02ebad2f888" diff --git a/projects/unirouter/index.js b/projects/unirouter/index.js index dafc73bc396..62cd1b5c317 100644 --- a/projects/unirouter/index.js +++ b/projects/unirouter/index.js @@ -3,7 +3,7 @@ const ADDRESSES = require("../helper/coreAssets.json"); async function unirouterLSDTvl(api) { const uBTCBalance = await api.call({ abi: "erc20:totalSupply", - target: "0x796e4D53067FF374B89b2Ac101ce0c1f72ccaAc2", + target: ADDRESSES.bsquared.UBTC, }); return await api.add(ADDRESSES.null, uBTCBalance); } diff --git a/projects/unlockd-v2/index.js b/projects/unlockd-v2/index.js index 7d6cee91da7..c0d566ce105 100644 --- a/projects/unlockd-v2/index.js +++ b/projects/unlockd-v2/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') const methodologies = require("../helper/methodologies.js"); const uTokenAbi = { "totalAvailableSupply": "function totalAvailableSupply(address) view returns (uint256)", @@ -5,7 +6,7 @@ const uTokenAbi = { } const addresses = { UTokenVault: "0x25299e9Ec27c242465587B8A2Aa70bcE02636cDA", - USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + USDC: ADDRESSES.ethereum.USDC } async function tvl(api) { diff --git a/projects/voltage-stableswap/index.js b/projects/voltage-stableswap/index.js index 1b44e9007d3..8fbb3467cf2 100644 --- a/projects/voltage-stableswap/index.js +++ b/projects/voltage-stableswap/index.js @@ -3,7 +3,7 @@ const { sumTokensExport } = require('../helper/unwrapLPs') const FUSD_ADDRESS = '0xd0ce1b4a349c35e61af02f5971e71ac502441e49' const STABLESWAP_ADDRESS = '0x2a68D7C6Ea986fA06B2665d08b4D08F5e7aF960c'.toLowerCase() -const FUSD_V3_ADDRESS = '0xce86a1cf3cff48139598de6bf9b1df2e0f79f86f' +const FUSD_V3_ADDRESS = ADDRESSES.fuse.FUSD_3 const PEGSWAP_ADDRESS = '0x56ee525bb9056bed23a6055e60b2a2c5c225d1db' const STABLES = [ diff --git a/projects/wise-lending-v2/index.js b/projects/wise-lending-v2/index.js index 8abbfef260d..bb9c6732625 100644 --- a/projects/wise-lending-v2/index.js +++ b/projects/wise-lending-v2/index.js @@ -1,3 +1,4 @@ +const ADDRESSES = require('../helper/coreAssets.json') async function tvl(api) { const { lending: lendingContract, tvlAddresses } = config[api.chain]; @@ -19,7 +20,7 @@ async function borrowed(api) { const aavePools = [ "0x724dc807b04555b71ed48a6896b6F41593b8C637", "0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8", - "0x5979D7b546E38E414F7E9822514be443A4800529", + ADDRESSES.arbitrum.WSTETH, "0x82E64f49Ed5EC1bC6e43DAD4FC8Af9bb3A2312EE", "0x6ab707Aca953eDAeFBc4fD23bA73294241490620", ]; diff --git a/projects/zeno/index.js b/projects/zeno/index.js index 7a0ec0617b7..541525055a3 100644 --- a/projects/zeno/index.js +++ b/projects/zeno/index.js @@ -1,11 +1,12 @@ +const ADDRESSES = require('../helper/coreAssets.json') async function metisTvl(api) { const vaultStorageAddress = "0xFaEee486F4A53cdBEaBE37216bcf1016eB4E52D6"; // eth, usdt, usdc const zenoUnderlyingTokens = [ - "0x420000000000000000000000000000000000000a", - "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21", - "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC", + ADDRESSES.metis.WETH, + ADDRESSES.metis.m_USDC, + ADDRESSES.metis.m_USDT, ]; return api.sumTokens({ diff --git a/projects/zkLink/index.js b/projects/zkLink/index.js index 5dde9d4146c..3c3ec06b605 100644 --- a/projects/zkLink/index.js +++ b/projects/zkLink/index.js @@ -119,7 +119,7 @@ const config = { "0xf5b90fE755Aa2e3CcC69d9548cbeB7b38c661D73", // nova bridge address ], tokens: [ - "0xB880fd278198bd590252621d4CD071b1842E9Bcd", //MBTC + ADDRESSES.merlin.WBTC_1, //MBTC "0x41D9036454BE47d3745A823C4aaCD0e29cFB0f71", //Solv BTC ], From 212ee5354e98e937478409b0103bc2d4ef59f6ae Mon Sep 17 00:00:00 2001 From: realdealshaman Date: Thu, 13 Jun 2024 21:22:54 +0100 Subject: [PATCH 1998/2004] remove duplicate sdk --- projects/venus-isolated-pools/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/venus-isolated-pools/index.js b/projects/venus-isolated-pools/index.js index 3d8b21c4d7b..4622bd4693b 100644 --- a/projects/venus-isolated-pools/index.js +++ b/projects/venus-isolated-pools/index.js @@ -1,6 +1,5 @@ const sdk = require("@defillama/sdk"); const { cachedGraphQuery } = require('../helper/cache') -const sdk = require('@defillama/sdk') const { compoundExports2 } = require('../helper/compound') const config = { bsc: { From 5df477c3b5500437804459be2d3d331a0b274537 Mon Sep 17 00:00:00 2001 From: slasher125 Date: Fri, 14 Jun 2024 09:53:27 +0400 Subject: [PATCH 1999/2004] remove dupe sdk imports in liquidations --- liquidations/mimo-protocol/index.ts | 1 - liquidations/venus/index.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/liquidations/mimo-protocol/index.ts b/liquidations/mimo-protocol/index.ts index 30945758a38..6f72b712cde 100644 --- a/liquidations/mimo-protocol/index.ts +++ b/liquidations/mimo-protocol/index.ts @@ -1,4 +1,3 @@ -import * as sdk from "@defillama/sdk"; import axios from "axios"; import { gql } from "graphql-request"; import BigNumber from "bignumber.js"; diff --git a/liquidations/venus/index.ts b/liquidations/venus/index.ts index 703a3c635ce..7d6f154a598 100644 --- a/liquidations/venus/index.ts +++ b/liquidations/venus/index.ts @@ -1,4 +1,3 @@ -import * as sdk from "@defillama/sdk"; import { gql } from "graphql-request"; import { getPagedGql } from "../utils/gql"; import BigNumber from "bignumber.js"; From 58fcba46ce5c9efb580e71f1f3ca71eafcdf6b97 Mon Sep 17 00:00:00 2001 From: Strategic Reserve Date: Fri, 14 Jun 2024 01:00:13 -0700 Subject: [PATCH 2000/2004] Add Rootstock and Taiko (#10644) --- projects/visor/config.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/visor/config.js b/projects/visor/config.js index b2832d59d82..69ab6e93011 100644 --- a/projects/visor/config.js +++ b/projects/visor/config.js @@ -128,6 +128,13 @@ const HYPE_REGISTRY = { mode: [ ["0x683292172E2175bd08e3927a5e72FC301b161300", 696737], // KIM ], + taiko: [ + ["0xc27ddd78fc49875fe6f844b72bbf31dfbb099881", 57600], // Uniswap + ], + rsk: [ + ["0x683292172E2175bd08e3927a5e72FC301b161300", 6414342], // Uniswap + ["0xC27DDd78FC49875Fe6F844B72bbf31DFBB099881", 6414350], // Sushiswap + ], }; Object.keys(HYPE_REGISTRY).forEach(chain => { From 44879a3fd164d5ef41e94df5888c22b5c9c49e2b Mon Sep 17 00:00:00 2001 From: joltbrian <144665672+briangarden@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:02:01 +0800 Subject: [PATCH 2001/2004] update the tvl calculation for Joltify rwa adapter (#10628) --- projects/joltify-rwa/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/joltify-rwa/index.js b/projects/joltify-rwa/index.js index 8d3810eb45e..586e223be86 100644 --- a/projects/joltify-rwa/index.js +++ b/projects/joltify-rwa/index.js @@ -6,8 +6,18 @@ const tvl = async (api) => { 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); 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); }); } From a730591388a366890169281c936efd65ffcdaa88 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:04:23 +0200 Subject: [PATCH 2002/2004] joltify: exclude borrowed --- projects/joltify-rwa/index.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/projects/joltify-rwa/index.js b/projects/joltify-rwa/index.js index 586e223be86..7529664e738 100644 --- a/projects/joltify-rwa/index.js +++ b/projects/joltify-rwa/index.js @@ -6,15 +6,7 @@ const tvl = async (api) => { 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); 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); From 76aea5552d84080f352d0d088e537670af99ab74 Mon Sep 17 00:00:00 2001 From: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:10:15 +0200 Subject: [PATCH 2003/2004] fix ethalend --- projects/ethalend/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/ethalend/index.js b/projects/ethalend/index.js index d38667239d4..cf8f95e3d8d 100644 --- a/projects/ethalend/index.js +++ b/projects/ethalend/index.js @@ -4,6 +4,7 @@ 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') From bea2f684c9a23aac0483aa706edc1d1f46be2318 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Fri, 14 Jun 2024 10:57:19 +0100 Subject: [PATCH 2004/2004] dynamic query batching --- test.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/test.js b/test.js index c77936d29d5..df47f6948bd 100644 --- a/test.js +++ b/test.js @@ -354,10 +354,10 @@ async function computeTVL(balances, timestamp) { let tokenData = [] readKeys.forEach(i => unknownTokens[i] = true) + const queries = buildPricesGetQueries(readKeys) const { errors } = await PromisePool.withConcurrency(5) - .for(sliceIntoChunks(readKeys, 100)) - .process(async (keys) => { - tokenData.push((await axios.get(`https://coins.llama.fi/prices/current/${keys.join(',')}`)).data.coins) + .for(queries).process(async (query) => { + tokenData.push((await axios.get(query)).data.coins) }) if (errors && errors.length) @@ -423,7 +423,22 @@ setTimeout(() => { process.exit(1); }, 10 * 60 * 1000) // 10 minutes +function buildPricesGetQueries(readKeys) { + const burl = 'https://coins.llama.fi/prices/current/' + const queries = [] + let query = burl + for (key of readKeys) { + if (query.length + key.length > 2000) { + queries.push(query.slice(0, -1)) + query = burl + } + query += `${key},` + } + + queries.push(query.slice(0, -1)) + return queries +} async function initCache() { let currentCache = await sdk.cache.readCache(INTERNAL_CACHE_FILE)