Skip to content

Commit d335ea6

Browse files
0x-minatoariyan-hashstackakiraonstarknet
authored
Added ekubo strk xstrk strat (DefiLlama#15298)
Co-authored-by: ariyan-hashstack <[email protected]> Co-authored-by: akiraonstarknet <[email protected]>
1 parent 907b2df commit d335ea6

File tree

2 files changed

+68
-6
lines changed

2 files changed

+68
-6
lines changed

projects/strkfarm/ekubo.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const EkuboAbi = [
2+
{
3+
"name": "total_supply",
4+
"type": "function",
5+
"inputs": [],
6+
"outputs": [
7+
{
8+
"type": "core::integer::u256"
9+
}
10+
],
11+
"state_mutability": "view"
12+
},
13+
{
14+
"name": "convert_to_assets",
15+
"type": "function",
16+
"inputs": [
17+
{
18+
"name": "shares",
19+
"type": "core::integer::u256"
20+
}
21+
],
22+
"outputs": [
23+
{
24+
"type": "(core::integer::u256, core::integer::u256, core::integer::u256)"
25+
}
26+
],
27+
"state_mutability": "view"
28+
},
29+
]
30+
31+
const EkuboAbiMap = {}
32+
EkuboAbi.forEach(i => EkuboAbiMap[i.name] = i)
33+
34+
module.exports = {
35+
EkuboAbiMap
36+
}

projects/strkfarm/index.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
/**
2-
* STRKFarm is a yield aggregator and strategy builder on Starknet
2+
* Troves is a yield aggregator and strategy builder on Starknet
33
* - We use various DeFi protocols on starknet to design yield strategies
44
*/
55

66
const { multiCall } = require("../helper/chain/starknet");
7-
const { call } = require("../helper/chain/starknet");
87
const ADDRESSES = require('../helper/coreAssets.json');
9-
const { ERC4626AbiMap } = require('./erc4626');
8+
const { EkuboAbiMap } = require('./ekubo');
109
const { SINGLETONabiMap } = require('./singleton');
1110
const { endurABIMap } = require('./endur');
1211
const { FusionAbiMap } = require('./fusionAbi');
13-
const { ERC721StratAbiMap } = require('./sensei');
1412

1513
const STRATEGIES = {
1614
"AutoCompounding": [{ // auto-compounds user tokens (e.g. STRK) by investing in zkLend
@@ -41,7 +39,7 @@ const STRATEGIES = {
4139
address: "0x7023a5cadc8a5db80e4f0fde6b330cbd3c17bbbf9cb145cbabd7bd5e6fb7b0b",
4240
token: ADDRESSES.starknet.STRK,
4341
xSTRK: ADDRESSES.starknet.XSTRK,
44-
vesu: "0x02545b2e5d519fc230e9cd781046d3a64e092114f07e44771e0d719d148725ef"
42+
vesu: "0x000d8d6dfec4d33bfb6895de9f3852143a17c6f92fd2a21da3d6924d34870160"
4543
}],
4644
"FusionVaults": [{
4745
address: "0x07fb5bcb8525954a60fde4e8fb8220477696ce7117ef264775a1770e23571929",
@@ -55,6 +53,11 @@ const STRATEGIES = {
5553
}, {
5654
address: "0x0115e94e722cfc4c77a2f15c4aefb0928c1c0029e5a57570df24c650cb7cec2c",
5755
token: ADDRESSES.starknet.USDT, // Fusion USDT
56+
}],
57+
"EkuboVaults": [{
58+
address: "0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324",
59+
token1: ADDRESSES.starknet.STRK,
60+
token2: ADDRESSES.starknet.XSTRK
5861
}]
5962
}
6063

@@ -84,7 +87,7 @@ async function computeXSTRKStratTVL(api) {
8487
params: [pool_id, c.xSTRK, c.token, c.address]
8588
})),
8689
abi: {...SINGLETONabiMap.position, customInput: 'address'},
87-
});
90+
})
8891

8992

9093
let collateral = Number(data[0]['2']);
@@ -114,11 +117,34 @@ async function computeFusionTVL(api) {
114117
api.addTokens(fusionContracts.map(c => c.token), totalAssets);
115118
}
116119

120+
async function computeEkuboTVL(api) {
121+
const ekuboContracts = STRATEGIES.EkuboVaults
122+
// calculate tvl for each
123+
const totalShares = await multiCall({
124+
calls: ekuboContracts.map(c => c.address),
125+
abi: EkuboAbiMap.total_supply
126+
});
127+
128+
const hexValues = totalShares.map(v => '0x' + v.toString(16));
129+
130+
const assets = await multiCall({
131+
calls: ekuboContracts.map(c => ({
132+
target: c.address,
133+
params: [hexValues[0], '0x0']
134+
})),
135+
abi: { ...EkuboAbiMap.convert_to_assets, customInput: 'address' }
136+
})
137+
138+
api.addTokens(ADDRESSES.starknet.XSTRK, [assets[0]['1']])
139+
api.addTokens(ADDRESSES.starknet.STRK, [assets[0]['2']])
140+
}
141+
117142
async function tvl(api) {
118143
await computeAutoCompoundingTVL(api);
119144
await computeSenseiTVL(api);
120145
await computeXSTRKStratTVL(api);
121146
await computeFusionTVL(api);
147+
await computeEkuboTVL(api);
122148
}
123149

124150
module.exports = {

0 commit comments

Comments
 (0)