Skip to content

Commit 2849417

Browse files
committed
euler v2 correct symbol, add missing chains
1 parent 095eaf9 commit 2849417

File tree

1 file changed

+117
-72
lines changed

1 file changed

+117
-72
lines changed

Diff for: src/adaptors/euler-v2/index.js

+117-72
Original file line numberDiff line numberDiff line change
@@ -7,89 +7,134 @@ const axios = require('axios');
77
const { url } = require('inspector');
88

99
const chains = {
10-
ethereum: {
11-
factory: '0x29a56a1b8214D9Cf7c5561811750D5cBDb45CC8e',
12-
vaultLens: '0xA8695d44EC128136F8Afcd796D6ba3Db3cdA8914',
13-
fromBlock: 20529225,
14-
},
15-
bob: {
16-
factory: '0x046a9837A61d6b6263f54F4E27EE072bA4bdC7e4',
17-
vaultLens: '0xb20343277ad78150D21CC8820fF012efDDa71531',
18-
fromBlock: 12266832,
19-
},
20-
}
10+
ethereum: {
11+
factory: '0x29a56a1b8214D9Cf7c5561811750D5cBDb45CC8e',
12+
vaultLens: '0xA8695d44EC128136F8Afcd796D6ba3Db3cdA8914',
13+
fromBlock: 20529225,
14+
},
15+
bob: {
16+
factory: '0x046a9837A61d6b6263f54F4E27EE072bA4bdC7e4',
17+
vaultLens: '0xb20343277ad78150D21CC8820fF012efDDa71531',
18+
fromBlock: 12266832,
19+
},
20+
sonic: {
21+
factory: '0xF075cC8660B51D0b8a4474e3f47eDAC5fA034cFB',
22+
vaultLens: '0x0058F402aaa67868A682DA1bDd2E08c7aA3795eE',
23+
fromBlock: 5324454,
24+
},
25+
avax: {
26+
factory: '0xaf4B4c18B17F6a2B32F6c398a3910bdCD7f26181',
27+
vaultLens: '0xeE2CaC5Df4984f56395b48e71b1D1E84acFbcD9E',
28+
fromBlock: 56805794,
29+
},
30+
berachain: {
31+
factory: '0x5C13fb43ae9BAe8470f646ea647784534E9543AF',
32+
vaultLens: '0xa61BC2Df76DBFCeDAe4fAaB7A1341bA98fA76FdA',
33+
fromBlock: 786314,
34+
},
35+
bsc: {
36+
factory: '0x7F53E2755eB3c43824E162F7F6F087832B9C9Df6',
37+
vaultLens: '0xBfD019C90e8Ca8286f9919DF31c25BF989C6bD46',
38+
fromBlock: 46370655,
39+
},
40+
};
2141

