generated from bgd-labs/bgd-forge-template
-
Notifications
You must be signed in to change notification settings - Fork 17
/
AaveV3Ethereum_StablecoinIRUpdates_20240424.sol
125 lines (123 loc) · 5.72 KB
/
AaveV3Ethereum_StablecoinIRUpdates_20240424.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol';
import {AaveV3PayloadEthereum} from 'aave-helpers/v3-config-engine/AaveV3PayloadEthereum.sol';
import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol';
import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol';
import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol';
/**
* @title StablecoinIRUpdates
* @author Chaos Labs, ACI
* - Snapshot: Direct-to-AIP
* - Discussion: https://governance.aave.com/t/arfc-stablecoin-ir-curve-amendment-on-aave-v2-and-v3-04-22-2024/17450
*/
contract AaveV3Ethereum_StablecoinIRUpdates_20240424 is AaveV3PayloadEthereum {
function rateStrategiesUpdates()
public
pure
override
returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory)
{
IAaveV3ConfigEngine.RateStrategyUpdate[]
memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](7);
rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.USDC_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.DAI_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.USDT_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.LUSD_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.FRAX_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.crvUSD_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({
asset: AaveV3EthereumAssets.PYUSD_UNDERLYING,
params: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: EngineFlags.KEEP_CURRENT,
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT,
variableRateSlope1: _bpsToRay(9_00),
variableRateSlope2: EngineFlags.KEEP_CURRENT,
stableRateSlope1: EngineFlags.KEEP_CURRENT,
stableRateSlope2: EngineFlags.KEEP_CURRENT,
baseStableRateOffset: EngineFlags.KEEP_CURRENT,
stableRateExcessOffset: EngineFlags.KEEP_CURRENT,
optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT
})
});
return rateStrategies;
}
}