Skip to content

Commit 3354207

Browse files
authored
update project equilibria adapter (DefiLlama#13018)
1 parent d1834c6 commit 3354207

File tree

1 file changed

+85
-86
lines changed

1 file changed

+85
-86
lines changed

projects/equilibria/index.js

Lines changed: 85 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,113 @@
1-
const sdk = require("@defillama/sdk");
2-
const { sumTokensExport } = require("../helper/unwrapLPs");
3-
4-
const contracts = {
1+
const config = {
52
ethereum: {
6-
boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
7-
staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3",
8-
eqbAddress: "0xfE80D611c6403f70e5B1b9B722D2B3510B740B2B",
9-
eqbRewardsAddress: "0xd8967B2B15b3CDF96039b7407813B4037f73ec27",
10-
pendleAddress: "0x808507121b80c02388fad14726482e061b8da827",
3+
pendleBooster: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
4+
pendleProxy: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3",
5+
eqb: "0xfE80D611c6403f70e5B1b9B722D2B3510B740B2B",
6+
vlEqb: "0xd8967B2B15b3CDF96039b7407813B4037f73ec27",
7+
pendle: "0x808507121b80c02388fad14726482e061b8da827",
8+
ePendle: "0x22Fc5A29bd3d6CCe19a06f844019fd506fCe4455",
9+
ePendleReward: "0x357F55b46821A6C6e476CC32EBB2674cD125e849",
1110
},
1211
arbitrum: {
13-
boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
14-
staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3",
15-
eqbRewardsAddress: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9",
16-
pendleAddress: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8",
12+
pendleBooster: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
13+
pendleProxy: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3",
14+
eqb: "0xBfbCFe8873fE28Dfa25f1099282b088D52bbAD9C",
15+
vlEqb: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9",
16+
pendle: "0x0c880f6761F1af8d9Aa9C466984b80DAb9a8c9e8",
17+
ePendle: "0x3EaBE18eAE267D1B57f917aBa085bb5906114600",
18+
ePendleReward: "0x9739d1E515C5291faA26D92a5D02761b6BbB4D6F",
1719
},
1820
bsc: {
19-
boosterAddress: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
20-
staker: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3",
21-
eqbRewardsAddress: "0x0140dE476f49B6B42f7b73612b6dc317aB91D3BC",
22-
pendleAddress: "0xb3Ed0A426155B79B898849803E3B36552f7ED507",
21+
pendleBooster: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
22+
pendleProxy: "0x64627901dAdb46eD7f275fD4FC87d086cfF1e6E3",
23+
eqb: "0x374Ca32fd7934c5d43240E1e73fa9B2283468609",
24+
vlEqb: "0x0140dE476f49B6B42f7b73612b6dc317aB91D3BC",
25+
pendle: "0xb3Ed0A426155B79B898849803E3B36552f7ED507",
26+
ePendle: "0x898CA9B3ef8b6a30dA5fc7202f70E7992b3602B3",
27+
ePendleReward: "0xE2dB20ce7D845f99338BbA4bdFF00e733801Dde7",
2328
},
2429
optimism: {
25-
boosterAddress: "0x18C61629E6CBAdB85c29ba7993f251b3EbE2B356",
26-
staker: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
27-
eqbRewardsAddress: "0x22Fc5A29bd3d6CCe19a06f844019fd506fCe4455",
28-
pendleAddress: "0xBC7B1Ff1c6989f006a1185318eD4E7b5796e66E1",
30+
pendleBooster: "0x18C61629E6CBAdB85c29ba7993f251b3EbE2B356",
31+
pendleProxy: "0x4D32C8Ff2fACC771eC7Efc70d6A8468bC30C26bF",
32+
eqb: "0xaf3A6f67Af1624d3878A8d30b09FAe7915DcA2a0",
33+
vlEqb: "0x22Fc5A29bd3d6CCe19a06f844019fd506fCe4455",
34+
pendle: "0xBC7B1Ff1c6989f006a1185318eD4E7b5796e66E1",
35+
ePendle: "0x86a20111fEae36f3511A30c0640d2099b3A818C5",
36+
ePendleReward: "0x898CA9B3ef8b6a30dA5fc7202f70E7992b3602B3",
2937
},
3038
mantle: {
31-
boosterAddress: "0x920873E5b302A619C54c908aDFB77a1C4256A3B8",
32-
staker: "0x479603DE0a8B6D2f4D4eaA1058Eea0d7Ac9E218d",
33-
eqbRewardsAddress: "0x71e0ce200a10f0bBFB9F924fE466ACf0B7401EbF",
34-
pendleAddress: "0xd27B18915e7acc8FD6Ac75DB6766a80f8D2f5729",
39+
pendleBooster: "0x920873E5b302A619C54c908aDFB77a1C4256A3B8",
40+
pendleProxy: "0x479603DE0a8B6D2f4D4eaA1058Eea0d7Ac9E218d",
41+
eqb: "0x3e7eF8f50246f725885102E8238CBba33F276747",
42+
vlEqb: "0x71e0ce200a10f0bBFB9F924fE466ACf0B7401EbF",
43+
pendle: "0xd27B18915e7acc8FD6Ac75DB6766a80f8D2f5729",
44+
ePendle: "0x6EE066b813cd8C2586D86F79eD0025e81801b923",
45+
ePendleReward: "0x741620136cf08a782c1Df1Fc9E3cAA760Cc4Fecc",
46+
},
47+
base: {
48+
pendleBooster: "0x2583A2538272f31e9A15dD12A432B8C96Ab4821d",
49+
pendleProxy: "0x920873E5b302A619C54c908aDFB77a1C4256A3B8",
50+
eqb: "0x010cd9b9be7E416E07793dc6Ce2F45868A80a50a",
51+
vlEqb: "0x70f61901658aAFB7aE57dA0C30695cE4417e72b9",
52+
pendle: "0xA99F6e6785Da0F5d6fB42495Fe424BCE029Eeb3E",
53+
ePendle: "0x741620136cf08a782c1Df1Fc9E3cAA760Cc4Fecc",
54+
ePendleReward: "0xB2D167EB1Fff17EbD727B0a21e7f5F50424264c8",
3555
}
3656
};
3757

38-
async function tvl(chain, block) {
39-
const balances = {};
58+
const abi = {
59+
"poolLength": "uint256:poolLength",
60+
"poolInfo": "function poolInfo(uint256) view returns (address market, address token, address rewardPool, bool shutdown)"
61+
};
62+
63+
const { staking } = require('../helper/staking')
64+
65+
async function tvl(api) {
66+
const { pendleBooster, vlEqb, pendleProxy, pendle } = config[api.chain];
4067

41-
if (chain === "ethereum") {
42-
const pendleLocked = await sdk.api2.abi.call({
68+
if (api.chain === "ethereum") {
69+
const pendleLocked = await api.call({
4370
target: "0x4f30A9D41B80ecC5B94306AB4364951AE3170210",
44-
params: contracts[chain].staker,
71+
params: pendleProxy,
4572
abi: "erc20:balanceOf",
46-
block,
4773
});
48-
sdk.util.sumSingleBalance(
49-
balances,
50-
contracts[chain].pendleAddress,
74+
api.add(
75+
pendle,
5176
pendleLocked
5277
);
5378
}
5479

55-
const poolLength = await sdk.api2.abi.call({
56-
chain,
57-
block,
58-
target: contracts[chain].boosterAddress,
59-
abi: "function poolLength() view returns (uint256)",
80+
const poolInfos = await api.fetchList({
81+
lengthAbi: abi.poolLength,
82+
itemAbi: abi.poolInfo,
83+
target: pendleBooster,
6084
});
61-
62-
const poolInfos = await Promise.all(
63-
Array.from(Array(Number(poolLength)).keys()).map((params) =>
64-
sdk.api2.abi.call({
65-
chain,
66-
block,
67-
target: contracts[chain].boosterAddress,
68-
params,
69-
abi: "function poolInfo(uint256) view returns (address market, address token, address rewardPool, bool shutdown)",
70-
})
71-
)
72-
); // multicall fails here
73-
74-
const { output: gaugeBalances } = await sdk.api.abi.multiCall({
75-
abi: "erc20:balanceOf",
76-
calls: Array.from(new Set(poolInfos.map((p) => p.market))).map((i) => ({
77-
target: i,
78-
params: contracts[chain].staker,
79-
})),
80-
chain,
81-
block,
82-
});
83-
84-
gaugeBalances.forEach(({ output, input }, i) =>
85-
sdk.util.sumSingleBalance(
86-
balances,
87-
chain +
88-
":" +
89-
poolInfos.find(
90-
(p) => p.market.toLowerCase() === input.target.toLowerCase()
91-
).market,
92-
output
93-
)
94-
);
95-
96-
return balances;
85+
const poolTokens = poolInfos.map(pool => pool.market);
86+
const blacklistedTokens = [];
87+
if (vlEqb) blacklistedTokens.push(vlEqb);
88+
return api.sumTokens({ tokens: poolTokens, owner: pendleProxy, blacklistedTokens });
9789
}
9890

99-
const chains = ["ethereum", "arbitrum", 'bsc', 'optimism', 'mantle'];
100-
101-
module.exports = {
102-
doublecounted: true,
103-
};
91+
Object.keys(config).forEach((chain) => {
92+
const { eqb, vlEqb, ePendle, ePendleReward } = config[chain];
10493

105-
chains.forEach((chain) => {
10694
module.exports[chain] = {
107-
tvl: async (_, _b, { [chain]: block }) => tvl(chain, block),
95+
tvl,
10896
};
109-
});
11097

111-
module.exports.ethereum.staking = sumTokensExport({
112-
owner: contracts.ethereum.eqbRewardsAddress,
113-
tokens: [contracts.ethereum.eqbAddress],
98+
const stakingContracts = [];
99+
const stakingTokens= [];
100+
if (eqb && vlEqb) {
101+
stakingContracts.push(vlEqb);
102+
stakingTokens.push(eqb);
103+
}
104+
105+
if (ePendle && ePendleReward) {
106+
stakingContracts.push(ePendleReward);
107+
stakingTokens.push(ePendle);
108+
}
109+
110+
if (stakingContracts.length) module.exports[chain].staking = staking(stakingContracts, stakingTokens);
114111
});
112+
113+
module.exports.doublecounted = true;

0 commit comments

Comments
 (0)