2242
const getApys = async () => {
23-
const result = [];
43+
const result = [];
2444

25-
const factoryIFace = new ethers.utils.Interface(factoryAbi);
26-
const lensIFace = new ethers.utils.Interface(lensAbi);
45+
const factoryIFace = new ethers.utils.Interface(factoryAbi);
46+
const lensIFace = new ethers.utils.Interface(lensAbi);
2747

28-
for (const [chain, config] of Object.entries(chains)) {
29-
const currentBlock = await sdk.api.util.getLatestBlock(chain);
30-
const toBlock = currentBlock.number;
31-
32-
// Fetch all pools from factory events
33-
const poolDeployEvents = await sdk.api.util.getLogs({
34-
fromBlock: config.fromBlock,
35-
toBlock: toBlock,
36-
target: config.factory,
37-
chain: chain,
38-
topic: "",
39-
keys: [],
40-
topics: [factoryIFace.getEventTopic('ProxyCreated')],
41-
entireLog: true,
42-
});
48+
for (const [chain, config] of Object.entries(chains)) {
49+
const currentBlock = await sdk.api.util.getLatestBlock(chain);
50+
const toBlock = currentBlock.number;
4351

44-
const vaultAddresses = poolDeployEvents.output.map((event) => {
45-
const decoded = factoryIFace.decodeEventLog("ProxyCreated", event.data, event.topics);
46-
return decoded["proxy"];
47-
});
52+
// Fetch all pools from factory events
53+
const poolDeployEvents = await sdk.api.util.getLogs({
54+
fromBlock: config.fromBlock,
55+
toBlock: toBlock,
56+
target: config.factory,
57+
chain: chain,
58+
topic: '',
59+
keys: [],
60+
topics: [factoryIFace.getEventTopic('ProxyCreated')],
61+
entireLog: true,
62+
});
4863

49-
// TODO loop over all vaults to get their info
50-
for(const vault of vaultAddresses) {
51-
const vaultInfo = await sdk.api.abi.call({
52-
target: config.vaultLens,
53-
params: [vault],
54-
abi: lensAbi.find((m) => m.name === 'getVaultInfoFull'),
55-
chain,
56-
});
64+
const vaultAddresses = poolDeployEvents.output.map((event) => {
65+
const decoded = factoryIFace.decodeEventLog(
66+
'ProxyCreated',
67+
event.data,
68+
event.topics
69+
);
70+
return decoded['proxy'];
71+
});
5772

58-
// Only pools with an interest rate
59-
if(vaultInfo.output.irmInfo.interestRateInfo[0] && vaultInfo.output.irmInfo.interestRateInfo[0].supplyAPY > 0) {
73+
// TODO loop over all vaults to get their info
74+
for (const vault of vaultAddresses) {
75+
const vaultInfo = await sdk.api.abi.call({
76+
target: config.vaultLens,
77+
params: [vault],
78+
abi: lensAbi.find((m) => m.name === 'getVaultInfoFull'),
79+
chain,
80+
});
6081

61-
const price = (
62-
await axios.get(`https://coins.llama.fi/prices/current/${chain}:${vaultInfo.output.asset}`)
63-
).data.coins[`${chain}:${vaultInfo.output.asset}`].price;
82+
// Only pools with an interest rate
83+
if (
84+
vaultInfo.output.irmInfo.interestRateInfo[0] &&
85+
vaultInfo.output.irmInfo.interestRateInfo[0].supplyAPY > 0
86+
) {
87+
const price = (
88+
await axios.get(
89+
`https://coins.llama.fi/prices/current/${chain}:${vaultInfo.output.asset}`
90+
)
91+
).data.coins[`${chain}:${vaultInfo.output.asset}`]?.price;
6492

65-
const totalSupplied = vaultInfo.output.totalAssets;
66-
const totalBorrowed = vaultInfo.output.totalBorrowed;
93+
const totalSupplied = vaultInfo.output.totalAssets;
94+
const totalBorrowed = vaultInfo.output.totalBorrowed;
6795

68-
const totalSuppliedUSD = ethers.utils.formatUnits(totalSupplied, vaultInfo.output.assetDecimals) * price;
69-
const totalBorrowedUSD = ethers.utils.formatUnits(totalBorrowed, vaultInfo.output.assetDecimals) * price;
96+
const totalSuppliedUSD =
97+
ethers.utils.formatUnits(
98+
totalSupplied,
99+
vaultInfo.output.assetDecimals
100+
) * price;
101+
const totalBorrowedUSD =
102+
ethers.utils.formatUnits(
103+
totalBorrowed,
104+
vaultInfo.output.assetDecimals
105+
) * price;
70106

71-
result.push({
72-
pool: vault,
73-
chain,
74-
project: "euler-v2",
75-
symbol: vaultInfo.output.vaultSymbol,
76-
tvlUsd: totalSuppliedUSD - totalBorrowedUSD,
77-
totalSupplyUsd: totalSuppliedUSD,
78-
totalBorrowUsd: totalBorrowedUSD,
79-
apyBase: Number(ethers.utils.formatUnits(vaultInfo.output.irmInfo.interestRateInfo[0].supplyAPY, 25)),
80-
apyBaseBorrow: Number(ethers.utils.formatUnits(vaultInfo.output.irmInfo.interestRateInfo[0].borrowAPY, 25)),
81-
underlyingTokens: [vaultInfo.output.asset],
82-
url: `https://app.euler.finance/vault/${vault}?network=${chain}`,
83-
})
84-
}
85-
}
107+
result.push({
108+
pool: vault,
109+
chain,
110+
project: 'euler-v2',
111+
symbol: vaultInfo.output.assetSymbol,
112+
poolMeta: vaultInfo.output.vaultName,
113+
tvlUsd: totalSuppliedUSD - totalBorrowedUSD,
114+
totalSupplyUsd: totalSuppliedUSD,
115+
totalBorrowUsd: totalBorrowedUSD,
116+
apyBase: Number(
117+
ethers.utils.formatUnits(
118+
vaultInfo.output.irmInfo.interestRateInfo[0].supplyAPY,
119+
25
120+
)
121+
),
122+
apyBaseBorrow: Number(
123+
ethers.utils.formatUnits(
124+
vaultInfo.output.irmInfo.interestRateInfo[0].borrowAPY,
125+
25
126+
)
127+
),
128+
underlyingTokens: [vaultInfo.output.asset],
129+
url: `https://app.euler.finance/vault/${vault}?network=${chain}`,
130+
});
131+
}
86132
}
87-
return result;
88-
}
89-
90-
133+
}
134+
return result;
135+
};
91136

92137
module.exports = {
93-
timetravel: false,
94-
apy: getApys,
95-
}
138+
timetravel: false,
139+
apy: getApys,
140+
};

0 commit comments

Comments
 (0)