mirror of
https://github.com/alexgo-io/DefiLlama-Adapters.git
synced 2026-04-30 22:02:28 +08:00
fix dyson tvl
This commit is contained in:
@@ -1,8 +1,7 @@
|
|||||||
|
const { getConfig } = require('../helper/cache');
|
||||||
const ADDRESSES = require('../helper/coreAssets.json')
|
const ADDRESSES = require('../helper/coreAssets.json')
|
||||||
const { staking } = require('../helper/staking')
|
const { staking } = require('../helper/staking');
|
||||||
const { sumTokens2 } = require('../helper/unwrapLPs');
|
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 TVL_URL = 'https://api2.dyson.money/vaults/metrics/tvl';
|
||||||
@@ -11,14 +10,13 @@ const sphere_token = "0x62F594339830b90AE4C084aE7D223fFAFd9658A7"
|
|||||||
const ylSPHEREvault = "0x4Af613f297ab00361D516454E5E46bc895889653"
|
const ylSPHEREvault = "0x4Af613f297ab00361D516454E5E46bc895889653"
|
||||||
|
|
||||||
|
|
||||||
let TVL_byNetwork;
|
module.exports = {
|
||||||
|
doublecounted: true,
|
||||||
|
methodology: "Counts the tokens locked in the contracts.",
|
||||||
|
};
|
||||||
|
|
||||||
async function polygonTvl(timestamp, block, chainBlocks) {
|
const config = {
|
||||||
let balances = {};
|
polygon: {
|
||||||
|
|
||||||
// add tokens in ylSPHERE vault
|
|
||||||
await sumTokens2({
|
|
||||||
balances,
|
|
||||||
owners: [ylSPHEREvault],
|
owners: [ylSPHEREvault],
|
||||||
tokens: [
|
tokens: [
|
||||||
ADDRESSES.polygon.WMATIC_2,
|
ADDRESSES.polygon.WMATIC_2,
|
||||||
@@ -28,61 +26,53 @@ async function polygonTvl(timestamp, block, chainBlocks) {
|
|||||||
ADDRESSES.polygon.WBTC,
|
ADDRESSES.polygon.WBTC,
|
||||||
"0x172370d5Cd63279eFa6d502DAB29171933a610AF"
|
"0x172370d5Cd63279eFa6d502DAB29171933a610AF"
|
||||||
],
|
],
|
||||||
chain: 'polygon',
|
staking: staking(ylSPHEREvault, sphere_token),
|
||||||
block: chainBlocks.polygon
|
},
|
||||||
})
|
optimism: {},
|
||||||
|
arbitrum: {
|
||||||
// calculate TVL for polygon from API
|
blacklistedVaults: [
|
||||||
const polygon_tvl = await fetchNetworkTVL('polygon')();
|
'0x5e14aa6dd1606e789be9de8ded0b78b36d1fa4a3',
|
||||||
for (const [token, balance] of Object.entries(polygon_tvl)) {
|
'0x3b443e9b9b7f340c7b1417abfdc64132341873d4',
|
||||||
balances[token] = (balances[token] || 0) + balance
|
]
|
||||||
}
|
},
|
||||||
return balances;
|
bsc: { key: 'binance' },
|
||||||
}
|
avax: { key: 'avalanche',
|
||||||
|
blacklistedVaults: ['0xe5b584f5f8b2872202433d56299e3867ba246c6e', '0xe98786b94520772dd9efcc670d72939e184a6198'],
|
||||||
function fetchNetworkTVL(network) {
|
},
|
||||||
return async () => {
|
kava: {
|
||||||
try {
|
blacklistedVaults: ['0x489e54eec6c228a1457975eb150a7efb8350b5be'],
|
||||||
if(!TVL_byNetwork) TVL_byNetwork = utils.fetchURL(`${TVL_URL}`).then(response => response.data);
|
},
|
||||||
|
base: {},
|
||||||
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 {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Object.keys(config).forEach(chain => {
|
||||||
|
let { key, owners, tokens, staking, blacklistedVaults = []} = config[chain]
|
||||||
|
blacklistedVaults = new Set(blacklistedVaults.map(i => i.toLowerCase()))
|
||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports[chain] = {
|
||||||
doublecounted: true,
|
tvl: async (api) => {
|
||||||
methodology: "Counts the tokens locked in the contracts.",
|
if (owners && tokens) await api.sumTokens({ owners, tokens, })
|
||||||
polygon: {
|
const config = await getConfig('dyson-money/api2', 'https://api2.dyson.money/vaults')
|
||||||
tvl: polygonTvl,
|
const chainConfig = key ? config[key] : config[chain]
|
||||||
staking: staking(ylSPHEREvault, sphere_token)
|
let vaultsAll = Object.values(chainConfig ?? {}).map(i => i.address).filter(i => !blacklistedVaults.has(i.toLowerCase()))
|
||||||
},
|
let vaults1 = []
|
||||||
optimism: {
|
let vaults2 = []
|
||||||
tvl: fetchNetworkTVL('optimism'),
|
|
||||||
},
|
const isVault1 = await api.multiCall({ abi: 'address:want', calls: vaultsAll, permitFailure: true })
|
||||||
arbitrum: {
|
isVault1.forEach((v, i) => {
|
||||||
tvl: fetchNetworkTVL('arbitrum'),
|
if (v) vaults1.push(vaultsAll[i])
|
||||||
},
|
else vaults2.push(vaultsAll[i])
|
||||||
bsc: {
|
});
|
||||||
tvl: fetchNetworkTVL('binance')
|
|
||||||
},
|
const token = await api.multiCall({ abi: 'address:want', calls: vaults1 })
|
||||||
avax: {
|
const balance = await api.multiCall({ abi: 'uint256:balance', calls: vaults1 })
|
||||||
tvl: fetchNetworkTVL('avalanche')
|
const token2 = await api.multiCall({ abi: 'address:underlying', calls: vaults2 })
|
||||||
},
|
const balance2 = await api.multiCall({ abi: 'uint256:underlyingBalanceWithInvestment', calls: vaults2 })
|
||||||
kava: {
|
api.add(token, balance)
|
||||||
tvl: fetchNetworkTVL('kava'),
|
api.add(token2, balance2)
|
||||||
},
|
return sumTokens2({ api, resolveLP: true, })
|
||||||
base: {
|
}
|
||||||
tvl: fetchNetworkTVL('base'),
|
}
|
||||||
},
|
if (staking) module.exports[chain].staking = staking
|
||||||
};
|
})
|
||||||
Reference in New Issue
Block a user