diff --git a/diffs/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md b/diffs/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md new file mode 100644 index 000000000..3dcb6a037 --- /dev/null +++ b/diffs/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md @@ -0,0 +1,86 @@ +## Reserve changes + +### Reserves altered + +#### Cake ([0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82](https://bscscan.com/address/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 55 % [5500] | 0 % [0] | + + +## Raw diff + +```json +{ + "reserves": { + "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82": { + "ltv": { + "from": 5500, + "to": 0 + } + } + }, + "raw": { + "0x2d97f8fa96886fd923c065f5457f9ddd494e3877": { + "label": "AaveV3BNB.ACL_MANAGER", + "balanceDiff": null, + "stateDiff": {} + }, + "0x5793fe4de34532f162b4e207af872729880ec2b6": { + "label": "AaveV3BNB.POOL_CONFIGURATOR_IMPL", + "balanceDiff": null, + "stateDiff": {} + }, + "0x67bdf23c7fce7c65ff7415ba3f2520b45d6f9584": { + "label": "AaveV3BNB.POOL_CONFIGURATOR", + "balanceDiff": null, + "stateDiff": {} + }, + "0x6807dc923806fe8fd134338eabca509979a7e0cb": { + "label": "AaveV3BNB.POOL", + "balanceDiff": null, + "stateDiff": {} + }, + "0x9390b1735def18560c509e2d0bc090e9d6ba257a": { + "label": "AaveV3BNB.ACL_ADMIN, GovernanceV3BNB.EXECUTOR_LVL_1", + "balanceDiff": null, + "stateDiff": {} + }, + "0xb9eb5abe26f74395e7833761e76a8e82ad8436f1": { + "label": "AaveV3BNB.POOL_IMPL", + "balanceDiff": null, + "stateDiff": { + "0x5d54c6410275cc5a5b440259b3bdba59addb097a220aaccc7a447ece2a2b45b3": { + "previousValue": "0x10014dc93800000000000003e8000124f8000000000107d085122af817d4157c", + "newValue": "0x10014dc93800000000000003e8000124f8000000000107d085122af817d40000" + } + } + }, + "0xbdfa4bdd705e02a2da357ddd2e543ec654529940": { + "label": null, + "balanceDiff": null, + "stateDiff": { + "0x3ba015d6b845e102ce2f76836007be82508e3543856f2a3c2ff4b56eb46d920e": { + "previousValue": "0x0068fa7407000000000002000000000000000000000000000000000000000000", + "newValue": "0x0068fa7407000000000003000000000000000000000000000000000000000000" + }, + "0x3ba015d6b845e102ce2f76836007be82508e3543856f2a3c2ff4b56eb46d920f": { + "previousValue": "0x000000000000000000093a800000000000006928988800000000000000000000", + "newValue": "0x000000000000000000093a800000000000006928988800000000000068fa7408" + } + } + }, + "0xe5ef2dd06755a97e975f7e282f828224f2c3e627": { + "label": "GovernanceV3BNB.PAYLOADS_CONTROLLER", + "balanceDiff": null, + "stateDiff": {} + }, + "0xff75b6da14ffbbfd355daf7a2731456b3562ba6d": { + "label": "AaveV3BNB.POOL_ADDRESSES_PROVIDER", + "balanceDiff": null, + "stateDiff": {} + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md b/diffs/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md new file mode 100644 index 000000000..33848c632 --- /dev/null +++ b/diffs/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md @@ -0,0 +1,140 @@ +## Reserve changes + +### Reserve altered + +#### 1INCH ([0x111111111117dC0aa78b770fA6A738034120C302](https://etherscan.io/address/0x111111111117dC0aa78b770fA6A738034120C302)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 57 % [5700] | 0 % [0] | + + +#### UNI ([0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984](https://etherscan.io/address/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 65 % [6500] | 0 % [0] | + + +#### LDO ([0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32](https://etherscan.io/address/0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 40 % [4000] | 0 % [0] | + + +#### ENS ([0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72](https://etherscan.io/address/0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 39 % [3900] | 0 % [0] | + + +#### CRV ([0xD533a949740bb3306d119CC777fa900bA034cd52](https://etherscan.io/address/0xD533a949740bb3306d119CC777fa900bA034cd52)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 35 % [3500] | 0 % [0] | + + +#### BAL ([0xba100000625a3754423978a60c9317c58a424e3D](https://etherscan.io/address/0xba100000625a3754423978a60c9317c58a424e3D)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 57 % [5700] | 0 % [0] | + + +## Raw diff + +```json +{ + "reserves": { + "0x111111111117dC0aa78b770fA6A738034120C302": { + "ltv": { + "from": 5700, + "to": 0 + } + }, + "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984": { + "ltv": { + "from": 6500, + "to": 0 + } + }, + "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32": { + "ltv": { + "from": 4000, + "to": 0 + } + }, + "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72": { + "ltv": { + "from": 3900, + "to": 0 + } + }, + "0xD533a949740bb3306d119CC777fa900bA034cd52": { + "ltv": { + "from": 3500, + "to": 0 + } + }, + "0xba100000625a3754423978a60c9317c58a424e3D": { + "ltv": { + "from": 5700, + "to": 0 + } + } + }, + "raw": { + "0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2": { + "label": "AaveV3Ethereum.POOL", + "contract": "lib/aave-helpers/lib/aave-address-book/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol:TransparentUpgradeableProxy", + "balanceDiff": null, + "nonceDiff": null, + "stateDiff": { + "0x5fe3c5c588b626d5a9cebe169e8cb576ea92298dc18cf4686c056d112b1eeec2": { + "previousValue": "0x1000ee6b2800000000000003e80004c4b4000000000107d085122a9413880fa0", + "newValue": "0x1000ee6b2800000000000003e80004c4b4000000000107d085122a9413880000" + }, + "0x6073da802cfd57970e5c385150de92b75756eff0ea9d13effae07956cf21353a": { + "previousValue": "0x10011490c800000000000003e800098968000000000107d085122a4e170c1644", + "newValue": "0x10011490c800000000000003e800098968000000000107d085122a4e170c0000" + }, + "0x7260d0353b66d7d275011cfa96cce988d9fbea0c355c88ff8fa2b523ba74a259": { + "previousValue": "0x1006553f1000000000000003e80005b8d8000000000107d085122af81ce81964", + "newValue": "0x1006553f1000000000000003e80005b8d8000000000107d085122af81ce80000" + }, + "0x96a2cfdf9c0c5c0235e6e0938af959edeb6c20aa9f5f08b186fa02225ea33535": { + "previousValue": "0x100070800000000000000003e800112a88000000000107d0851229fe1a2c1644", + "newValue": "0x100070800000000000000003e800112a88000000000107d0851229fe1a2c0000" + }, + "0xd76b69b0f7b1c04da356d786043ab33773b3ac2ca4b62d97fc88b41c43fd124f": { + "previousValue": "0x10005f5e1000000000000003e80010736d00000000010dac85122a4e10040dac", + "newValue": "0x10005f5e1000000000000003e80010736d00000000010dac85122a4e10040000" + }, + "0xfc39a0dc3cc2d218b0a564e17dd6503d95d4724793595e7902e4d0141373ff14": { + "previousValue": "0x100061800280000000000003e80000186a000000000107d085122a3013240f3c", + "newValue": "0x100061800280000000000003e80000186a000000000107d085122a3013240000" + } + } + }, + "0xdabad81af85554e9ae636395611c58f7ec1aaec5": { + "label": "GovernanceV3Ethereum.PAYLOADS_CONTROLLER", + "contract": "lib/aave-helpers/lib/aave-address-book/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol:TransparentUpgradeableProxy", + "balanceDiff": null, + "nonceDiff": null, + "stateDiff": { + "0x6ac082d0dae0a32ca46deb4a24cad599947bdb193adc34198fe8054d27fd8c9d": { + "previousValue": "0x0068fa72ee000000000002000000000000000000000000000000000000000000", + "newValue": "0x0068fa72ee000000000003000000000000000000000000000000000000000000" + }, + "0x6ac082d0dae0a32ca46deb4a24cad599947bdb193adc34198fe8054d27fd8c9e": { + "previousValue": "0x000000000000000000093a800000000000006928976f00000000000000000000", + "newValue": "0x000000000000000000093a800000000000006928976f00000000000068fa72ef" + } + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md b/diffs/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md new file mode 100644 index 000000000..f27036533 --- /dev/null +++ b/diffs/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md @@ -0,0 +1,55 @@ +## Reserve changes + +### Reserves altered + +#### Metis ([0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://explorer.metis.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 30 % [3000] | 0 % [0] | + + +## Raw diff + +```json +{ + "reserves": { + "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000": { + "ltv": { + "from": 3000, + "to": 0 + } + } + }, + "raw": { + "0x2233f8a66a728fba6e1dc95570b25360d07d5524": { + "label": "GovernanceV3Metis.PAYLOADS_CONTROLLER", + "contract": "lib/aave-helpers/lib/aave-address-book/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol:TransparentUpgradeableProxy", + "balanceDiff": null, + "nonceDiff": null, + "stateDiff": { + "0x47bd603b2672149df187087e649a417345c22ebc601af252344b2472b5a5fea8": { + "previousValue": "0x0068fa73de000000000002000000000000000000000000000000000000000000", + "newValue": "0x0068fa73de000000000003000000000000000000000000000000000000000000" + }, + "0x47bd603b2672149df187087e649a417345c22ebc601af252344b2472b5a5fea9": { + "previousValue": "0x000000000000000000093a800000000000006928985f00000000000000000000", + "newValue": "0x000000000000000000093a800000000000006928985f00000000000068fa73df" + } + } + }, + "0x90df02551bb792286e8d4f13e0e357b4bf1d6a57": { + "label": "AaveV3Metis.POOL", + "contract": "lib/aave-helpers/lib/aave-address-book/lib/aave-v3-origin/lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol:TransparentUpgradeableProxy", + "balanceDiff": null, + "nonceDiff": null, + "stateDiff": { + "0xf2b6bcad364da3f80b21ab04ff3a9b042b5d7669746a5fb320b7d0f0c088c3fd": { + "previousValue": "0x10005f5e1000000000000003e80000927c0000007d0005dc85122af80fa00bb8", + "newValue": "0x10005f5e1000000000000003e80000927c0000007d0005dc85122af80fa00000" + } + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md b/diffs/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md new file mode 100644 index 000000000..e78732722 --- /dev/null +++ b/diffs/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_before_AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_after.md @@ -0,0 +1,55 @@ +## Reserve changes + +### Reserves altered + +#### ZK ([0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E](https://era.zksync.network//address/0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E)) + +| description | value before | value after | +| --- | --- | --- | +| ltv | 40 % [4000] | 0 % [0] | + + +## Raw diff + +```json +{ + "reserves": { + "0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E": { + "ltv": { + "from": 4000, + "to": 0 + } + } + }, + "raw": { + "0x2e79349c3f5e4751e87b966812c9e65e805996f1": { + "label": "GovernanceV3ZkSync.PAYLOADS_CONTROLLER", + "contract": null, + "balanceDiff": null, + "nonceDiff": null, + "stateDiff": { + "0xbb7ea1d025e27e153f156855239b4b128e9da3a64a6f0a0270f8920989588142": { + "previousValue": "0x0068fa7419000000000002000000000000000000000000000000000000000000", + "newValue": "0x0068fa7419000000000003000000000000000000000000000000000000000000" + }, + "0xbb7ea1d025e27e153f156855239b4b128e9da3a64a6f0a0270f8920989588143": { + "previousValue": "0x000000000000000000093a800000000000006928989a00000000000000000000", + "newValue": "0x000000000000000000093a800000000000006928989a00000000000068fa741a" + } + } + }, + "0x78e30497a3c7527d953c6b1e3541b021a98ac43c": { + "label": "AaveV3ZkSync.POOL", + "contract": null, + "balanceDiff": null, + "nonceDiff": null, + "stateDiff": { + "0xaab9473d3c2d823ad831e02d9c613808f1256c8d227ca0ebdfd0d67e251a0560": { + "previousValue": "0x10003d090000000000000007d000773594000098968007d085122af811940fa0", + "newValue": "0x10003d090000000000000007d000773594000098968007d085122af811940000" + } + } + } + } +} +``` \ No newline at end of file diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol new file mode 100644 index 000000000..fff6b7099 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3BNBAssets} from 'aave-address-book/AaveV3BNB.sol'; +import {AaveV3PayloadBNB} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadBNB.sol'; +import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; + +/** + * @title Deprecation of Low Demand Volatile Assets on Aave V3 Instances + * @author Aave-chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261 + */ +contract AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 is + AaveV3PayloadBNB +{ + function collateralsUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.CollateralUpdate[] memory) + { + IAaveV3ConfigEngine.CollateralUpdate[] + memory collateralUpdate = new IAaveV3ConfigEngine.CollateralUpdate[](1); + + collateralUpdate[0] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3BNBAssets.Cake_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + + return collateralUpdate; + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol new file mode 100644 index 000000000..1112a7303 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3BNB} from 'aave-address-book/AaveV3BNB.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; + +/** + * @dev Test for AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 + * command: FOUNDRY_PROFILE=test forge test --match-path=src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol -vv + */ +contract AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_Test is + ProtocolV3TestBase +{ + AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('bnb'), 65657815); + proposal = new AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023', + AaveV3BNB.POOL, + address(proposal) + ); + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol new file mode 100644 index 000000000..d3f2c377d --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; +import {AaveV3PayloadEthereum} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadEthereum.sol'; +import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; + +/** + * @title Deprecation of Low Demand Volatile Assets on Aave V3 Instances + * @author Aave-chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261 + */ +contract AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 is + AaveV3PayloadEthereum +{ + function collateralsUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.CollateralUpdate[] memory) + { + IAaveV3ConfigEngine.CollateralUpdate[] + memory collateralUpdate = new IAaveV3ConfigEngine.CollateralUpdate[](6); + + collateralUpdate[0] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3EthereumAssets.CRV_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + collateralUpdate[1] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3EthereumAssets.BAL_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + collateralUpdate[2] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3EthereumAssets.UNI_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + collateralUpdate[3] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3EthereumAssets.LDO_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + collateralUpdate[4] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3EthereumAssets.ENS_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + collateralUpdate[5] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3EthereumAssets.ONE_INCH_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + + return collateralUpdate; + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol new file mode 100644 index 000000000..c684d5a44 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; + +/** + * @dev Test for AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 + * command: FOUNDRY_PROFILE=test forge test --match-path=src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol -vv + */ +contract AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_Test is + ProtocolV3TestBase +{ + AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 23641967); + proposal = new AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023', + AaveV3Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol new file mode 100644 index 000000000..b3be01a61 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3MetisAssets} from 'aave-address-book/AaveV3Metis.sol'; +import {AaveV3PayloadMetis} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadMetis.sol'; +import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; + +/** + * @title Deprecation of Low Demand Volatile Assets on Aave V3 Instances + * @author Aave-chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261 + */ +contract AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 is + AaveV3PayloadMetis +{ + function collateralsUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.CollateralUpdate[] memory) + { + IAaveV3ConfigEngine.CollateralUpdate[] + memory collateralUpdate = new IAaveV3ConfigEngine.CollateralUpdate[](1); + + collateralUpdate[0] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3MetisAssets.Metis_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + + return collateralUpdate; + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol new file mode 100644 index 000000000..3c83d1ded --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Metis} from 'aave-address-book/AaveV3Metis.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; + +/** + * @dev Test for AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 + * command: FOUNDRY_PROFILE=test forge test --match-path=src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol -vv + */ +contract AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_Test is + ProtocolV3TestBase +{ + AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('metis'), 21510561); + proposal = new AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023', + AaveV3Metis.POOL, + address(proposal) + ); + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances.md b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances.md new file mode 100644 index 000000000..5a3d06d16 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances.md @@ -0,0 +1,39 @@ +--- +title: "Deprecation of Low Demand Volatile Assets on Aave V3 Instances" +author: "Aave-chan Initiative" +discussions: "https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261" +snapshot: Direct-to-AIP +--- + +## Simple Summary + +This AIP is the second part of the deprecation of low demand asset proposed by Chaos Labs. It sets the LTV of some of them to 0%. + +## Motivation + +A full run down of the motivation is available on the [governance forum](https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261/1). + +## Specification + +| **Instance** | **Asset** | **Current LTV** | **Recommended LTV** | +| ------------- | --------- | --------------- | ------------------- | +| ZkSync | ZK | 40% | 0 | +| Ethereum Core | UNI | 65% | 0 | +| Ethereum Core | CRV | 35% | 0 | +| Ethereum Core | BAL | 57% | 0 | +| Ethereum Core | ENS | 39% | 0 | +| Ethereum Core | LDO | 40% | 0 | +| BNB | Cake | 55% | 0 | +| Ethereum Core | 1INCH | 57% | 0 | +| Metis | METIS | 30% | 0 | + +## References + +- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/main/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol) +- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/main/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol) + Snapshot: Direct-to-AIP +- [Discussion](https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol new file mode 100644 index 000000000..fd379e756 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/src/GovV3Helpers.sol'; +import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol'; +import {GovernanceV3ZkSync} from 'aave-address-book/GovernanceV3ZkSync.sol'; +import {ChainIds} from 'solidity-utils/contracts/utils/ChainHelpers.sol'; +import {EthereumScript, MetisScript, BNBScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; +import {AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; +import {AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol:DeployEthereum chain=mainnet + * verify-command: FOUNDRY_PROFILE=deploy npx catapulta-verify -b broadcast/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023) + .creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Metis + * deploy-command: make deploy-ledger contract=src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol:DeployMetis chain=metis + * verify-command: FOUNDRY_PROFILE=deploy npx catapulta-verify -b broadcast/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol/1088/run-latest.json + */ +contract DeployMetis is MetisScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023).creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy BNB + * deploy-command: make deploy-ledger contract=src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol:DeployBNB chain=bnb + * verify-command: FOUNDRY_PROFILE=deploy npx catapulta-verify -b broadcast/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol/56/run-latest.json + */ +contract DeployBNB is BNBScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023).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/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol:CreateProposal chain=mainnet + */ +contract CreateProposal is EthereumScript { + function run() external { + // create payloads + PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](4); + + // compose actions for validation + { + IPayloadsControllerCore.ExecutionAction[] + memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](1); + actionsEthereum[0] = GovV3Helpers.buildAction( + type(AaveV3Ethereum_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023) + .creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + } + + { + IPayloadsControllerCore.ExecutionAction[] + memory actionsMetis = new IPayloadsControllerCore.ExecutionAction[](1); + actionsMetis[0] = GovV3Helpers.buildAction( + type(AaveV3Metis_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023) + .creationCode + ); + payloads[1] = GovV3Helpers.buildMetisPayload(vm, actionsMetis); + } + + { + IPayloadsControllerCore.ExecutionAction[] + memory actionsBNB = new IPayloadsControllerCore.ExecutionAction[](1); + actionsBNB[0] = GovV3Helpers.buildAction( + type(AaveV3BNB_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023).creationCode + ); + payloads[2] = GovV3Helpers.buildBNBPayload(vm, actionsBNB); + } + + { + payloads[3] = PayloadsControllerUtils.Payload({ + chain: ChainIds.ZKSYNC, + accessLevel: PayloadsControllerUtils.AccessControl.Level_1, + payloadsController: address(GovernanceV3ZkSync.PAYLOADS_CONTROLLER), + payloadId: 32 + }); + } + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_AVAX, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances.md' + ) + ); + } +} diff --git a/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/config.ts b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/config.ts new file mode 100644 index 000000000..24112d315 --- /dev/null +++ b/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/config.ts @@ -0,0 +1,116 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + author: 'Aave-chan Initiative', + title: 'Deprecation of Low Demand Volatile Assets on Aave V3 Instances', + discussion: + 'https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261', + pools: ['AaveV3Ethereum', 'AaveV3Metis', 'AaveV3BNB', 'AaveV3ZkSync'], + shortName: 'DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances', + date: '20251023', + snapshot: '', + votingNetwork: 'AVALANCHE', + }, + poolOptions: { + AaveV3Ethereum: { + configs: { + COLLATERALS_UPDATE: [ + { + asset: 'CRV', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + { + asset: 'BAL', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + { + asset: 'UNI', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + { + asset: 'LDO', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + { + asset: 'ENS', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + { + asset: 'ONE_INCH', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + ], + }, + cache: {blockNumber: 23641967}, + }, + AaveV3Metis: { + configs: { + COLLATERALS_UPDATE: [ + { + asset: 'Metis', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + ], + }, + cache: {blockNumber: 21510561}, + }, + AaveV3BNB: { + configs: { + COLLATERALS_UPDATE: [ + { + asset: 'Cake', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + ], + }, + cache: {blockNumber: 65657815}, + }, + AaveV3ZkSync: { + configs: { + COLLATERALS_UPDATE: [ + { + asset: 'ZK', + ltv: '0', + liqThreshold: '', + liqBonus: '', + debtCeiling: '', + liqProtocolFee: '', + }, + ], + }, + cache: {blockNumber: 65423730}, + }, + }, +}; diff --git a/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol b/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol new file mode 100644 index 000000000..e292b5c07 --- /dev/null +++ b/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3ZkSyncAssets} from 'aave-address-book/AaveV3ZkSync.sol'; +import {AaveV3PayloadZkSync} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadZkSync.sol'; +import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; + +/** + * @title Deprecation of Low Demand Volatile Assets on Aave V3 Instances + * @author Aave-chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-deprecation-of-low-demand-volatile-assets-on-aave-v3-instances/23261 + */ +contract AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 is + AaveV3PayloadZkSync +{ + function collateralsUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.CollateralUpdate[] memory) + { + IAaveV3ConfigEngine.CollateralUpdate[] + memory collateralUpdate = new IAaveV3ConfigEngine.CollateralUpdate[](1); + + collateralUpdate[0] = IAaveV3ConfigEngine.CollateralUpdate({ + asset: AaveV3ZkSyncAssets.ZK_UNDERLYING, + ltv: 0, + liqThreshold: EngineFlags.KEEP_CURRENT, + liqBonus: EngineFlags.KEEP_CURRENT, + debtCeiling: EngineFlags.KEEP_CURRENT, + liqProtocolFee: EngineFlags.KEEP_CURRENT + }); + + return collateralUpdate; + } +} diff --git a/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol b/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol new file mode 100644 index 000000000..c52dfbd68 --- /dev/null +++ b/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3ZkSync} from 'aave-address-book/AaveV3ZkSync.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/zksync/src/ProtocolV3TestBase.sol'; +import {AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; + +/** + * @dev Test for AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 + * command: FOUNDRY_PROFILE=zksync forge test --zksync --match-path=zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.t.sol -vv + */ +contract AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023_Test is + ProtocolV3TestBase +{ + AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023 internal proposal; + + function setUp() public override { + vm.createSelectFork(vm.rpcUrl('zksync'), 65423730); + proposal = new AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023(); + + super.setUp(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023', + AaveV3ZkSync.POOL, + address(proposal) + ); + } +} diff --git a/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol b/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol new file mode 100644 index 000000000..18b764cbd --- /dev/null +++ b/zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore} from 'aave-helpers/src/GovV3Helpers.sol'; + +import {ZkSyncScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023} from './AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.sol'; + +/** + * @dev Deploy ZkSync + * deploy-command: make deploy-ledger-zk contract=zksync/src/20251023_Multi_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances/DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023.s.sol:DeployZkSync chain=zksync + */ +contract DeployZkSync is ZkSyncScript { + function run() external broadcast { + // deploy payloads + address payload0 = address( + new AaveV3ZkSync_DeprecationOfLowDemandVolatileAssetsOnAaveV3Instances_20251023{ + salt: 'aave' + }() + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +}