Skip to content

Commit b432cfd

Browse files
authored
Merge branch 'DefiLlama:master' into master
2 parents 348ef65 + 2849417 commit b432cfd

File tree

4 files changed

+143
-73
lines changed

4 files changed

+143
-73
lines changed

src/adaptors/degenprime/index.js

+24-1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ const AERO_POOL_TUP_CONTRACT = '0x4524D39Ca5b32527E7AF6c288Ad3E2871B9f343B';
6464
const BTC_POOL_TUP_CONTRACT = '0xCA8C954073054551B99EDee4e1F20c3d08778329';
6565
const ETH_POOL_TUP_CONTRACT = '0x81b0b59C7967479EC5Ce55cF6588bf314C3E4852';
6666
const BRETT_POOL_TUP_CONTRACT = '0x6c307F792FfDA3f63D467416C9AEdfeE2DD27ECF';
67+
const KAITO_POOL_TUP_CONTRACT = '0x293E41F1405Dde427B41c0074dee0aC55D064825';
6768

6869
// Token Addresses
6970
const AERO_TOKEN_ADDRESS = '0x940181a94A35A4569E4529A3CDfB74e38FD98631';
@@ -72,6 +73,7 @@ const BRETT_TOKEN_ADDRESS = '0x532f27101965dd16442E59d40670FaF5eBB142E4';
7273
const BTC_TOKEN_ADDRESS = '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf';
7374
const ETH_TOKEN_ADDRESS = '0x4200000000000000000000000000000000000006';
7475
const DEGEN_TOKEN_ADDRESS = '0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed';
76+
const KAITO_TOKEN_ADDRESS = '0x98d0baa52b2D063E780DE12F615f963Fe8537553';
7577

7678
const getPoolTVL = async (poolAddress, chain = 'base') => {
7779
return (
@@ -120,6 +122,9 @@ const getBrettPoolDepositRate = async () => {
120122
const getAeroPoolDepositRate = async () => {
121123
return (await getPoolDepositRate(AERO_POOL_TUP_CONTRACT)) / 1e16;
122124
};
125+
const getKaitoPoolDepositRate = async () => {
126+
return (await getPoolDepositRate(KAITO_POOL_TUP_CONTRACT)) / 1e16;
127+
};
123128

124129
const getBtcPoolTVL = async () => {
125130
const supply = await getPoolTVL(BTC_POOL_TUP_CONTRACT);
@@ -135,6 +140,13 @@ const getEthPoolTVL = async () => {
135140
return (supply * price) / 1e18;
136141
};
137142

143+
const getKaitoPoolTVL = async () => {
144+
const supply = await getPoolTVL(KAITO_POOL_TUP_CONTRACT);
145+
146+
const price = await getTokenPrice(KAITO_TOKEN_ADDRESS);
147+
return (supply * price) / 1e18;
148+
};
149+
138150
const getBrettPoolTVL = async () => {
139151
const supply = await getPoolTVL(BRETT_POOL_TUP_CONTRACT);
140152

@@ -210,7 +222,18 @@ const getPoolsAPYs = async () => {
210222
underlyingTokens: [ETH_TOKEN_ADDRESS],
211223
};
212224

213-
return [usdcPool, brettPool, aeroPool, btcPool, ethPool];
225+
const kaitoPoolTvl = await getKaitoPoolTVL();
226+
const kaitoPool = {
227+
pool: `dgp-${KAITO_TOKEN_ADDRESS}-base`,
228+
chain: utils.formatChain('base'),
229+
project: 'degenprime',
230+
symbol: utils.formatSymbol('KAITO'),
231+
tvlUsd: kaitoPoolTvl,
232+
apyBase: await getKaitoPoolDepositRate(),
233+
underlyingTokens: [KAITO_TOKEN_ADDRESS],
234+
};
235+
236+
return [usdcPool, brettPool, aeroPool, btcPool, ethPool, kaitoPool];
214237
};
215238

216239
module.exports = {

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+
};

src/adaptors/yel-finance/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const POTION_SINGLE_STAKING_LIST = {
5454
'0x828CAd5913CDbdf53A7a538647c8a27CB04a7112': '0x0e899dA2aD0817ed850ce68f7f489688E4D42D9D', // lGhog / GHOG
5555
'0x75a65a8920Da26eBcCb79001ddE5F51AF0160006': '0x3333111A391cC08fa51353E9195526A70b333333', // lx33 / x33
5656
'0x24B77F92692496a374d67e277e6991DE5Ad73a48': '0x50c42dEAcD8Fc9773493ED674b675bE577f2634b', // lWETH / WETH
57+
'0xBf7D0b0A5F520C7a4E45cf907502072846488d70': '0xddddd1b4a383dcB89938bC8b8964Cad3C632Fad0', // lMyrd / MYRD
5758
}
5859
};
5960

src/utils/exclude.js

+1
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,7 @@ const excludePools = [
631631
'0xbc2539b24bba254b9843e992a3802027275c50c2ecef1b71d52e289781560ace',
632632
'0x1ba3281b6012f0b927d4d122bda293aa3cac487f',
633633
'0x1d60d7e0987aefb69c41c98fe3233d61f8d8315a-arbitrum',
634+
'3AFvR4L5p25KHiKmuvEXg9SxfCf4MpanN3KuK5qASqqc',
634635
];
635636

636637
const boundaries = {

0 commit comments

Comments
 (0)