Skip to content

Commit 5a3c77a

Browse files
committed
fix: adjust existing risk params
1 parent dda4f7b commit 5a3c77a

File tree

3 files changed

+383
-76
lines changed

3 files changed

+383
-76
lines changed

src/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ interface IAaveV3ConfigEngine {
7777
* borrowCap: 60_000, // 60k AAVE
7878
* debtCeiling: 100_000, // 100k USD
7979
* liqProtocolFee: 10_00, // 10%
80-
* eModeCategory: 0, // No category
8180
* }
8281
*/
8382
struct Listing {

src/deployments/inputs/HorizonPhaseOneListing.sol

Lines changed: 210 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,71 @@ contract HorizonPhaseOneListing is AaveV3Payload {
6464
USYC_PRICE_FEED = 0xE8E65Fb9116875012F5990Ecaab290B3531DbeB9;
6565
}
6666

67+
function eModeCategoriesUpdates()
68+
public
69+
pure
70+
override
71+
returns (IEngine.EModeCategoryUpdate[] memory)
72+
{
73+
IEngine.EModeCategoryUpdate[] memory eModeCategories = new IEngine.EModeCategoryUpdate[](6);
74+
75+
// USTB Stablecoins
76+
eModeCategories[0] = IEngine.EModeCategoryUpdate({
77+
eModeCategory: 1,
78+
ltv: 83_00,
79+
liqThreshold: 88_00,
80+
liqBonus: 3_00,
81+
label: 'USTB Stablecoins'
82+
});
83+
84+
// USTB GHO
85+
eModeCategories[1] = IEngine.EModeCategoryUpdate({
86+
eModeCategory: 2,
87+
ltv: 84_00,
88+
liqThreshold: 88_00,
89+
liqBonus: 3_00,
90+
label: 'USTB GHO'
91+
});
92+
93+
// USCC Stablecoins
94+
eModeCategories[2] = IEngine.EModeCategoryUpdate({
95+
eModeCategory: 3,
96+
ltv: 72_00,
97+
liqThreshold: 79_00,
98+
liqBonus: 7_50,
99+
label: 'USCC Stablecoins'
100+
});
101+
102+
// USCC GHO
103+
eModeCategories[3] = IEngine.EModeCategoryUpdate({
104+
eModeCategory: 4,
105+
ltv: 73_00,
106+
liqThreshold: 80_00,
107+
liqBonus: 7_50,
108+
label: 'USCC GHO'
109+
});
110+
111+
// USYC Stablecoins
112+
eModeCategories[4] = IEngine.EModeCategoryUpdate({
113+
eModeCategory: 5,
114+
ltv: 85_00,
115+
liqThreshold: 89_00,
116+
liqBonus: 3_10,
117+
label: 'USYC Stablecoins'
118+
});
119+
120+
// USYC GHO
121+
eModeCategories[5] = IEngine.EModeCategoryUpdate({
122+
eModeCategory: 6,
123+
ltv: 86_00,
124+
liqThreshold: 90_00,
125+
liqBonus: 3_10,
126+
label: 'USYC GHO'
127+
});
128+
129+
return eModeCategories;
130+
}
131+
67132
function newListingsCustom()
68133
public
69134
view
@@ -78,21 +143,21 @@ contract HorizonPhaseOneListing is AaveV3Payload {
78143
assetSymbol: 'GHO',
79144
priceFeed: GHO_PRICE_FEED,
80145
rateStrategyParams: IEngine.InterestRateInputData({
81-
optimalUsageRatio: 92_00,
82-
baseVariableBorrowRate: 3_50,
83-
variableRateSlope1: 1_25,
84-
variableRateSlope2: 35_00
146+
optimalUsageRatio: 99_00,
147+
baseVariableBorrowRate: 4_75,
148+
variableRateSlope1: 0,
149+
variableRateSlope2: 0
85150
}),
86151
enabledToBorrow: EngineFlags.ENABLED,
87152
borrowableInIsolation: EngineFlags.DISABLED,
88153
withSiloedBorrowing: EngineFlags.DISABLED,
89-
flashloanable: EngineFlags.ENABLED,
154+
flashloanable: EngineFlags.DISABLED,
90155
ltv: 0,
91156
liqThreshold: 0,
92157
liqBonus: 0,
93-
reserveFactor: 15_00,
94-
supplyCap: 5_000_000,
95-
borrowCap: 4_000_000,
158+
reserveFactor: 10_00,
159+
supplyCap: 25_000_000,
160+
borrowCap: 22_500_000,
96161
debtCeiling: 0,
97162
liqProtocolFee: 0
98163
}),
@@ -108,21 +173,21 @@ contract HorizonPhaseOneListing is AaveV3Payload {
108173
assetSymbol: 'USDC',
109174
priceFeed: USDC_PRICE_FEED,
110175
rateStrategyParams: IEngine.InterestRateInputData({
111-
optimalUsageRatio: 92_50,
176+
optimalUsageRatio: 90_00,
112177
baseVariableBorrowRate: 0,
113-
variableRateSlope1: 5_50,
114-
variableRateSlope2: 35_00
178+
variableRateSlope1: 5_00,
179+
variableRateSlope2: 15_00
115180
}),
116181
enabledToBorrow: EngineFlags.ENABLED,
117182
borrowableInIsolation: EngineFlags.DISABLED,
118183
withSiloedBorrowing: EngineFlags.DISABLED,
119-
flashloanable: EngineFlags.ENABLED,
184+
flashloanable: EngineFlags.DISABLED,
120185
ltv: 0,
121186
liqThreshold: 0,
122187
liqBonus: 0,
123188
reserveFactor: 15_00,
124-
supplyCap: 5_000_000,
125-
borrowCap: 4_000_000,
189+
supplyCap: 35_000_000,
190+
borrowCap: 31_500_000,
126191
debtCeiling: 0,
127192
liqProtocolFee: 0
128193
}),
@@ -138,21 +203,21 @@ contract HorizonPhaseOneListing is AaveV3Payload {
138203
assetSymbol: 'RLUSD',
139204
priceFeed: RLUSD_PRICE_FEED,
140205
rateStrategyParams: IEngine.InterestRateInputData({
141-
optimalUsageRatio: 80_00,
142-
baseVariableBorrowRate: 4_00,
143-
variableRateSlope1: 2_50,
144-
variableRateSlope2: 50_00
206+
optimalUsageRatio: 90_00,
207+
baseVariableBorrowRate: 0,
208+
variableRateSlope1: 5_00,
209+
variableRateSlope2: 15_00
145210
}),
146211
enabledToBorrow: EngineFlags.ENABLED,
147212
borrowableInIsolation: EngineFlags.DISABLED,
148213
withSiloedBorrowing: EngineFlags.DISABLED,
149-
flashloanable: EngineFlags.ENABLED,
214+
flashloanable: EngineFlags.DISABLED,
150215
ltv: 0,
151216
liqThreshold: 0,
152217
liqBonus: 0,
153218
reserveFactor: 15_00,
154-
supplyCap: 5_000_000,
155-
borrowCap: 4_000_000,
219+
supplyCap: 35_000_000,
220+
borrowCap: 31_500_000,
156221
debtCeiling: 0,
157222
liqProtocolFee: 0
158223
}),
@@ -177,11 +242,11 @@ contract HorizonPhaseOneListing is AaveV3Payload {
177242
borrowableInIsolation: EngineFlags.DISABLED,
178243
withSiloedBorrowing: EngineFlags.DISABLED,
179244
flashloanable: EngineFlags.DISABLED,
180-
ltv: 75_00,
181-
liqThreshold: 80_00,
182-
liqBonus: 12_00,
245+
ltv: 10,
246+
liqThreshold: 50,
247+
liqBonus: 3_00,
183248
reserveFactor: EngineFlags.KEEP_CURRENT,
184-
supplyCap: 3_000_000,
249+
supplyCap: 46_090_000,
185250
borrowCap: 0,
186251
debtCeiling: 0,
187252
liqProtocolFee: 0
@@ -207,11 +272,11 @@ contract HorizonPhaseOneListing is AaveV3Payload {
207272
borrowableInIsolation: EngineFlags.DISABLED,
208273
withSiloedBorrowing: EngineFlags.DISABLED,
209274
flashloanable: EngineFlags.DISABLED,
210-
ltv: 75_00,
211-
liqThreshold: 80_00,
212-
liqBonus: 12_00,
275+
ltv: 10,
276+
liqThreshold: 50,
277+
liqBonus: 7_50,
213278
reserveFactor: EngineFlags.KEEP_CURRENT,
214-
supplyCap: 3_000_000,
279+
supplyCap: 15_400_000,
215280
borrowCap: 0,
216281
debtCeiling: 0,
217282
liqProtocolFee: 0
@@ -237,11 +302,11 @@ contract HorizonPhaseOneListing is AaveV3Payload {
237302
borrowableInIsolation: EngineFlags.DISABLED,
238303
withSiloedBorrowing: EngineFlags.DISABLED,
239304
flashloanable: EngineFlags.DISABLED,
240-
ltv: 75_00,
241-
liqThreshold: 80_00,
242-
liqBonus: 12_00,
305+
ltv: 10,
306+
liqThreshold: 50,
307+
liqBonus: 3_10,
243308
reserveFactor: EngineFlags.KEEP_CURRENT,
244-
supplyCap: 3_000_000,
309+
supplyCap: 28_050_000,
245310
borrowCap: 0,
246311
debtCeiling: 0,
247312
liqProtocolFee: 0
@@ -255,6 +320,118 @@ contract HorizonPhaseOneListing is AaveV3Payload {
255320
return listingsCustom;
256321
}
257322

323+
function assetsEModeUpdates() public view override returns (IEngine.AssetEModeUpdate[] memory) {
324+
IEngine.AssetEModeUpdate[] memory assetsEMode = new IEngine.AssetEModeUpdate[](15);
325+
326+
uint256 index = 0;
327+
328+
// USTB Stablecoins
329+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
330+
asset: USTB_ADDRESS,
331+
eModeCategory: 1,
332+
collateral: EngineFlags.ENABLED,
333+
borrowable: EngineFlags.DISABLED
334+
});
335+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
336+
asset: USDC_ADDRESS,
337+
eModeCategory: 1,
338+
collateral: EngineFlags.DISABLED,
339+
borrowable: EngineFlags.ENABLED
340+
});
341+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
342+
asset: RLUSD_ADDRESS,
343+
eModeCategory: 1,
344+
collateral: EngineFlags.DISABLED,
345+
borrowable: EngineFlags.ENABLED
346+
});
347+
348+
// USTB GHO
349+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
350+
asset: USTB_ADDRESS,
351+
eModeCategory: 2,
352+
collateral: EngineFlags.ENABLED,
353+
borrowable: EngineFlags.DISABLED
354+
});
355+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
356+
asset: GHO_ADDRESS,
357+
eModeCategory: 2,
358+
collateral: EngineFlags.DISABLED,
359+
borrowable: EngineFlags.ENABLED
360+
});
361+
362+
// USCC Stablecoins
363+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
364+
asset: USCC_ADDRESS,
365+
eModeCategory: 3,
366+
collateral: EngineFlags.ENABLED,
367+
borrowable: EngineFlags.DISABLED
368+
});
369+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
370+
asset: USDC_ADDRESS,
371+
eModeCategory: 3,
372+
collateral: EngineFlags.DISABLED,
373+
borrowable: EngineFlags.ENABLED
374+
});
375+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
376+
asset: RLUSD_ADDRESS,
377+
eModeCategory: 3,
378+
collateral: EngineFlags.DISABLED,
379+
borrowable: EngineFlags.ENABLED
380+
});
381+
382+
// USCC GHO
383+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
384+
asset: USCC_ADDRESS,
385+
eModeCategory: 4,
386+
collateral: EngineFlags.ENABLED,
387+
borrowable: EngineFlags.DISABLED
388+
});
389+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
390+
asset: GHO_ADDRESS,
391+
eModeCategory: 4,
392+
collateral: EngineFlags.DISABLED,
393+
borrowable: EngineFlags.ENABLED
394+
});
395+
396+
// USYC Stablecoins
397+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
398+
asset: USYC_ADDRESS,
399+
eModeCategory: 5,
400+
collateral: EngineFlags.ENABLED,
401+
borrowable: EngineFlags.DISABLED
402+
});
403+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
404+
asset: USDC_ADDRESS,
405+
eModeCategory: 5,
406+
collateral: EngineFlags.DISABLED,
407+
borrowable: EngineFlags.ENABLED
408+
});
409+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
410+
asset: RLUSD_ADDRESS,
411+
eModeCategory: 5,
412+
collateral: EngineFlags.DISABLED,
413+
borrowable: EngineFlags.ENABLED
414+
});
415+
416+
// USYC GHO
417+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
418+
asset: USYC_ADDRESS,
419+
eModeCategory: 6,
420+
collateral: EngineFlags.ENABLED,
421+
borrowable: EngineFlags.DISABLED
422+
});
423+
assetsEMode[index++] = IEngine.AssetEModeUpdate({
424+
asset: GHO_ADDRESS,
425+
eModeCategory: 6,
426+
collateral: EngineFlags.DISABLED,
427+
borrowable: EngineFlags.ENABLED
428+
});
429+
430+
assert(index == assetsEMode.length);
431+
432+
return assetsEMode;
433+
}
434+
258435
function getPoolContext() public pure override returns (IEngine.PoolContext memory) {
259436
return IEngine.PoolContext({networkName: 'Horizon RWA', networkAbbreviation: 'HorRwa'});
260437
}

0 commit comments

Comments
 (0)