mirror of
https://github.com/alexgo-io/DefiLlama-Adapters.git
synced 2026-04-30 05:45:32 +08:00
add additional chains (#9772)
* add additional chains * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com>
This commit is contained in:
@@ -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++) {
|
||||
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 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
|
||||
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 }
|
||||
})
|
||||
|
||||
@@ -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, },
|
||||
],
|
||||
}
|
||||
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user