Skip to content

Commit bd54d66

Browse files
authored
Add hyperbeat tvl (DefiLlama#14771)
1 parent 912f415 commit bd54d66

File tree

1 file changed

+75
-23
lines changed

1 file changed

+75
-23
lines changed

projects/hyperbeat/index.js

Lines changed: 75 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,89 @@
11
const { sumERC4626VaultsExport } = require('../helper/erc4626');
22
const { sumTokens2 } = require('../helper/unwrapLPs');
3+
const sdk = require('@defillama/sdk');
4+
const BigNumber = require('bignumber.js');
35

4-
const hyperliquidVaults = ['0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB', '0xc061d38903b99aC12713B550C2CB44B221674F94'];
6+
const USDT0 = '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb';
7+
const USDT0_VAULT = '0x5e105266db42f78fa814322bce7f388b4c2e61eb';
58

6-
const ethereumVaults = [
7-
'0x9E3C0D2D70e9A4BF4f9d5F0A6E4930ce76Fed09e',
8-
'0x9920d2075A350ACAaa4c6D00A56ebBEeD021cD7f',
9-
'0x340116F605Ca4264B8bC75aAE1b3C8E42AE3a3AB',
10-
];
9+
const morphoVaults = {
10+
'0x5eEC795d919FA97688Fb9844eeB0072E6B846F9d': '0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34',
11+
'0x53A333e51E96FE288bC9aDd7cdC4B1EAD2CD2FfA': '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb',
12+
'0x0571362ba5EA9784a97605f57483f865A37dBEAA': '0xBe6727B535545C67d5cAa73dEa54865B92CF7907',
13+
'0xd19e3d00f8547f7d108abfd4bbb015486437b487': '0x5555555555555555555555555555555555555555'
14+
};
1115

12-
const tokensToCheck = [
13-
'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
14-
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0xdAC17F958D2ee523a2206206994597C13D831ec7',
15-
'0x66a1E37c9b0eAddca17d3662D6c05F4DECf3e110', '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',
16-
'0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', '0x8DB2350D78aBc13f5673A411D4700BCF87864dDE',
17-
'0x657e8C867D8B37dCC18fA4Caead9C45EB088C642', '0x094c0e36210634c3CfA25DC11B96b562E0b07624',
18-
'0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', '0x8236a87084f8B84306f72007F36F2618A5634494',
19-
'0x7A56E1C57C7475CCf742a1832B028F0456652F97', '0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e',
20-
'0xE6829d9a7eE3040e1276Fa75293Bde931859e8fA', '0x7122985656e38BDC0302Db86685bb972b145bD3C',
21-
'0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7',
22-
'0xf951E335afb289353dc249e82926178EaC7DEd78', '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0'
23-
];
16+
const adjustDecimals = (amount, from, to = 6) => {
17+
return new BigNumber(amount)
18+
.times(new BigNumber(10).pow(to))
19+
.div(new BigNumber(10).pow(from))
20+
.toFixed(0);
21+
};
2422

2523
module.exports = {
2624
doublecounted: true,
27-
methodology: 'Measures TVL by calculating all tokens held by each vault. For Ethereum vaults we check balances of major tokens, for Hyperliquid vault we use the ERC4626 standard.',
25+
methodology: 'Measures TVL by calculating all tokens held by each vault.',
2826
start: 1738368000,
2927
ethereum: {
30-
tvl: async (api) => {
31-
return sumTokens2({ api, owners: ethereumVaults, tokens: tokensToCheck });
32-
}
28+
tvl: async (api) => sumTokens2({
29+
api,
30+
owners: [
31+
'0x9E3C0D2D70e9A4BF4f9d5F0A6E4930ce76Fed09e',
32+
'0x9920d2075A350ACAaa4c6D00A56ebBEeD021cD7f',
33+
'0x340116F605Ca4264B8bC75aAE1b3C8E42AE3a3AB'
34+
],
35+
tokens: [
36+
'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
37+
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', '0xdAC17F958D2ee523a2206206994597C13D831ec7',
38+
'0x66a1E37c9b0eAddca17d3662D6c05F4DECf3e110', '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',
39+
'0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', '0x8DB2350D78aBc13f5673A411D4700BCF87864dDE',
40+
'0x657e8C867D8B37dCC18fA4Caead9C45EB088C642', '0x094c0e36210634c3CfA25DC11B96b562E0b07624',
41+
'0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', '0x8236a87084f8B84306f72007F36F2618A5634494',
42+
'0x7A56E1C57C7475CCf742a1832B028F0456652F97', '0xF469fBD2abcd6B9de8E169d128226C0Fc90a012e',
43+
'0xE6829d9a7eE3040e1276Fa75293Bde931859e8fA', '0x7122985656e38BDC0302Db86685bb972b145bD3C',
44+
'0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee', '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7',
45+
'0xf951E335afb289353dc249e82926178EaC7DEd78', '0xFAe103DC9cf190eD75350761e95403b7b8aFa6c0'
46+
]
47+
})
3348
},
3449
hyperliquid: {
35-
tvl: sumERC4626VaultsExport({ vaults: hyperliquidVaults, isOG4626: true })
50+
tvl: async (api) => {
51+
await sumERC4626VaultsExport({
52+
vaults: ['0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB', '0xc061d38903b99aC12713B550C2CB44B221674F94'],
53+
isOG4626: true
54+
})(api);
55+
56+
const [supply, decimals] = await Promise.all([
57+
sdk.api.erc20.totalSupply({ target: USDT0_VAULT, chain: 'hyperliquid' }),
58+
sdk.api.erc20.decimals(USDT0_VAULT, 'hyperliquid')
59+
]);
60+
61+
api.add(USDT0, adjustDecimals(supply.output, decimals.output));
62+
63+
const [supplies, vaultDecimals] = await Promise.all([
64+
sdk.api.abi.multiCall({
65+
calls: Object.keys(morphoVaults).map(v => ({ target: v })),
66+
abi: 'erc20:totalSupply',
67+
chain: 'hyperliquid'
68+
}),
69+
sdk.api.abi.multiCall({
70+
calls: Object.keys(morphoVaults).map(v => ({ target: v })),
71+
abi: 'erc20:decimals',
72+
chain: 'hyperliquid'
73+
})
74+
]);
75+
76+
supplies.output.forEach((data, i) => {
77+
const vault = data.input.target;
78+
const underlying = morphoVaults[vault];
79+
const decimals = vaultDecimals.output[i].output;
80+
const amount = underlying === USDT0
81+
? adjustDecimals(data.output, decimals)
82+
: data.output;
83+
api.add(underlying, amount);
84+
});
85+
86+
return api.getBalances();
87+
}
3688
}
3789
};

0 commit comments

Comments
 (0)