From 44e2523b33139650252e2dd24146faa7e1183a91 Mon Sep 17 00:00:00 2001 From: Jeremy Batchelder Date: Mon, 5 Feb 2024 12:55:39 -0800 Subject: [PATCH 1/9] Gauntlet V2 AMM IR Deprecation --- ...cateAaveV2AMMMarketStep2_20240205_after.md | 77 +++++++++++++ .../ARFCDeprecateAaveV2AMMMarketStep2.md | 23 ++++ ...precateAaveV2AMMMarketStep2_20240205.s.sol | 58 ++++++++++ ...DeprecateAaveV2AMMMarketStep2_20240205.sol | 106 ++++++++++++++++++ ...precateAaveV2AMMMarketStep2_20240205.t.sol | 32 ++++++ .../config.ts | 78 +++++++++++++ 6 files changed, 374 insertions(+) create mode 100644 diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md create mode 100644 src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md create mode 100644 src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol create mode 100644 src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol create mode 100644 src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol create mode 100644 src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/config.ts diff --git a/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md b/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md new file mode 100644 index 000000000..5988df978 --- /dev/null +++ b/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md @@ -0,0 +1,77 @@ +## Reserve changes + +### Reserve altered + +#### WBTC ([0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599](https://etherscan.io/address/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 20 % | 99 % | + + +#### DAI ([0x6B175474E89094C44Da98b954EedeAC495271d0F](https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 10 % | 99 % | + + +#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 10 % | 99 % | + + +#### WETH ([0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 10 % | 99 % | + + +#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 10 % | 99 % | + + +## Raw diff + +```json +{ + "reserves": { + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599": { + "reserveFactor": { + "from": 2000, + "to": 9900 + } + }, + "0x6B175474E89094C44Da98b954EedeAC495271d0F": { + "reserveFactor": { + "from": 1000, + "to": 9900 + } + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "reserveFactor": { + "from": 1000, + "to": 9900 + } + }, + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2": { + "reserveFactor": { + "from": 1000, + "to": 9900 + } + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "reserveFactor": { + "from": 1000, + "to": 9900 + } + } + } +} +``` \ No newline at end of file diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md new file mode 100644 index 000000000..e98050bf0 --- /dev/null +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md @@ -0,0 +1,23 @@ +--- +title: "[ARFC] Deprecate Aave V2 AMM Market - Step 2" +author: "Gauntlet" +discussions: "https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/1" +snapshot: "https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538a71a4682ae1b708864e8d33497d8de40ad9973" +--- + +## Simple Summary + +## Motivation + +## Specification + +## References + +- Implementation: [AaveV2EthereumAMM](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol) +- Tests: [AaveV2EthereumAMM](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538a71a4682ae1b708864e8d33497d8de40ad9973) +- [Discussion](https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/1) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol new file mode 100644 index 000000000..1dcc4e5f0 --- /dev/null +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol'; +import {EthereumScript} from 'aave-helpers/ScriptUtils.sol'; +import {AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205} from './AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol:DeployEthereum chain=mainnet + * verify-command: npx catapulta-verify -b broadcast/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205).creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Create Proposal + * command: make deploy-ledger contract=src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2_20240205.s.sol:CreateProposal chain=mainnet + */ +contract CreateProposal is EthereumScript { + function run() external { + // create payloads + PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](1); + + // compose actions for validation + IPayloadsControllerCore.ExecutionAction[] + memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](1); + actionsEthereum[0] = GovV3Helpers.buildAction( + type(AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md' + ) + ); + } +} diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol new file mode 100644 index 000000000..fe35a2f5e --- /dev/null +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2EthereumAMM, AaveV2EthereumAMMAssets, ILendingPoolConfigurator} from 'aave-address-book/AaveV2EthereumAMM.sol'; +import {AaveV2PayloadEthereum} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereum.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol'; +import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrategyFactory.sol'; + +/** + * @title [ARFC] Deprecate Aave V2 AMM Market - Step 2 + * @author Gauntlet + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538a71a4682ae1b708864e8d33497d8de40ad9973 + * - Discussion: https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/1 + */ +contract AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 is AaveV2PayloadEthereum { + function _postExecute() internal override { + AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + AaveV2EthereumAMMAssets.WETH_UNDERLYING, + 99_00 + ); + AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + AaveV2EthereumAMMAssets.DAI_UNDERLYING, + 99_00 + ); + AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + AaveV2EthereumAMMAssets.USDC_UNDERLYING, + 99_00 + ); + AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + AaveV2EthereumAMMAssets.WBTC_UNDERLYING, + 99_00 + ); + AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + AaveV2EthereumAMMAssets.USDT_UNDERLYING, + 99_00 + ); + } + + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV2ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV2ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV2ConfigEngine.RateStrategyUpdate[](5); + rateStrategies[0] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAMMAssets.WETH_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: _bpsToRay(6_00), + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAMMAssets.DAI_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: _bpsToRay(4_00), + variableRateSlope1: _bpsToRay(10_00), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[2] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAMMAssets.USDC_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: _bpsToRay(4_00), + variableRateSlope1: _bpsToRay(10_00), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[3] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAMMAssets.USDT_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: _bpsToRay(6_00), + variableRateSlope1: _bpsToRay(10_00), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[4] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAMMAssets.WBTC_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: _bpsToRay(5_00), + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol new file mode 100644 index 000000000..80926fbc7 --- /dev/null +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2EthereumAMM} from 'aave-address-book/AaveV2EthereumAMM.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol'; +import {AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205} from './AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol'; + +/** + * @dev Test for AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 + * command: make test-contract filter=AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 + */ +contract AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_Test is ProtocolV2TestBase { + AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 19164401); + proposal = new AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205', + AaveV2EthereumAMM.POOL, + address(proposal) + ); + } +} diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/config.ts b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/config.ts new file mode 100644 index 000000000..f357a1444 --- /dev/null +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/config.ts @@ -0,0 +1,78 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV2EthereumAMM'], + title: '[ARFC] Deprecate Aave V2 AMM Market - Step 2', + shortName: 'ARFCDeprecateAaveV2AMMMarketStep2', + date: '20240205', + author: 'Gauntlet', + discussion: 'https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/1', + snapshot: + 'https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538a71a4682ae1b708864e8d33497d8de40ad9973', + }, + poolOptions: { + AaveV2EthereumAMM: { + configs: { + RATE_UPDATE_V2: [ + { + asset: 'WETH', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '6', + variableRateSlope1: '', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + { + asset: 'DAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '4', + variableRateSlope1: '10', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '4', + variableRateSlope1: '10', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '6', + variableRateSlope1: '10', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + { + asset: 'WBTC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '5', + variableRateSlope1: '', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + ], + OTHERS: {}, + }, + cache: {blockNumber: 19164401}, + }, + }, +}; From 9bd3a3b665b891b41ce75919cd6e6076fac1876d Mon Sep 17 00:00:00 2001 From: Jeremy Batchelder Date: Mon, 5 Feb 2024 12:58:54 -0800 Subject: [PATCH 2/9] Remove unneeded import --- ...V2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol index fe35a2f5e..ca0dc96ae 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import {AaveV2EthereumAMM, AaveV2EthereumAMMAssets, ILendingPoolConfigurator} from 'aave-address-book/AaveV2EthereumAMM.sol'; +import {AaveV2EthereumAMM, AaveV2EthereumAMMAssets} from 'aave-address-book/AaveV2EthereumAMM.sol'; import {AaveV2PayloadEthereum} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereum.sol'; import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol'; From c1efb60f8d3d4956d263b3c39ecb5289ce6ccf35 Mon Sep 17 00:00:00 2001 From: Jeremy Batchelder Date: Mon, 5 Feb 2024 13:07:21 -0800 Subject: [PATCH 3/9] md change --- .../ARFCDeprecateAaveV2AMMMarketStep2.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md index e98050bf0..27f914e5a 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md @@ -7,10 +7,33 @@ snapshot: "https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538 ## Simple Summary +Since the community approved to deprecate the v2 AMM market within the Deprecate Aave v2 AMM Market forum [post](https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market/12830). Gauntlet is providing further parameter recommendations to motivate the remaining v2 AMM users to migrate to v3 markets. + ## Motivation +Gauntlet aims to reduce the remaining $94k borrow position and migrate users off the AMM market. Further analysis and information can be found in our forum [post](https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408). + ## Specification +Gauntlet recommends to increase reserve factor to 99% for the following assets: + +| Asset | Current RF | Recommended RF | +| ----- | ---------- | -------------- | +| WETH | 0.1 | 0.99 | +| DAI | 0.1 | 0.99 | +| USDC | 0.1 | 0.99 | +| WBTC | 0.2 | 0.99 | +| USDT | 0.1 | 0.99 | + +Gauntlet recommends to adjust the IR params for the following assets: +| Asset | Current Variable Base | Recommended Variable Base | Current Variable Slope1 | Recommended Variable Slope1 | +| ----- | --------------------- | ------------------------- | ----------------------- | --------------------------- | +| WETH | 0 | 0.06 | 0.08 | No Change | +| DAI | 0 | 0.04 | 0.04 | 0.1 | +| USDC | 0 | 0.04 | 0.04 | 0.1 | +| WBTC | 0 | 0.05 | 0.08 | No Change | +| USDT | 0 | 0.06 | 0.04 | 0.1 | + ## References - Implementation: [AaveV2EthereumAMM](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol) @@ -18,6 +41,12 @@ snapshot: "https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538 - [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538a71a4682ae1b708864e8d33497d8de40ad9973) - [Discussion](https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/1) +## Disclaimer + +Gauntlet has not been compensated by any third party for publishing this ARFC. + ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). + +_By approving this proposal, you agree that any services provided by Gauntlet shall be governed by the terms of service available at gauntlet.network/tos._ From ecc09363bec5398b4055cea2b5050c31ad7e7993 Mon Sep 17 00:00:00 2001 From: Jeremy Batchelder Date: Mon, 5 Feb 2024 13:29:07 -0800 Subject: [PATCH 4/9] Update .md --- .../ARFCDeprecateAaveV2AMMMarketStep2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md index 27f914e5a..de6a8821b 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/ARFCDeprecateAaveV2AMMMarketStep2.md @@ -7,7 +7,7 @@ snapshot: "https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538 ## Simple Summary -Since the community approved to deprecate the v2 AMM market within the Deprecate Aave v2 AMM Market forum [post](https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market/12830). Gauntlet is providing further parameter recommendations to motivate the remaining v2 AMM users to migrate to v3 markets. +A proposal for further deprecation recommendations on Aave AMM v2. For more details, see the full forum post [here](https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/2). ## Motivation From 04acba24018aaf02c19a9d9befe2df9f78f0b64f Mon Sep 17 00:00:00 2001 From: Jeremy Batchelder Date: Mon, 5 Feb 2024 13:47:20 -0800 Subject: [PATCH 5/9] Add back config --- ...MM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol index ca0dc96ae..2f828474e 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import {AaveV2EthereumAMM, AaveV2EthereumAMMAssets} from 'aave-address-book/AaveV2EthereumAMM.sol'; +import {AaveV2EthereumAMM, AaveV2EthereumAMMAssets, ILendingPoolConfigurator} from 'aave-address-book/AaveV2EthereumAMM.sol'; import {AaveV2PayloadEthereum} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereum.sol'; import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol'; @@ -15,23 +15,23 @@ import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrat */ contract AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 is AaveV2PayloadEthereum { function _postExecute() internal override { - AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + ILendingPoolConfigurator(AaveV2EthereumAMM.POOL_CONFIGURATOR).setReserveFactor( AaveV2EthereumAMMAssets.WETH_UNDERLYING, 99_00 ); - AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + ILendingPoolConfigurator(AaveV2EthereumAMM.POOL_CONFIGURATOR).setReserveFactor( AaveV2EthereumAMMAssets.DAI_UNDERLYING, 99_00 ); - AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + ILendingPoolConfigurator(AaveV2EthereumAMM.POOL_CONFIGURATOR).setReserveFactor( AaveV2EthereumAMMAssets.USDC_UNDERLYING, 99_00 ); - AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + ILendingPoolConfigurator(AaveV2EthereumAMM.POOL_CONFIGURATOR).setReserveFactor( AaveV2EthereumAMMAssets.WBTC_UNDERLYING, 99_00 ); - AaveV2EthereumAMM.POOL_CONFIGURATOR.setReserveFactor( + ILendingPoolConfigurator(AaveV2EthereumAMM.POOL_CONFIGURATOR).setReserveFactor( AaveV2EthereumAMMAssets.USDT_UNDERLYING, 99_00 ); From 1067fca15670a51cb5532abb69aa4a390c3af8f2 Mon Sep 17 00:00:00 2001 From: jbatch01 Date: Tue, 6 Feb 2024 14:14:08 -0600 Subject: [PATCH 6/9] Update src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol Co-authored-by: Lukas --- ...thereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol index 80926fbc7..7c59615ac 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.t.sol @@ -26,7 +26,8 @@ contract AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_Test is Pr defaultTest( 'AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205', AaveV2EthereumAMM.POOL, - address(proposal) + address(proposal), + false ); } } From c389b031f06619eb8919c1a6f51755aa5adfb6dc Mon Sep 17 00:00:00 2001 From: jbatch01 Date: Wed, 7 Feb 2024 11:02:23 -0600 Subject: [PATCH 7/9] Update src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol Co-authored-by: Lukas --- ...V2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol index 2f828474e..b82a6261c 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol @@ -13,7 +13,7 @@ import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrat * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x0ade316f52d5f763160ea15538a71a4682ae1b708864e8d33497d8de40ad9973 * - Discussion: https://governance.aave.com/t/arfc-deprecate-aave-v2-amm-market-step-2/16408/1 */ -contract AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 is AaveV2PayloadEthereum { +contract AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205 is AaveV2PayloadEthereumAMM { function _postExecute() internal override { ILendingPoolConfigurator(AaveV2EthereumAMM.POOL_CONFIGURATOR).setReserveFactor( AaveV2EthereumAMMAssets.WETH_UNDERLYING, From 0dd1babcd90053c9eb9e3c956773e2cb23e9ff74 Mon Sep 17 00:00:00 2001 From: jbatch01 Date: Wed, 7 Feb 2024 11:02:28 -0600 Subject: [PATCH 8/9] Update src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol Co-authored-by: Lukas --- ...V2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol index b82a6261c..5b2f645b1 100644 --- a/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol +++ b/src/20240205_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {AaveV2EthereumAMM, AaveV2EthereumAMMAssets, ILendingPoolConfigurator} from 'aave-address-book/AaveV2EthereumAMM.sol'; -import {AaveV2PayloadEthereum} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereum.sol'; +import {AaveV2PayloadEthereumAMM} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereumAMM.sol'; import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; import {IAaveV2ConfigEngine} from 'aave-helpers/v2-config-engine/IAaveV2ConfigEngine.sol'; import {IV2RateStrategyFactory} from 'aave-helpers/v2-config-engine/IV2RateStrategyFactory.sol'; From ed0c8f53cf3ac7eaf176e30be2dd9c16747ebe76 Mon Sep 17 00:00:00 2001 From: Jeremy Batchelder Date: Wed, 7 Feb 2024 09:08:27 -0800 Subject: [PATCH 9/9] Update before/after file --- ...6903063d3cc6003230aea391bcdd7080ae884e.svg | 1 + ...40eb9e5a19ec740fbcf7618e1a89e287803ba7.svg | 1 + ...e6e45c0df35c14497c2de70f69481e8b9f59b2.svg | 1 + ...92e8398b27ac9c7c1d23461804e0a36d9ba830.svg | 1 + ...cateAaveV2AMMMarketStep2_20240205_after.md | 93 ++++++++++++++++++- 5 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 .assets/856903063d3cc6003230aea391bcdd7080ae884e.svg create mode 100644 .assets/ae40eb9e5a19ec740fbcf7618e1a89e287803ba7.svg create mode 100644 .assets/b2e6e45c0df35c14497c2de70f69481e8b9f59b2.svg create mode 100644 .assets/ed92e8398b27ac9c7c1d23461804e0a36d9ba830.svg diff --git a/.assets/856903063d3cc6003230aea391bcdd7080ae884e.svg b/.assets/856903063d3cc6003230aea391bcdd7080ae884e.svg new file mode 100644 index 000000000..94da4e155 --- /dev/null +++ b/.assets/856903063d3cc6003230aea391bcdd7080ae884e.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/ae40eb9e5a19ec740fbcf7618e1a89e287803ba7.svg b/.assets/ae40eb9e5a19ec740fbcf7618e1a89e287803ba7.svg new file mode 100644 index 000000000..3a87f2415 --- /dev/null +++ b/.assets/ae40eb9e5a19ec740fbcf7618e1a89e287803ba7.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 65%Optimal 65% \ No newline at end of file diff --git a/.assets/b2e6e45c0df35c14497c2de70f69481e8b9f59b2.svg b/.assets/b2e6e45c0df35c14497c2de70f69481e8b9f59b2.svg new file mode 100644 index 000000000..a5ba96e1e --- /dev/null +++ b/.assets/b2e6e45c0df35c14497c2de70f69481e8b9f59b2.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 80%Optimal 80% \ No newline at end of file diff --git a/.assets/ed92e8398b27ac9c7c1d23461804e0a36d9ba830.svg b/.assets/ed92e8398b27ac9c7c1d23461804e0a36d9ba830.svg new file mode 100644 index 000000000..2651be313 --- /dev/null +++ b/.assets/ed92e8398b27ac9c7c1d23461804e0a36d9ba830.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%50%100%Optimal 65%Optimal 65% \ No newline at end of file diff --git a/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md b/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md index 5988df978..42423a636 100644 --- a/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md +++ b/diffs/AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_before_AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205_after.md @@ -7,35 +7,48 @@ | description | value before | value after | | --- | --- | --- | | reserveFactor | 20 % | 99 % | - +| interestRateStrategy | [0x8d02bac65cd84343eF8239d277794bad455cE889](https://etherscan.io/address/0x8d02bac65cd84343eF8239d277794bad455cE889) | [0xd102F58BF7B2509A2d8664be7C4A90102526B5c6](https://etherscan.io/address/0xd102F58BF7B2509A2d8664be7C4A90102526B5c6) | +| baseVariableBorrowRate | 0 % | 5 % | +| interestRate | ![before](/.assets/9ec14174f670884ad26c4e60158597a3ea46106e.svg) | ![after](/.assets/ae40eb9e5a19ec740fbcf7618e1a89e287803ba7.svg) | #### DAI ([0x6B175474E89094C44Da98b954EedeAC495271d0F](https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F)) | description | value before | value after | | --- | --- | --- | | reserveFactor | 10 % | 99 % | - +| interestRateStrategy | [0x79F40CDF9f491f148E522D7845c3fBF61E56c33F](https://etherscan.io/address/0x79F40CDF9f491f148E522D7845c3fBF61E56c33F) | [0xA57cDBfE9FA29Ad842f53100d68789999c04AA36](https://etherscan.io/address/0xA57cDBfE9FA29Ad842f53100d68789999c04AA36) | +| baseVariableBorrowRate | 0 % | 4 % | +| variableRateSlope1 | 4 % | 10 % | +| interestRate | ![before](/.assets/fb6c6adb04bffc12e5b75a6e30c81de7f9ea04a1.svg) | ![after](/.assets/856903063d3cc6003230aea391bcdd7080ae884e.svg) | #### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) | description | value before | value after | | --- | --- | --- | | reserveFactor | 10 % | 99 % | - +| interestRateStrategy | [0x79F40CDF9f491f148E522D7845c3fBF61E56c33F](https://etherscan.io/address/0x79F40CDF9f491f148E522D7845c3fBF61E56c33F) | [0xA57cDBfE9FA29Ad842f53100d68789999c04AA36](https://etherscan.io/address/0xA57cDBfE9FA29Ad842f53100d68789999c04AA36) | +| baseVariableBorrowRate | 0 % | 4 % | +| variableRateSlope1 | 4 % | 10 % | +| interestRate | ![before](/.assets/fb6c6adb04bffc12e5b75a6e30c81de7f9ea04a1.svg) | ![after](/.assets/856903063d3cc6003230aea391bcdd7080ae884e.svg) | #### WETH ([0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)) | description | value before | value after | | --- | --- | --- | | reserveFactor | 10 % | 99 % | - +| interestRateStrategy | [0x8d02bac65cd84343eF8239d277794bad455cE889](https://etherscan.io/address/0x8d02bac65cd84343eF8239d277794bad455cE889) | [0xdb838A27f91b112D722c854636F2c23720ea007E](https://etherscan.io/address/0xdb838A27f91b112D722c854636F2c23720ea007E) | +| baseVariableBorrowRate | 0 % | 6 % | +| interestRate | ![before](/.assets/9ec14174f670884ad26c4e60158597a3ea46106e.svg) | ![after](/.assets/ed92e8398b27ac9c7c1d23461804e0a36d9ba830.svg) | #### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7)) | description | value before | value after | | --- | --- | --- | | reserveFactor | 10 % | 99 % | - +| interestRateStrategy | [0x79F40CDF9f491f148E522D7845c3fBF61E56c33F](https://etherscan.io/address/0x79F40CDF9f491f148E522D7845c3fBF61E56c33F) | [0x2223cd25f60F3e4035fcEfE44612773AFEbFd8ab](https://etherscan.io/address/0x2223cd25f60F3e4035fcEfE44612773AFEbFd8ab) | +| baseVariableBorrowRate | 0 % | 6 % | +| variableRateSlope1 | 4 % | 10 % | +| interestRate | ![before](/.assets/fb6c6adb04bffc12e5b75a6e30c81de7f9ea04a1.svg) | ![after](/.assets/b2e6e45c0df35c14497c2de70f69481e8b9f59b2.svg) | ## Raw diff @@ -43,35 +56,105 @@ { "reserves": { "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599": { + "interestRateStrategy": { + "from": "0x8d02bac65cd84343eF8239d277794bad455cE889", + "to": "0xd102F58BF7B2509A2d8664be7C4A90102526B5c6" + }, "reserveFactor": { "from": 2000, "to": 9900 } }, "0x6B175474E89094C44Da98b954EedeAC495271d0F": { + "interestRateStrategy": { + "from": "0x79F40CDF9f491f148E522D7845c3fBF61E56c33F", + "to": "0xA57cDBfE9FA29Ad842f53100d68789999c04AA36" + }, "reserveFactor": { "from": 1000, "to": 9900 } }, "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "interestRateStrategy": { + "from": "0x79F40CDF9f491f148E522D7845c3fBF61E56c33F", + "to": "0xA57cDBfE9FA29Ad842f53100d68789999c04AA36" + }, "reserveFactor": { "from": 1000, "to": 9900 } }, "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2": { + "interestRateStrategy": { + "from": "0x8d02bac65cd84343eF8239d277794bad455cE889", + "to": "0xdb838A27f91b112D722c854636F2c23720ea007E" + }, "reserveFactor": { "from": 1000, "to": 9900 } }, "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "interestRateStrategy": { + "from": "0x79F40CDF9f491f148E522D7845c3fBF61E56c33F", + "to": "0x2223cd25f60F3e4035fcEfE44612773AFEbFd8ab" + }, "reserveFactor": { "from": 1000, "to": 9900 } } + }, + "strategies": { + "0x2223cd25f60F3e4035fcEfE44612773AFEbFd8ab": { + "from": null, + "to": { + "baseVariableBorrowRate": "60000000000000000000000000", + "maxExcessUsageRatio": "200000000000000000000000000", + "optimalUsageRatio": "800000000000000000000000000", + "stableRateSlope1": "20000000000000000000000000", + "stableRateSlope2": "600000000000000000000000000", + "variableRateSlope1": "100000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + }, + "0xA57cDBfE9FA29Ad842f53100d68789999c04AA36": { + "from": null, + "to": { + "baseVariableBorrowRate": "40000000000000000000000000", + "maxExcessUsageRatio": "200000000000000000000000000", + "optimalUsageRatio": "800000000000000000000000000", + "stableRateSlope1": "20000000000000000000000000", + "stableRateSlope2": "600000000000000000000000000", + "variableRateSlope1": "100000000000000000000000000", + "variableRateSlope2": "750000000000000000000000000" + } + }, + "0xd102F58BF7B2509A2d8664be7C4A90102526B5c6": { + "from": null, + "to": { + "baseVariableBorrowRate": "50000000000000000000000000", + "maxExcessUsageRatio": "350000000000000000000000000", + "optimalUsageRatio": "650000000000000000000000000", + "stableRateSlope1": "100000000000000000000000000", + "stableRateSlope2": "1000000000000000000000000000", + "variableRateSlope1": "80000000000000000000000000", + "variableRateSlope2": "1000000000000000000000000000" + } + }, + "0xdb838A27f91b112D722c854636F2c23720ea007E": { + "from": null, + "to": { + "baseVariableBorrowRate": "60000000000000000000000000", + "maxExcessUsageRatio": "350000000000000000000000000", + "optimalUsageRatio": "650000000000000000000000000", + "stableRateSlope1": "100000000000000000000000000", + "stableRateSlope2": "1000000000000000000000000000", + "variableRateSlope1": "80000000000000000000000000", + "variableRateSlope2": "1000000000000000000000000000" + } + } } } ``` \ No newline at end of file