diff --git a/diffs/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_before_AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_after.md b/diffs/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_before_AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_after.md new file mode 100644 index 000000000..112634bf0 --- /dev/null +++ b/diffs/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_before_AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_after.md @@ -0,0 +1,207 @@ +## Reserve changes + +### Reserve altered + +#### MANA ([0x0F5D2fB29fb7d3CFeE444a200298f468908cC942](https://etherscan.io/address/0x0F5D2fB29fb7d3CFeE444a200298f468908cC942)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 48 % | 37 % | + + +#### YFI ([0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e](https://etherscan.io/address/0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 45 % | 43 % | + + +#### 1INCH ([0x111111111117dC0aa78b770fA6A738034120C302](https://etherscan.io/address/0x111111111117dC0aa78b770fA6A738034120C302)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 24 % | 1 % | + + +#### DPI ([0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b](https://etherscan.io/address/0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 16 % | 14 % | + + +#### UNI ([0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984](https://etherscan.io/address/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 70 % | 64 % | + + +#### REN ([0x408e41876cCCDC0F92210600ef50372656052a38](https://etherscan.io/address/0x408e41876cCCDC0F92210600ef50372656052a38)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 27 % | 25 % | + + +#### CVX ([0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B](https://etherscan.io/address/0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 33 % | 30 % | + + +#### LINK ([0x514910771AF9Ca656af840dff83E8264EcF986CA](https://etherscan.io/address/0x514910771AF9Ca656af840dff83E8264EcF986CA)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 82 % | 81 % | + + +#### xSUSHI ([0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272](https://etherscan.io/address/0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 28 % | 1 % | + + +#### MKR ([0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2](https://etherscan.io/address/0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 35 % | 30 % | + + +#### SNX ([0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F](https://etherscan.io/address/0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 43 % | 41 % | + + +#### ENS ([0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72](https://etherscan.io/address/0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 50 % | 47 % | + + +#### CRV ([0xD533a949740bb3306d119CC777fa900bA034cd52](https://etherscan.io/address/0xD533a949740bb3306d119CC777fa900bA034cd52)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 42 % | 38 % | + + +#### ZRX ([0xE41d2489571d322189246DaFA5ebDe1F4699F498](https://etherscan.io/address/0xE41d2489571d322189246DaFA5ebDe1F4699F498)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 37 % | 34 % | + + +#### BAL ([0xba100000625a3754423978a60c9317c58a424e3D](https://etherscan.io/address/0xba100000625a3754423978a60c9317c58a424e3D)) + +| description | value before | value after | +| --- | --- | --- | +| liquidationThreshold | 25 % | 21 % | + + +## Raw diff + +```json +{ + "reserves": { + "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942": { + "liquidationThreshold": { + "from": 4800, + "to": 3700 + } + }, + "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e": { + "liquidationThreshold": { + "from": 4500, + "to": 4300 + } + }, + "0x111111111117dC0aa78b770fA6A738034120C302": { + "liquidationThreshold": { + "from": 2400, + "to": 100 + } + }, + "0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b": { + "liquidationThreshold": { + "from": 1600, + "to": 1400 + } + }, + "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984": { + "liquidationThreshold": { + "from": 7000, + "to": 6400 + } + }, + "0x408e41876cCCDC0F92210600ef50372656052a38": { + "liquidationThreshold": { + "from": 2700, + "to": 2500 + } + }, + "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B": { + "liquidationThreshold": { + "from": 3300, + "to": 3000 + } + }, + "0x514910771AF9Ca656af840dff83E8264EcF986CA": { + "liquidationThreshold": { + "from": 8200, + "to": 8100 + } + }, + "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272": { + "liquidationThreshold": { + "from": 2800, + "to": 100 + } + }, + "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2": { + "liquidationThreshold": { + "from": 3500, + "to": 3000 + } + }, + "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F": { + "liquidationThreshold": { + "from": 4300, + "to": 4100 + } + }, + "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72": { + "liquidationThreshold": { + "from": 5000, + "to": 4700 + } + }, + "0xD533a949740bb3306d119CC777fa900bA034cd52": { + "liquidationThreshold": { + "from": 4200, + "to": 3800 + } + }, + "0xE41d2489571d322189246DaFA5ebDe1F4699F498": { + "liquidationThreshold": { + "from": 3700, + "to": 3400 + } + }, + "0xba100000625a3754423978a60c9317c58a424e3D": { + "liquidationThreshold": { + "from": 2500, + "to": 2100 + } + } + } +} +``` \ No newline at end of file diff --git a/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction.md b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction.md new file mode 100644 index 000000000..0b0bce930 --- /dev/null +++ b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction.md @@ -0,0 +1,80 @@ +--- +title: "Aave V2 Ethereum LT Reduction" +author: "Chaos Labs - @yonikesel" +discussions: "https://governance.aave.com/t/arfc-v2-ethereum-lt-reductions-10-27-2023/15249" +--- + +## Simple Summary + +A proposal to reduce Liquidation Threshold (LT) on Aave V2 Ethereum. + +## Motivation + +In accordance with the [v2 deprecation framework](https://governance.aave.com/t/arfc-aave-v2-markets-deprecation-plan/14870), Chaos Labs and Gauntlet advise implementing the subsequent parameter changes to the frozen assets on Aave v2 Ethereum + +## LT Reductions + +The recommendations below suggest an LT configuration that optimizes reductions without significantly increasing the number of accounts eligible for liquidation. The proposed values are set at a margin of at least ~4% from the closest LT figure, which would trigger more substantial liquidations. + +This will affect 20 accounts, leading to a cumulative liquidation of $1,101 in collateral value. + +| Asset | Current LT | Rec LT | Value Liquidated ($) | Accounts Liquidated | +| ------ | ---------- | ------ | -------------------- | ------------------- | +| 1INCH | 24% | 1% | 163 | 1 | +| BAL | 25% | 21% | 43 | 2 | +| BAT | 1% | 1% | 0 | 0 | +| CRV | 42% | 38% | 10 | 1 | +| CVX | 33% | 30% | 0 | 0 | +| DPI | 16% | 14% | 36 | 1 | +| ENJ | 50% | 50% | 0 | 0 | +| ENS | 50% | 47% | 2 | 1 | +| MANA | 48% | 37% | 28 | 1 | +| MKR | 35% | 30% | 149 | 1 | +| REN | 27% | 25% | 57 | 1 | +| SNX | 43% | 41% | 28 | 1 | +| UNI | 70% | 64% | 0 | 0 | +| xSUSHI | 28% | 1% | 270 | 9 | +| YFI | 45% | 43% | 0 | 0 | +| ZRX | 37% | 34% | 315 | 1 | +| LINK | 82% | 81% | 0 | 0 | + +_As Liquidation Threshold reductions may lead to user accounts being eligible for liquidations upon their approval, we want to clarify the full implications to the community at each step. Chaos Labs will publicly communicate the planned amendments and list of affected accounts leading to the on-chain execution._ + +## Specification + +Frozen Assets: + +| Asset | Current LT | Rec LT | +| ------ | ---------- | ------ | +| 1INCH | 24% | 1% | +| BAL | 25% | 21% | +| BAT | 1% | 1% | +| CRV | 42% | 38% | +| CVX | 33% | 30% | +| DPI | 16% | 14% | +| ENJ | 50% | 50% | +| ENS | 50% | 47% | +| MANA | 48% | 37% | +| MKR | 35% | 30% | +| REN | 27% | 25% | +| SNX | 43% | 41% | +| UNI | 70% | 64% | +| xSUSHI | 28% | 1% | +| YFI | 45% | 43% | +| ZRX | 37% | 34% | +| LINK | 82% | 81% | + +## References + +- Implementation: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.sol) +- Tests: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.t.sol) +- [Snapshot](Direct to AIP) +- [Discussion](https://governance.aave.com/t/arfc-v2-ethereum-lt-reductions-10-27-2023/15249) + +# Disclaimer + +Chaos Labs and Gauntlet have 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/). diff --git a/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction_20231030.s.sol b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction_20231030.s.sol new file mode 100644 index 000000000..e8651046b --- /dev/null +++ b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction_20231030.s.sol @@ -0,0 +1,52 @@ +// 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 {AaveV2Ethereum_AaveV2EthereumLTReduction_20231030} from './AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.sol'; + +/** + * @dev Deploy Ethereum + * command: make deploy-ledger contract=src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction_20231030.s.sol:DeployEthereum chain=mainnet + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + AaveV2Ethereum_AaveV2EthereumLTReduction_20231030 payload0 = new AaveV2Ethereum_AaveV2EthereumLTReduction_20231030(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(address(payload0)); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Create Proposal + * command: make deploy-ledger contract=src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction_20231030.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(0xc62cAb55a4376F916D107D7e09356E9799c090fa); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal2_5( + payloads, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2EthereumLTReduction.md' + ) + ); + } +} diff --git a/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.sol b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.sol new file mode 100644 index 000000000..71d6367ee --- /dev/null +++ b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.sol @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IEngine, EngineFlags, AaveV2PayloadEthereum} from 'aave-helpers/v2-config-engine/AaveV2PayloadEthereum.sol'; +import {AaveV2Ethereum, AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; + +/** + * @title Aave V2 Ethereum LT Reduction + * @author Chaos Labs + * - Snapshot: Direct to AIP + * - Discussion: https://governance.aave.com/t/arfc-v2-ethereum-lt-reductions-10-27-2023/15249 + */ +contract AaveV2Ethereum_AaveV2EthereumLTReduction_20231030 is AaveV2PayloadEthereum { + function _postExecute() internal override { + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.ONE_INCH_UNDERLYING, + 0, + 100, + 10850 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.BAL_UNDERLYING, + 0, + 2100, + 10800 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.CRV_UNDERLYING, + 0, + 3800, + 10800 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.CVX_UNDERLYING, + 0, + 3000, + 10850 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.DPI_UNDERLYING, + 0, + 1400, + 11000 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.ENS_UNDERLYING, + 0, + 4700, + 10800 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.MANA_UNDERLYING, + 0, + 3700, + 11000 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.MKR_UNDERLYING, + 0, + 3000, + 10750 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.REN_UNDERLYING, + 0, + 2500, + 11000 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.SNX_UNDERLYING, + 0, + 4100, + 10750 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.UNI_UNDERLYING, + 0, + 6400, + 10900 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.xSUSHI_UNDERLYING, + 0, + 100, + 11000 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.YFI_UNDERLYING, + 0, + 4300, + 11000 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.ZRX_UNDERLYING, + 0, + 3400, + 11000 + ); + + AaveV2Ethereum.POOL_CONFIGURATOR.configureReserveAsCollateral( + AaveV2EthereumAssets.LINK_UNDERLYING, + 0, + 8100, + 10700 + ); + } +} diff --git a/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.t.sol b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.t.sol new file mode 100644 index 000000000..35e25ab66 --- /dev/null +++ b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.t.sol @@ -0,0 +1,166 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2Ethereum, AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/ProtocolV2TestBase.sol'; +import {AaveV2Ethereum_AaveV2EthereumLTReduction_20231030} from './AaveV2Ethereum_AaveV2EthereumLTReduction_20231030.sol'; +import {GovV3Helpers} from 'aave-helpers/GovV3Helpers.sol'; +import {AaveGovernanceV2} from 'aave-address-book/AaveGovernanceV2.sol'; + +/** + * @dev Test for AaveV2Ethereum_AaveV2EthereumLTReduction_20231030 + * command: make test-contract filter=AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_Test + */ +contract AaveV2Ethereum_AaveV2EthereumLTReduction_20231030_Test is ProtocolV2TestBase { + AaveV2Ethereum_AaveV2EthereumLTReduction_20231030 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 18463852); + proposal = new AaveV2Ethereum_AaveV2EthereumLTReduction_20231030(); + } + + function testProposalExecution() public { + (ReserveConfig[] memory allConfigsBefore, ReserveConfig[] memory allConfigsAfter) = defaultTest( + 'AaveV2Ethereum_AaveV2EthereumLTReduction_20231030', + AaveV2Ethereum.POOL, + address(proposal) + ); + + address[] memory assetsChanged = new address[](15); + + assetsChanged[0] = AaveV2EthereumAssets.ONE_INCH_UNDERLYING; + assetsChanged[1] = AaveV2EthereumAssets.BAL_UNDERLYING; + assetsChanged[2] = AaveV2EthereumAssets.CRV_UNDERLYING; + assetsChanged[3] = AaveV2EthereumAssets.CVX_UNDERLYING; + assetsChanged[4] = AaveV2EthereumAssets.DPI_UNDERLYING; + assetsChanged[5] = AaveV2EthereumAssets.ENS_UNDERLYING; + assetsChanged[6] = AaveV2EthereumAssets.MANA_UNDERLYING; + assetsChanged[7] = AaveV2EthereumAssets.MKR_UNDERLYING; + assetsChanged[8] = AaveV2EthereumAssets.REN_UNDERLYING; + assetsChanged[9] = AaveV2EthereumAssets.SNX_UNDERLYING; + assetsChanged[10] = AaveV2EthereumAssets.UNI_UNDERLYING; + assetsChanged[11] = AaveV2EthereumAssets.xSUSHI_UNDERLYING; + assetsChanged[12] = AaveV2EthereumAssets.YFI_UNDERLYING; + assetsChanged[13] = AaveV2EthereumAssets.ZRX_UNDERLYING; + assetsChanged[14] = AaveV2EthereumAssets.LINK_UNDERLYING; + + _noReservesConfigsChangesApartFrom(allConfigsBefore, allConfigsAfter, assetsChanged); + + { + ReserveConfig memory ONE_INCH_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.ONE_INCH_UNDERLYING + ); + ONE_INCH_UNDERLYING_CONFIG.liquidationThreshold = 1_00; + _validateReserveConfig(ONE_INCH_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory BAL_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.BAL_UNDERLYING + ); + BAL_UNDERLYING_CONFIG.liquidationThreshold = 21_00; + _validateReserveConfig(BAL_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory CRV_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.CRV_UNDERLYING + ); + CRV_UNDERLYING_CONFIG.liquidationThreshold = 38_00; + _validateReserveConfig(CRV_UNDERLYING_CONFIG, allConfigsAfter); + } + + { + ReserveConfig memory CVX_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.CVX_UNDERLYING + ); + CVX_UNDERLYING_CONFIG.liquidationThreshold = 30_00; + _validateReserveConfig(CVX_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory DPI_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.DPI_UNDERLYING + ); + DPI_UNDERLYING_CONFIG.liquidationThreshold = 14_00; + _validateReserveConfig(DPI_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory ENS_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.ENS_UNDERLYING + ); + ENS_UNDERLYING_CONFIG.liquidationThreshold = 47_00; + _validateReserveConfig(ENS_UNDERLYING_CONFIG, allConfigsAfter); + } + + { + ReserveConfig memory MANA_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.MANA_UNDERLYING + ); + MANA_UNDERLYING_CONFIG.liquidationThreshold = 37_00; + _validateReserveConfig(MANA_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory MKR_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.MKR_UNDERLYING + ); + MKR_UNDERLYING_CONFIG.liquidationThreshold = 30_00; + _validateReserveConfig(MKR_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory REN_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.REN_UNDERLYING + ); + REN_UNDERLYING_CONFIG.liquidationThreshold = 25_00; + _validateReserveConfig(REN_UNDERLYING_CONFIG, allConfigsAfter); + } + + { + ReserveConfig memory SNX_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.SNX_UNDERLYING + ); + SNX_UNDERLYING_CONFIG.liquidationThreshold = 41_00; + _validateReserveConfig(SNX_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory UNI_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.UNI_UNDERLYING + ); + UNI_UNDERLYING_CONFIG.liquidationThreshold = 64_00; + _validateReserveConfig(UNI_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory xSUSHI_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.xSUSHI_UNDERLYING + ); + xSUSHI_UNDERLYING_CONFIG.liquidationThreshold = 1_00; + _validateReserveConfig(xSUSHI_UNDERLYING_CONFIG, allConfigsAfter); + } + + { + ReserveConfig memory YFI_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.YFI_UNDERLYING + ); + YFI_UNDERLYING_CONFIG.liquidationThreshold = 43_00; + _validateReserveConfig(YFI_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory ZRX_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.ZRX_UNDERLYING + ); + ZRX_UNDERLYING_CONFIG.liquidationThreshold = 34_00; + _validateReserveConfig(ZRX_UNDERLYING_CONFIG, allConfigsAfter); + + ReserveConfig memory LINK_UNDERLYING_CONFIG = _findReserveConfig( + allConfigsBefore, + AaveV2EthereumAssets.LINK_UNDERLYING + ); + LINK_UNDERLYING_CONFIG.liquidationThreshold = 81_00; + _validateReserveConfig(LINK_UNDERLYING_CONFIG, allConfigsAfter); + } + } +} diff --git a/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/config.json b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/config.json new file mode 100644 index 000000000..7425265b1 --- /dev/null +++ b/src/20231030_AaveV2Ethereum_AaveV2EthereumLTReduction/config.json @@ -0,0 +1,19 @@ +{ + "rootOptions": { + "author": "Chaos Labs", + "pools": [ + "AaveV2Ethereum" + ], + "title": "Aave V2 Ethereum LT Reduction", + "discussion": "https://governance.aave.com/t/arfc-v2-ethereum-lt-reductions-10-27-2023/15249", + "snapshot": "Direct to AIP", + "shortName": "AaveV2EthereumLTReduction", + "date": "20231030" + }, + "poolOptions": { + "AaveV2Ethereum": { + "configs": {}, + "features": [] + } + } +} \ No newline at end of file